From 1b55430100fc2924a65a38f4910878adeb332900 Mon Sep 17 00:00:00 2001
From: kfilippopolitis <kostasfilippop@gmail.com>
Date: Thu, 3 Dec 2020 05:17:02 -0800
Subject: [PATCH] Removed the algorithm name  from experimentDTO so it wont be
 required or will return algorithm name twice but the algorithm name still
 exists in the database to help with the filtering on the GET /experiments
 request.

---
 .../eu/hbp/mip/models/DAOs/ExperimentDAO.java |  3 +--
 .../eu/hbp/mip/models/DTOs/ExperimentDTO.java | 18 +++----------
 .../hbp/mip/services/ExperimentService.java   | 26 +++++++++----------
 3 files changed, 17 insertions(+), 30 deletions(-)

diff --git a/src/main/java/eu/hbp/mip/models/DAOs/ExperimentDAO.java b/src/main/java/eu/hbp/mip/models/DAOs/ExperimentDAO.java
index f43c34960..cd3f50757 100644
--- a/src/main/java/eu/hbp/mip/models/DAOs/ExperimentDAO.java
+++ b/src/main/java/eu/hbp/mip/models/DAOs/ExperimentDAO.java
@@ -7,7 +7,6 @@ import eu.hbp.mip.models.DTOs.AlgorithmDTO;
 import eu.hbp.mip.models.DTOs.ExperimentDTO;
 import eu.hbp.mip.utils.JsonConverters;
 import io.swagger.annotations.ApiModel;
-import org.svenson.JSONParser;
 
 import javax.persistence.*;
 import java.util.*;
@@ -117,7 +116,7 @@ public class ExperimentDAO {
     public ExperimentDTO convertToDTO(boolean includeResult)
     {
         ExperimentDTO experimentDTO = new ExperimentDTO();
-        experimentDTO.setAlgorithmDetails(JsonConverters.convertJsonStringToObject(this.algorithmDetails, AlgorithmDTO.class));
+        experimentDTO.setAlgorithm(JsonConverters.convertJsonStringToObject(this.algorithmDetails, AlgorithmDTO.class));
         experimentDTO.setCreated(this.created);
         experimentDTO.setUpdated(this.updated);
         experimentDTO.setFinished(this.finished);
diff --git a/src/main/java/eu/hbp/mip/models/DTOs/ExperimentDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/ExperimentDTO.java
index 5707b75d0..5f554dbe6 100644
--- a/src/main/java/eu/hbp/mip/models/DTOs/ExperimentDTO.java
+++ b/src/main/java/eu/hbp/mip/models/DTOs/ExperimentDTO.java
@@ -3,10 +3,8 @@ package eu.hbp.mip.models.DTOs;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import eu.hbp.mip.models.DAOs.ExperimentDAO;
 
-import java.lang.reflect.Array;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
 import java.util.UUID;
 
 @JsonInclude(JsonInclude.Include.NON_NULL)
@@ -23,29 +21,19 @@ public class ExperimentDTO {
     private List<ExperimentDTO.ResultDTO> result;
     private ExperimentDAO.Status status;
 
-    private String algorithm;
-    private AlgorithmDTO algorithmDetails;
+    private AlgorithmDTO algorithm;
 
     public ExperimentDTO() {
     }
 
-    public String getAlgorithm() {
+    public AlgorithmDTO getAlgorithm() {
         return algorithm;
     }
 
-    public void setAlgorithm(String algorithm) {
+    public void setAlgorithm(AlgorithmDTO algorithm) {
         this.algorithm = algorithm;
     }
 
-    public AlgorithmDTO getAlgorithmDetails() {
-        return algorithmDetails;
-    }
-
-    public void setAlgorithmDetails(AlgorithmDTO algorithmDetails) {
-        this.algorithmDetails = algorithmDetails;
-        this.algorithm = algorithmDetails.getName();
-    }
-
     public UUID getUuid() {
         return uuid;
     }
diff --git a/src/main/java/eu/hbp/mip/services/ExperimentService.java b/src/main/java/eu/hbp/mip/services/ExperimentService.java
index eb4001665..f92efef0d 100644
--- a/src/main/java/eu/hbp/mip/services/ExperimentService.java
+++ b/src/main/java/eu/hbp/mip/services/ExperimentService.java
@@ -167,7 +167,7 @@ public class ExperimentService {
         checkPostExperimentProperInput(experimentDTO, endpoint);
 
         // Get the type and name of algorithm
-        String algorithmType = experimentDTO.getAlgorithmDetails().getType();
+        String algorithmType = experimentDTO.getAlgorithm().getType();
 
         if(algorithmType == null){
             Logging.LogUserAction(user.getUsername(), endpoint, "Please provide algorithm type.");
@@ -207,10 +207,10 @@ public class ExperimentService {
 
         // Get the parameters
         List<AlgorithmDTO.AlgorithmParamDTO> algorithmParameters
-                = experimentDTO.getAlgorithmDetails().getParameters();
+                = experimentDTO.getAlgorithm().getParameters();
 
         // Get the type and name of algorithm
-        String algorithmName = experimentDTO.getAlgorithmDetails().getName();
+        String algorithmName = experimentDTO.getAlgorithm().getName();
 
         if (!allowedTransientAlgorithms(algorithmName)) {
             Logging.LogUserAction(user.getUsername(), endpoint,
@@ -356,7 +356,7 @@ public class ExperimentService {
             throw new BadRequestException("CreatedBy is not editable.");
         }
 
-        if (experimentDTO.getAlgorithmDetails() != null) {
+        if (experimentDTO.getAlgorithm() != null) {
             Logging.LogUserAction(activeUserService.getActiveUser().getUsername(), endpoint, "AlgorithmDetails is not editable.");
             throw new BadRequestException("AlgorithmDetails is not editable.");
         }
@@ -379,9 +379,9 @@ public class ExperimentService {
 
     private void algorithmParametersLogging(ExperimentDTO experimentDTO, String endpoint) {
         UserDAO user = activeUserService.getActiveUser();
-        String algorithmName = experimentDTO.getAlgorithm();
+        String algorithmName = experimentDTO.getAlgorithm().getName();
         StringBuilder parametersLogMessage = new StringBuilder(", Parameters:\n");
-        experimentDTO.getAlgorithmDetails().getParameters().forEach(
+        experimentDTO.getAlgorithm().getParameters().forEach(
                 params -> parametersLogMessage
                         .append("  ")
                         .append(params.getLabel())
@@ -401,7 +401,7 @@ public class ExperimentService {
     private String getDatasetFromExperimentParameters(ExperimentDTO experimentDTO, String endpoint) {
 
         String experimentDatasets = null;
-        for (AlgorithmDTO.AlgorithmParamDTO parameter : experimentDTO.getAlgorithmDetails().getParameters()) {
+        for (AlgorithmDTO.AlgorithmParamDTO parameter : experimentDTO.getAlgorithm().getParameters()) {
             if (parameter.getLabel().equals("dataset")) {
                 experimentDatasets = parameter.getValue();
                 break;
@@ -454,8 +454,8 @@ public class ExperimentService {
         ExperimentDAO experimentDAO = new ExperimentDAO();
         experimentDAO.setUuid(UUID.randomUUID());
         experimentDAO.setCreatedBy(user);
-        experimentDAO.setAlgorithmDetails(JsonConverters.convertObjectToJsonString(experimentDTO.getAlgorithmDetails()));
-        experimentDAO.setAlgorithm(experimentDTO.getAlgorithm());
+        experimentDAO.setAlgorithmDetails(JsonConverters.convertObjectToJsonString(experimentDTO.getAlgorithm()));
+        experimentDAO.setAlgorithm(experimentDTO.getAlgorithm().getName());
         experimentDAO.setName(experimentDTO.getName());
         experimentDAO.setStatus(ExperimentDAO.Status.pending);
 
@@ -520,11 +520,11 @@ public class ExperimentService {
         Logging.LogUserAction(user.getUsername(), endpoint, "Created experiment with uuid :" + experimentDAO.getUuid());
 
         // Run the 1st algorithm from the list
-        String algorithmName = experimentDTO.getAlgorithmDetails().getName();
+        String algorithmName = experimentDTO.getAlgorithm().getName();
 
         // Get the parameters
         List<AlgorithmDTO.AlgorithmParamDTO> algorithmParameters
-                = experimentDTO.getAlgorithmDetails().getParameters();
+                = experimentDTO.getAlgorithm().getParameters();
 
         String body = gson.toJson(algorithmParameters);
         String url = queryExaremeUrl + "/" + algorithmName;
@@ -606,11 +606,11 @@ public class ExperimentService {
 
 
         // Run the 1st algorithm from the list
-        String workflowId = experimentDTO.getAlgorithmDetails().getName();
+        String workflowId = experimentDTO.getAlgorithm().getName();
 
         // Get the parameters
         List<AlgorithmDTO.AlgorithmParamDTO> algorithmParameters
-                = experimentDTO.getAlgorithmDetails().getParameters();
+                = experimentDTO.getAlgorithm().getParameters();
 
         // Convert the parameters to workflow parameters
         HashMap<String, String> algorithmParamsIncludingEmpty = new HashMap<>();
-- 
GitLab