package com.rthoni.stssaguenay.dataaccess; import android.util.Pair; import com.rthoni.stssaguenay.dbo.LuDataAccessConfigDbo; import com.rthoni.stssaguenay.dbo.LuDbo; import com.rthoni.stssaguenay.dbo.StopsDbo; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Vector; /** * Created by robin on 9/29/16. */ public class StopsDataAccess { public static class StopsDboRaw extends LuDbo { protected List _stops; @Override public void fromJson(JSONObject json) throws JSONException { _stops = new Vector<>(); JSONArray features = json.getJSONArray("features"); for (int i = 0; i < features.length(); ++i) { JSONObject obj = features.getJSONObject(i); JSONObject props = obj.getJSONObject("properties"); JSONArray routes = props.getJSONArray("route_ids"); List routesStr = new Vector<>(); for (int j = 0; j < routes.length(); ++j) { routesStr.add(routes.getString(j)); } JSONArray pos = obj.getJSONObject("geometry").getJSONArray("coordinates"); StopsDbo stop = new StopsDbo(); stop.setId(obj.getString("id")); stop.setName(props.getString("name")); stop.setRoutes(routesStr); stop.setPosition(new Pair(pos.getDouble(0), pos.getDouble(1))); _stops.add(stop); } } @Override public HashMap toArray() { return null; } public List getStops() { return _stops; } } public static LuPromise> getAll(LuDataAccessConfigDbo config, int unknownParam) { return LuRequest.get(config, StopsDboRaw.class, String.format(Locale.getDefault(), "transit/%d/week/stops.json", unknownParam)) .map(new LuPromise.LuConverter>() { @Override public List convert(StopsDboRaw data) { return data.getStops(); } }); } }