package com.ndu.mobile.daisy.providers.librivox; import com.ndu.mobile.daisy.providers.ParsedObject; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; import java.io.Serializable; import java.util.ArrayList; import java.util.List; public class LVoxBook extends ParsedObject implements Serializable { private static final long serialVersionUID = -5021054789409657400L; private String title; private List<String> authors = new ArrayList<String>(5); private String description; private String id = ""; public LVoxBook(XmlPullParser xpp) throws IOException, XmlPullParserException { int eventType = xpp.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { eventType = xpp.getEventType(); if(eventType == XmlPullParser.START_TAG) { if (xpp.getName().equalsIgnoreCase("str") && xpp.getAttributeCount() > 0&& xpp.getAttributeValue(0).equals("title")) { title = parseStringVal(xpp); } else if (xpp.getName().equalsIgnoreCase("arr") && xpp.getAttributeCount() > 0&& xpp.getAttributeValue(0).equals("creator")) { parseAuthors(xpp); } else if (xpp.getName().equalsIgnoreCase("str") && xpp.getAttributeCount() > 0 && xpp.getAttributeValue(0).equalsIgnoreCase("description")) { description = parseStringVal(xpp); } else if (xpp.getName().equalsIgnoreCase("str") && xpp.getAttributeCount() > 0 && xpp.getAttributeValue(0).equalsIgnoreCase("identifier")) { id = parseStringVal(xpp); } } if(eventType == XmlPullParser.END_TAG) { if (xpp.getName().equalsIgnoreCase("doc")) { break; } } eventType = xpp.next(); } } private void parseAuthors(XmlPullParser xpp) throws IOException, XmlPullParserException { int eventType = xpp.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { eventType = xpp.getEventType(); if(eventType == XmlPullParser.START_TAG) { if (xpp.getName().equalsIgnoreCase("str")) { eventType = xpp.next(); authors.add(xpp.getText()); } } if(eventType == XmlPullParser.END_TAG) { if (xpp.getName().equalsIgnoreCase("arr")) { break; } } eventType = xpp.next(); } } @Override public String toString() { return "(" + getId() + ") " + getTitle(); } public String getTitle() { return title; } public List<String> getAuthors() { return authors; } public String getAuthor() { if (authors.size() == 0) return ""; StringBuilder authorString = new StringBuilder(); for (String author : authors) { authorString.append(author); authorString.append(", "); } authorString.delete(authorString.length() - 2, authorString.length()); return authorString.toString(); } public String getDescription() { return description; } public String getId() { return id; } }