package com.gettingmobile.google.reader.rest;
import com.gettingmobile.google.reader.SortedElement;
import com.gettingmobile.google.reader.UnknownElementIdTypeException;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;
public abstract class SortedElementListJsonAdapter<T extends SortedElement> extends ListJsonAdapter<T, List<T>> {
public SortedElementListJsonAdapter(ElementJsonAdapter<T> elementAdapter) {
super(elementAdapter);
}
@Override
public List<T> read(JSONObject json) throws JSONException {
final JSONArray jsonElements = getJsonArray(json);
final SortedSet<T> sortedElements = new TreeSet<T>();
for (int i = 0; i < jsonElements.length(); ++i) {
final JSONObject o = jsonElements.getJSONObject(i);
try {
sortedElements.add(getItemAdapter().read(o));
} catch (Throwable error) {
handleItemReadError(error, o.toString());
}
}
final List<T> elements = create();
elements.addAll(sortedElements);
return elements;
}
@Override
protected boolean onItemReadError(Throwable error) {
return error instanceof UnknownElementIdTypeException;
}
}