From 1a0c2235f6477fee3189e1c2fd29f7a603e7f620 Mon Sep 17 00:00:00 2001
From: Lene Wasskog <lene.wasskog@nibio.no>
Date: Thu, 8 May 2025 15:45:27 +0200
Subject: [PATCH] feat: Add support for time series removal

Should not be possible if there are registered
observations for the time series
---
 .../ObservationTimeSeriesController.java        | 17 +++++++++++++++--
 .../vips/logic/i18n/vipslogictexts.properties   |  1 +
 .../logic/i18n/vipslogictexts_nb.properties     |  1 +
 .../templates/observationTimeSeriesForm.ftl     |  2 +-
 4 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/src/main/java/no/nibio/vips/logic/controller/servlet/ObservationTimeSeriesController.java b/src/main/java/no/nibio/vips/logic/controller/servlet/ObservationTimeSeriesController.java
index a5f60bd0..12d231bb 100644
--- a/src/main/java/no/nibio/vips/logic/controller/servlet/ObservationTimeSeriesController.java
+++ b/src/main/java/no/nibio/vips/logic/controller/servlet/ObservationTimeSeriesController.java
@@ -193,8 +193,21 @@ public class ObservationTimeSeriesController extends HttpServlet {
                     response.sendError(500, ExceptionUtil.getStackTrace(e));
                 }
             } else if (action.equals("deleteObservationTimeSeries")) {
-                Integer observationTimeSeriesId = Integer.valueOf(request.getParameter("observationTimeSeriesId"));
-                LOGGER.info("Delete observationTimeSeries {}", observationTimeSeriesId);
+                try {
+                    Integer observationTimeSeriesId = Integer.valueOf(request.getParameter("observationTimeSeriesId"));
+                    LOGGER.info("Delete observationTimeSeries {}", observationTimeSeriesId);
+                    observationTimeSeriesBean.deleteObservationTimeSeries(observationTimeSeriesId);
+
+                    // Redirect to list
+                    response.sendRedirect(new StringBuilder(Globals.PROTOCOL + "://")
+                        .append(ServletUtil.getServerName(request))
+                        .append("/observationTimeSeries")
+                        .append("?messageKey=").append("observationTimeSeriesDeleted").toString()
+                    );
+                } catch (NullPointerException | NumberFormatException ex) {
+                    response.sendError(500, ExceptionUtil.getStackTrace(ex));
+                }
+
             }
         }
     }
diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts.properties
index 28c36c9d..8726f493 100755
--- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts.properties
+++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts.properties
@@ -1097,3 +1097,4 @@ addNewObservationInTimeSeries=Add observation to time series
 observationTimeSeriesName=Name
 observationTimeSeriesDescription=Description
 year=Year
+observationTimeSeriesDeleted = Observation time series was deleted
diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_nb.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_nb.properties
index a5b139b2..cbfd5821 100755
--- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_nb.properties
+++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_nb.properties
@@ -1096,3 +1096,4 @@ addNewObservationInTimeSeries=Legg til ny observasjon i tidsserien
 observationTimeSeriesName=Navn
 observationTimeSeriesDescription=Beskrivelse
 year=\u00c5r
+observationTimeSeriesDeleted = Tidsserie slettet
diff --git a/src/main/webapp/templates/observationTimeSeriesForm.ftl b/src/main/webapp/templates/observationTimeSeriesForm.ftl
index 06047181..9d5794bc 100644
--- a/src/main/webapp/templates/observationTimeSeriesForm.ftl
+++ b/src/main/webapp/templates/observationTimeSeriesForm.ftl
@@ -525,7 +525,7 @@
                     <span class="help-block" id="${formId}_description_validation"></span>
                 </div>
                 <button type="submit" class="btn btn-default">${i18nBundle.submit}</button>
-                <#if observationTimeSeries.observationTimeSeriesId?has_content>
+                <#if observationTimeSeries.observationTimeSeriesId?has_content && isEditable>
                     <button type="button" class="btn btn-danger"
                             onclick="if(confirm('${i18nBundle.confirmDelete}')){window.location.href='/observationTimeSeries?action=deleteObservationTimeSeries&observationTimeSeriesId=${observationTimeSeries.observationTimeSeriesId}';}">${i18nBundle.delete}</button>
                 </#if>
-- 
GitLab