package com.transitwidget.feed;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import com.transitwidget.feed.model.Route;
import android.util.Log;
public class RouteListFeedParser extends FeedParser {
private static final String TAG = RouteListFeedParser.class.getName();
// XML tag and attributes
private static final String ROUTE = "route";
public RouteListFeedParser(String agency) throws MalformedURLException {
super(getCommandUrl("routeList", agency));
Log.i(TAG, "Loading feed from URL: " + feedUrl);
}
public List<Route> parse() throws XmlPullParserException, IOException {
List<Route> routes = new ArrayList<Route>();
Log.i(TAG, "Parsing feed");
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(getInputStream(), null);
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
String name = xpp.getName();
if (name.equals(ROUTE)) {
Route route = new Route();
Map<String, String> attributes = parseAttributes(xpp);
route.setTag(attributes.get(ATTR_TAG));
route.setTitle(attributes.get(ATTR_TITLE));
routes.add(route);
}
}
eventType = xpp.next();
}
return routes;
}
}