diff --git a/src/main/java/ch/hepia/api/transport/Connection.java b/src/main/java/ch/hepia/api/transport/Connection.java index 1004f9b4f53405e800310b7b3c08d7d5968385d9..404f299989e111f43619938ff4c0a271251e10c0 100644 --- a/src/main/java/ch/hepia/api/transport/Connection.java +++ b/src/main/java/ch/hepia/api/transport/Connection.java @@ -98,27 +98,27 @@ public class Connection { return new EmptyConnection(); } - JSONObject fromJSON = datas.getJSONObject("from"); + JSONObject fromJSON = datas.isNull("from") ? new JSONObject() : datas.getJSONObject("from"); Stop.StopBuilder from = new Stop.StopBuilder(fromJSON); - JSONObject toJSON = datas.getJSONObject("to"); + JSONObject toJSON = datas.isNull("to") ? new JSONObject() : datas.getJSONObject("to"); Stop.StopBuilder to = new Stop.StopBuilder(toJSON); DateFormat formatter = new SimpleDateFormat("dd:kk:mm:ss"); String date = datas.isNull("duration") ? "00:00:00:00" : datas.getString("duration").replace('d',':'); Time duration = new Time(formatter.parse(date).getTime()); - JSONObject serviceJSON = new JSONObject(datas.get("service")); + JSONObject serviceJSON = datas.isNull("service") ? new JSONObject() : new JSONObject(datas.get("service")); Service.ServiceBuilder service = new Service.ServiceBuilder(serviceJSON); - JSONArray productsJSON = datas.getJSONArray("products"); + JSONArray productsJSON = datas.isNull("from") ? new JSONArray() : datas.getJSONArray("products"); List<String> products = new ArrayList<>(); productsJSON.forEach(k -> products.add(k.toString())); int capacity1st = datas.isNull("capacity1st") ? 0 : datas.getInt("capacity1st"); int capacity2nd = datas.isNull("capacity2nd") ? 0 : datas.getInt("capacity2nd"); - JSONArray sectionsJSON = datas.getJSONArray("sections"); + JSONArray sectionsJSON = datas.isNull("from") ? new JSONArray() : datas.getJSONArray("sections"); List<Section> sections = new ArrayList<>(); sectionsJSON.forEach(o -> { JSONObject k = (JSONObject) o; diff --git a/src/main/java/ch/hepia/api/transport/Journey.java b/src/main/java/ch/hepia/api/transport/Journey.java index 136c05bd4210e4571b3c7d4a2976d88de12c8e05..c51b434d605208829c078a23444f2ff555688f67 100644 --- a/src/main/java/ch/hepia/api/transport/Journey.java +++ b/src/main/java/ch/hepia/api/transport/Journey.java @@ -130,7 +130,7 @@ public class Journey { String to = datas.isNull("to") ? "" : datas.getString("to"); - JSONArray passListJSON = datas.getJSONArray("passList"); + JSONArray passListJSON = datas.isNull("from") ? new JSONArray() : datas.getJSONArray("passList"); List<Stop> passList = new ArrayList<>(); passListJSON.forEach( o -> { JSONObject k = (JSONObject) o; diff --git a/src/main/java/ch/hepia/api/transport/Location.java b/src/main/java/ch/hepia/api/transport/Location.java index 75c519435ba55d6d2fec333e2a96019b1fa58468..f36977e00abff068ee152241a96e706f0a25439d 100644 --- a/src/main/java/ch/hepia/api/transport/Location.java +++ b/src/main/java/ch/hepia/api/transport/Location.java @@ -81,7 +81,7 @@ public class Location { String name = datas.isNull("name") ? "" : datas.getString("name"); double score = datas.isNull("score") ? 0 : datas.getDouble("score"); - JSONObject coordinatesJSON = datas.getJSONObject("coordinate"); + JSONObject coordinatesJSON = datas.isNull("coordinate") ? new JSONObject() : datas.getJSONObject("coordinate"); Coordinates.CoordinatesBuilder coordinates = new Coordinates.CoordinatesBuilder(coordinatesJSON); double distance = datas.isNull("distance") ? 0 : datas.getDouble("distance"); diff --git a/src/main/java/ch/hepia/api/transport/Section.java b/src/main/java/ch/hepia/api/transport/Section.java index f301b3b526c7c382b07fc4c4a65eb1ccc8c8d045..ed06519c1489b419691c324ff0520e71dd2aa48b 100644 --- a/src/main/java/ch/hepia/api/transport/Section.java +++ b/src/main/java/ch/hepia/api/transport/Section.java @@ -90,15 +90,15 @@ public class Section { return new EmptySection(); } - JSONObject journeyJSON = datas.getJSONObject("journey"); + JSONObject journeyJSON = datas.isNull("journey") ? new JSONObject() : datas.getJSONObject("journey"); Journey.JourneyBuilder journey = new Journey.JourneyBuilder(journeyJSON); double walktime = datas.isNull("walktime") ? 0 : datas.getDouble("walktime"); - JSONObject departureJSON = datas.getJSONObject("departure"); + JSONObject departureJSON = datas.isNull("departure") ? new JSONObject() : datas.getJSONObject("departure"); Stop.StopBuilder departure = new Stop.StopBuilder(departureJSON); - JSONObject arrivalJSON = datas.getJSONObject("arrival"); + JSONObject arrivalJSON = datas.isNull("arrival") ? new JSONObject() : datas.getJSONObject("arrival"); Stop.StopBuilder arrival = new Stop.StopBuilder(arrivalJSON); return new Section(journey.build(), walktime, departure.build(), arrival.build()); diff --git a/src/main/java/ch/hepia/api/transport/Stop.java b/src/main/java/ch/hepia/api/transport/Stop.java index e48645c4015810c139762ddadf8e46f01fb012e7..1decc5d428a629395edd0d374bc99c9e40adfbd8 100644 --- a/src/main/java/ch/hepia/api/transport/Stop.java +++ b/src/main/java/ch/hepia/api/transport/Stop.java @@ -105,7 +105,7 @@ public class Stop { String[] keys = new String[10]; datas.keySet().toArray(keys); String type = keys[4]; - JSONObject locationJSON = datas.getJSONObject(type); + JSONObject locationJSON = datas.isNull("type") ? new JSONObject() : datas.getJSONObject(type); Location.LocationBuilder location = new Location.LocationBuilder(locationJSON, type); DateFormat formatter = new SimpleDateFormat("kk:mm:ss"); @@ -118,7 +118,7 @@ public class Stop { int delay = datas.isNull("delay") ? 0 : datas.getInt("delay"); int plateform = datas.isNull("plateform") ? 0 : datas.getInt("plateform"); - JSONObject prognosisJSON = new JSONObject(datas.get("prognosis")); + JSONObject prognosisJSON = datas.isNull("prognosis") ? new JSONObject() : new JSONObject(datas.get("prognosis")); Prognosis.PrognosisBuilder prognosis = new Prognosis.PrognosisBuilder(prognosisJSON); return new Stop(location.build(), arrival, departure, delay, plateform, prognosis.build());