package org.droidplanner.android.view.checklist; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.List; import org.droidplanner.android.view.checklist.xml.ListXmlParser; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import android.content.Context; public class CheckListXmlParser extends ListXmlParser { private List<String> categories; private List<CheckListItem> checkListItems; private String checkListTitle; private String checkListType; private String checkListVersion; @Override public void setOnXMLParserError(OnXmlParserError listener) { errorListener = listener; } public CheckListXmlParser() { categories = new ArrayList<String>(); checkListItems = new ArrayList<CheckListItem>(); } public CheckListXmlParser(Context context, int resourceId) { categories = new ArrayList<String>(); checkListItems = new ArrayList<CheckListItem>(); getListItemsFromResource(context, resourceId); } public CheckListXmlParser(String ioFile, Context context, int resourceId) { categories = new ArrayList<String>(); checkListItems = new ArrayList<CheckListItem>(); try { getListItemsFromFile(ioFile); } catch (FileNotFoundException e) { getListItemsFromResource(context, resourceId); e.printStackTrace(); } catch (XmlPullParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public CheckListXmlParser(String ioFile) { categories = new ArrayList<String>(); checkListItems = new ArrayList<CheckListItem>(); try { getListItemsFromFile(ioFile); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (XmlPullParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private void process_category(XmlPullParser xpp) { String lbl = xpp.getAttributeValue(null, "label"); if (lbl == null) lbl = "Unknown"; categories.add(lbl); System.out.println("Category - " + lbl); } private void process_checkitems(XmlPullParser xpp) { String itemType = xpp.getName(); if (categories.size() == 0) return; if (itemType != null) { checkListItems.add(new CheckListItem(xpp.getName())); CheckListItem checkListItem = checkListItems.get(checkListItems.size() - 1); checkListItem.setDepth(xpp.getDepth()); checkListItem.setCategoryIndex(categories.size() - 1); checkListItem.setTitle(xpp.getAttributeValue(null, "title")); checkListItem.setDesc(xpp.getAttributeValue(null, "description")); checkListItem.setUnit(xpp.getAttributeValue(null, "unit")); checkListItem.setOn_label(xpp.getAttributeValue(null, "on_label")); checkListItem.setOff_label(xpp.getAttributeValue(null, "off_label")); checkListItem.setSys_tag(xpp.getAttributeValue(null, "system_tag")); checkListItem.setEditable(xpp.getAttributeValue(null, "editable")); checkListItem.setMandatory(xpp.getAttributeValue(null, "mandatory")); checkListItem.setNom_val(xpp.getAttributeValue(null, "nominal_val")); checkListItem.setMin_val(xpp.getAttributeValue(null, "minimum_val")); checkListItem.setMax_val(xpp.getAttributeValue(null, "maximum_val")); checkListItem.setValue(xpp.getAttributeValue(null, "value")); checkListItem.setSelectedIndex(xpp.getAttributeValue(null, "selectindex")); checkListItem.setOptionLists(xpp.getAttributeValue(null, "optionlist")); } } public List<String> getCategories() { return categories; } public List<CheckListItem> getCheckListItems() { return checkListItems; } @Override public void process_StartDocument() { // TODO Auto-generated method stub } @Override public void process_EndDocument() { // TODO Auto-generated method stub } @Override public void process_StartTag(XmlPullParser xpp) { if (xpp.getName().equalsIgnoreCase("category")) { process_category(xpp); } else if (xpp.getName().contains("_item")) { process_checkitems(xpp); } else if (xpp.getDepth() == 1) { this.checkListTitle = xpp.getAttributeValue(null, "title"); this.checkListType = xpp.getAttributeValue(null, "type"); this.checkListVersion = xpp.getAttributeValue(null, "version"); } } @Override public void process_EndTag() { // TODO Auto-generated method stub } @Override public void process_Text() { // TODO Auto-generated method stub } public String getCheckListTitle() { return checkListTitle; } public String getCheckListType() { return checkListType; } public String getCheckListVersion() { return checkListVersion; } }