Statistics
| Branch: | Revision:

root / src / com / rackspace / cloud / files / api / client / parsers / ContainerObjectXMLparser.java @ 07c153b1

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

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

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

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

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

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

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

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

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

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

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

    
87
                }
88
                //x_object_modified_by
89
                //x_object_version
90
                //x_object_hash
91
                //x_object_uuid
92
                //x_object_version_timestamp
93
                //x_object_sharing
94
                else if ("x_object_modified_by".equals(name)) {
95
                        object.setModifiedBy(value);
96

    
97
                }
98
                else if ("x_object_version".equals(name)) {
99
                        object.setVersion(value);
100

    
101
                }
102
                else if ("x_object_hash".equals(name)) {
103
                        object.setObjectHash(value);
104

    
105
                }
106
                else if ("x_object_uuid".equals(name)) {
107
                        object.setObjectUUID(value);
108

    
109
                }
110
                else if ("x_object_public".equals(name)) {
111
                        object.setIsPublic(value);
112
                }
113
                else if ("x_object_version_timestamp".equals(name)) {
114
                        object.setVersionTimestamp(value);
115

    
116
                }
117
                else if ("x_object_sharing".equals(name)) {
118
                        object.setObjectSharing(value);
119

    
120
                }
121
        }
122

    
123
        public void characters(char ch[], int start, int length) {
124

    
125
                //Log.d("Rackspace-Cloud", "Characters:    \"");
126

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

    
156
        public ContainerObjects getObject() {
157
                return object;
158
        }
159

    
160
        public void setObject(ContainerObjects object) {
161
                this.object = object;
162
        }
163

    
164
        /**
165
         * @return the files
166
         */
167
        public ArrayList<ContainerObjects> getViewFiles() {
168
                return files;
169
        }
170

    
171
        /**
172
         * @param files
173
         *            the servers to set
174
         */
175
        public void setFiles(ArrayList<ContainerObjects> files) {
176
                this.files = files;
177
        }
178

    
179
}