package fr.eyal.datalib.sample.netflix.data.parser;
import java.util.ArrayList;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import fr.eyal.lib.data.model.ResponseBusinessObject;
import fr.eyal.lib.data.parser.GenericHandler;
import fr.eyal.datalib.sample.netflix.data.model.autocomplete.*;
// Start of user code AutocompleteParser imports
// You can add here your personal imports
// DO NOT MODIFY THE GENERATED COMMENTS "Start of user code" and "End of user code
public class AutocompleteParser extends DefaultHandler implements GenericHandler {
private static final String TAG = AutocompleteParser.class.getSimpleName();
public static final int UNKNOWN = -1;
//Autocomplete
private static final int H1 = 38;
private static final int AUTOCOMPLETE = 39;
private static final int AUTOCOMPLETE_AUTOCOMPLETE_ITEM = 40;
private static final int AUTOCOMPLETE_AUTOCOMPLETE_ITEM_TITLE = 41;
private int mState = UNKNOWN;
private final StringBuilder mBuilder = new StringBuilder();
private Autocomplete autocomplete;
private Autocomplete_item autocomplete_item;
public AutocompleteParser() {
autocomplete = new Autocomplete();
autocomplete.autocomplete_item = new ArrayList<Autocomplete_item>();
}
@Override
public ResponseBusinessObject getParsedData() {
return autocomplete;
}
@Override
public void startElement(final String uri, final String localName, final String qName, final Attributes attributes) throws SAXException {
mBuilder.setLength(0);
switch (mState) {
case UNKNOWN:
if (qName.equals("h1")) {
mState = H1;
}
else if (qName.equals("autocomplete")) {
mState = AUTOCOMPLETE;
}
break;
case AUTOCOMPLETE:
if (qName.equals("autocomplete_item")) {
mState = AUTOCOMPLETE_AUTOCOMPLETE_ITEM;
autocomplete_item = new Autocomplete_item();
}
break;
case AUTOCOMPLETE_AUTOCOMPLETE_ITEM:
if (qName.equals("title")) {
mState = AUTOCOMPLETE_AUTOCOMPLETE_ITEM_TITLE;
autocomplete_item.attrTitleShort = attributes.getValue("short");
}
break;
default:
// do nothing
break;
}
}
@Override
public void characters(final char[] ch, final int start, final int length) throws SAXException {
mBuilder.append(ch, start, length);
}
@Override
public void endElement(final String uri, final String localName, final String qName) throws SAXException {
switch (mState) {
case H1:
if (qName.equals("h1")) {
mState = UNKNOWN;
autocomplete.error = mBuilder.toString();
}
break;
case AUTOCOMPLETE:
if (qName.equals("autocomplete")) {
mState = UNKNOWN;
}
break;
case AUTOCOMPLETE_AUTOCOMPLETE_ITEM:
if (qName.equals("autocomplete_item")) {
mState = AUTOCOMPLETE;
autocomplete.autocomplete_item.add(autocomplete_item);
}
break;
case AUTOCOMPLETE_AUTOCOMPLETE_ITEM_TITLE:
if (qName.equals("title")) {
mState = AUTOCOMPLETE_AUTOCOMPLETE_ITEM;
autocomplete_item.title = mBuilder.toString();
}
break;
default:
// do nothing
break;
}
}
@Override
public void parse(final Object content) {
// TODO Auto-generated method stub
}
// Start of user code AutocompleteParser
// You can add here your personal content
// DO NOT MODIFY THE GENERATED COMMENTS "Start of user code" and "End of user code
}