|
1 package org.gege.caldavsyncadapter.caldav.xml; |
|
2 |
|
3 import org.gege.caldavsyncadapter.caldav.xml.sax.MultiStatus; |
|
4 import org.gege.caldavsyncadapter.caldav.xml.sax.Prop; |
|
5 import org.gege.caldavsyncadapter.caldav.xml.sax.PropStat; |
|
6 import org.gege.caldavsyncadapter.caldav.xml.sax.Response; |
|
7 import org.xml.sax.Attributes; |
|
8 import org.xml.sax.SAXException; |
|
9 import org.xml.sax.helpers.DefaultHandler; |
|
10 |
|
11 |
|
12 public class MultiStatusHandler extends DefaultHandler { |
|
13 public MultiStatus mMultiStatus; |
|
14 private Response mResponse; |
|
15 private PropStat mPropStat; |
|
16 private Prop mProp; |
|
17 private String mCurrentValue; |
|
18 |
|
19 private String RESPONSE = "response"; |
|
20 private String HREF = "href"; |
|
21 private String PROPSTAT = "propstat"; |
|
22 private String PROP = "prop"; |
|
23 private String STATUS = "status"; |
|
24 private String CALENDARDATA = "calendar-data"; |
|
25 private String GETETAG = "getetag"; |
|
26 |
|
27 public MultiStatusHandler() { |
|
28 mMultiStatus = new MultiStatus(); |
|
29 } |
|
30 |
|
31 @Override |
|
32 public void characters(char[] ch, int start, int length) throws SAXException { |
|
33 mCurrentValue += new String(ch, start, length); |
|
34 } |
|
35 |
|
36 @Override |
|
37 public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException { |
|
38 mCurrentValue = ""; |
|
39 if (localName.equals(RESPONSE)) { |
|
40 mResponse = new Response(); |
|
41 mMultiStatus.ResponseList.add(mResponse); |
|
42 } else if (localName.equals(PROPSTAT)) { |
|
43 mPropStat = new PropStat(); |
|
44 mResponse.propstat = mPropStat; |
|
45 } else if (localName.equals(PROP)) { |
|
46 mProp = new Prop(); |
|
47 mPropStat.prop = mProp; |
|
48 } |
|
49 } |
|
50 |
|
51 @Override |
|
52 public void endElement(String uri, String localName, String qName) throws SAXException { |
|
53 if (localName.equals(HREF)) { |
|
54 mResponse.href = mCurrentValue; |
|
55 } else if (localName.equals(STATUS)) { |
|
56 if (mPropStat != null) |
|
57 mPropStat.status = mCurrentValue; |
|
58 } else if (localName.equals(CALENDARDATA)) { |
|
59 mProp.calendardata = mCurrentValue; |
|
60 } else if (localName.equals(GETETAG)) { |
|
61 mProp.getetag = mCurrentValue; |
|
62 } |
|
63 } |
|
64 } |