/**
* Copyright 2009 Joe LaPenna
*/
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.FoursquareType;
import com.joelapenna.foursquare.types.Group;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author Joe LaPenna (joe@joelapenna.com)
* @param <T>
*/
public class GroupParser extends AbstractParser<Group> {
private static final Logger LOG = Logger.getLogger(GroupParser.class.getCanonicalName());
private static final boolean DEBUG = Foursquare.PARSER_DEBUG;
private Parser<? extends FoursquareType> mSubParser;
public GroupParser(Parser<? extends FoursquareType> subParser) {
this.mSubParser = subParser;
}
@Override
public Group<FoursquareType> parseInner(XmlPullParser parser) throws XmlPullParserException, IOException,
FoursquareParseException, FoursquareError {
Group<FoursquareType> group = new Group<FoursquareType>();
group.setType(parser.getAttributeValue(null, "type"));
while (parser.nextTag() == XmlPullParser.START_TAG) {
FoursquareType item = this.mSubParser.parse(parser);
if (DEBUG) LOG.log(Level.FINE, "adding item: " + item);
group.add(item);
}
return group;
}
}