From c412f36e6ce070477a75fa67a1d0074b1462d4f2 Mon Sep 17 00:00:00 2001 From: Sem van der Hoeven Date: Wed, 6 Jan 2021 16:09:00 +0100 Subject: [PATCH] moved sections into own methods --- .../nextlocation/json/DirectionsResult.java | 85 ++++++++----------- 1 file changed, 36 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/com/a1/nextlocation/json/DirectionsResult.java b/app/src/main/java/com/a1/nextlocation/json/DirectionsResult.java index 42ebe2f..6966c36 100644 --- a/app/src/main/java/com/a1/nextlocation/json/DirectionsResult.java +++ b/app/src/main/java/com/a1/nextlocation/json/DirectionsResult.java @@ -101,31 +101,7 @@ public class DirectionsResult { JsonArray segments = properties.getAsJsonArray("segments"); - for (JsonElement element : segments) { - JsonObject segment = element.getAsJsonObject(); - - setDistance(segment.get("distance").getAsDouble()); - setDuration(segment.get("duration").getAsDouble()); - - JsonArray steps = segment.getAsJsonArray("steps"); - - for (JsonElement j : steps) { - - DirectionsStep step = gson.fromJson(j, DirectionsStep.class); - double lat; - double longl; - - // kinda stinky but it works - for (int i = 0; i < 2; i++) { - lat = this.wayPointCoordinates[step.getWay_points().get(i)][0]; - longl = this.wayPointCoordinates[step.getWay_points().get(i)][1]; - step.getWaypoints()[i] = new GeoPoint(lat, longl); - } - - addStep(step); - Log.d(TAG, "parse: added step" + step); - } - } + parseSegments(segments,gson); startAndEndPoint[0] = this.getSteps().get(0).getWaypoints()[0]; startAndEndPoint[1] = this.getSteps().get(this.getSteps().size()-1).getWaypoints()[1]; @@ -162,33 +138,44 @@ public class DirectionsResult { JsonArray segments = route.getAsJsonArray("segments"); - for (JsonElement e : segments) { - JsonObject segment = e.getAsJsonObject(); + parseSegments(segments,gson); - setDistance(segment.get("distance").getAsDouble()); - setDuration(segment.get("duration").getAsDouble()); - - JsonArray steps = segment.getAsJsonArray("steps"); - - for (JsonElement j : steps) { - - DirectionsStep step = gson.fromJson(j, DirectionsStep.class); - double lat; - double longl; - - // kinda stinky but it works - for (int i = 0; i < 2; i++) { - lat = this.wayPointCoordinates[step.getWay_points().get(i)][0]; - longl = this.wayPointCoordinates[step.getWay_points().get(i)][1]; - step.getWaypoints()[i] = new GeoPoint(lat, longl); - } - - addStep(step); - Log.d(TAG, "parse: added step" + step); - } - } } } + + private void parseSegments(JsonArray segments, Gson gson) { + //unfold the individual segments + for (JsonElement e : segments) { + JsonObject segment = e.getAsJsonObject(); + + setDistance(segment.get("distance").getAsDouble()); + setDuration(segment.get("duration").getAsDouble()); + + JsonArray steps = segment.getAsJsonArray("steps"); + + parseSteps(steps,gson); + } + } + + private void parseSteps(JsonArray steps, Gson gson) { + for (JsonElement j : steps) { + + // parse everything into a directionsstep + DirectionsStep step = gson.fromJson(j, DirectionsStep.class); + double lat; + double longl; + + // kinda stinky but it works + for (int i = 0; i < 2; i++) { + lat = this.wayPointCoordinates[step.getWay_points().get(i)][0]; + longl = this.wayPointCoordinates[step.getWay_points().get(i)][1]; + step.getWaypoints()[i] = new GeoPoint(lat, longl); + } + + addStep(step); + Log.d(TAG, "parse: added step" + step); + } + } }