Statistics
| Branch: | Revision:

root / src / com / rackspace / cloud / files / api / client / parsers / ContainerObjectXMLparser.java @ 038ac9a4

History | View | Annotate | Download (3.9 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.ContainerObjects;
13

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

    
21
        private ContainerObjects object;
22
        private ArrayList<ContainerObjects> files;
23
        private Map<String, String> metadata;
24
        private String key;
25

    
26
        private StringBuffer currentData;
27
        public String LOG = "ViewFilesXMLparser";
28

    
29
        public void startDocument() {
30
                Log.v(LOG, "startDocument");
31
        }
32

    
33
        public void endDocument() {
34
                Log.v(LOG, "endDocument = true");
35
        }
36

    
37
        public void startElement(String uri, String name, String qName,
38
                        Attributes atts) {
39

    
40
                currentData = new StringBuffer();
41
                if ("container".equals(name)) {
42
                        files = new ArrayList<ContainerObjects>();
43
                } else if ("object".equals(name)) {
44
                        object = new ContainerObjects();
45
                } else if ("x_object_meta".equals(name)) {
46
                        metadata = new HashMap<String, String>();
47
                }
48
        }
49

    
50
        public void endElement(String uri, String name, String qName) {
51

    
52
                String value = currentData.toString().trim();
53

    
54
                if ("container".equals(name)) {
55

    
56
                } else if ("object".equals(name)) {
57
                        if (files != null) {
58
                                Log.d(LOG, object.toString());
59
                                files.add(object);
60
                        }
61
                } else if ("x_object_meta".equals(name)) {
62
                        if (object != null) {
63
                                object.setMetadata(metadata);
64
                                metadata = null;
65
                        }
66

    
67
                } else if ("key".equals(name) && metadata != null) {
68
                        key = value;
69
                } else if ("value".equals(name) && metadata != null) {
70
                        if (key != null)
71
                                metadata.put(key, value);
72
                } else if ("name".equals(name)) {
73
                        object.setCName(value);
74
                } else if ("content_type".equals(name)) {
75
                        object.setContentType(value);
76
                } else if ("hash".equals(name)) {
77
                        object.setHash(value);
78
                } else if ("bytes".equals(name)) {
79
                        object.setBytes(Integer.parseInt(value));
80
                } else if ("last_modified".equals(name)) {
81
                        object.setLastMod(value);
82

    
83
                }
84
                // x_object_modified_by
85
                // x_object_version
86
                // x_object_hash
87
                // x_object_uuid
88
                // x_object_version_timestamp
89
                // x_object_sharing
90
                else if ("x_object_modified_by".equals(name)) {
91
                        object.setModifiedBy(value);
92

    
93
                } else if ("x_object_version".equals(name)) {
94
                        object.setVersion(value);
95

    
96
                } else if ("x_object_hash".equals(name)) {
97
                        object.setObjectHash(value);
98

    
99
                } else if ("x_object_uuid".equals(name)) {
100
                        object.setObjectUUID(value);
101

    
102
                } else if ("x_object_public".equals(name)) {
103
                        object.setIsPublic(value);
104
                } else if ("x_object_version_timestamp".equals(name)) {
105
                        object.setVersionTimestamp(value);
106

    
107
                } else if ("x_object_sharing".equals(name)) {
108
                        object.setObjectSharing(value);
109

    
110
                }
111
        }
112

    
113
        public void characters(char ch[], int start, int length) {
114

    
115
                // Log.d("Rackspace-Cloud", "Characters:    \"");
116

    
117
                for (int i = start; i < start + length; i++) {
118
                        switch (ch[i]) {
119
                        case '\\':
120
                                // Log.d("Rackspace-Cloud", "\\\\");
121
                                break;
122
                        case '"':
123
                                // Log.d("Rackspace-Cloud", "\\\"");
124
                                break;
125
                        case '\n':
126
                                // Log.d("Rackspace-Cloud", "\\n");
127
                                break;
128
                        case '\r':
129
                                // Log.d("Rackspace-Cloud", "\\r");
130
                                break;
131
                        case '\t':
132
                                // Log.d("Rackspace-Cloud", "\\t");
133
                                break;
134
                        default:
135
                                // Log.d("Rackspace-Cloud", String.valueOf(ch[i]));
136
                                break;
137
                        }
138
                }
139
                // Log.d("Rackspace-Cloud", "\"\n");
140
                // String strCharacters = new String(ch, start, length);
141
                for (int i = start; i < (start + length); i++) {
142
                        currentData.append(ch[i]);
143
                }
144
        }
145

    
146
        public ContainerObjects getObject() {
147
                return object;
148
        }
149

    
150
        public void setObject(ContainerObjects object) {
151
                this.object = object;
152
        }
153

    
154
        /**
155
         * @return the files
156
         */
157
        public ArrayList<ContainerObjects> getViewFiles() {
158
                return files;
159
        }
160

    
161
        /**
162
         * @param files
163
         *            the servers to set
164
         */
165
        public void setFiles(ArrayList<ContainerObjects> files) {
166
                this.files = files;
167
        }
168

    
169
}