package com.qubling.sidekick.fetch.cpan; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import com.qubling.sidekick.instance.Release; import com.qubling.sidekick.model.Model; import com.qubling.sidekick.search.ResultSet; import com.qubling.sidekick.util.JSONFragment; public abstract class ReleaseUpdateFetcher extends CPANQueryUpdateFetcher<Release> { public ReleaseUpdateFetcher(Model<Release> model, SearchSection searchSection, String searchTemplate) { super(model, searchSection, searchTemplate); } protected JSONFragment makeReleasesTerms(final String prefix) { final ResultSet<Release> releases = getResultSet(); JSONFragment releasesTerms = new JSONFragment() { @Override public String toJSONString() { JSONArray terms = new JSONArray(); try { for (Release release : releases) { JSONObject favoriteDistribution = new JSONObject() .put(prefix + ".distribution", release.getName()); JSONObject term = new JSONObject() .put("term", favoriteDistribution); terms.put(term); } } catch (JSONException e) { throw new RuntimeException("error while building JSON", e); } return terms.toString(); } }; return releasesTerms; } @Override public String toString() { return getModel() + ":RelaseUpdateFetcher(" + getResultSet() + ")"; } }