Browse Source

added getIntersectionsBetweenCoordinates method. Modified model classes

wpfat23-5 2 years ago
parent
commit
0657d030a9

+ 8 - 0
pom.xml

@@ -93,6 +93,14 @@
             <artifactId>gson</artifactId>
             <version>2.10.1</version>
         </dependency>
+        <!-- https://mvnrepository.com/artifact/com.google.code.geocoder-java/geocoder-java -->
+        <dependency>
+            <groupId>com.google.code.geocoder-java</groupId>
+            <artifactId>geocoder-java</artifactId>
+            <version>0.15</version>
+        </dependency>
+
+
 
     </dependencies>
     <dependencyManagement>

+ 1 - 0
src/main/java/com/deliveryproject/easydelivery/AppUserController.java

@@ -32,6 +32,7 @@ public class AppUserController {
                 .orElseGet(() -> new ResponseEntity<>(HttpStatus.NOT_FOUND));
     }
 
+
     @GetMapping
     public ResponseEntity<List<AppUser>> getAllUsers() {
         List<AppUser> users = userRepository.findAll();

+ 22 - 3
src/main/java/com/deliveryproject/easydelivery/MainController.java

@@ -58,9 +58,10 @@ public class MainController {
         System.out.println(coordinates);
         return coordinates;
     }
-    @GetMapping("/optimize-delivery-route")
+
+    @RequestMapping("/optimize-delivery-route")
     @ResponseBody
-    public List<Coordinate> optimizeDeliveryRoute(List<Coordinate> coordinates) {
+    public List<Coordinate> optimizeDeliveryRoute(@RequestBody List<Coordinate> coordinates) {
 
         List<Integer> optimizedRoute = new ArrayList<>();
         List<Coordinate> optimizedRouteCoordinates = new ArrayList<>();
@@ -93,10 +94,28 @@ public class MainController {
         return optimizedRouteCoordinates;
     }
 
+    @RequestMapping("/intersections-between-multiple-coordinates")
+    @ResponseBody
+    public List<Coordinate> getIntersectionsBetweenCoordinates(@RequestBody List<Coordinate> coordinates) throws IOException {
+        List<Coordinate> optimizedRouteCoordinates = optimizeDeliveryRoute(coordinates);
+
+        ArrayList<Coordinate> nodes = new ArrayList<>();
+        for (int i = 0; i < optimizedRouteCoordinates.size(); i++) {
+            ArrayList<ArrayList<Double>> nodesBetweenTwoCoordinates;
+            if (i == optimizedRouteCoordinates.size() - 1) nodesBetweenTwoCoordinates = getNodesBetweenTwoCoordinates(optimizedRouteCoordinates.get(i).lon, optimizedRouteCoordinates.get(i).lat,optimizedRouteCoordinates.get(0).lon, optimizedRouteCoordinates.get(0).lat);
+            else nodesBetweenTwoCoordinates = getNodesBetweenTwoCoordinates(optimizedRouteCoordinates.get(i).lon, optimizedRouteCoordinates.get(i).lat,optimizedRouteCoordinates.get(i+1).lon, optimizedRouteCoordinates.get(i+1).lat);
+            System.out.println("Drop off");
+            for (ArrayList <Double> node: nodesBetweenTwoCoordinates) {
+                nodes.add(new Coordinate(node.get(0), node.get(1)));
+            }
+        }
+        return nodes;
+    }
+
     private double calculateDistance(Coordinate c1, Coordinate c2) {
         ArrayList<ArrayList<Double>> nodes;
         try {
-            nodes = getNodesBetweenTwoCoordinates(c1.lat, c1.lon, c2.lat, c2.lon);
+            nodes = getNodesBetweenTwoCoordinates(c1.lon, c1.lat, c2.lon, c2.lat);
         } catch (IOException e) {
             e.printStackTrace();
             return Double.MAX_VALUE;

+ 3 - 0
src/main/java/com/deliveryproject/easydelivery/Models/OSMRClass/Geometry.java

@@ -1,7 +1,10 @@
 package com.deliveryproject.easydelivery.Models.OSMRClass;
 
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
 import java.util.ArrayList;
 
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class Geometry {
     public ArrayList<ArrayList<Double>> coordinates;
     public String type;

+ 3 - 1
src/main/java/com/deliveryproject/easydelivery/Models/OSMRClass/Intersection.java

@@ -1,7 +1,9 @@
 package com.deliveryproject.easydelivery.Models.OSMRClass;
 
-import java.util.ArrayList;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 
+import java.util.ArrayList;
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class Intersection {
     public int out;
     public ArrayList<Boolean> entry;

+ 3 - 1
src/main/java/com/deliveryproject/easydelivery/Models/OSMRClass/Lane.java

@@ -1,7 +1,9 @@
 package com.deliveryproject.easydelivery.Models.OSMRClass;
 
-import java.util.ArrayList;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 
+import java.util.ArrayList;
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class Lane{
     public boolean valid;
     public ArrayList<String> indications;

+ 3 - 1
src/main/java/com/deliveryproject/easydelivery/Models/OSMRClass/Leg.java

@@ -1,7 +1,9 @@
 package com.deliveryproject.easydelivery.Models.OSMRClass;
 
-import java.util.ArrayList;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 
+import java.util.ArrayList;
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class Leg {
     public ArrayList<Step> steps;
     public String summary;

+ 4 - 1
src/main/java/com/deliveryproject/easydelivery/Models/OSMRClass/Maneuver.java

@@ -1,8 +1,11 @@
 package com.deliveryproject.easydelivery.Models.OSMRClass;
 
-import java.util.ArrayList;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 
+import java.util.ArrayList;
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class Maneuver {
+    public int exit;
     public int bearing_after;
     public int bearing_before;
     public ArrayList<Double> location;

+ 3 - 1
src/main/java/com/deliveryproject/easydelivery/Models/OSMRClass/Root.java

@@ -1,8 +1,10 @@
 package com.deliveryproject.easydelivery.Models.OSMRClass;
 
-import java.util.ArrayList;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 
+import java.util.ArrayList;
 
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class Root{
     public String code;
     public ArrayList<Route> routes;

+ 3 - 1
src/main/java/com/deliveryproject/easydelivery/Models/OSMRClass/Route.java

@@ -1,7 +1,9 @@
 package com.deliveryproject.easydelivery.Models.OSMRClass;
 
-import java.util.ArrayList;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 
+import java.util.ArrayList;
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class Route {
     public Geometry geometry;
     public ArrayList<Leg> legs;

+ 3 - 1
src/main/java/com/deliveryproject/easydelivery/Models/OSMRClass/Step.java

@@ -1,7 +1,9 @@
 package com.deliveryproject.easydelivery.Models.OSMRClass;
 
-import java.util.ArrayList;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 
+import java.util.ArrayList;
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class Step {
     public Geometry geometry;
     public Maneuver maneuver;

+ 3 - 1
src/main/java/com/deliveryproject/easydelivery/Models/OSMRClass/Waypoint.java

@@ -1,7 +1,9 @@
 package com.deliveryproject.easydelivery.Models.OSMRClass;
 
-import java.util.ArrayList;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 
+import java.util.ArrayList;
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class Waypoint {
     public String hint;
     public double distance;