From bf313b375d6053b3ac6c85b6c4e1a1d39b7dc5e7 Mon Sep 17 00:00:00 2001
From: lewa <lene.wasskog@nibio.no>
Date: Fri, 12 Apr 2024 11:08:39 +0200
Subject: [PATCH] feat: Add source to time series, fix conversion error

---
 .../logic/entity/ObservationTimeSeries.java   | 24 ++++++++++++++++---
 .../service/ObservationTimeSeriesService.java |  8 ++++++-
 2 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/src/main/java/no/nibio/vips/logic/entity/ObservationTimeSeries.java b/src/main/java/no/nibio/vips/logic/entity/ObservationTimeSeries.java
index 3753e25e..5a019c5d 100644
--- a/src/main/java/no/nibio/vips/logic/entity/ObservationTimeSeries.java
+++ b/src/main/java/no/nibio/vips/logic/entity/ObservationTimeSeries.java
@@ -50,9 +50,10 @@ public class ObservationTimeSeries implements Serializable, no.nibio.vips.observ
     private String name;
     private String description;
     private Date created;
-    private Date lastModified;
     private Integer userId;
     private VipsLogicUser user; // Transient
+    private String source;
+    private Date lastModified;
     private Integer lastModifiedBy;
     private VipsLogicUser lastModifiedByUser; // Transient
     private Integer locationPointOfInterestId;
@@ -63,6 +64,10 @@ public class ObservationTimeSeries implements Serializable, no.nibio.vips.observ
     public ObservationTimeSeries() {
     }
 
+    public ObservationTimeSeries(String source) {
+        this.source = source;
+    }
+
     /**
      * @return the id of the observation time series
      */
@@ -237,8 +242,20 @@ public class ObservationTimeSeries implements Serializable, no.nibio.vips.observ
     }
 
     /**
-     * @return the id of the user who last modified the observation time series
+     * @return from where the observation time series originally was created, either WEB or APP
+     */
+    @Column(name = "source")
+    public String getSource() {
+        return source;
+    }
+
+    /**
+     * @param source From where the observation time series originally was created
      */
+    public void setSource(String source) {
+        this.source = source;
+    }
+
     @Column(name = "last_modified_by")
     public Integer getLastModifiedBy() {
         return lastModifiedBy;
@@ -353,9 +370,10 @@ public class ObservationTimeSeries implements Serializable, no.nibio.vips.observ
                 ", name='" + name + '\'' +
                 ", description='" + description + '\'' +
                 ", created=" + created +
-                ", lastModified=" + lastModified +
                 ", userId=" + userId +
                 ", user=" + user +
+                ", source=" + source +
+                ", lastModified=" + lastModified +
                 ", lastModifiedBy=" + lastModifiedBy +
                 ", lastModifiedByUser=" + lastModifiedByUser +
                 ", locationPointOfInterestId=" + locationPointOfInterestId +
diff --git a/src/main/java/no/nibio/vips/logic/service/ObservationTimeSeriesService.java b/src/main/java/no/nibio/vips/logic/service/ObservationTimeSeriesService.java
index 3c250d08..dc2aa0e6 100644
--- a/src/main/java/no/nibio/vips/logic/service/ObservationTimeSeriesService.java
+++ b/src/main/java/no/nibio/vips/logic/service/ObservationTimeSeriesService.java
@@ -207,7 +207,7 @@ public class ObservationTimeSeriesService {
                     return Response.status(Response.Status.NOT_FOUND).build();
                 }
             } else {
-                otsToSave = new ObservationTimeSeries();
+                otsToSave = new ObservationTimeSeries("APP");
                 otsToSave.setUserId(user.getUserId());
                 otsToSave.setCreated(currentDate);
             }
@@ -246,6 +246,12 @@ public class ObservationTimeSeriesService {
         Object value = map.get(key);
         if (clazz.isInstance(value)) {
             return clazz.cast(value);
+        } else if (clazz == Integer.class && value instanceof String) {
+            try {
+                return clazz.cast(Integer.parseInt((String) value));
+            } catch (NumberFormatException e) {
+                return null;
+            }
         }
         return clazz == Boolean.class ? clazz.cast(false) : null;
     }
-- 
GitLab