/**
* Copyright 2010 Mark Wyszomierski
*/
package com.joelapenna.foursquare.parsers;
import com.joelapenna.foursquare.Foursquare;
import com.joelapenna.foursquare.error.FoursquareError;
import com.joelapenna.foursquare.error.FoursquareParseException;
import com.joelapenna.foursquare.types.Category;
import com.joelapenna.foursquare.util.IconUtils;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import android.util.Log;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @date March 6, 2010
* @author Mark Wyszomierski (markww@gmail.com)
* @param <T>
*/
public class CategoryParser extends AbstractParser<Category> {
private static final Logger LOG = Logger.getLogger(StatsParser.class.getCanonicalName());
private static final boolean DEBUG = Foursquare.PARSER_DEBUG;
@Override
public Category parseInner(XmlPullParser parser) throws XmlPullParserException, IOException,
FoursquareError, FoursquareParseException {
parser.require(XmlPullParser.START_TAG, null, null);
Category category = new Category();
while (parser.nextTag() == XmlPullParser.START_TAG) {
String name = parser.getName();
if ("id".equals(name)) {
category.setId(parser.nextText());
} else if ("fullpathname".equals(name)) {
category.setFullPathName(parser.nextText());
} else if ("nodename".equals(name)) {
category.setNodeName(parser.nextText());
} else if ("iconurl".equals(name)) {
// TODO: Remove this once api v2 allows icon request.
String iconUrl = parser.nextText();
if (IconUtils.get().getRequestHighDensityIcons()) {
iconUrl = iconUrl.replace(".png", "_64.png");
}
category.setIconUrl(iconUrl);
} else if ("categories".equals(name)) {
category.setChildCategories(new GroupParser(new CategoryParser()).parse(parser));
} else {
// Consume something we don't understand.
if (DEBUG) LOG.log(Level.FINE, "Found tag that we don't recognize: " + name);
skipSubTree(parser);
}
}
return category;
}
}