From 884453fe3b5ad0b198a9ce6b61142a4af35ac7cd Mon Sep 17 00:00:00 2001 From: "quentin.leblanc" <quentin.leblanc@etu.hesge.ch> Date: Sat, 2 Feb 2019 17:25:41 +0100 Subject: [PATCH] Refactored builders because it seems like fields can be null and not an empty JSONObject --- src/main/java/ch/hepia/api/transport/Connection.java | 10 +++++----- src/main/java/ch/hepia/api/transport/Journey.java | 2 +- src/main/java/ch/hepia/api/transport/Location.java | 2 +- src/main/java/ch/hepia/api/transport/Section.java | 6 +++--- src/main/java/ch/hepia/api/transport/Stop.java | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main/java/ch/hepia/api/transport/Connection.java b/src/main/java/ch/hepia/api/transport/Connection.java index 1004f9b..404f299 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 136c05b..c51b434 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 75c5194..f36977e 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 f301b3b..ed06519 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 e48645c..1decc5d 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()); -- GitLab