Statistics
| Branch: | Revision:

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
}