package uk.co.traintrackapp.traintrack.model; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import uk.co.traintrackapp.traintrack.utils.Utils; public class StationBoard { private ArrayList<String> nrccMessages; private ArrayList<Service> trainServices; private ArrayList<TubeLine> tubeLines; private StationBoard() { this.nrccMessages = new ArrayList<>(); this.trainServices = new ArrayList<>(); this.tubeLines = new ArrayList<>(); } private StationBoard(JSONObject json) { this(); try { if (json.has("nrcc_messages")) { JSONArray jsonNrccMessages = json.getJSONArray("nrcc_messages"); for (int i = 0; i < jsonNrccMessages.length(); i++) { this.nrccMessages.add(jsonNrccMessages.getString(i)); } } if (json.has("train_services")) { JSONArray jsonTrainServices = json.getJSONArray("train_services"); for (int i = 0; i < jsonTrainServices.length(); i++) { Service service = new Service(jsonTrainServices.getJSONObject(i)); this.trainServices.add(service); } } if (json.has("tube_lines")) { JSONArray jsonTubeLines = json.getJSONArray("tube_lines"); for (int i = 0; i < jsonTubeLines.length(); i++) { TubeLine line = new TubeLine(jsonTubeLines.getJSONObject(i)); this.tubeLines.add(line); } } } catch (JSONException e) { Utils.log("Station Board: " + e.getMessage()); } } public ArrayList<String> getNrccMessages() { return nrccMessages; } public ArrayList<Service> getTrainServices() { return trainServices; } public ArrayList<TubeLine> getTubeLines() { return tubeLines; } public static StationBoard getDepartures(String uuid) { return getStationBoard(uuid + "/departures"); } public static StationBoard getArrivals(String uuid) { return getStationBoard(uuid + "/arrivals"); } public static StationBoard getUnderground(String uuid) { return getStationBoard(uuid + "/tube"); } private static StationBoard getStationBoard(String path) { JSONObject json = new JSONObject(); String jsonString = Utils.httpGet(Utils.API_BASE_URL + "/stations/" + path); try { json = new JSONObject(jsonString); } catch (JSONException e) { Utils.log(e.getMessage()); } return new StationBoard(json); } @Override public String toString() { return "StationBoard{" + "nrccMessages=" + nrccMessages + ", trainServices=" + trainServices + ", tubeLines=" + tubeLines + '}'; } }