/* © 2010 Stephan Reichholf <stephan at reichholf dot net> * * Licensed under the Create-Commons Attribution-Noncommercial-Share Alike 3.0 Unported * http://creativecommons.org/licenses/by-nc-sa/3.0/ */ package net.reichholf.dreamdroid.parsers.enigma2.saxhandler; import net.reichholf.dreamdroid.helpers.DateTime; import net.reichholf.dreamdroid.helpers.ExtendedHashMap; import net.reichholf.dreamdroid.helpers.enigma2.Timer; import org.xml.sax.Attributes; /** * @author sreichholf * */ public class E2TimerListHandler extends E2ListHandler { protected static final String TAG_E2TIMER = "e2timer"; protected static final String TAG_E2SERVICEREFERENCE = "e2servicereference"; protected static final String TAG_E2SERVICENAME = "e2servicename"; protected static final String TAG_E2EIT = "e2eit"; protected static final String TAG_E2NAME = "e2name"; protected static final String TAG_E2DESCRIPTION = "e2description"; protected static final String TAG_E2DESCRIPTIONEXTENDED = "e2descriptionextended"; protected static final String TAG_E2DISABLED = "e2disabled"; protected static final String TAG_E2TIMEBEGIN = "e2timebegin"; protected static final String TAG_E2TIMEEND = "e2timeend"; protected static final String TAG_E2DURATION = "e2duration"; protected static final String TAG_E2STARTPREPARE = "e2startprepare"; protected static final String TAG_E2JUSTPLAY = "e2justplay"; protected static final String TAG_E2AFTEREVENT = "e2afterevent"; protected static final String TAG_E2LOCATION = "e2location"; protected static final String TAG_E2TAGS = "e2tags"; protected static final String TAG_E2LOGENTRIES = "e2logentries"; protected static final String TAG_E2FILENAME = "e2filename"; protected static final String TAG_E2BACKOFF = "e2backoff"; protected static final String TAG_E2NEXTACTIVATION = "e2nextactivation"; protected static final String TAG_E2FIRSTTRYPREPARE = "e2firsttryprepare"; protected static final String TAG_E2STATE = "e2state"; protected static final String TAG_E2REPEATED = "e2repeated"; protected static final String TAG_E2DONTSAVE = "e2dontsave"; protected static final String TAG_E2CANCLED = "e2cancled"; protected static final String TAG_E2TOGGLEDISABLED = "e2toggledisabled"; private boolean inTimer = false; private boolean inServicename = false; private boolean inReference = false; private boolean inEit = false; private boolean inName = false; private boolean inDescription = false; private boolean inDescriptionEx = false; private boolean inDisabled = false; private boolean inBegin = false; private boolean inEnd = false; private boolean inDuration = false; private boolean inStartPrepare = false; private boolean inJustPlay = false; private boolean inAfterevent = false; private boolean inLocation = false; private boolean inTags = false; private boolean inLogEntries = false; private boolean inFilename = false; private boolean inBackoff = false; private boolean inNextActivation = false; private boolean inFirstTryPrepare = false; private boolean inState = false; private boolean inRepeated = false; private boolean inDontSave = false; private boolean inCanceled = false; private boolean inToggleDisabled = false; private ExtendedHashMap mTimer; /* * (non-Javadoc) * * @see org.xml.sax.helpers.DefaultHandler#startElement(java.lang.String, * java.lang.String, java.lang.String, org.xml.sax.Attributes) */ @Override public void startElement(String namespaceUri, String localName, String qName, Attributes attrs) { switch (localName) { case TAG_E2TIMER: inTimer = true; mTimer = new ExtendedHashMap(); break; case TAG_E2SERVICEREFERENCE: inReference = true; break; case TAG_E2SERVICENAME: inServicename = true; break; case TAG_E2EIT: inEit = true; break; case TAG_E2NAME: inName = true; break; case TAG_E2DESCRIPTION: inDescription = true; break; case TAG_E2DESCRIPTIONEXTENDED: inDescriptionEx = true; break; case TAG_E2DISABLED: inDisabled = true; break; case TAG_E2TIMEBEGIN: inBegin = true; break; case TAG_E2TIMEEND: inEnd = true; break; case TAG_E2DURATION: inDuration = true; break; case TAG_E2STARTPREPARE: inStartPrepare = true; break; case TAG_E2JUSTPLAY: inJustPlay = true; break; case TAG_E2AFTEREVENT: inAfterevent = true; break; case TAG_E2LOCATION: inLocation = true; break; case TAG_E2TAGS: inTags = true; break; case TAG_E2LOGENTRIES: inLogEntries = true; break; case TAG_E2FILENAME: inFilename = true; break; case TAG_E2BACKOFF: inBackoff = true; break; case TAG_E2NEXTACTIVATION: inNextActivation = true; break; case TAG_E2FIRSTTRYPREPARE: inFirstTryPrepare = true; break; case TAG_E2STATE: inState = true; break; case TAG_E2REPEATED: inRepeated = true; break; case TAG_E2DONTSAVE: inDontSave = true; break; case TAG_E2CANCLED: inCanceled = true; break; case TAG_E2TOGGLEDISABLED: inToggleDisabled = true; break; } } /* * (non-Javadoc) * * @see org.xml.sax.helpers.DefaultHandler#endElement(java.lang.String, * java.lang.String, java.lang.String) */ @Override public void endElement(String namespaceURI, String localName, String qName) { switch (localName) { case TAG_E2TIMER: inTimer = false; mList.add(mTimer); break; case TAG_E2SERVICEREFERENCE: inReference = false; break; case TAG_E2SERVICENAME: inServicename = false; break; case TAG_E2EIT: inEit = false; break; case TAG_E2NAME: inName = false; break; case TAG_E2DESCRIPTION: inDescription = false; break; case TAG_E2DESCRIPTIONEXTENDED: inDescriptionEx = false; break; case TAG_E2DISABLED: inDisabled = false; break; case TAG_E2TIMEBEGIN: inBegin = false; break; case TAG_E2TIMEEND: inEnd = false; break; case TAG_E2DURATION: inDuration = false; break; case TAG_E2STARTPREPARE: inStartPrepare = false; break; case TAG_E2JUSTPLAY: inJustPlay = false; break; case TAG_E2AFTEREVENT: inAfterevent = false; break; case TAG_E2LOCATION: inLocation = false; break; case TAG_E2TAGS: inTags = false; break; case TAG_E2LOGENTRIES: inLogEntries = false; break; case TAG_E2FILENAME: inFilename = false; break; case TAG_E2BACKOFF: inBackoff = false; break; case TAG_E2NEXTACTIVATION: inNextActivation = false; break; case TAG_E2FIRSTTRYPREPARE: inFirstTryPrepare = false; break; case TAG_E2STATE: inState = false; break; case TAG_E2REPEATED: inRepeated = false; break; case TAG_E2DONTSAVE: inDontSave = false; break; case TAG_E2CANCLED: inCanceled = false; break; case TAG_E2TOGGLEDISABLED: inToggleDisabled = false; break; } } /* * (non-Javadoc) * * @see org.xml.sax.helpers.DefaultHandler#characters(char[], int, int) */ @Override public void characters(char ch[], int start, int length) { String value = new String(ch, start, length); if (inTimer) { if (inReference) { mTimer.putOrConcat(Timer.KEY_REFERENCE, value); } else if (inServicename) { mTimer.putOrConcat(Timer.KEY_SERVICE_NAME, value.replaceAll("\\p{Cntrl}", "")); } else if (inEit) { mTimer.put(Timer.KEY_EIT, value); } else if (inName) { mTimer.putOrConcat(Timer.KEY_NAME, value); } else if (inDescription) { mTimer.putOrConcat(Timer.KEY_DESCRIPTION, value); } else if (inDescriptionEx) { mTimer.putOrConcat(Timer.KEY_DESCRIPTION_EXTENDED, value); } else if (inDisabled) { mTimer.put(Timer.KEY_DISABLED, value); } else if (inBegin) { mTimer.put(Timer.KEY_BEGIN, value); mTimer.put(Timer.KEY_BEGIN_READEABLE, DateTime.getYearDateTimeString(value)); } else if (inEnd) { mTimer.put(Timer.KEY_END, value); mTimer.put(Timer.KEY_END_READABLE, DateTime.getYearDateTimeString(value)); } else if (inDuration) { mTimer.put(Timer.KEY_DURATION, value); mTimer.put(Timer.KEY_DURATION_READABLE, DateTime.getDurationString(value, null)); } else if (inStartPrepare) { mTimer.put(Timer.KEY_START_PREPARE, value); } else if (inJustPlay) { mTimer.put(Timer.KEY_JUST_PLAY, value); } else if (inAfterevent) { mTimer.put(Timer.KEY_AFTER_EVENT, value); } else if (inLocation) { mTimer.putOrConcat(Timer.KEY_LOCATION, value); } else if (inTags) { mTimer.putOrConcat(Timer.KEY_TAGS, value); } else if (inLogEntries) { mTimer.putOrConcat(Timer.KEY_LOG_ENTRIES, value); } else if (inFilename) { mTimer.putOrConcat(Timer.KEY_FILE_NAME, value); } else if (inBackoff) { mTimer.put(Timer.KEY_BACK_OFF, value); } else if (inNextActivation) { mTimer.put(Timer.KEY_NEXT_ACTIVATION, value); } else if (inFirstTryPrepare) { mTimer.put(Timer.KEY_FIRST_TRY_PREPARE, value); } else if (inState) { mTimer.put(Timer.KEY_STATE, value); } else if (inRepeated) { mTimer.put(Timer.KEY_REPEATED, value); } else if (inDontSave) { mTimer.put(Timer.KEY_DONT_SAVE, value); } else if (inCanceled) { mTimer.put(Timer.KEY_CANCELED, value); } else if (inToggleDisabled) { mTimer.put(Timer.KEY_TOGGLE_DISABLED, value); } } } }