From 24e54dd753b3ce8c649437e91db8cec42cb02827 Mon Sep 17 00:00:00 2001 From: kfilippopolitis <kostasfilippop@gmail.com> Date: Thu, 13 Jan 2022 03:32:48 -0800 Subject: [PATCH 1/2] Small changes --- .../models/DTOs/MIPEngineAlgorithmResultDTO.java | 11 +++++++++-- .../mip/models/DTOs/TabularVisualizationDTO.java | 16 ++++++++++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmResultDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmResultDTO.java index 4491ddb44..69332ed5b 100644 --- a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmResultDTO.java +++ b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmResultDTO.java @@ -9,6 +9,13 @@ import java.util.List; @AllArgsConstructor public class MIPEngineAlgorithmResultDTO { private final String title; - private final List<TabularVisualizationDTO.Field> columns; - private final List<List<Object>> data; + private final List<Column> columns; + + @Data + @AllArgsConstructor + public static class Column { + private final String name; + private final String type; + private final List<Object> data; + } } \ No newline at end of file diff --git a/src/main/java/eu/hbp/mip/models/DTOs/TabularVisualizationDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/TabularVisualizationDTO.java index 3e17932f7..8804c9576 100644 --- a/src/main/java/eu/hbp/mip/models/DTOs/TabularVisualizationDTO.java +++ b/src/main/java/eu/hbp/mip/models/DTOs/TabularVisualizationDTO.java @@ -17,17 +17,29 @@ public class TabularVisualizationDTO { public TabularVisualizationDTO(MIPEngineAlgorithmResultDTO mipEngineAlgorithmResultDTO) { HashMap<String, List<TabularVisualizationDTO.Field>> schema = new HashMap<>(); - schema.put("fields", mipEngineAlgorithmResultDTO.getColumns()); + List<Field> fields = new ArrayList<TabularVisualizationDTO.Field>(); + List<List<Object>> data = new ArrayList<ArrayList<TabularVisualizationDTO.Field>>() + for (Column column : mipEngineAlgorithmResultDTO.getColumns()) + { + fields.add(new Field(column)); + data.add(column.getData()); + } + schema.put("fields", fields); this.name = mipEngineAlgorithmResultDTO.getTitle(); this.profile = "tabular-data-resource"; this.schema = schema; - this.data = mipEngineAlgorithmResultDTO.getData(); + this.data = data; } @Data @AllArgsConstructor public static class Field { private final String name; private final String type; + public Field(Column column) + { + this.name = column.getName(); + this.type = column.getType(); + } } } -- GitLab From ef064540b5615cb2fdfd14bc7f405c39c3af3999 Mon Sep 17 00:00:00 2001 From: kfilippopolitis <kostasfilippop@gmail.com> Date: Thu, 20 Jan 2022 00:57:28 -0800 Subject: [PATCH 2/2] Now mipengine result will be more flexible --- .../eu/hbp/mip/controllers/AlgorithmsAPI.java | 1 - .../mip/models/DTOs/ExaremeAlgorithmDTO.java | 14 +++--- .../eu/hbp/mip/models/DTOs/ExperimentDTO.java | 4 +- .../models/DTOs/MIPEngineAlgorithmDTO.java | 9 ++++ .../DTOs/MIPEngineAlgorithmResultDTO.java | 21 --------- .../models/DTOs/TabularVisualizationDTO.java | 45 ------------------- .../hbp/mip/services/ExperimentService.java | 30 ++++++------- 7 files changed, 35 insertions(+), 89 deletions(-) delete mode 100644 src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmResultDTO.java delete mode 100644 src/main/java/eu/hbp/mip/models/DTOs/TabularVisualizationDTO.java diff --git a/src/main/java/eu/hbp/mip/controllers/AlgorithmsAPI.java b/src/main/java/eu/hbp/mip/controllers/AlgorithmsAPI.java index a15fd37cd..2746a2b7b 100644 --- a/src/main/java/eu/hbp/mip/controllers/AlgorithmsAPI.java +++ b/src/main/java/eu/hbp/mip/controllers/AlgorithmsAPI.java @@ -151,7 +151,6 @@ public class AlgorithmsAPI { StringBuilder response = new StringBuilder(); HTTPUtil.sendGet(mipengineAlgorithmsUrl, response); logger.LogUserAction(response.toString()); - mipEngineAlgorithms = gson.fromJson( response.toString(), new TypeToken<ArrayList<MIPEngineAlgorithmDTO>>() { diff --git a/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmDTO.java index 584ffd424..07459a27e 100644 --- a/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmDTO.java +++ b/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmDTO.java @@ -37,15 +37,19 @@ public class ExaremeAlgorithmDTO { this.desc = mipEngineAlgorithm.getDesc(); this.type = "mipengine"; List<ExaremeAlgorithmRequestParamDTO> parameters = new ArrayList<>(); + if (mipEngineAlgorithm.getInputdata().getY().isPresent()){ + parameters.add(new ExaremeAlgorithmRequestParamDTO("y", mipEngineAlgorithm.getInputdata().getY().get())); + } parameters.add(new ExaremeAlgorithmRequestParamDTO("x", mipEngineAlgorithm.getInputdata().getX())); - parameters.add(new ExaremeAlgorithmRequestParamDTO("y", mipEngineAlgorithm.getInputdata().getY())); parameters.add(new ExaremeAlgorithmRequestParamDTO("pathology", mipEngineAlgorithm.getInputdata().getPathology())); parameters.add(new ExaremeAlgorithmRequestParamDTO("dataset", mipEngineAlgorithm.getInputdata().getDatasets())); parameters.add(new ExaremeAlgorithmRequestParamDTO("filter", mipEngineAlgorithm.getInputdata().getFilter())); - mipEngineAlgorithm.getParameters().forEach((name, parameterDTO) -> { - ExaremeAlgorithmRequestParamDTO parameter = new ExaremeAlgorithmRequestParamDTO(name, parameterDTO); - parameters.add(parameter); - }); + if (mipEngineAlgorithm.getParameters().isPresent()){ + mipEngineAlgorithm.getParameters().get().forEach((name, parameterDTO) -> { + ExaremeAlgorithmRequestParamDTO parameter = new ExaremeAlgorithmRequestParamDTO(name, parameterDTO); + parameters.add(parameter); + }); + } this.setParameters(parameters); } @Data 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 378bb5126..d87297591 100644 --- a/src/main/java/eu/hbp/mip/models/DTOs/ExperimentDTO.java +++ b/src/main/java/eu/hbp/mip/models/DTOs/ExperimentDTO.java @@ -25,8 +25,8 @@ public class ExperimentDTO { private Boolean shared; private Boolean viewed; // Result is a list of objects because there is a limitation that java has in types. - // Exareme has result in the type of a List<HashMap<String, Object>> - // Galaxy has result in the type of a List<HashMap<String, List<Object>>> + // Exareme has result in the type of List<HashMap<String, Object>> + // Galaxy has result in the type of List<HashMap<String, List<Object>>> //And there is no generic type that describes either an object or a list of objects private List<Object> result; private ExperimentDAO.Status status; 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 5edfbfe77..d991fde80 100644 --- a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java +++ b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java @@ -6,6 +6,7 @@ import lombok.Data; import java.util.Hashtable; import java.util.List; +import java.util.Optional; @Data @AllArgsConstructor @@ -32,6 +33,9 @@ public class MIPEngineAlgorithmDTO { @SerializedName("inputdata") private MIPEngineAlgorithmInputdataDTO inputdata; + public Optional<Hashtable<String, MIPEngineAlgorithmParameterDTO>> getParameters() { + return Optional.ofNullable(parameters); + } @Data @AllArgsConstructor public static class MIPEngineAlgorithmParameterDTO { @@ -67,6 +71,7 @@ public class MIPEngineAlgorithmDTO { @Data @AllArgsConstructor public static class MIPEngineAlgorithmInputdataDTO { + @SerializedName("x") private MIPEngineAlgorithmInputDataDetailDTO x; @@ -81,6 +86,10 @@ public class MIPEngineAlgorithmDTO { @SerializedName("filter") private MIPEngineAlgorithmInputDataDetailDTO filter; + + public Optional<MIPEngineAlgorithmInputDataDetailDTO> getY() { + return Optional.ofNullable(y); + } } @Data diff --git a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmResultDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmResultDTO.java deleted file mode 100644 index 69332ed5b..000000000 --- a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmResultDTO.java +++ /dev/null @@ -1,21 +0,0 @@ -package eu.hbp.mip.models.DTOs; - -import lombok.AllArgsConstructor; -import lombok.Data; - -import java.util.List; - -@Data -@AllArgsConstructor -public class MIPEngineAlgorithmResultDTO { - private final String title; - private final List<Column> columns; - - @Data - @AllArgsConstructor - public static class Column { - private final String name; - private final String type; - private final List<Object> data; - } -} \ No newline at end of file diff --git a/src/main/java/eu/hbp/mip/models/DTOs/TabularVisualizationDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/TabularVisualizationDTO.java deleted file mode 100644 index 8804c9576..000000000 --- a/src/main/java/eu/hbp/mip/models/DTOs/TabularVisualizationDTO.java +++ /dev/null @@ -1,45 +0,0 @@ -package eu.hbp.mip.models.DTOs; - -import lombok.AllArgsConstructor; -import lombok.Data; - -import java.util.HashMap; -import java.util.List; - -@Data -@AllArgsConstructor -public class TabularVisualizationDTO { - private final String name; - private final String profile; - private final HashMap<String, List<Field>> schema; - private final List<List<Object>> data; - - - public TabularVisualizationDTO(MIPEngineAlgorithmResultDTO mipEngineAlgorithmResultDTO) { - HashMap<String, List<TabularVisualizationDTO.Field>> schema = new HashMap<>(); - List<Field> fields = new ArrayList<TabularVisualizationDTO.Field>(); - List<List<Object>> data = new ArrayList<ArrayList<TabularVisualizationDTO.Field>>() - for (Column column : mipEngineAlgorithmResultDTO.getColumns()) - { - fields.add(new Field(column)); - data.add(column.getData()); - } - schema.put("fields", fields); - this.name = mipEngineAlgorithmResultDTO.getTitle(); - this.profile = "tabular-data-resource"; - this.schema = schema; - this.data = data; - } - @Data - @AllArgsConstructor - public static class Field { - private final String name; - private final String type; - public Field(Column column) - { - this.name = column.getName(); - this.type = column.getType(); - } - } -} - diff --git a/src/main/java/eu/hbp/mip/services/ExperimentService.java b/src/main/java/eu/hbp/mip/services/ExperimentService.java index 8ba133261..1a4403d76 100644 --- a/src/main/java/eu/hbp/mip/services/ExperimentService.java +++ b/src/main/java/eu/hbp/mip/services/ExperimentService.java @@ -390,18 +390,6 @@ public class ExperimentService { return experimentDatasets; } - private List<Object> convertMIPEngineToExaremeAlgorithmResult( - MIPEngineAlgorithmResultDTO mipEngineAlgorithmResultDTO - ) { - Map<String, Object> exaremeResultElement = new HashMap<>(); - exaremeResultElement.put("data", new TabularVisualizationDTO(mipEngineAlgorithmResultDTO)); - exaremeResultElement.put("type", "application/vnd.dataresource+json"); - - List<Object> exaremeResult = new ArrayList<>(); - exaremeResult.add(exaremeResultElement); - return exaremeResult; - } - /** * Creates an experiment and runs it on the background. * Uses the exareme or mip-engine engine that run an experiment synchronously. @@ -527,9 +515,9 @@ public class ExperimentService { List<Object> exaremeAlgorithmResult = new ArrayList<>(); if (requestResponseCode == 200) { - MIPEngineAlgorithmResultDTO mipEngineAlgorithmResultDTO = - JsonConverters.convertJsonStringToObject(String.valueOf(requestResponseBody), MIPEngineAlgorithmResultDTO.class); - exaremeAlgorithmResult = convertMIPEngineToExaremeAlgorithmResult(mipEngineAlgorithmResultDTO); + Object mipEngineResult = + JsonConverters.convertJsonStringToObject(String.valueOf(requestResponseBody), Object.class); + exaremeAlgorithmResult.add(mipEngineResult); } else if (requestResponseCode == 400) { Map<String, Object> exaremeAlgorithmResultElement = new HashMap<>(); @@ -543,6 +531,12 @@ public class ExperimentService { exaremeAlgorithmResultElement.put("type", "text/plain+user_error"); exaremeAlgorithmResult.add(exaremeAlgorithmResultElement); + } else if (requestResponseCode == 461) { + Map<String, Object> exaremeAlgorithmResultElement = new HashMap<>(); + exaremeAlgorithmResultElement.put("data", String.valueOf(requestResponseBody)); + exaremeAlgorithmResultElement.put("type", "text/plain+error"); + exaremeAlgorithmResult.add(exaremeAlgorithmResultElement); + } else if (requestResponseCode == 500) { Map<String, Object> exaremeAlgorithmResultElement = new HashMap<>(); exaremeAlgorithmResultElement.put("data", @@ -551,6 +545,12 @@ public class ExperimentService { exaremeAlgorithmResultElement.put("type", "text/plain+error"); exaremeAlgorithmResult.add(exaremeAlgorithmResultElement); + } else if (requestResponseCode == 512) { + Map<String, Object> exaremeAlgorithmResultElement = new HashMap<>(); + exaremeAlgorithmResultElement.put("data", String.valueOf(requestResponseBody)); + exaremeAlgorithmResultElement.put("type", "text/plain+error"); + exaremeAlgorithmResult.add(exaremeAlgorithmResultElement); + } else { logger.LogUserAction( "MIP-Engine execution responded with an unexpected status code: " + requestResponseCode -- GitLab