View Javadoc

1   /**
2    * Licensed to jclouds, Inc. (jclouds) under one or more
3    * contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  jclouds licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
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   * @author Adrian Cole
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 }