package com.pocketreddit.library.things.factories; import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import com.pocketreddit.library.things.Listing; import com.pocketreddit.library.things.Thing; import com.pocketreddit.library.things.utils.JsonToThingConverter; public class ListingFactory<T extends Thing> implements ThingFactory { private JSONObject json; public ListingFactory(JSONObject json) { this.json = json; } public Listing<T> createThing() throws ThingFactoryException { Listing<T> listing = new Listing<T>(); List<T> children = new ArrayList<T>(); try { JSONObject data = json.getJSONObject("data"); JSONArray jsonChildren = data.getJSONArray("children"); for (int i = 0; i < jsonChildren.length(); i++) { JsonToThingConverter<T> converter = new JsonToThingConverter<T>(); T thing = converter.convert(jsonChildren.getJSONObject(i)); children.add(thing); } listing.setChildren(children); listing.setAfter(data.getString("after")); listing.setBefore(data.getString("before")); } catch (JSONException e) { throw new ThingFactoryException("Failed parsing JSON object into Thing.", e); } return listing; } }