root / src / com / rackspace / cloud / servers / api / client / parsers / ServersXMLParser.java @ 35e7942d
History | View | Annotate | Download (5 kB)
1 | 35e7942d | Michael Mayo | /**
|
---|---|---|---|
2 | 35e7942d | Michael Mayo | *
|
3 | 35e7942d | Michael Mayo | */
|
4 | 35e7942d | Michael Mayo | package com.rackspace.cloud.servers.api.client.parsers; |
5 | 35e7942d | Michael Mayo | |
6 | 35e7942d | Michael Mayo | import java.util.ArrayList; |
7 | 35e7942d | Michael Mayo | |
8 | 35e7942d | Michael Mayo | import org.xml.sax.Attributes; |
9 | 35e7942d | Michael Mayo | import org.xml.sax.helpers.DefaultHandler; |
10 | 35e7942d | Michael Mayo | |
11 | 35e7942d | Michael Mayo | import com.rackspace.cloud.servers.api.client.Server; |
12 | 35e7942d | Michael Mayo | |
13 | 35e7942d | Michael Mayo | |
14 | 35e7942d | Michael Mayo | /**
|
15 | 35e7942d | Michael Mayo | * @author mike
|
16 | 35e7942d | Michael Mayo | *
|
17 | 35e7942d | Michael Mayo | */
|
18 | 35e7942d | Michael Mayo | public class ServersXMLParser extends DefaultHandler { |
19 | 35e7942d | Michael Mayo | |
20 | 35e7942d | Michael Mayo | private Server server;
|
21 | 35e7942d | Michael Mayo | private ArrayList<Server> servers; |
22 | 35e7942d | Michael Mayo | private ArrayList<String> publicAddresses; |
23 | 35e7942d | Michael Mayo | private ArrayList<String> privateAddresses; |
24 | 35e7942d | Michael Mayo | private boolean parsingPublicAddresses; |
25 | 35e7942d | Michael Mayo | private StringBuffer currentData; |
26 | 35e7942d | Michael Mayo | |
27 | 35e7942d | Michael Mayo | public void startDocument() { |
28 | 35e7942d | Michael Mayo | System.out.println("Start document"); |
29 | 35e7942d | Michael Mayo | } |
30 | 35e7942d | Michael Mayo | |
31 | 35e7942d | Michael Mayo | public void endDocument() { |
32 | 35e7942d | Michael Mayo | System.out.println("End document"); |
33 | 35e7942d | Michael Mayo | } |
34 | 35e7942d | Michael Mayo | |
35 | 35e7942d | Michael Mayo | public void startElement(String uri, String name, String qName, Attributes atts) { |
36 | 35e7942d | Michael Mayo | |
37 | 35e7942d | Michael Mayo | if ("".equals(uri)) { |
38 | 35e7942d | Michael Mayo | System.out.println("Start element: " + qName); |
39 | 35e7942d | Michael Mayo | } else {
|
40 | 35e7942d | Michael Mayo | System.out.println("Start element: {" + uri + "}" + name); |
41 | 35e7942d | Michael Mayo | } |
42 | 35e7942d | Michael Mayo | |
43 | 35e7942d | Michael Mayo | currentData = new StringBuffer(); |
44 | 35e7942d | Michael Mayo | if ("servers".equals(name)) { |
45 | 35e7942d | Michael Mayo | servers = new ArrayList<Server>(); |
46 | 35e7942d | Michael Mayo | } else if ("server".equals(name)) { |
47 | 35e7942d | Michael Mayo | server = new Server();
|
48 | 35e7942d | Michael Mayo | server.setStatus(atts.getValue("status"));
|
49 | 35e7942d | Michael Mayo | server.setProgress(atts.getValue("progress"));
|
50 | 35e7942d | Michael Mayo | server.setHostId(atts.getValue("hostId"));
|
51 | 35e7942d | Michael Mayo | server.setFlavorId(atts.getValue("flavorId"));
|
52 | 35e7942d | Michael Mayo | server.setImageId(atts.getValue("imageId"));
|
53 | 35e7942d | Michael Mayo | server.setId(atts.getValue("id"));
|
54 | 35e7942d | Michael Mayo | server.setName(atts.getValue("name"));
|
55 | 35e7942d | Michael Mayo | } else if ("addresses".equals(name)) { |
56 | 35e7942d | Michael Mayo | //addresses = new ArrayList<String>();
|
57 | 35e7942d | Michael Mayo | } else if ("public".equals(name)) { |
58 | 35e7942d | Michael Mayo | parsingPublicAddresses = true;
|
59 | 35e7942d | Michael Mayo | publicAddresses = new ArrayList<String>(); |
60 | 35e7942d | Michael Mayo | } else if ("private".equals(name)) { |
61 | 35e7942d | Michael Mayo | parsingPublicAddresses = false;
|
62 | 35e7942d | Michael Mayo | privateAddresses = new ArrayList<String>(); |
63 | 35e7942d | Michael Mayo | } else if ("ip".equals(name)) { |
64 | 35e7942d | Michael Mayo | String ipAddress = atts.getValue("addr"); |
65 | 35e7942d | Michael Mayo | if (parsingPublicAddresses) {
|
66 | 35e7942d | Michael Mayo | publicAddresses.add(ipAddress); |
67 | 35e7942d | Michael Mayo | } else {
|
68 | 35e7942d | Michael Mayo | privateAddresses.add(ipAddress); |
69 | 35e7942d | Michael Mayo | } |
70 | 35e7942d | Michael Mayo | } |
71 | 35e7942d | Michael Mayo | } |
72 | 35e7942d | Michael Mayo | |
73 | 35e7942d | Michael Mayo | public void endElement(String uri, String name, String qName) { |
74 | 35e7942d | Michael Mayo | if ("".equals(uri)) { |
75 | 35e7942d | Michael Mayo | System.out.println("End element: " + qName); |
76 | 35e7942d | Michael Mayo | } else {
|
77 | 35e7942d | Michael Mayo | System.out.println("End element: {" + uri + "}" + name); |
78 | 35e7942d | Michael Mayo | } |
79 | 35e7942d | Michael Mayo | |
80 | 35e7942d | Michael Mayo | if ("servers".equals(name)) { |
81 | 35e7942d | Michael Mayo | |
82 | 35e7942d | Michael Mayo | } else if ("server".equals(name)) { |
83 | 35e7942d | Michael Mayo | if (servers != null) { |
84 | 35e7942d | Michael Mayo | servers.add(server); |
85 | 35e7942d | Michael Mayo | } |
86 | 35e7942d | Michael Mayo | } else if ("addresses".equals(name)) { |
87 | 35e7942d | Michael Mayo | |
88 | 35e7942d | Michael Mayo | String[] privateIpAddresses = new String[privateAddresses.size()]; |
89 | 35e7942d | Michael Mayo | String[] publicIpAddresses = new String[publicAddresses.size()]; |
90 | 35e7942d | Michael Mayo | |
91 | 35e7942d | Michael Mayo | for (int i = 0; i < privateAddresses.size(); i++) { |
92 | 35e7942d | Michael Mayo | privateIpAddresses[i] = privateAddresses.get(i); |
93 | 35e7942d | Michael Mayo | } |
94 | 35e7942d | Michael Mayo | for (int i = 0; i < publicAddresses.size(); i++) { |
95 | 35e7942d | Michael Mayo | publicIpAddresses[i] = publicAddresses.get(i); |
96 | 35e7942d | Michael Mayo | } |
97 | 35e7942d | Michael Mayo | |
98 | 35e7942d | Michael Mayo | server.setPublicIpAddresses(publicIpAddresses); |
99 | 35e7942d | Michael Mayo | server.setPrivateIpAddresses(privateIpAddresses); |
100 | 35e7942d | Michael Mayo | |
101 | 35e7942d | Michael Mayo | /*
|
102 | 35e7942d | Michael Mayo | } else if ("id".equals(name)) {
|
103 | 35e7942d | Michael Mayo | slice.setId(currentData.toString());
|
104 | 35e7942d | Michael Mayo | } else if ("name".equals(name)) {
|
105 | 35e7942d | Michael Mayo | slice.setName(currentData.toString());
|
106 | 35e7942d | Michael Mayo | } else if ("flavor-id".equals(name)) {
|
107 | 35e7942d | Michael Mayo | slice.setFlavorId(currentData.toString());
|
108 | 35e7942d | Michael Mayo | } else if ("flavor-name".equals(name)) {
|
109 | 35e7942d | Michael Mayo | slice.setFlavorName(currentData.toString());
|
110 | 35e7942d | Michael Mayo | } else if ("image-id".equals(name)) {
|
111 | 35e7942d | Michael Mayo | slice.setImageId(currentData.toString());
|
112 | 35e7942d | Michael Mayo | } else if ("image-name".equals(name)) {
|
113 | 35e7942d | Michael Mayo | slice.setImageName(currentData.toString());
|
114 | 35e7942d | Michael Mayo | } else if ("backup-id".equals(name)) {
|
115 | 35e7942d | Michael Mayo | slice.setBackupId(currentData.toString());
|
116 | 35e7942d | Michael Mayo | } else if ("status".equals(currentData.toString())) {
|
117 | 35e7942d | Michael Mayo | slice.setStatus(currentData.toString());
|
118 | 35e7942d | Michael Mayo | } else if ("progress".equals(currentData.toString())) {
|
119 | 35e7942d | Michael Mayo | slice.setProgress(currentData.toString());
|
120 | 35e7942d | Michael Mayo | } else if ("bw-in".equals(name)) {
|
121 | 35e7942d | Michael Mayo | slice.setBwIn(currentData.toString());
|
122 | 35e7942d | Michael Mayo | } else if ("bw-out".equals(name)) {
|
123 | 35e7942d | Michael Mayo | slice.setBwOut(currentData.toString());
|
124 | 35e7942d | Michael Mayo | } else if ("addresses".equals(name)) {
|
125 | 35e7942d | Michael Mayo | slice.setAddresses(addresses);
|
126 | 35e7942d | Michael Mayo | } else if ("address".equals(name)) {
|
127 | 35e7942d | Michael Mayo | addresses.add(currentData.toString());
|
128 | 35e7942d | Michael Mayo | } else if ("ip-address".equals(name)) {
|
129 | 35e7942d | Michael Mayo | slice.setIpAddress(currentData.toString());
|
130 | 35e7942d | Michael Mayo | } else if ("root-password".equals(name)) {
|
131 | 35e7942d | Michael Mayo | slice.setRootPassword(currentData.toString());
|
132 | 35e7942d | Michael Mayo | */
|
133 | 35e7942d | Michael Mayo | } |
134 | 35e7942d | Michael Mayo | |
135 | 35e7942d | Michael Mayo | } |
136 | 35e7942d | Michael Mayo | |
137 | 35e7942d | Michael Mayo | public void characters(char ch[], int start, int length) { |
138 | 35e7942d | Michael Mayo | System.out.print("Characters: \""); |
139 | 35e7942d | Michael Mayo | for (int i = start; i < start + length; i++) { |
140 | 35e7942d | Michael Mayo | switch (ch[i]) {
|
141 | 35e7942d | Michael Mayo | case '\\': |
142 | 35e7942d | Michael Mayo | System.out.print("\\\\"); |
143 | 35e7942d | Michael Mayo | break;
|
144 | 35e7942d | Michael Mayo | case '"': |
145 | 35e7942d | Michael Mayo | System.out.print("\\\""); |
146 | 35e7942d | Michael Mayo | break;
|
147 | 35e7942d | Michael Mayo | case '\n': |
148 | 35e7942d | Michael Mayo | System.out.print("\\n"); |
149 | 35e7942d | Michael Mayo | break;
|
150 | 35e7942d | Michael Mayo | case '\r': |
151 | 35e7942d | Michael Mayo | System.out.print("\\r"); |
152 | 35e7942d | Michael Mayo | break;
|
153 | 35e7942d | Michael Mayo | case '\t': |
154 | 35e7942d | Michael Mayo | System.out.print("\\t"); |
155 | 35e7942d | Michael Mayo | break;
|
156 | 35e7942d | Michael Mayo | default:
|
157 | 35e7942d | Michael Mayo | System.out.print(ch[i]);
|
158 | 35e7942d | Michael Mayo | break;
|
159 | 35e7942d | Michael Mayo | } |
160 | 35e7942d | Michael Mayo | } |
161 | 35e7942d | Michael Mayo | System.out.print("\"\n"); |
162 | 35e7942d | Michael Mayo | |
163 | 35e7942d | Michael Mayo | |
164 | 35e7942d | Michael Mayo | for (int i = start; i < (start + length); i++) { |
165 | 35e7942d | Michael Mayo | currentData.append(ch[i]); |
166 | 35e7942d | Michael Mayo | } |
167 | 35e7942d | Michael Mayo | } |
168 | 35e7942d | Michael Mayo | |
169 | 35e7942d | Michael Mayo | public Server getServer() {
|
170 | 35e7942d | Michael Mayo | return server;
|
171 | 35e7942d | Michael Mayo | } |
172 | 35e7942d | Michael Mayo | |
173 | 35e7942d | Michael Mayo | public void setServer(Server server) { |
174 | 35e7942d | Michael Mayo | this.server = server;
|
175 | 35e7942d | Michael Mayo | } |
176 | 35e7942d | Michael Mayo | |
177 | 35e7942d | Michael Mayo | /**
|
178 | 35e7942d | Michael Mayo | * @return the servers
|
179 | 35e7942d | Michael Mayo | */
|
180 | 35e7942d | Michael Mayo | public ArrayList<Server> getServers() { |
181 | 35e7942d | Michael Mayo | return servers;
|
182 | 35e7942d | Michael Mayo | } |
183 | 35e7942d | Michael Mayo | |
184 | 35e7942d | Michael Mayo | /**
|
185 | 35e7942d | Michael Mayo | * @param servers the servers to set
|
186 | 35e7942d | Michael Mayo | */
|
187 | 35e7942d | Michael Mayo | public void setServers(ArrayList<Server> servers) { |
188 | 35e7942d | Michael Mayo | this.servers = servers;
|
189 | 35e7942d | Michael Mayo | } |
190 | 35e7942d | Michael Mayo | |
191 | 35e7942d | Michael Mayo | |
192 | 35e7942d | Michael Mayo | } |