From 81ac1e9cbdb4065b2932b70fb75854b76c0dead6 Mon Sep 17 00:00:00 2001
From: Tor-Einar Skog <tor-einar.skog@nibio.no>
Date: Wed, 27 Sep 2023 14:23:35 +0200
Subject: [PATCH] feat: Add bee icon, variable impactRadius for nurseries

---
 pom.xml                                       |   2 +-
 .../session/PointOfInterestBean.java          |   2 -
 .../vips/logic/entity/PointOfInterest.java    |  18 +++++--
 .../entity/PointOfInterestTypeNursery.java    |  36 +++++++++++++
 .../V15__POI_type_nursery_altered.sql         |  28 ++++++++++
 .../fireblight/icons/bees-icon-25.png         | Bin 0 -> 8611 bytes
 .../map_applications/fireblight/js/map.js     |  50 +++++++++++-------
 7 files changed, 109 insertions(+), 27 deletions(-)
 create mode 100644 src/main/resources/db/migration/V15__POI_type_nursery_altered.sql
 create mode 100644 src/main/webapp/map_applications/fireblight/icons/bees-icon-25.png

diff --git a/pom.xml b/pom.xml
index 3b94a9fa..481a18f4 100755
--- a/pom.xml
+++ b/pom.xml
@@ -217,7 +217,7 @@
         <dependency>
             <groupId>no.nibio.vips</groupId>
             <artifactId>VIPSCommon</artifactId>
-            <version>2.0.8-SNAPSHOT</version>
+            <version>2.0.1</version>
         </dependency>
         <dependency>
             <groupId>javax</groupId>
diff --git a/src/main/java/no/nibio/vips/logic/controller/session/PointOfInterestBean.java b/src/main/java/no/nibio/vips/logic/controller/session/PointOfInterestBean.java
index fbe1d3e7..99893bbf 100755
--- a/src/main/java/no/nibio/vips/logic/controller/session/PointOfInterestBean.java
+++ b/src/main/java/no/nibio/vips/logic/controller/session/PointOfInterestBean.java
@@ -394,8 +394,6 @@ public class PointOfInterestBean {
         if(poi.getGisGeom() != null || (poi.getLongitude() != null &&  poi.getLatitude() != null))
         {
             GISUtil gisUtil = new GISUtil();
-            poi.addProperty("pointOfInterestId", poi.getPointOfInterestId());
-            poi.addProperty("pointOfInterestTypeId", poi.getPointOfInterestTypeId());
             if(poi.getGisGeom() != null)
             {
                 
diff --git a/src/main/java/no/nibio/vips/logic/entity/PointOfInterest.java b/src/main/java/no/nibio/vips/logic/entity/PointOfInterest.java
index 796d7816..c6f1eb58 100755
--- a/src/main/java/no/nibio/vips/logic/entity/PointOfInterest.java
+++ b/src/main/java/no/nibio/vips/logic/entity/PointOfInterest.java
@@ -269,7 +269,15 @@ public class PointOfInterest implements Serializable, Comparable {
         {
             this.properties = new HashMap<>();
         }
-        return properties;
+        if(this.properties.get("pointOfInterestId") == null)
+        {
+            this.properties.put("pointOfInterestId", this.getPointOfInterestId());
+        }
+        if(this.properties.get("pointOfInterestTypeId") == null)
+        {
+            this.properties.put("pointOfInterestTypeId", this.getPointOfInterestTypeId());
+        }
+        return this.properties;
     }
 
     /**
@@ -358,14 +366,16 @@ public class PointOfInterest implements Serializable, Comparable {
     @Transient
     public String getGeoJSON()
     {
-        this.addProperty("pointOfInterestId", this.getPointOfInterestId());
-        this.addProperty("pointOfInterestTypeId", this.getPointOfInterestTypeId());
         return this.gisUtil.getGeoJSONFromGeometry(this.getGisGeom(), this.getProperties());
     }
     
     public void addProperty(String key, Object value)
     {
-        this.getProperties().put(key, value);
+        if(this.properties == null)
+        {
+            this.properties = new HashMap<>();
+        }
+        this.properties.put(key, value);
     }
     
     /**
diff --git a/src/main/java/no/nibio/vips/logic/entity/PointOfInterestTypeNursery.java b/src/main/java/no/nibio/vips/logic/entity/PointOfInterestTypeNursery.java
index 18565569..0a1c0f2d 100644
--- a/src/main/java/no/nibio/vips/logic/entity/PointOfInterestTypeNursery.java
+++ b/src/main/java/no/nibio/vips/logic/entity/PointOfInterestTypeNursery.java
@@ -20,9 +20,12 @@
 package no.nibio.vips.logic.entity;
 
 import java.io.Serializable;
+import java.util.Map;
+import javax.persistence.Column;
 import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 import javax.persistence.Table;
+import javax.persistence.Transient;
 
 /**
  * @copyright 2023 <a href="http://www.nibio.no/">NIBIO</a>
@@ -32,5 +35,38 @@ import javax.persistence.Table;
 @DiscriminatorValue("7")
 @Table(name = "point_of_interest_nursery")
 public class PointOfInterestTypeNursery extends PointOfInterest implements Serializable {
+    
+    private Double impactRadius;
 
+    /**
+     * Radius (in km) of the expected impact (implemented for fire blight)
+     * of the nursery. Used for map rendering
+     * @return the impactRadius
+     */
+    @Column(name="impact_radius")
+    public Double getImpactRadius() {
+        return impactRadius;
+    }
+
+    /**
+     * @param impactRadius the impactRadius to set
+     */
+    public void setImpactRadius(Double impactRadius) {
+        this.impactRadius = impactRadius;
+    }
+    
+    @Transient
+    @Override
+    public String getGeoJSON()
+    {
+        this.addProperty("impactRadius", this.getImpactRadius());
+        return super.getGeoJSON();
+    }
+    
+    @Transient
+    @Override
+    public Map<String,Object> getProperties() {
+        this.addProperty("impactRadius", this.getImpactRadius());
+        return super.getProperties();
+    }
 }
diff --git a/src/main/resources/db/migration/V15__POI_type_nursery_altered.sql b/src/main/resources/db/migration/V15__POI_type_nursery_altered.sql
new file mode 100644
index 00000000..2b7cba02
--- /dev/null
+++ b/src/main/resources/db/migration/V15__POI_type_nursery_altered.sql
@@ -0,0 +1,28 @@
+/* 
+ * Copyright (c) 2023 NIBIO <http://www.nibio.no/>. 
+ * 
+ * This file is part of VIPSLogic.
+ *  This program is free software: you can redistribute it and/or modify
+ *  it under the terms of the GNU Affero General Public License as published by
+ *  the Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Affero General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Affero General Public License
+ *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ * 
+ */
+/**
+ * Author:  Tor-Einar Skog <tor-einar.skog@nibio.no>
+ * Created: September 27th, 2023
+ */
+
+
+
+-- Add property impact_radius to POI type nursery
+ALTER TABLE public.point_of_interest_nursery
+    ADD COLUMN impact_radius DOUBLE PRECISION DEFAULT 0.0;
\ No newline at end of file
diff --git a/src/main/webapp/map_applications/fireblight/icons/bees-icon-25.png b/src/main/webapp/map_applications/fireblight/icons/bees-icon-25.png
new file mode 100644
index 0000000000000000000000000000000000000000..4ff07995a3a5358964d713d9c0384d83e25c90ef
GIT binary patch
literal 8611
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

literal 0
HcmV?d00001

diff --git a/src/main/webapp/map_applications/fireblight/js/map.js b/src/main/webapp/map_applications/fireblight/js/map.js
index b9671d45..50b99143 100755
--- a/src/main/webapp/map_applications/fireblight/js/map.js
+++ b/src/main/webapp/map_applications/fireblight/js/map.js
@@ -307,27 +307,37 @@ function getOpenLayersDefaultStyle()
  */
 function diseaseSpreadingPoiStyle(feature, resolution) 
 {
-    if(feature.getGeometry().getType() == "Point")
-    {
-        const radiusInMeters = feature.getProperties()["pointOfInterestTypeId"] == "6" ? 5000 
-            : feature.getProperties()["pointOfInterestTypeId"] == "7" ? 10000
-            : 500;
-        const fillColor = feature.getProperties()["pointOfInterestTypeId"] == "6" ? [255,0, 0, 0.5] 
-            : feature.getProperties()["pointOfInterestTypeId"] == "7" ? [255, 127,127 , 0.5]
-            : [255, 255, 255, 0.0];
-        const viewProjection = map.getView().getProjection();      
-        const coordsInViewProjection = feature.getGeometry().getCoordinates();
-        const longLat = ol.proj.toLonLat(coordsInViewProjection, viewProjection);
-        const latitude_rad = longLat[1] * Math.PI / 180;
-        const circle = new ol.style.Style({
-            image: new ol.style.Circle({
-                fill: new ol.style.Fill({color: fillColor}),
-                stroke: new ol.style.Stroke({color: [0, 0, 0, 1], width: 5, lineDash: [5, 10], lineCap:"square"}),
-                radius: radiusInMeters / (resolution / viewProjection.getMetersPerUnit() * Math.cos(latitude_rad))
-            })
-        });
+    if(feature.getProperties()["pointOfInterestTypeId"] == "7") // Nursery
+    {   
+        if(feature.getGeometry().getType() == "Point")
+        {
+            // impactRadius is set in database for nursery POIs
+            const radiusInMeters = feature.getProperties()["impactRadius"] * 1000;
+            const viewProjection = map.getView().getProjection();      
+            const coordsInViewProjection = feature.getGeometry().getCoordinates();
+            const longLat = ol.proj.toLonLat(coordsInViewProjection, viewProjection);
+            const latitude_rad = longLat[1] * Math.PI / 180;
+            const circle = new ol.style.Style({
+                image: new ol.style.Circle({
+                    fill: new ol.style.Fill({color: [255, 127,127 , 0.5]}),
+                    stroke: new ol.style.Stroke({color: [0, 0, 0, 1], width: 5, lineDash: [5, 10], lineCap:"square"}),
+                    radius: radiusInMeters / (resolution / viewProjection.getMetersPerUnit() * Math.cos(latitude_rad))
+                })
+            });
 
-        return [circle];
+            return [circle];
+        }
+    }
+    else if(feature.getProperties()["pointOfInterestTypeId"] == "6") // Apiary site
+    {
+        return [new ol.style.Style({
+                image: new ol.style.Icon({
+                    src: 'icons/bees-icon-25.png',
+                    scale: 0.3,
+                    anchor: [0.3,1]
+                })
+            })];
+            
     }
     
     return getOpenLayersDefaultStyle();
-- 
GitLab