package org.gege.caldavsyncadapter.caldav.xml; import org.gege.caldavsyncadapter.caldav.xml.sax.MultiStatus; import org.gege.caldavsyncadapter.caldav.xml.sax.Prop; import org.gege.caldavsyncadapter.caldav.xml.sax.PropStat; import org.gege.caldavsyncadapter.caldav.xml.sax.Response; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class MultiStatusHandler extends DefaultHandler { public MultiStatus mMultiStatus; private Response mResponse; private PropStat mPropStat; private Prop mProp; private String mCurrentValue; private String RESPONSE = "response"; private String HREF = "href"; private String PROPSTAT = "propstat"; private String PROP = "prop"; private String STATUS = "status"; private String CALENDARDATA = "calendar-data"; private String GETETAG = "getetag"; public MultiStatusHandler() { mMultiStatus = new MultiStatus(); } @Override public void characters(char[] ch, int start, int length) throws SAXException { mCurrentValue += new String(ch, start, length); } @Override public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException { mCurrentValue = ""; if (localName.equals(RESPONSE)) { mResponse = new Response(); mMultiStatus.ResponseList.add(mResponse); } else if (localName.equals(PROPSTAT)) { mPropStat = new PropStat(); mResponse.propstat = mPropStat; } else if (localName.equals(PROP)) { mProp = new Prop(); mPropStat.prop = mProp; } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { if (localName.equals(HREF)) { mResponse.href = mCurrentValue; } else if (localName.equals(STATUS)) { if (mPropStat != null) mPropStat.status = mCurrentValue; } else if (localName.equals(CALENDARDATA)) { mProp.calendardata = mCurrentValue; } else if (localName.equals(GETETAG)) { mProp.getetag = mCurrentValue; } } }