From e1e2282e723c7801cb58254033adca8c041d00ca Mon Sep 17 00:00:00 2001
From: kfilippopolitis <kostasfilippop@gmail.com>
Date: Sun, 26 Mar 2023 23:56:11 +0300
Subject: [PATCH] Update mipengine algorithm specifictation for enums.

---
 .../DTOs/ExaremeAlgorithmRequestParamDTO.java |  2 +-
 .../models/DTOs/MIPEngineAlgorithmDTO.java    | 26 ++++++++++++++++++-
 .../eu/hbp/mip/services/AlgorithmService.java |  1 -
 3 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmRequestParamDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmRequestParamDTO.java
index a9c20ff7b..b5b990b3b 100644
--- a/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmRequestParamDTO.java
+++ b/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmRequestParamDTO.java
@@ -63,7 +63,7 @@ public class ExaremeAlgorithmRequestParamDTO {
         this.defaultValue = parameter.getDefault_value();
         this.valueNotBlank = parameter.getNotblank();
         this.label = parameter.getLabel();
-        this.valueEnumerations = parameter.getEnums();
+        this.valueEnumerations = parameter.getEnums().isPresent()? parameter.getEnums().get().getSource():null;
         this.valueMultiple = parameter.getMultiple();
         this.valueMax = parameter.getMax();
         this.valueMin = parameter.getMin();
diff --git a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java
index 8a9e0cc56..9aa2d9534 100644
--- a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java
+++ b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java
@@ -36,6 +36,8 @@ public class MIPEngineAlgorithmDTO {
     public Optional<Hashtable<String, MIPEngineAlgorithmParameterDTO>> getParameters() {
         return Optional.ofNullable(parameters);
     }
+
+
     @Data
     @AllArgsConstructor
     public static class MIPEngineAlgorithmParameterDTO {
@@ -65,7 +67,29 @@ public class MIPEngineAlgorithmDTO {
         private String default_value;
 
         @SerializedName("enums")
-        private List<String> enums;
+        private MIPEngineAlgorithmEnumDTO enums;
+
+        @SerializedName("dict_keys_enums")
+        private MIPEngineAlgorithmEnumDTO dict_keys_enums;
+
+        @SerializedName("dict_values_enums")
+        private MIPEngineAlgorithmEnumDTO dict_values_enums;
+
+        public Optional<MIPEngineAlgorithmEnumDTO> getEnums() {
+            return Optional.ofNullable(enums);
+        }
+
+        @Data
+        @AllArgsConstructor
+        public static class MIPEngineAlgorithmEnumDTO {
+
+            @SerializedName("type")
+            private String type;
+
+            @SerializedName("source")
+            private List<String> source;
+
+        }
     }
 
     @Data
diff --git a/src/main/java/eu/hbp/mip/services/AlgorithmService.java b/src/main/java/eu/hbp/mip/services/AlgorithmService.java
index dd2d605b6..cf5d797f0 100644
--- a/src/main/java/eu/hbp/mip/services/AlgorithmService.java
+++ b/src/main/java/eu/hbp/mip/services/AlgorithmService.java
@@ -65,7 +65,6 @@ public class AlgorithmService {
         ArrayList<ExaremeAlgorithmDTO> mipengineAlgorithms = getMIPEngineAlgorithms(logger);
         ArrayList<ExaremeAlgorithmDTO> exaremeAlgorithms = getExaremeAlgorithms(logger);
         ArrayList<ExaremeAlgorithmDTO> galaxyAlgorithms = getGalaxyWorkflows(logger);
-
         ArrayList<ExaremeAlgorithmDTO> algorithms = new ArrayList<>();
 
         // Remove Exareme algorithms that exist in the Exareme2
-- 
GitLab