src/org/gege/caldavsyncadapter/caldav/xml/MultiStatusHandler.java

changeset 0
fb9019fb1bf7
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/src/org/gege/caldavsyncadapter/caldav/xml/MultiStatusHandler.java	Tue Feb 10 18:12:00 2015 +0100
     1.3 @@ -0,0 +1,64 @@
     1.4 +package org.gege.caldavsyncadapter.caldav.xml;
     1.5 +
     1.6 +import org.gege.caldavsyncadapter.caldav.xml.sax.MultiStatus;
     1.7 +import org.gege.caldavsyncadapter.caldav.xml.sax.Prop;
     1.8 +import org.gege.caldavsyncadapter.caldav.xml.sax.PropStat;
     1.9 +import org.gege.caldavsyncadapter.caldav.xml.sax.Response;
    1.10 +import org.xml.sax.Attributes;
    1.11 +import org.xml.sax.SAXException;
    1.12 +import org.xml.sax.helpers.DefaultHandler;
    1.13 +
    1.14 +
    1.15 +public class MultiStatusHandler extends DefaultHandler {
    1.16 +	public MultiStatus mMultiStatus;
    1.17 +	private Response mResponse;
    1.18 +	private PropStat mPropStat;
    1.19 +	private Prop mProp;
    1.20 +	private String mCurrentValue;
    1.21 +	
    1.22 +	private String RESPONSE = "response";
    1.23 +	private String HREF = "href";
    1.24 +	private String PROPSTAT = "propstat";
    1.25 +	private String PROP = "prop";
    1.26 +	private String STATUS = "status";
    1.27 +	private String CALENDARDATA = "calendar-data";
    1.28 +	private String GETETAG = "getetag";
    1.29 +	
    1.30 +	public MultiStatusHandler() {
    1.31 +		mMultiStatus = new MultiStatus();
    1.32 +	}
    1.33 +	
    1.34 +	@Override
    1.35 +	public void characters(char[] ch, int start, int length) throws SAXException {
    1.36 +		mCurrentValue += new String(ch, start, length);
    1.37 +	}
    1.38 +
    1.39 +	@Override
    1.40 +	public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {
    1.41 +		mCurrentValue = "";
    1.42 +		if (localName.equals(RESPONSE)) {
    1.43 +			mResponse = new Response();
    1.44 +			mMultiStatus.ResponseList.add(mResponse);
    1.45 +		} else if (localName.equals(PROPSTAT)) {
    1.46 +			mPropStat = new PropStat();
    1.47 +			mResponse.propstat = mPropStat;
    1.48 +		} else if (localName.equals(PROP)) {
    1.49 +			mProp = new Prop();
    1.50 +			mPropStat.prop = mProp;
    1.51 +		}
    1.52 +	}
    1.53 +
    1.54 +	@Override
    1.55 +	public void endElement(String uri, String localName, String qName) throws SAXException {
    1.56 +		if (localName.equals(HREF)) {
    1.57 +			mResponse.href = mCurrentValue;
    1.58 +		} else if (localName.equals(STATUS)) {
    1.59 +			if (mPropStat != null)
    1.60 +				mPropStat.status = mCurrentValue;
    1.61 +		} else if (localName.equals(CALENDARDATA)) {
    1.62 +			mProp.calendardata = mCurrentValue;
    1.63 +		} else if (localName.equals(GETETAG)) {
    1.64 +			mProp.getetag = mCurrentValue;
    1.65 +		}
    1.66 +	}
    1.67 +}

mercurial