diff --git a/src/main/java/hbp/mip/models/DTOs/exareme2/Exareme2AlgorithmRequestDTO.java b/src/main/java/hbp/mip/models/DTOs/exareme2/Exareme2AlgorithmRequestDTO.java index 0b44a7ed56f360d679108241502681c1cdbfd25e..38a84da2a5daa719d127cb7d66058c938c6ab718 100644 --- a/src/main/java/hbp/mip/models/DTOs/exareme2/Exareme2AlgorithmRequestDTO.java +++ b/src/main/java/hbp/mip/models/DTOs/exareme2/Exareme2AlgorithmRequestDTO.java @@ -1,10 +1,10 @@ package hbp.mip.models.DTOs.exareme2; +import com.google.gson.JsonSyntaxException; import hbp.mip.models.DTOs.ExperimentExecutionDTO; import hbp.mip.utils.JsonConverters; import java.util.*; -import java.util.stream.Collectors; public record Exareme2AlgorithmRequestDTO( String request_id, @@ -27,12 +27,12 @@ public record Exareme2AlgorithmRequestDTO( } private static Exareme2InputDataRequestDTO getInputData(List<ExperimentExecutionDTO.AlgorithmExecutionDTO.AlgorithmParameterExecutionDTO> exaremeAlgorithmRequestParamDTOs) { - if(exaremeAlgorithmRequestParamDTOs == null){ + if (exaremeAlgorithmRequestParamDTOs == null) { return null; } Map<String, String> parameters = new HashMap<>(); - for(var parameter: exaremeAlgorithmRequestParamDTOs){ + for (var parameter : exaremeAlgorithmRequestParamDTOs) { parameters.put(parameter.name(), parameter.value()); } @@ -66,7 +66,7 @@ public record Exareme2AlgorithmRequestDTO( } private static Map<String, Object> getParameters(List<ExperimentExecutionDTO.AlgorithmExecutionDTO.AlgorithmParameterExecutionDTO> exaremeAlgorithmRequestParamDTOs) { - if(exaremeAlgorithmRequestParamDTOs == null){ + if (exaremeAlgorithmRequestParamDTOs == null) { return null; } @@ -82,24 +82,15 @@ public record Exareme2AlgorithmRequestDTO( } private static Map<String, Object> getPreprocessing(List<ExperimentExecutionDTO.AlgorithmExecutionDTO.TransformerExecutionDTO> exaremeTransformers) { - if(exaremeTransformers == null){ + if (exaremeTransformers == null) { return null; } HashMap<String, Object> exareme2Preprocessing = new HashMap<>(); exaremeTransformers.forEach(transformer -> { HashMap<String, Object> transformerParameterDTOs = new HashMap<>(); - for (ExperimentExecutionDTO.AlgorithmExecutionDTO.AlgorithmParameterExecutionDTO parameter : transformer.parameters()) { - - if (parameter.name().equals("strategies")) { // TODO Add this to the proper type conversion, should handle dict as well - transformerParameterDTOs.put(parameter.name(), - JsonConverters.convertJsonStringToObject(parameter.value(), HashMap.class) - ); - continue; - } - + for (ExperimentExecutionDTO.AlgorithmExecutionDTO.AlgorithmParameterExecutionDTO parameter : transformer.parameters()) transformerParameterDTOs.put(parameter.name(), convertStringToProperExareme2ParameterType(parameter.value())); - } exareme2Preprocessing.put(transformer.name(), transformerParameterDTOs); }); @@ -107,6 +98,9 @@ public record Exareme2AlgorithmRequestDTO( } private static Object convertStringToProperExareme2ParameterType(String str) { + if (isMap(str)) + return JsonConverters.convertJsonStringToObject(str, Map.class); + String[] stringValues = str.split(","); if (stringValues.length == 0) return ""; @@ -155,6 +149,18 @@ public record Exareme2AlgorithmRequestDTO( return true; } + private static boolean isMap(String strMap) { + if (strMap == null) { + return false; + } + try { + JsonConverters.convertJsonStringToObject(strMap, Map.class); + } catch (JsonSyntaxException e) { + return false; + } + return true; + } + public record Exareme2InputDataRequestDTO(String data_model, List<String> datasets, List<String> x, List<String> y, Exareme2FilterRequestDTO filters) { }