From 9379a25e8bbf316a582c22c40ef60ee831c6aca6 Mon Sep 17 00:00:00 2001
From: Tor-Einar Skog <tor-einar.skog@nibio.no>
Date: Mon, 25 Oct 2021 12:44:37 +0200
Subject: [PATCH] Added support for sending observationdataschema in
 ObservationListItem

---
 .../nibio/vips/logic/entity/Observation.java  |  6 ++-
 .../entity/rest/ObservationListItem.java      | 37 ++++++++++++++++++-
 .../logic/service/ObservationService.java     | 13 +++++--
 3 files changed, 49 insertions(+), 7 deletions(-)

diff --git a/src/main/java/no/nibio/vips/logic/entity/Observation.java b/src/main/java/no/nibio/vips/logic/entity/Observation.java
index a259508d..d10dc810 100755
--- a/src/main/java/no/nibio/vips/logic/entity/Observation.java
+++ b/src/main/java/no/nibio/vips/logic/entity/Observation.java
@@ -629,7 +629,7 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse
      * @param locale
      * @return 
      */
-    public ObservationListItem getListItem(String locale)
+    public ObservationListItem getListItem(String locale, ObservationDataSchema observationDataSchema)
     {
         // If geoInfo is from POI, need to add observationId
         if(this.location != null)
@@ -649,7 +649,9 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse
                 this.location != null && this.geoinfo == null ? this.location.getGeoJSON() : this.getGeoinfo(),
                 this.getObservationHeading(),
                 this.getBroadcastMessage(),
-                this.getLocationIsPrivate()
+                this.getLocationIsPrivate(),
+                this.getObservationData(),
+                observationDataSchema
         );
     }
     
diff --git a/src/main/java/no/nibio/vips/logic/entity/rest/ObservationListItem.java b/src/main/java/no/nibio/vips/logic/entity/rest/ObservationListItem.java
index 41e9b940..1e64b78a 100644
--- a/src/main/java/no/nibio/vips/logic/entity/rest/ObservationListItem.java
+++ b/src/main/java/no/nibio/vips/logic/entity/rest/ObservationListItem.java
@@ -20,6 +20,7 @@
 package no.nibio.vips.logic.entity.rest;
 
 import java.util.Date;
+import no.nibio.vips.observationdata.ObservationDataSchema;
 
 /**
  * A JSON friendly, public representation of the Observation
@@ -32,6 +33,8 @@ public class ObservationListItem {
     private String organismName, cropOrganismName;
     private String geoInfo;
     private String observationHeading;
+    private String observationData;
+    private ObservationDataSchema observationDataSchema;
     private Boolean broadcastMessage, locationIsPrivate;
 
     public ObservationListItem(
@@ -44,7 +47,9 @@ public class ObservationListItem {
             String geoinfo,
             String observationHeading,
             Boolean broadcastMessage,
-            Boolean locationIsPrivate
+            Boolean locationIsPrivate,
+            String observationData,
+            ObservationDataSchema observationDataSchema
     ){
         this.observationId = observationId;
         this.timeOfObservation = timeOfObservation;
@@ -56,6 +61,8 @@ public class ObservationListItem {
         this.observationHeading = observationHeading;
         this.broadcastMessage = broadcastMessage;
         this.locationIsPrivate = locationIsPrivate;
+        this.observationData = observationData;
+        this.observationDataSchema = observationDataSchema;
     }
     
     /**
@@ -197,4 +204,32 @@ public class ObservationListItem {
     public void setLocationIsPrivate(Boolean locationIsPrivate) {
         this.locationIsPrivate = locationIsPrivate;
     }
+
+    /**
+     * @return the observationDataSchema
+     */
+    public ObservationDataSchema getObservationDataSchema() {
+        return observationDataSchema;
+    }
+
+    /**
+     * @param observationDataSchema the observationDataSchema to set
+     */
+    public void setObservationDataSchema(ObservationDataSchema observationDataSchema) {
+        this.observationDataSchema = observationDataSchema;
+    }
+
+    /**
+     * @return the observationData
+     */
+    public String getObservationData() {
+        return observationData;
+    }
+
+    /**
+     * @param observationData the observationData to set
+     */
+    public void setObservationData(String observationData) {
+        this.observationData = observationData;
+    }
 }
diff --git a/src/main/java/no/nibio/vips/logic/service/ObservationService.java b/src/main/java/no/nibio/vips/logic/service/ObservationService.java
index 42cb7c3f..a448d6f7 100755
--- a/src/main/java/no/nibio/vips/logic/service/ObservationService.java
+++ b/src/main/java/no/nibio/vips/logic/service/ObservationService.java
@@ -59,6 +59,7 @@ import no.nibio.vips.logic.entity.Observation;
 import no.nibio.vips.logic.entity.PolygonService;
 import no.nibio.vips.logic.entity.VipsLogicRole;
 import no.nibio.vips.logic.entity.VipsLogicUser;
+import no.nibio.vips.logic.entity.rest.ObservationListItem;
 import no.nibio.vips.logic.entity.rest.PointMappingResponse;
 import no.nibio.vips.logic.entity.rest.ReferencedPoint;
 import no.nibio.vips.logic.util.GISEntityUtil;
@@ -155,8 +156,8 @@ public class ObservationService {
         String locale = localeStr != null ? localeStr : 
         	user != null ? user.getOrganizationId().getDefaultLocale() : 
         		SessionControllerGetter.getUserBean().getOrganization(organizationId).getDefaultLocale();
-        return Response.ok().entity(
-                getFilteredObservationsFromBackend(
+        
+        List<ObservationListItem> observations = getFilteredObservationsFromBackend(
                         organizationId,
                         pestId,
                         cropId,
@@ -164,8 +165,12 @@ public class ObservationService {
                         fromStr,
                         toStr,
                         user
-                ).stream().map(obs -> obs.getListItem(locale)).collect(Collectors.toList())
-        ).build();
+                ).stream().map(obs -> { 
+                    return obs.getListItem(locale, SessionControllerGetter.getObservationBean().getObservationDataSchema(organizationId, obs.getOrganismId()));
+                }).collect(Collectors.toList());
+        
+        //o.setObservationDataSchema(SessionControllerGetter.getObservationBean().getObservationDataSchema(observer.getOrganizationId().getOrganizationId(), o.getOrganismId()));
+        return Response.ok().entity(observations).build();
     }
             
             
-- 
GitLab