From 36cfe7cc1f44c5f415fd345e52cbb622138cd71b Mon Sep 17 00:00:00 2001
From: Tor-Einar Skog <tor-einar.skog@nibio.no>
Date: Fri, 5 May 2023 12:58:01 +0200
Subject: [PATCH] Add observationData (optional) to pest entity

---
 .../no/nibio/vips/logic/entity/Organism.java  | 11 ++++++++
 .../observationdata/ObservationDataBean.java  | 25 +++++++++++++++++++
 2 files changed, 36 insertions(+)

diff --git a/src/main/java/no/nibio/vips/logic/entity/Organism.java b/src/main/java/no/nibio/vips/logic/entity/Organism.java
index 612cfaec..e545d430 100755
--- a/src/main/java/no/nibio/vips/logic/entity/Organism.java
+++ b/src/main/java/no/nibio/vips/logic/entity/Organism.java
@@ -100,6 +100,9 @@ public class Organism implements Serializable {
     
     @Transient
     private String observationDataSchema;
+
+    @Transient
+    private String observationData;
     
     /*@OneToMany(cascade = CascadeType.ALL, mappedBy = "organism")
     private Set<OrganismLocale> organismLocaleSet;
@@ -357,4 +360,12 @@ public class Organism implements Serializable {
 	public void setObservationDataSchema(String observationDataSchema) {
 		this.observationDataSchema = observationDataSchema;
 	}
+
+    public String getObservationData() {
+        return observationData;
+    }
+
+    public void setObservationData(String observationData) {
+        this.observationData = observationData;
+    }
 }
diff --git a/src/main/java/no/nibio/vips/observationdata/ObservationDataBean.java b/src/main/java/no/nibio/vips/observationdata/ObservationDataBean.java
index f8e1d2ee..357d5924 100644
--- a/src/main/java/no/nibio/vips/observationdata/ObservationDataBean.java
+++ b/src/main/java/no/nibio/vips/observationdata/ObservationDataBean.java
@@ -14,6 +14,7 @@ import javax.persistence.PersistenceContext;
 import javax.servlet.http.HttpServletRequest;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -86,6 +87,29 @@ public class ObservationDataBean {
 			return m.createObjectNode();
 		}
     }
+
+	public JsonNode getDataModel(Integer organizationId, Integer organismId)
+	{
+		ObjectMapper m = new ObjectMapper();
+
+		JsonNode rootNode = null;
+		try {
+			try {
+				//System.out.println("organizationId = " + organizationId + ", organismId = " + organismId);
+				ObservationDataSchema ods = em.createNamedQuery("ObservationDataSchema.findByPK", ObservationDataSchema.class)
+						.setParameter("organizationId", organizationId)
+						.setParameter("organismId", organismId)
+						.getSingleResult();
+				rootNode = m.readTree(ods.getDataModel());
+			} catch (NoResultException ex) {
+				rootNode = m.readTree(this.getStandardModel());
+			}
+		}catch (JsonProcessingException ex)
+		{
+			return null;
+		}
+		return rootNode;
+	}
     
 	
 	public String getStandardSchema(){
@@ -119,6 +143,7 @@ public class ObservationDataBean {
 	    	for(Organism pest:pests)
 	    	{
 	    		pest.setObservationDataSchema(om.writeValueAsString(this.getSchema(organizationId, pest.getOrganismId(), bundle)));
+				pest.setObservationData(om.writeValueAsString(this.getDataModel(organizationId, pest.getOrganismId())));
 	    	}
 	    	return pests;
     	}
-- 
GitLab