Statistics
| Branch: | Revision:

root / src / com / rackspace / cloud / files / api / client / parsers / ContainerXMLParser.java @ 1fd17f2e

History | View | Annotate | Download (4.2 kB)

1
package com.rackspace.cloud.files.api.client.parsers;
2

    
3
import java.util.ArrayList;
4
import java.util.HashMap;
5
import java.util.Map;
6

    
7
import org.xml.sax.Attributes;
8
import org.xml.sax.helpers.DefaultHandler;
9

    
10
import android.util.Log;
11

    
12
import com.rackspace.cloud.files.api.client.Container;
13

    
14
/**
15
 * 
16
 * @author Phillip Toohill
17
 * 
18
 */
19
public class ContainerXMLParser extends DefaultHandler {
20

    
21
        private Container container;
22
        private Map<String,String> xContainerPolicy;
23
        private Map<String,String> metadata;
24
        private ArrayList<Container> containers;
25
        private String key;
26
        
27
        private StringBuffer currentData;
28

    
29
        public void startElement(String uri, String name, String qName,
30
                        Attributes atts) {
31

    
32
                currentData = new StringBuffer();
33
                if ("account".equals(name)) {
34
                        containers = new ArrayList<Container>();
35
                } else if ("container".equals(name)) {
36
                        container = new Container();
37
                } else if ("x_container_policy".equals(name)) {
38
                        xContainerPolicy = new HashMap<String, String>();
39
                }  else if ("x_object_meta".equals(name)) {
40
                        metadata = new HashMap<String, String>();
41
                }
42
        }
43

    
44
        public void endElement(String uri, String name, String qName) {
45

    
46
                String value = currentData.toString().trim();
47

    
48
                if ("account".equals(name)) {
49

    
50
                } else if ("container".equals(name)) {
51

    
52
                        if (containers == null) {
53
                                containers = new ArrayList<Container>();
54
                        }
55
                        Log.d("ViewContainersXMLparser", container.toString());
56
                        containers.add(container);
57

    
58
                }else if ("x_container_policy".equals(name)) {
59
                        if(container!=null){
60
                                container.setxContainerPolicy(xContainerPolicy);
61
                                xContainerPolicy = null;
62
                        }
63

    
64
                }
65
                else if ("key".equals(name)&&xContainerPolicy!=null) {
66
                        key = value;
67
                }
68
                else if ("value".equals(name)&&xContainerPolicy!=null) {
69
                        if(key!=null)
70
                                xContainerPolicy.put(key,value);
71
                }
72
                else if ("x_object_meta".equals(name)) {
73
                        if(container!=null){
74
                                container.setMetadata(metadata);
75
                                metadata = null;
76
                        }
77

    
78
                }
79
                else if ("key".equals(name)&&metadata!=null) {
80
                        key = value;
81
                }
82
                else if ("value".equals(name)&&metadata!=null) {
83
                        if(key!=null)
84
                                metadata.put(key,value);
85
                }
86
                else if ("name".equals(name)) {
87
                        container.setName(value);
88
                } else if ("count".equals(name)) {
89
                        container.setCount(Integer.parseInt(value));
90
                } else if ("bytes".equals(name)) {
91
                        container.setBytes(Long.parseLong(value));
92
                } else if ("cdn_enabled".equals(name)) {
93
                        container.setCdnEnabled("True".equals(value));
94
                } else if ("ttl".equals(name)) {
95
                        container.setTtl(Integer.parseInt(value));
96
                } else if ("cdn_url".equals(name)) {
97
                        container.setCdnUrl(value);
98
                } else if ("log_retention".equals(name)) {
99
                        container.setLogRetention("True".equals(value));
100
                }
101
                else if ("x_object_modified_by".equals(name)) {
102
                        container.setModifiedBy(value);
103

    
104
                }
105
                else if ("x_object_version".equals(name)) {
106
                        container.setVersion(value);
107

    
108
                }
109
                else if ("x_object_hash".equals(name)) {
110
                        container.setObjectHash(value);
111

    
112
                }
113
                else if ("x_object_uuid".equals(name)) {
114
                        container.setObjectUUID(value);
115

    
116
                }
117
                else if ("x_object_version_timestamp".equals(name)) {
118
                        container.setVersionTimestamp(value);
119

    
120
                }
121
                else if ("x_object_sharing".equals(name)) {
122
                        container.setObjectSharing(value);
123

    
124
                }
125

    
126
        }
127

    
128
        public void characters(char ch[], int start, int length) {
129

    
130
                //Log.d("Rackspace-Cloud", "Characters:    \"");
131

    
132
                for (int i = start; i < start + length; i++) {
133
                        switch (ch[i]) {
134
                        case '\\':
135
                        //        Log.d("Rackspace-Cloud", "\\\\");
136
                                break;
137
                        case '"':
138
                        //        Log.d("Rackspace-Cloud", "\\\"");
139
                                break;
140
                        case '\n':
141
                        //        Log.d("Rackspace-Cloud", "\\n");
142
                                break;
143
                        case '\r':
144
                        //        Log.d("Rackspace-Cloud", "\\r");
145
                                break;
146
                        case '\t':
147
                        //        Log.d("Rackspace-Cloud", "\\t");
148
                                break;
149
                        default:
150
                        //        Log.d("Rackspace-Cloud", String.valueOf(ch[i]));
151
                                break;
152
                        }
153
                }
154
                //Log.d("Rackspace-Cloud", "\"\n");
155

    
156
                for (int i = start; i < (start + length); i++) {
157
                        currentData.append(ch[i]);
158
                }
159
        }
160

    
161
        public Container getContainer() {
162
                return container;
163
        }
164

    
165
        public void setContainer(Container container) {
166
                this.container = container;
167
        }
168

    
169
        /**
170
         * @return the files
171
         */
172
        public ArrayList<Container> getContainers() {
173
                return containers;
174
        }
175

    
176
        /**
177
         * @param containers
178
         *            the servers to set
179
         */
180
        public void setContainers(ArrayList<Container> containers) {
181
                this.containers = containers;
182
        }
183

    
184
}