diff --git a/src/main/java/eu/hbp/mip/controllers/AlgorithmsAPI.java b/src/main/java/eu/hbp/mip/controllers/AlgorithmsAPI.java index a15fd37cdfa9ac00e69687e1a419f5359522edd6..2746a2b7b6bf1ca6658162b9c9a86a5ef9b8d176 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 584ffd424f4c691a168cd26b3b8b1fa2566658bf..07459a27ef5ce457d5bf9556c7b556e70b833b8d 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 378bb5126c27b68a138dc5be07bec1c0b13f8145..d872975913b9d5937173b137282440b4e09d48bb 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 5edfbfe77827179234caf339f3f627235f72e967..d991fde8011801be989488872826ad6ac72cd2e4 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 69332ed5b04ffb047d0de1bb246f9cbda5536248..0000000000000000000000000000000000000000 --- 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 8804c9576414c9ae0e7b87f600ea78281c508744..0000000000000000000000000000000000000000 --- 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 8ba1332614bc0941d8dbedfceb31445e8f545751..1a4403d7654cdab1ff945baf8203a28770287d70 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