diff --git a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java index a849082ab379cbc72d9252afb1acba26bdff64ae..6f2fdb379d79644125a321d7fe9629933c4f3c3e 100644 --- a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java +++ b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java @@ -89,6 +89,8 @@ public class ExperimentApi { LOGGER.info("Experiment saved"); + experiment.getModel().cureVariables(); + try { if(isExaremeAlgo(experiment)) { @@ -124,6 +126,9 @@ public class ExperimentApi { if (experiment == null) { return new ResponseEntity<>("Not found", HttpStatus.NOT_FOUND); } + + experiment.getModel().cureVariables(); + return new ResponseEntity<>(gson.toJson(experiment), HttpStatus.OK); } @@ -152,6 +157,8 @@ public class ExperimentApi { LOGGER.info("Experiment updated (marked as viewed)"); + experiment.getModel().cureVariables(); + return new ResponseEntity<>(gson.toJson(experiment), HttpStatus.OK); } @@ -280,6 +287,8 @@ public class ExperimentApi { LOGGER.info("Experiment updated (marked as shared)"); + experiment.getModel().cureVariables(); + return new ResponseEntity<>(gson.toJson(experiment), HttpStatus.OK); } diff --git a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java index ac4d8769d0522b34058584ad42a2ffc9725dc8be..af6eba66bc4e45fa73fb8aa71a51192389c26906 100644 --- a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java +++ b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java @@ -52,7 +52,7 @@ public class ModelsApi { @ApiOperation(value = "Get models", response = Model.class, responseContainer = "List") @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @RequestMapping(method = RequestMethod.GET) - public ResponseEntity<Iterable> getModels( + public ResponseEntity<List> getModels( @ApiParam(value = "Max number of results") @RequestParam(value = "limit", required = false) Integer limit, @ApiParam(value = "Only ask own models") @RequestParam(value = "own", required = false) Boolean own, @ApiParam(value = "Only ask models from own team") @RequestParam(value = "team", required = false) Boolean team, @@ -72,6 +72,7 @@ public class ModelsApi { models = modelRepository.findByValidOrCreatedByOrderByCreatedAt(true, user); } + List<Model> modelsList = new LinkedList<>(); if(valid != null && models != null) { for (Iterator<Model> i = models.iterator(); i.hasNext(); ) @@ -82,10 +83,15 @@ public class ModelsApi { { i.remove(); } + else + { + m.cureVariables(); + modelsList.add(m); + } } } - return new ResponseEntity<List<Model>>(HttpStatus.OK).ok(models); + return new ResponseEntity<List<Model>>(HttpStatus.OK).ok(modelsList); } @@ -197,33 +203,11 @@ public class ModelsApi { Collection<String> yAxisVarsColl = new LinkedHashSet<>(yAxisVars); model.getConfig().setyAxisVariables(new LinkedList<>(yAxisVarsColl)); - List<Variable> varsQuery = queryRepository.findOne(model.getQuery().getId()).getVariables(); - Collection<Variable> varsQueryColl = new LinkedHashSet<>(varsQuery); - model.getQuery().setVariables(new LinkedList<>(varsQueryColl)); - - List<Variable> grpgsQuery = queryRepository.findOne(model.getQuery().getId()).getGrouping(); - Collection<Variable> grpgsQueryColl = new LinkedHashSet<>(grpgsQuery); - model.getQuery().setGrouping(new LinkedList<>(grpgsQueryColl)); - - List<Variable> covarsQuery = queryRepository.findOne(model.getQuery().getId()).getCovariables(); - Collection<Variable> covarsQueryColl = new LinkedHashSet<>(covarsQuery); - model.getQuery().setCovariables(new LinkedList<>(covarsQueryColl)); - List<Filter> fltrs = queryRepository.findOne(model.getQuery().getId()).getFilters(); Collection<Filter> fltrsColl = new LinkedHashSet<>(fltrs); model.getQuery().setFilters(new LinkedList<>(fltrsColl)); - List<String> varsDS = datasetRepository.findOne(model.getDataset().getCode()).getVariable(); - Collection<String> varsDSColl = new LinkedHashSet<>(varsDS); - model.getDataset().setVariable(new LinkedList<>(varsDSColl)); - - List<String> grpgsDS = datasetRepository.findOne(model.getDataset().getCode()).getGrouping(); - Collection<String> grpgsDSColl = new LinkedHashSet<>(grpgsDS); - model.getDataset().setGrouping(new LinkedList<>(grpgsDSColl)); - - List<String> headersDS = datasetRepository.findOne(model.getDataset().getCode()).getHeader(); - Collection<String> headersDSColl = new LinkedHashSet<>(headersDS); - model.getDataset().setHeader(new LinkedList<>(headersDSColl)); + model.cureVariables(); return new ResponseEntity<>(HttpStatus.OK).ok(model); } diff --git a/src/main/java/eu/hbp/mip/model/Model.java b/src/main/java/eu/hbp/mip/model/Model.java index d788436a6d9a5b0c42fa1b616cdcc3be443ed1a0..1f792580fb1ae8ff52c1ea94a0d8e1ff8a70366b 100644 --- a/src/main/java/eu/hbp/mip/model/Model.java +++ b/src/main/java/eu/hbp/mip/model/Model.java @@ -11,7 +11,10 @@ import org.hibernate.annotations.Cascade; import org.hibernate.annotations.CascadeType; import javax.persistence.*; +import java.util.Collection; import java.util.Date; +import java.util.LinkedHashSet; +import java.util.LinkedList; @Entity @Table(name = "`model`") @@ -172,4 +175,25 @@ public class Model { this.textQuery = textQuery; } + public void cureVariables() + { + Collection<Variable> varsQueryColl = new LinkedHashSet<>(this.getQuery().getVariables()); + this.getQuery().setVariables(new LinkedList<>(varsQueryColl)); + + Collection<Variable> coVarsQueryColl = new LinkedHashSet<>(this.getQuery().getCovariables()); + this.getQuery().setCovariables(new LinkedList<>(coVarsQueryColl)); + + Collection<Variable> grpsQueryColl = new LinkedHashSet<>(this.getQuery().getGrouping()); + this.getQuery().setGrouping(new LinkedList<>(grpsQueryColl)); + + Collection<String> varsDSQueryColl = new LinkedHashSet<>(this.getDataset().getVariable()); + this.getDataset().setVariable(new LinkedList<>(varsDSQueryColl)); + + Collection<String> coVarsDSQueryColl = new LinkedHashSet<>(this.getDataset().getHeader()); + this.getDataset().setHeader(new LinkedList<>(coVarsDSQueryColl)); + + Collection<String> grpsDSQueryColl = new LinkedHashSet<>(this.getDataset().getGrouping()); + this.getDataset().setGrouping(new LinkedList<>(grpsDSQueryColl)); + } + }