/* © 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 java.util.ArrayList;
import net.reichholf.dreamdroid.helpers.ExtendedHashMap;
import net.reichholf.dreamdroid.helpers.enigma2.Mediaplayer;
import org.xml.sax.Attributes;
public class E2MediaPlayerListHandler extends E2ListHandler {
protected static final String TAG_E2ROOT = "e2root";
protected static final String TAG_E2ISDIRECTORY = "e2isdirectory";
protected static final String TAG_E2SERVICEREFERENCE = "e2servicereference";
protected static final String TAG_E2FILE = "e2file";
private boolean inFile;
private boolean inRef;
private boolean inIsDirectory;
private boolean inRoot;
private ExtendedHashMap mItem;
// creates a runtime error because mList is null for endElement mList.add(mItem);
//private ArrayList<ExtendedHashMap> mList;
/**
* @param list
*/
public E2MediaPlayerListHandler() {
mItem = null;
}
/*
* (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_E2FILE:
inFile = true;
mItem = new ExtendedHashMap();
break;
case TAG_E2SERVICEREFERENCE:
inRef = true;
break;
case TAG_E2ISDIRECTORY:
inIsDirectory = true;
break;
case TAG_E2ROOT:
inRoot = 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_E2FILE:
inFile = false;
if (mItem != null) {
mList.add(mItem);
mItem = null;
}
break;
case TAG_E2SERVICEREFERENCE:
inRef = false;
break;
case TAG_E2ISDIRECTORY:
inIsDirectory = false;
break;
case TAG_E2ROOT:
inRoot = 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 (inFile) {
if (inRef) {
mItem.putOrConcat(Mediaplayer.KEY_SERVICE_REFERENCE, value);
} else if (inIsDirectory) {
mItem.putOrConcat(Mediaplayer.KEY_IS_DIRECTORY, value);
} else if (inRoot) {
mItem.putOrConcat(Mediaplayer.KEY_ROOT, value);
}
}
}
}