From a3e152018c6b5367f25ce0b537ba4d5069549b35 Mon Sep 17 00:00:00 2001
From: Tor-Einar Skog <tor-einar.skog@nibio.no>
Date: Fri, 4 Dec 2020 14:20:18 +0100
Subject: [PATCH] Refactoring WARNING_STATUS to separate parameter

---
 .../model/entity/LocationResult.java             | 16 ++++++++++++++++
 .../nibio/vips/ipmdecisions/DataTransformer.java | 13 ++++++-------
 2 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/src/main/java/net/ipmdecisions/model/entity/LocationResult.java b/src/main/java/net/ipmdecisions/model/entity/LocationResult.java
index ef2ed6c..a075a15 100644
--- a/src/main/java/net/ipmdecisions/model/entity/LocationResult.java
+++ b/src/main/java/net/ipmdecisions/model/entity/LocationResult.java
@@ -28,12 +28,14 @@ public class LocationResult {
     private Double latitude;
     private Double altitude;
     private Double[][] data;
+    private Integer[] warningStatus;
     
     public LocationResult(Double longitude, Double latitude, Double altitude, int rows, int columns){
         this.longitude = longitude;
         this.latitude = latitude;
         this.altitude = altitude;
         this.data = new Double[rows][columns];
+        this.warningStatus = new Integer[rows];
     }
     
     public LocationResult(){
@@ -150,4 +152,18 @@ public class LocationResult {
     public void setAltitude(Double altitude) {
         this.altitude = altitude;
     }
+
+    /**
+     * @return the warningStatus
+     */
+    public Integer[] getWarningStatus() {
+        return warningStatus;
+    }
+
+    /**
+     * @param warningStatus the warningStatus to set
+     */
+    public void setWarningStatus(Integer[] warningStatus) {
+        this.warningStatus = warningStatus;
+    }
 }
diff --git a/src/main/java/no/nibio/vips/ipmdecisions/DataTransformer.java b/src/main/java/no/nibio/vips/ipmdecisions/DataTransformer.java
index 3c66ac2..d25a362 100644
--- a/src/main/java/no/nibio/vips/ipmdecisions/DataTransformer.java
+++ b/src/main/java/no/nibio/vips/ipmdecisions/DataTransformer.java
@@ -83,7 +83,7 @@ public class DataTransformer {
         // b) check all possible result parameters
         Collections.sort(VIPSResults);
         Set<String> resultParameters = new HashSet<>();
-        resultParameters.add("WARNING_STATUS");
+        //resultParameters.add("WARNING_STATUS");
         Long minSecondsBetween = null;
         Long lastTime = null;
         for(Result r:VIPSResults)
@@ -113,20 +113,18 @@ public class DataTransformer {
         retVal.setTimeEnd(VIPSResults.get(VIPSResults.size()-1).getValidTimeStart().toInstant());
         LocationResult locationResult = new LocationResult();
         Long rows = 1 + (retVal.getTimeEnd().getEpochSecond() - retVal.getTimeStart().getEpochSecond()) / retVal.getInterval();
-        Double[][] data = new Double[rows.intValue()][retVal.getResultParameters().length]; // TODO Set correct dimensions
+        Double[][] data = new Double[rows.intValue()][retVal.getResultParameters().length]; 
+        Integer[] warningStatus = new Integer[rows.intValue()];
         for(Result r:VIPSResults)
         {
             // Calculate which row, based on 
             Long row = (r.getValidTimeStart().getTime()/1000 - retVal.getTimeStart().getEpochSecond()) / retVal.getInterval();
+            warningStatus[row.intValue()] = r.getWarningStatus();
             // Using the ordering in the resultParameters
             for(int i=0;i<retVal.getResultParameters().length;i++)
             {
                 data[row.intValue()][i] = null;
-                if(VIPSResultParameters[i].equals("WARNING_STATUS"))
-                {
-                    data[row.intValue()][i] = r.getWarningStatus().doubleValue();
-                }
-                else if(VIPSResultParameters[i] != null)
+                if(VIPSResultParameters[i] != null)
                 {
                     if(r.getAllValues().get(VIPSResultParameters[i]) != null)
                     {
@@ -135,6 +133,7 @@ public class DataTransformer {
                 }
             }
         } 
+        locationResult.setWarningStatus(warningStatus);
         locationResult.setData(data);
         retVal.addLocationResult(locationResult);
         return retVal;
-- 
GitLab