package dk.dr.radio.data;
import com.android.volley.Request;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import dk.dr.radio.diverse.App;
import dk.dr.radio.diverse.Log;
import dk.dr.radio.net.volley.DrVolleyResonseListener;
import dk.dr.radio.net.volley.DrVolleyStringRequest;
/**
* Created by j on 05-10-14.
*/
public class DramaOgBog {
public ArrayList<String> overskrifter = new ArrayList<String>();
public ArrayList<ArrayList<Programserie>> lister = new ArrayList<ArrayList<Programserie>>();
public ArrayList<Udsendelse> karusel = new ArrayList<Udsendelse>();
public HashSet<String> karuselSerieSlug = new HashSet<String>();
public List<Runnable> observatører = new ArrayList<Runnable>();
public final String url = DRData.getBogOgDramaUrl();
/**
* Parser JSON-svar og opdaterer data derefter. Bør ikke kaldes udefra, udover i afprøvningsøjemed
* @param json
* @throws JSONException
*/
void parseSvar(String json) throws JSONException {
JSONArray jsonArray = new JSONArray(json);
overskrifter.clear();
lister.clear();
karusel.clear();
karuselSerieSlug.clear();
for (int i=0; i<jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
JSONArray karuselJson = jsonObject.optJSONArray(DRJson.Spots.name());
if (karuselJson!=null) for (int n = 0; n < karuselJson.length(); n++) try {
JSONObject udsendelseJson = karuselJson.getJSONObject(n);
// TODO mangler
Udsendelse u = DRJson.parseUdsendelse(null, DRData.instans, udsendelseJson);
karusel.add(u);
karuselSerieSlug.add(u.programserieSlug);
} catch (JSONException je) {
Log.d("Fejl i "+ url +" element nr +"+n+ ": " + je);
Log.d(karuselJson.getJSONObject(n));
Log.e(je);
}
String titel = jsonObject.optString(DRJson.Title.name());
JSONArray jsonArray2 = jsonObject.optJSONArray(DRJson.Series.name());
ArrayList<Programserie> res = new ArrayList<Programserie>();
if (jsonArray2!=null) for (int n = 0; n < jsonArray2.length(); n++) {
JSONObject programserieJson = jsonArray2.getJSONObject(n);
String programserieSlug = programserieJson.getString(DRJson.Slug.name());
//Log.d("\n DramaOgBog =========================================== programserieSlug = " + programserieSlug);
Programserie programserie = DRData.instans.programserieFraSlug.get(programserieSlug);
if (programserie == null) {
programserie = new Programserie();
DRData.instans.programserieFraSlug.put(programserieSlug, programserie);
}
res.add(DRJson.parsProgramserie(programserieJson, programserie));
// Log.d("DramaOgBogD "+sektionsnummer+" "+n+programserie+" "+programserie.antalUdsendelser+" "+programserie.billedeUrl);
}
if (!res.isEmpty()) {
overskrifter.add(titel);
lister.add(res);
}
// Log.d("parseDramaOgBog "+overskrifter[sektionsnummer]+ " res=" + res);
}
}
public void startHentData() {
Request<?> req = new DrVolleyStringRequest(url, new DrVolleyResonseListener() {
@Override
public void fikSvar(String json, boolean fraCache, boolean uændret) throws Exception {
if (uændret) return;
parseSvar(json);
for (Runnable r : observatører) r.run(); // Informér observatører
}
}) {
public Priority getPriority() {
return Priority.LOW;
}
};
App.volleyRequestQueue.add(req);
}
}