From 4cf11ffbdf28f62d9d8151cc88867e96f86f97ed Mon Sep 17 00:00:00 2001
From: Tor-Einar Skog <tor-einar.skog@nibio.no>
Date: Thu, 16 May 2019 15:19:03 +0200
Subject: [PATCH] Upgrade to new version of GeoTools, with all kinds of
 repercussions

---
 pom.xml                                       | 38 +++++++++++++------
 .../entity/PointWeatherObservationList.java   |  2 +-
 .../java/no/nibio/vips/entity/Result.java     |  2 +-
 .../nibio/vips/entity/ResultDeserializer.java |  8 ++--
 .../java/no/nibio/vips/entity/ResultImpl.java |  2 +-
 .../nibio/vips/entity/ResultJsonbAdapter.java |  8 ++--
 .../nibio/vips/entity/ResultSerializer.java   |  8 ++--
 src/main/java/no/nibio/vips/gis/GISUtil.java  | 24 +++++-------
 .../java/no/nibio/vips/gis/GISUtilTest.java   |  5 +--
 9 files changed, 52 insertions(+), 45 deletions(-)

diff --git a/pom.xml b/pom.xml
index ec0a023..3b68546 100755
--- a/pom.xml
+++ b/pom.xml
@@ -64,6 +64,12 @@
       <version>2.7.0</version>
       <type>jar</type>
     </dependency>
+    <dependency>
+      <groupId>org.locationtech.jts</groupId>
+      <artifactId>jts-core</artifactId>
+      <version>1.16.0</version>
+      <type>jar</type>
+    </dependency>
     <dependency>
       <groupId>javax</groupId>
       <artifactId>javaee-api</artifactId>
@@ -94,34 +100,42 @@
 <dependency>
             <groupId>org.geotools</groupId>
             <artifactId>gt-api</artifactId>
-            <version>17.2</version>
+            <version>20.3</version>
         </dependency>
         <dependency>
         <groupId>org.geotools</groupId>
         <artifactId>gt-epsg-hsql</artifactId>
-        <version>17.2</version>
+        <version>20.3</version>
     </dependency>
   <dependency>
     <groupId>org.renjin</groupId>
     <artifactId>renjin-script-engine</artifactId>
     <version>RELEASE</version>
   </dependency>
-  <dependency>
-  <groupId>com.vividsolutions</groupId>
-  <artifactId>jts</artifactId>
-  <version>1.13</version>
-</dependency>
+  
 <dependency>
   <groupId>com.bedatadriven</groupId>
   <artifactId>jackson-datatype-jts</artifactId>
   <version>2.2</version>
 </dependency>
 <dependency>
-        <groupId>com.github.bjornharrtell</groupId>
-          <!--groupId>org.wololo</groupId-->
+        <!--groupId>com.github.bjornharrtell</groupId-->
+          <groupId>org.wololo</groupId>
         <artifactId>jts2geojson</artifactId>
-        <version>0.10.0</version>
+        <version>0.12.0</version>
     </dependency>
+    <!-- https://mvnrepository.com/artifact/org.jscience/jscience -->
+<dependency>
+    <groupId>javax.measure</groupId>
+    <artifactId>unit-api</artifactId>
+    <version>1.0</version>
+</dependency>
+<dependency>
+    <groupId>tec.units</groupId>
+    <artifactId>unit-ri</artifactId>
+    <version>1.0.3</version>
+</dependency>
+
 </dependencies>
 <repositories>
   <repository>
@@ -156,8 +170,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.3.2</version>
         <configuration>
-          <source>10</source>
-          <target>10</target>
+          <source>1.8</source>
+          <target>1.8</target>
         </configuration>
       </plugin>
       <plugin>
diff --git a/src/main/java/no/nibio/vips/entity/PointWeatherObservationList.java b/src/main/java/no/nibio/vips/entity/PointWeatherObservationList.java
index af1f8f3..f6edfc0 100644
--- a/src/main/java/no/nibio/vips/entity/PointWeatherObservationList.java
+++ b/src/main/java/no/nibio/vips/entity/PointWeatherObservationList.java
@@ -21,7 +21,7 @@ package no.nibio.vips.entity;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.vividsolutions.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Coordinate;
 import java.util.List;
 
 /**
diff --git a/src/main/java/no/nibio/vips/entity/Result.java b/src/main/java/no/nibio/vips/entity/Result.java
index bc92d7e..62cd66f 100755
--- a/src/main/java/no/nibio/vips/entity/Result.java
+++ b/src/main/java/no/nibio/vips/entity/Result.java
@@ -24,7 +24,7 @@ import java.util.Map;
 import java.util.Set;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.vividsolutions.jts.geom.Geometry;
+import org.locationtech.jts.geom.Geometry;
 
 
 /**
diff --git a/src/main/java/no/nibio/vips/entity/ResultDeserializer.java b/src/main/java/no/nibio/vips/entity/ResultDeserializer.java
index 2199b80..5e2f4d5 100644
--- a/src/main/java/no/nibio/vips/entity/ResultDeserializer.java
+++ b/src/main/java/no/nibio/vips/entity/ResultDeserializer.java
@@ -26,10 +26,10 @@ import com.fasterxml.jackson.databind.DeserializationContext;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.LineString;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.LineString;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
 import java.io.IOException;
 import java.util.Date;
 import java.util.Map;
diff --git a/src/main/java/no/nibio/vips/entity/ResultImpl.java b/src/main/java/no/nibio/vips/entity/ResultImpl.java
index 0653864..395e37d 100755
--- a/src/main/java/no/nibio/vips/entity/ResultImpl.java
+++ b/src/main/java/no/nibio/vips/entity/ResultImpl.java
@@ -20,7 +20,7 @@
 package no.nibio.vips.entity;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.vividsolutions.jts.geom.Geometry;
+import org.locationtech.jts.geom.Geometry;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.HashMap;
diff --git a/src/main/java/no/nibio/vips/entity/ResultJsonbAdapter.java b/src/main/java/no/nibio/vips/entity/ResultJsonbAdapter.java
index 1a8532f..2038629 100644
--- a/src/main/java/no/nibio/vips/entity/ResultJsonbAdapter.java
+++ b/src/main/java/no/nibio/vips/entity/ResultJsonbAdapter.java
@@ -21,10 +21,10 @@ package no.nibio.vips.entity;
 
 import com.bedatadriven.jackson.datatype.jts.JtsModule;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.LineString;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.LineString;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.Map;
diff --git a/src/main/java/no/nibio/vips/entity/ResultSerializer.java b/src/main/java/no/nibio/vips/entity/ResultSerializer.java
index 992dbef..3d8d565 100644
--- a/src/main/java/no/nibio/vips/entity/ResultSerializer.java
+++ b/src/main/java/no/nibio/vips/entity/ResultSerializer.java
@@ -25,10 +25,10 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.SerializationFeature;
 import com.fasterxml.jackson.databind.SerializerProvider;
 import com.fasterxml.jackson.databind.ser.std.StdSerializer;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.LineString;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.LineString;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
 import java.io.IOException;
 
 /**
diff --git a/src/main/java/no/nibio/vips/gis/GISUtil.java b/src/main/java/no/nibio/vips/gis/GISUtil.java
index c7c2ca5..3f5f6d0 100644
--- a/src/main/java/no/nibio/vips/gis/GISUtil.java
+++ b/src/main/java/no/nibio/vips/gis/GISUtil.java
@@ -19,22 +19,17 @@
 
 package no.nibio.vips.gis;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
-import com.vividsolutions.jts.geom.PrecisionModel;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
+import org.locationtech.jts.geom.PrecisionModel;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-import javax.measure.Measure;
-import javax.measure.quantity.Area;
-import javax.measure.unit.SI;
 import org.geotools.geometry.jts.JTS;
 import org.geotools.referencing.CRS;
-import org.geotools.referencing.crs.DefaultGeographicCRS;
-import org.opengis.geometry.MismatchedDimensionException;
 import org.opengis.referencing.FactoryException;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.opengis.referencing.operation.MathTransform;
@@ -214,7 +209,8 @@ public class GISUtil {
      * 
      * @param p
      * @return Area in square meters
-     */
+     * Used only by MetnoThreddsDataparser, which is obsolete anyway
+     *
     public Measure<Double, Area> calcArea(Polygon p) {
         Point centroid = p.getCentroid();
         try {
@@ -230,7 +226,7 @@ public class GISUtil {
           e.printStackTrace();
         }
         return Measure.valueOf(0.0, SI.SQUARE_METRE);
-    }
+    }*/
     
     /**
      * Create a polygon with the given bounds
@@ -279,7 +275,7 @@ public class GISUtil {
         {
             Double x = Double.valueOf(xy[0]);
             Double y = Double.valueOf(xy[1]);
-            com.vividsolutions.jts.geom.Coordinate jtsCoordinate = new com.vividsolutions.jts.geom.Coordinate();
+            org.locationtech.jts.geom.Coordinate jtsCoordinate = new org.locationtech.jts.geom.Coordinate();
             jtsCoordinate.x = x;
             jtsCoordinate.y = y;
             return createPointWGS84(jtsCoordinate);
diff --git a/src/test/java/no/nibio/vips/gis/GISUtilTest.java b/src/test/java/no/nibio/vips/gis/GISUtilTest.java
index 81559a4..e6afacf 100644
--- a/src/test/java/no/nibio/vips/gis/GISUtilTest.java
+++ b/src/test/java/no/nibio/vips/gis/GISUtilTest.java
@@ -18,9 +18,6 @@
  */
 package no.nibio.vips.gis;
 
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.Point;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -157,7 +154,7 @@ public class GISUtilTest extends TestCase {
         System.out.println("JSON=" + json);
         GISUtil instance = new GISUtil();
         //List<Geometry> expResult = null;
-        List<com.vividsolutions.jts.geom.Geometry> geometries = instance.getGeometriesFromGeoJSON(json);
+        List<org.locationtech.jts.geom.Geometry> geometries = instance.getGeometriesFromGeoJSON(json);
         Map<String, Object> properties = new HashMap<>();
         properties.put("observationId", 12);
         String result = instance.getGeoJSONFromGeometries(geometries, properties);
-- 
GitLab