1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.jclouds.slicehost.xml;
20
21 import java.util.Set;
22
23 import org.jclouds.javax.annotation.Nullable;
24
25 import org.jclouds.http.functions.ParseSax;
26 import org.jclouds.slicehost.domain.Slice;
27 import org.jclouds.slicehost.domain.Slice.Status;
28 import org.xml.sax.SAXException;
29
30 import com.google.common.collect.Sets;
31
32
33
34
35 public class SliceHandler extends ParseSax.HandlerWithResult<Slice> {
36 private StringBuilder currentText = new StringBuilder();
37
38 private int id;
39 private String name;
40 private int flavorId;
41 @Nullable
42 private Integer imageId;
43 @Nullable
44 private Integer backupId;
45 private Status status;
46 @Nullable
47 private Integer progress;
48 private float bandwidthIn;
49 private float bandwidthOut;
50 private Set<String> addresses = Sets.newLinkedHashSet();
51 @Nullable
52 private String rootPassword;
53
54 private Slice slice;
55
56 public Slice getResult() {
57 return slice;
58 }
59
60 @Override
61 public void endElement(String uri, String localName, String qName) throws SAXException {
62 if (qName.equalsIgnoreCase("id")) {
63 id = Integer.parseInt(currentText.toString().trim());
64 } else if (qName.equalsIgnoreCase("name")) {
65 this.name = currentText.toString().trim();
66 } else if (qName.equalsIgnoreCase("flavor-id")) {
67 flavorId = Integer.parseInt(currentText.toString().trim());
68 } else if (qName.equalsIgnoreCase("image-id")) {
69 imageId = Integer.parseInt(currentText.toString().trim());
70 } else if (qName.equalsIgnoreCase("backup-id")) {
71 backupId = Integer.parseInt(currentText.toString().trim());
72 } else if (qName.equalsIgnoreCase("status")) {
73 this.status = Slice.Status.fromValue(currentText.toString().trim());
74 } else if (qName.equalsIgnoreCase("progress")) {
75 try {
76 progress = Integer.parseInt(currentText.toString().trim());
77 } catch (NumberFormatException e) {
78
79 }
80 } else if (qName.equalsIgnoreCase("bw-in")) {
81 bandwidthIn = Float.parseFloat(currentText.toString().trim());
82 } else if (qName.equalsIgnoreCase("bw-out")) {
83 bandwidthOut = Float.parseFloat(currentText.toString().trim());
84 } else if (qName.equalsIgnoreCase("address")) {
85 this.addresses.add(currentText.toString().trim());
86 } else if (qName.equalsIgnoreCase("root-password")) {
87 this.rootPassword = currentText.toString().trim();
88 } else if (qName.equalsIgnoreCase("slice")) {
89 this.slice = new Slice(id, name, flavorId, imageId, backupId, status, progress, bandwidthIn, bandwidthOut,
90 addresses, rootPassword);
91 this.id = -1;
92 this.name = null;
93 this.flavorId = -1;
94 this.imageId = null;
95 this.backupId = null;
96 this.status = null;
97 this.progress = null;
98 this.bandwidthIn = 0;
99 this.bandwidthOut = 0;
100 this.addresses = Sets.newLinkedHashSet();
101 this.rootPassword = null;
102 }
103 currentText = new StringBuilder();
104 }
105
106 public void characters(char ch[], int start, int length) {
107 currentText.append(ch, start, length);
108 }
109 }