From 49105dfe424461d0ee873fc9913d9b1ba3caed56 Mon Sep 17 00:00:00 2001
From: Tor-Einar Skog <tor-einar.skog@nibio.no>
Date: Tue, 13 Mar 2018 11:08:07 +0100
Subject: [PATCH] Final adaptations to GIS aware result object

---
 .../java/no/nibio/vips/entity/ResultDeserializer.java  | 10 ++++++++++
 .../java/no/nibio/vips/entity/ResultSerializer.java    |  6 +++++-
 src/main/java/no/nibio/vips/gis/GISUtil.java           |  2 ++
 3 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/src/main/java/no/nibio/vips/entity/ResultDeserializer.java b/src/main/java/no/nibio/vips/entity/ResultDeserializer.java
index 931409c..2199b80 100644
--- a/src/main/java/no/nibio/vips/entity/ResultDeserializer.java
+++ b/src/main/java/no/nibio/vips/entity/ResultDeserializer.java
@@ -33,6 +33,7 @@ import com.vividsolutions.jts.geom.Polygon;
 import java.io.IOException;
 import java.util.Date;
 import java.util.Map;
+import no.nibio.vips.gis.GISUtil;
 
 /**
  * @copyright 2018 <a href="http://www.nibio.no/">NIBIO</a>
@@ -53,7 +54,9 @@ public class ResultDeserializer extends StdDeserializer<Result>{
         ObjectMapper objectMapper = new ObjectMapper();
         objectMapper.registerModule(new JtsModule());
         Result r = new ResultImpl();
+        //System.out.println(jp.getText());
         JsonNode node = jp.getCodec().readTree(jp);
+        //System.out.println(node);
         r.setValidTimeStart(objectMapper.convertValue(node.get("validTimeStart"), Date.class));
         r.setValidTimeEnd(objectMapper.convertValue(node.get("validTimeEnd"), Date.class));
         if(node.get("allValues") != null)
@@ -63,6 +66,7 @@ public class ResultDeserializer extends StdDeserializer<Result>{
         r.setWarningStatus(node.get("warningStatus").asInt());
         JsonNode geomNode = node.get("validGeometry");
         Geometry validGeometry = null;
+        //System.out.println(geomNode);
         if(geomNode != null && geomNode.get("type") != null)
         {
             switch(geomNode.get("type").asText()){
@@ -78,8 +82,14 @@ public class ResultDeserializer extends StdDeserializer<Result>{
                 default:
                     validGeometry = null;
             }
+            if(validGeometry.getSRID() <= 0)
+            {
+                validGeometry.setSRID(GISUtil.DEFAULT_SRID);
+            }
         }
+        
         r.setValidGeometry(validGeometry);
+        //System.out.println(r.getValidGeometry());
         return r;
     }
 
diff --git a/src/main/java/no/nibio/vips/entity/ResultSerializer.java b/src/main/java/no/nibio/vips/entity/ResultSerializer.java
index ec08fdb..992dbef 100644
--- a/src/main/java/no/nibio/vips/entity/ResultSerializer.java
+++ b/src/main/java/no/nibio/vips/entity/ResultSerializer.java
@@ -61,7 +61,11 @@ class ResultSerializer extends StdSerializer<ResultImpl>{
                 : t.getValidGeometry().getGeometryType().equals("LineString") ? objectMapper.writeValueAsString((LineString) t.getValidGeometry())
                 :t.getValidGeometry().getGeometryType().equals("Polygon") ? objectMapper.writeValueAsString((Polygon) t.getValidGeometry())
                 : "null";
-        jg.writeStringField("validGeometry", geoJSON);
+        
+        //jg.writeObjectField("validGeometry", t.getValidGeometry());
+        //System.out.println(geoJSON);
+        jg.writeRaw(",\"validGeometry\":" + geoJSON);
+        //
         jg.writeNumberField("warningStatus", t.getWarningStatus());
         jg.writeStringField("allValues", this.objectMapper.writeValueAsString(t.getAllValues()));
         jg.writeStringField("keys", this.objectMapper.writeValueAsString(t.getKeys()));
diff --git a/src/main/java/no/nibio/vips/gis/GISUtil.java b/src/main/java/no/nibio/vips/gis/GISUtil.java
index c5a938d..b50d7b0 100644
--- a/src/main/java/no/nibio/vips/gis/GISUtil.java
+++ b/src/main/java/no/nibio/vips/gis/GISUtil.java
@@ -52,6 +52,8 @@ import org.wololo.jts2geojson.GeoJSONWriter;
  */
 public class GISUtil {
     
+    public static Integer DEFAULT_SRID = 4326;
+    
     /**
      * Calculates the coordinates of a nearby destination
      * @param origin WGS84 where to start from
-- 
GitLab