/** * Returns a TrainInfo object populated with train name, list of station and list of start dates. * * @param trainNumber train number * @return a TrainInfo object */ public TrainInfo getTrainInfo(String trainNumber) { String trainInfoUrl = SEARCH_SERVICE_HOST + "search" + JSON + "?q=" + trainNumber; List<String> listOfStations = null; List<String> startDate = null; TrainInfo trainInfo = null; String jsonData = fetchData(trainInfoUrl); if (jsonData != null) { trainInfo = new TrainInfo(); listOfStations = new ArrayList<String>(); startDate = new ArrayList<String>(); try { if ((new JSONArray(jsonData)).length() > 0) { JSONObject jsonTrainInfo = (new JSONArray(jsonData)).getJSONObject(0); trainInfo.setValidTrain(true); trainInfo.setExtendedTrainName(jsonTrainInfo.getString(EXTENDED_TRAIN_NAME)); JSONObject routes = jsonTrainInfo.getJSONArray(ROUTES).getJSONObject(0); String[] stations = (routes.getString(STATIONS)).split(","); for (String station : stations) { listOfStations.add(station); } trainInfo.setListOfStations(listOfStations); String[] dates = (jsonTrainInfo.getString("start_dates")).split(","); for (String date : dates) { date = ((date.replaceAll("\"", "")).replaceAll("\\[", "")).replaceAll("\\]", ""); startDate.add(date); } trainInfo.setStartDates(startDate); } else { trainInfo.setValidTrain(false); } } catch (JSONException jsonEx) { Log.e(tag, jsonEx.getMessage()); trainInfo = null; } } return trainInfo; }