diff --git a/src/main/java/eu/hbp/mip/controllers/AppsApi.java b/src/main/java/eu/hbp/mip/controllers/AppsApi.java index 8a61f04cda468e524c5d4ec8dc5a4d0e9e7b1afe..f79fb8a70eb3c4ba5e92c8f81cb037a3a211ccea 100644 --- a/src/main/java/eu/hbp/mip/controllers/AppsApi.java +++ b/src/main/java/eu/hbp/mip/controllers/AppsApi.java @@ -45,7 +45,6 @@ public class AppsApi { private UserRepository userRepository; @ApiOperation(value = "Get apps", response = App.class, responseContainer = "List") - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @RequestMapping(method = RequestMethod.GET) public ResponseEntity<Iterable> getApps( ) { @@ -55,7 +54,6 @@ public class AppsApi { } @ApiOperation(value = "Post a vote") - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @RequestMapping(value = "/{id}/vote/{value}", method = RequestMethod.POST) public ResponseEntity<Void> vote( @ApiParam(value = "id", required = true) @PathVariable("id") Integer id, diff --git a/src/main/java/eu/hbp/mip/controllers/ArticlesApi.java b/src/main/java/eu/hbp/mip/controllers/ArticlesApi.java index 23c160638f5c9ce96ceb5d489b5b572bfe5478d9..77f8be7c041da077b7935db5c817add2a4dca21c 100644 --- a/src/main/java/eu/hbp/mip/controllers/ArticlesApi.java +++ b/src/main/java/eu/hbp/mip/controllers/ArticlesApi.java @@ -38,12 +38,10 @@ public class ArticlesApi { private ArticleRepository articleRepository; @ApiOperation(value = "Get articles", response = Article.class, responseContainer = "List") - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @RequestMapping(method = RequestMethod.GET) public ResponseEntity<Iterable> getArticles( @ApiParam(value = "Only ask own articles") @RequestParam(value = "own", required = false) Boolean own, - @ApiParam(value = "Only ask results matching status", allowableValues = "{values=[draft, published, closed]}") @RequestParam(value = "status", required = false) String status, - @ApiParam(value = "Only ask articles from own team") @RequestParam(value = "team", required = false) Boolean team + @ApiParam(value = "Only ask results matching status", allowableValues = "draft, published") @RequestParam(value = "status", required = false) String status ) { LOGGER.info("Get articles"); @@ -75,7 +73,7 @@ public class ArticlesApi { } - @ApiOperation(value = "Create an article", response = Void.class) + @ApiOperation(value = "Create an article") @ApiResponses(value = { @ApiResponse(code = 201, message = "Article created") }) @RequestMapping(method = RequestMethod.POST) public ResponseEntity<Void> addAnArticle( @@ -138,7 +136,6 @@ public class ArticlesApi { @ApiOperation(value = "Get an article", response = Article.class) - @ApiResponses(value = { @ApiResponse(code = 200, message = "Found"), @ApiResponse(code = 404, message = "Not found") }) @RequestMapping(value = "/{slug}", method = RequestMethod.GET) public ResponseEntity<Article> getAnArticle( @ApiParam(value = "slug", required = true) @PathVariable("slug") String slug @@ -164,7 +161,7 @@ public class ArticlesApi { } - @ApiOperation(value = "Update an article", response = Void.class) + @ApiOperation(value = "Update an article") @ApiResponses(value = { @ApiResponse(code = 204, message = "Article updated") }) @RequestMapping(value = "/{slug}", method = RequestMethod.PUT) public ResponseEntity<Void> updateAnArticle( diff --git a/src/main/java/eu/hbp/mip/controllers/DatasetsApi.java b/src/main/java/eu/hbp/mip/controllers/DatasetsApi.java index ebbef8d5ec675c2ae25c9e478ea1a0c0a4f885f5..26780f90911e0e0e620ec10dd3916e1c8eacdf32 100644 --- a/src/main/java/eu/hbp/mip/controllers/DatasetsApi.java +++ b/src/main/java/eu/hbp/mip/controllers/DatasetsApi.java @@ -29,7 +29,6 @@ public class DatasetsApi { private DatasetRepository datasetRepository; @ApiOperation(value = "Get a dataset", response = Dataset.class) - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @RequestMapping(value = "/{code}", method = RequestMethod.GET) public ResponseEntity<Dataset> getADataset( @ApiParam(value = "code", required = true) @PathVariable("code") String code diff --git a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java index 3e12bfbe1326d0e50e98cb76f84092f29682eec8..eef1bfe88cb4af066d9dde9d316879a4ad3feeea 100644 --- a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java +++ b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java @@ -3,6 +3,7 @@ package eu.hbp.mip.controllers; import com.google.common.collect.Lists; import com.google.gson.*; import eu.hbp.mip.configuration.SecurityConfiguration; +import eu.hbp.mip.model.ExperimentQuery; import eu.hbp.mip.model.User; import eu.hbp.mip.utils.HTTPUtil; import io.swagger.annotations.*; @@ -35,14 +36,15 @@ import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; @RestController @RequestMapping(value = "/experiments", produces = {APPLICATION_JSON_VALUE}) @Api(value = "/experiments", description = "the experiments API") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.SpringMVCServerCodegen", date = "2016-01-07T07:38:20.227Z") public class ExperimentApi { private static final Logger LOGGER = Logger.getLogger(ExperimentApi.class); private static final String EXAREME_ALGO_JSON_FILE="data/exareme_algorithms.json"; - private static final Gson gson = new GsonBuilder() + private static final Gson gson = new Gson(); + + private static final Gson gsonOnlyExposed = new GsonBuilder() .serializeNulls() .setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ") .excludeFieldsWithoutExposeAnnotation() @@ -70,28 +72,25 @@ public class ExperimentApi { @ApiOperation(value = "Send a request to the workflow to run an experiment", response = Experiment.class) - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @RequestMapping(method = RequestMethod.POST) - public ResponseEntity<String> runExperiment(@RequestBody String incomingQueryString) { + public ResponseEntity<String> runExperiment(@RequestBody ExperimentQuery expQuery) { LOGGER.info("Run an experiment"); - JsonObject incomingQuery = gson.fromJson(incomingQueryString, JsonObject.class); - Experiment experiment = new Experiment(); experiment.setUuid(UUID.randomUUID()); User user = securityConfiguration.getUser(); - experiment.setAlgorithms(incomingQuery.get("algorithms").toString()); - experiment.setValidations(incomingQuery.get("validations").toString()); - experiment.setName(incomingQuery.get("name").getAsString()); + experiment.setAlgorithms(gson.toJson(expQuery.getAlgorithms())); + experiment.setValidations(gson.toJson(expQuery.getValidations())); + experiment.setName(expQuery.getName()); experiment.setCreatedBy(user); - experiment.setModel(modelRepository.findOne(incomingQuery.get("model").getAsString())); + experiment.setModel(modelRepository.findOne(expQuery.getModel())); experimentRepository.save(experiment); LOGGER.info("Experiment saved"); try { - if(isExaremeAlgo(experiment)) + if(isExaremeAlgo(expQuery)) { sendExaremeExperiment(experiment); } @@ -101,11 +100,10 @@ public class ExperimentApi { } } catch (MalformedURLException mue) { LOGGER.trace(mue.getMessage()); } // ignore - return new ResponseEntity<>(gson.toJson(experiment.jsonify()), HttpStatus.OK); + return new ResponseEntity<>(gsonOnlyExposed.toJson(experiment.jsonify()), HttpStatus.OK); } @ApiOperation(value = "get an experiment", response = Experiment.class) - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @RequestMapping(value = "/{uuid}", method = RequestMethod.GET) public ResponseEntity<String> getExperiment(@ApiParam(value = "uuid", required = true) @PathVariable("uuid") String uuid) { LOGGER.info("Get an experiment"); @@ -126,11 +124,10 @@ public class ExperimentApi { return new ResponseEntity<>("Not found", HttpStatus.NOT_FOUND); } - return new ResponseEntity<>(gson.toJson(experiment.jsonify()), HttpStatus.OK); + return new ResponseEntity<>(gsonOnlyExposed.toJson(experiment.jsonify()), HttpStatus.OK); } @ApiOperation(value = "Mark an experiment as viewed", response = Experiment.class) - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @RequestMapping(value = "/{uuid}/markAsViewed", method = RequestMethod.GET) public ResponseEntity<String> markExperimentAsViewed(@ApiParam(value = "uuid", required = true) @PathVariable("uuid") String uuid) { LOGGER.info("Mark an experiment as viewed"); @@ -154,11 +151,10 @@ public class ExperimentApi { LOGGER.info("Experiment updated (marked as viewed)"); - return new ResponseEntity<>(gson.toJson(experiment.jsonify()), HttpStatus.OK); + return new ResponseEntity<>(gsonOnlyExposed.toJson(experiment.jsonify()), HttpStatus.OK); } @ApiOperation(value = "Mark an experiment as shared", response = Experiment.class) - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @RequestMapping(value = "/{uuid}/markAsShared", method = RequestMethod.GET) public ResponseEntity<String> markExperimentAsShared(@ApiParam(value = "uuid", required = true) @PathVariable("uuid") String uuid) { LOGGER.info("Mark an experiment as shared"); @@ -167,7 +163,6 @@ public class ExperimentApi { } @ApiOperation(value = "Mark an experiment as unshared", response = Experiment.class) - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @RequestMapping(value = "/{uuid}/markAsUnshared", method = RequestMethod.GET) public ResponseEntity<String> markExperimentAsUnshared(@ApiParam(value = "uuid", required = true) @PathVariable("uuid") String uuid) { LOGGER.info("Mark an experiment as unshared"); @@ -176,7 +171,6 @@ public class ExperimentApi { } @ApiOperation(value = "list experiments", response = Experiment.class, responseContainer = "List") - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @RequestMapping(value = "/mine", method = RequestMethod.GET, params = {"maxResultCount"}) public ResponseEntity<String> listExperiments( @ApiParam(value = "maxResultCount", required = false) @RequestParam int maxResultCount @@ -187,7 +181,6 @@ public class ExperimentApi { } @ApiOperation(value = "list experiments", response = Experiment.class, responseContainer = "List") - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @RequestMapping(method = RequestMethod.GET, params = {"slug", "maxResultCount"}) public ResponseEntity<String> listExperiments( @ApiParam(value = "slug", required = false) @RequestParam("slug") String modelSlug, @@ -203,7 +196,6 @@ public class ExperimentApi { } @ApiOperation(value = "List available methods and validations", response = String.class) - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @RequestMapping(path = "/methods", method = RequestMethod.GET) public ResponseEntity<String> listAvailableMethodsAndValidations() throws IOException { LOGGER.info("List available methods and validations"); @@ -224,7 +216,7 @@ public class ExperimentApi { catalog.get("algorithms").getAsJsonArray().add(exaremeAlgo); - return new ResponseEntity<>(new Gson().toJson(catalog), HttpStatus.valueOf(code)); + return new ResponseEntity<>(gson.toJson(catalog), HttpStatus.valueOf(code)); } private ResponseEntity<String> doListExperiments( @@ -257,7 +249,7 @@ public class ExperimentApi { } } - return new ResponseEntity<>(gson.toJson(expList), HttpStatus.OK); + return new ResponseEntity<>(gsonOnlyExposed.toJson(expList), HttpStatus.OK); } private ResponseEntity<String> doMarkExperimentAsShared(String uuid, boolean shared) { @@ -282,7 +274,7 @@ public class ExperimentApi { LOGGER.info("Experiment updated (marked as shared)"); - return new ResponseEntity<>(gson.toJson(experiment.jsonify()), HttpStatus.OK); + return new ResponseEntity<>(gsonOnlyExposed.toJson(experiment.jsonify()), HttpStatus.OK); } private void sendExperiment(Experiment experiment) throws MalformedURLException { @@ -353,10 +345,10 @@ public class ExperimentApi { experiment.setResult(e.getMessage()); } - private static boolean isExaremeAlgo(Experiment experiment) { - JsonArray algorithms = new JsonParser().parse(experiment.getAlgorithms()).getAsJsonArray(); - String algoCode = algorithms.get(0).getAsJsonObject().get("code").getAsString(); - return "glm_exareme".equals(algoCode); + private static boolean isExaremeAlgo(ExperimentQuery expQuery) { + if (expQuery.getAlgorithms().size() < 1) + return false; + return "glm_exareme".equals(expQuery.getAlgorithms().get(0).getCode()); } } diff --git a/src/main/java/eu/hbp/mip/controllers/GroupsApi.java b/src/main/java/eu/hbp/mip/controllers/GroupsApi.java index 07f19aa0187313592ea2635ecd43f702d6da1378..80b3d6fdb3cb642b5547b8b3337e3db78d980b4d 100644 --- a/src/main/java/eu/hbp/mip/controllers/GroupsApi.java +++ b/src/main/java/eu/hbp/mip/controllers/GroupsApi.java @@ -11,8 +11,6 @@ import com.google.gson.JsonObject; import eu.hbp.mip.model.Group; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiResponse; -import io.swagger.annotations.ApiResponses; import org.apache.log4j.Logger; import org.postgresql.util.PGobject; import org.springframework.beans.factory.annotation.Autowired; @@ -33,6 +31,8 @@ public class GroupsApi { private static final Logger LOGGER = Logger.getLogger(GroupsApi.class); + private static final Gson gson = new Gson(); + private static String groups; @Autowired @@ -41,14 +41,13 @@ public class GroupsApi { @ApiOperation(value = "Get the root group (containing all subgroups)", response = Group.class) - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @RequestMapping(method = RequestMethod.GET) public ResponseEntity<Object> getTheRootGroup() { LOGGER.info("Get root group and its whole sub-groups tree"); loadGroups(); - return ResponseEntity.ok(new Gson().fromJson(groups, Object.class)); + return ResponseEntity.ok(gson.fromJson(groups, Object.class)); } private void loadGroups() { @@ -59,10 +58,10 @@ public class GroupsApi { data.next(); String json = ((PGobject) data.getObject("hierarchy")).getValue(); - JsonObject root = new Gson().fromJson(json, JsonObject.class); + JsonObject root = gson.fromJson(json, JsonObject.class); removeVariablesRecursive(root); - groups = new Gson().toJson(root); + groups = gson.toJson(root); } } diff --git a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java index 650b8e37ec27ed762bbbb538dfbf44da60805c91..547b7f4d6d9dbc033ab261cac692721133ebf015 100644 --- a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java +++ b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java @@ -29,7 +29,6 @@ import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; @RestController @RequestMapping(value = "/models", produces = {APPLICATION_JSON_VALUE}) @Api(value = "/models", description = "the models API") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.SpringMVCServerCodegen", date = "2016-01-07T07:38:20.227Z") public class ModelsApi { private static final Logger LOGGER = Logger.getLogger(ModelsApi.class); @@ -54,16 +53,13 @@ public class ModelsApi { @Autowired @Qualifier("dataUtil") - public DataUtil dataUtil; + private DataUtil dataUtil; @ApiOperation(value = "Get models", response = Model.class, responseContainer = "List") - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @RequestMapping(method = RequestMethod.GET) 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, @ApiParam(value = "Only ask published models") @RequestParam(value = "valid", required = false) Boolean valid ) { LOGGER.info("Get models"); @@ -193,7 +189,6 @@ public class ModelsApi { } @ApiOperation(value = "Get a model", response = Model.class) - @ApiResponses(value = { @ApiResponse(code = 200, message = "Found"), @ApiResponse(code = 404, message = "Not found") }) @RequestMapping(value = "/{slug}", method = RequestMethod.GET) public ResponseEntity<Model> getAModel( @ApiParam(value = "slug", required = true) @PathVariable("slug") String slug diff --git a/src/main/java/eu/hbp/mip/controllers/RequestsApi.java b/src/main/java/eu/hbp/mip/controllers/RequestsApi.java index d88d8a0b6ff44a8c36203a08fddce67dbe2ac1e7..bbb864112017eb7c23a788b8a3fdc077fd03d180 100644 --- a/src/main/java/eu/hbp/mip/controllers/RequestsApi.java +++ b/src/main/java/eu/hbp/mip/controllers/RequestsApi.java @@ -36,9 +36,11 @@ public class RequestsApi { private static final Logger LOGGER = Logger.getLogger(RequestsApi.class); + private static final Gson gson = new Gson(); + @Autowired @Qualifier("dataUtil") - public DataUtil dataUtil; + private DataUtil dataUtil; @ApiOperation(value = "Post a request", response = Dataset.class) @@ -59,7 +61,6 @@ public class RequestsApi { List<String> covariables = new LinkedList<>(); List<String> filters = new LinkedList<>(); - Gson gson = new Gson(); JsonObject q = gson.fromJson(gson.toJson(query, Query.class), JsonObject.class); JsonArray queryVars = q.getAsJsonArray("variables") != null ? q.getAsJsonArray("variables") : new JsonArray(); @@ -101,7 +102,7 @@ public class RequestsApi { dataset.add("filter", gson.toJsonTree(filters)); dataset.add("data", dataUtil.getDataFromVariables(allVars)); - return ResponseEntity.ok(new Gson().fromJson(dataset, Object.class)); + return ResponseEntity.ok(gson.fromJson(dataset, Object.class)); } diff --git a/src/main/java/eu/hbp/mip/controllers/StatsApi.java b/src/main/java/eu/hbp/mip/controllers/StatsApi.java index 875e2a8443b2ad383820b4ad02262f65526836de..4ca4fa9a42dbfa8ccd8cf70fe1df2a1c6c83fbbb 100644 --- a/src/main/java/eu/hbp/mip/controllers/StatsApi.java +++ b/src/main/java/eu/hbp/mip/controllers/StatsApi.java @@ -10,8 +10,6 @@ import eu.hbp.mip.repositories.UserRepository; import eu.hbp.mip.utils.DataUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiResponse; -import io.swagger.annotations.ApiResponses; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; @@ -37,11 +35,10 @@ public class StatsApi { @Autowired @Qualifier("dataUtil") - public DataUtil dataUtil; + private DataUtil dataUtil; @ApiOperation(value = "Get general statistics", response = GeneralStats.class) - @ApiResponses(value = {@ApiResponse(code = 200, message = "Found"), @ApiResponse(code = 404, message = "Not found") }) @RequestMapping(method = RequestMethod.GET) public ResponseEntity<GeneralStats> getGeneralStatistics() { LOGGER.info("Get statistics (count on users, articles and variables)"); diff --git a/src/main/java/eu/hbp/mip/controllers/UsersApi.java b/src/main/java/eu/hbp/mip/controllers/UsersApi.java index c046065bfa72623619065a9d96fa99923dd01b99..38635b6eecab6f0c3b4169672c7c013538a01b21 100644 --- a/src/main/java/eu/hbp/mip/controllers/UsersApi.java +++ b/src/main/java/eu/hbp/mip/controllers/UsersApi.java @@ -28,7 +28,6 @@ public class UsersApi { private UserRepository userRepository; @ApiOperation(value = "Get a user", response = User.class) - @ApiResponses(value = { @ApiResponse(code = 200, message = "Found"), @ApiResponse(code = 404, message = "Not found") }) @RequestMapping(value = "/{username}", method = RequestMethod.GET) public ResponseEntity<User> getAUser( @ApiParam(value = "username", required = true) @PathVariable("username") String username diff --git a/src/main/java/eu/hbp/mip/controllers/VariablesApi.java b/src/main/java/eu/hbp/mip/controllers/VariablesApi.java index bad8c4e055218bd82b24292f71e864aaa3219709..065dcaf105de0ba65adf4371779e51c8f2598697 100644 --- a/src/main/java/eu/hbp/mip/controllers/VariablesApi.java +++ b/src/main/java/eu/hbp/mip/controllers/VariablesApi.java @@ -31,6 +31,8 @@ public class VariablesApi { private static final Logger LOGGER = Logger.getLogger(VariablesApi.class); + private static final Gson gson = new Gson(); + private static LinkedList<String> variables; @Autowired @@ -39,7 +41,6 @@ public class VariablesApi { @ApiOperation(value = "Get variables", response = List.class, responseContainer = "List") - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @RequestMapping(method = RequestMethod.GET) public ResponseEntity<Iterable> getVariables( @ApiParam(value = "List of groups formatted like : (\"val1\", \"val2\", ...)") @RequestParam(value = "group", required = false) String group, @@ -57,14 +58,13 @@ public class VariablesApi { for (String var : variables) { - variablesObjects.add(new Gson().fromJson(var, Object.class)); + variablesObjects.add(gson.fromJson(var, Object.class)); } return ResponseEntity.ok(variablesObjects); } @ApiOperation(value = "Get a variable", response = Object.class) - @ApiResponses(value = { @ApiResponse(code = 200, message = "Found"), @ApiResponse(code = 404, message = "Not found") }) @RequestMapping(value = "/{code}", method = RequestMethod.GET) public ResponseEntity<Object> getAVariable( @ApiParam(value = "code of the variable ( multiple codes are allowed, separated by \",\" )", required = true) @PathVariable("code") String code @@ -75,10 +75,10 @@ public class VariablesApi { for (String var : variables) { - JsonObject varObj = new Gson().fromJson(var, JsonElement.class).getAsJsonObject(); + JsonObject varObj = gson.fromJson(var, JsonElement.class).getAsJsonObject(); if (varObj.get("code").getAsString().equals(code)) { - return ResponseEntity.ok(new Gson().fromJson(varObj, Object.class)); + return ResponseEntity.ok(gson.fromJson(varObj, Object.class)); } } @@ -89,7 +89,6 @@ public class VariablesApi { @ApiOperation(value = "Get values from a variable", response = List.class, responseContainer = "List") - @ApiResponses(value = { @ApiResponse(code = 200, message = "Found"), @ApiResponse(code = 404, message = "Not found") }) @RequestMapping(value = "/{code}/values", method = RequestMethod.GET) public ResponseEntity<Iterable> getValuesFromAVariable( @ApiParam(value = "code", required = true) @PathVariable("code") String code, @@ -101,13 +100,13 @@ public class VariablesApi { for (String var : variables) { - JsonObject varObj = new Gson().fromJson(var, JsonElement.class).getAsJsonObject(); + JsonObject varObj = gson.fromJson(var, JsonElement.class).getAsJsonObject(); if (varObj.get("code").getAsString().equals(code)) { JsonArray values = varObj.get("enumerations").getAsJsonArray(); LinkedList<Object> valuesObjects = new LinkedList<>(); for (JsonElement value : values){ - valuesObjects.add(new Gson().fromJson(value, Object.class)); + valuesObjects.add(gson.fromJson(value, Object.class)); } return ResponseEntity.ok(valuesObjects); } @@ -119,7 +118,6 @@ public class VariablesApi { } @ApiOperation(value = "Get groups and variables hierarchy", response = Object.class) - @ApiResponses(value = { @ApiResponse(code = 200, message = "Found"), @ApiResponse(code = 404, message = "Not found") }) @RequestMapping(value = "/hierarchy", method = RequestMethod.GET) public ResponseEntity<Object> getVariablesHierarchy( ) { @@ -130,7 +128,7 @@ public class VariablesApi { data.next(); String json = ((PGobject) data.getObject("hierarchy")).getValue(); - Object hierarchy = new Gson().fromJson(json, Object.class); + Object hierarchy = gson.fromJson(json, Object.class); return ResponseEntity.ok(hierarchy); } @@ -144,7 +142,7 @@ public class VariablesApi { data.next(); String json = ((PGobject) data.getObject("hierarchy")).getValue(); - JsonObject root = new Gson().fromJson(json, JsonObject.class); + JsonObject root = gson.fromJson(json, JsonObject.class); variables = new LinkedList<>(); extractVariablesRecursive(root); @@ -164,7 +162,7 @@ public class VariablesApi { grp.addProperty("label", element.getAsJsonPrimitive("label").getAsString()); var.getAsJsonObject().add("group", grp); var.getAsJsonObject().addProperty("isVariable", true); - variables.add(new Gson().toJson(var)); + variables.add(gson.toJson(var)); } } } diff --git a/src/main/java/eu/hbp/mip/model/Algorithm.java b/src/main/java/eu/hbp/mip/model/Algorithm.java new file mode 100644 index 0000000000000000000000000000000000000000..862136617dabf95f7e00aa8313124d93b4557c94 --- /dev/null +++ b/src/main/java/eu/hbp/mip/model/Algorithm.java @@ -0,0 +1,19 @@ +package eu.hbp.mip.model; + +/** + * Created by mirco on 09.11.16. + */ + +public class Algorithm extends ExperimentValidator { + + private boolean validation; + + public boolean isValidation() { + return validation; + } + + public void setValidation(boolean validation) { + this.validation = validation; + } + +} diff --git a/src/main/java/eu/hbp/mip/model/AlgorithmParam.java b/src/main/java/eu/hbp/mip/model/AlgorithmParam.java new file mode 100644 index 0000000000000000000000000000000000000000..e4e5eac8ddcb77ea6e5c4af7837af547c2ba6efd --- /dev/null +++ b/src/main/java/eu/hbp/mip/model/AlgorithmParam.java @@ -0,0 +1,27 @@ +package eu.hbp.mip.model; + +/** + * Created by mirco on 09.11.16. + */ + +public class AlgorithmParam { + + private String code; + private String value; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/src/main/java/eu/hbp/mip/model/Experiment.java b/src/main/java/eu/hbp/mip/model/Experiment.java index 134fc2d18e3bfadbdd6e2dbf519d32385b0e0bc6..f809373282ae46a9490aaba9112e74605a153517 100644 --- a/src/main/java/eu/hbp/mip/model/Experiment.java +++ b/src/main/java/eu/hbp/mip/model/Experiment.java @@ -20,7 +20,9 @@ public class Experiment { private static final Logger LOGGER = Logger.getLogger(Experiment.class); - private static final Gson gson = new GsonBuilder() + private static final Gson gson = new Gson(); + + private static final Gson gsonOnlyExposed = new GsonBuilder() .serializeNulls() .setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ") .excludeFieldsWithoutExposeAnnotation() @@ -85,13 +87,13 @@ public class Experiment { public String computeQuery() { JsonObject outgoingQuery = new JsonObject(); - outgoingQuery.add("algorithms", gson.fromJson(algorithms, JsonArray.class)); - outgoingQuery.add("validations", gson.fromJson(validations, JsonArray.class)); + outgoingQuery.add("algorithms", gsonOnlyExposed.fromJson(algorithms, JsonArray.class)); + outgoingQuery.add("validations", gsonOnlyExposed.fromJson(validations, JsonArray.class)); - outgoingQuery.add("covariables", gson.toJsonTree(model.getQuery().getCovariables())); - outgoingQuery.add("variables", gson.toJsonTree(model.getQuery().getVariables())); - outgoingQuery.add("filters", gson.toJsonTree(model.getQuery().getFilters())); - outgoingQuery.add("grouping", gson.toJsonTree(model.getQuery().getGrouping())); + outgoingQuery.add("covariables", gsonOnlyExposed.toJsonTree(model.getQuery().getCovariables())); + outgoingQuery.add("variables", gsonOnlyExposed.toJsonTree(model.getQuery().getVariables())); + outgoingQuery.add("filters", gsonOnlyExposed.toJsonTree(model.getQuery().getFilters())); + outgoingQuery.add("grouping", gsonOnlyExposed.toJsonTree(model.getQuery().getGrouping())); return outgoingQuery.toString(); } @@ -134,11 +136,11 @@ public class Experiment { formatEl.setValue("True"); queryElements.add(formatEl); - return new Gson().toJson(queryElements); + return gson.toJson(queryElements); } public JsonObject jsonify() { - JsonObject exp = new Gson().toJsonTree(this).getAsJsonObject(); + JsonObject exp = gson.toJsonTree(this).getAsJsonObject(); JsonParser parser = new JsonParser(); if (this.algorithms != null) diff --git a/src/main/java/eu/hbp/mip/model/ExperimentQuery.java b/src/main/java/eu/hbp/mip/model/ExperimentQuery.java new file mode 100644 index 0000000000000000000000000000000000000000..333751c438099de62942918e17f019505a800de7 --- /dev/null +++ b/src/main/java/eu/hbp/mip/model/ExperimentQuery.java @@ -0,0 +1,46 @@ +package eu.hbp.mip.model; + +import java.util.List; + +/** + * Created by mirco on 09.11.16. + */ +public class ExperimentQuery { + + private String name; + private String model; + private List<ExperimentValidator> validations; + private List<Algorithm> algorithms; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getModel() { + return model; + } + + public void setModel(String model) { + this.model = model; + } + + public List<ExperimentValidator> getValidations() { + return validations; + } + + public void setValidations(List<ExperimentValidator> validations) { + this.validations = validations; + } + + public List<Algorithm> getAlgorithms() { + return algorithms; + } + + public void setAlgorithms(List<Algorithm> algorithms) { + this.algorithms = algorithms; + } +} diff --git a/src/main/java/eu/hbp/mip/model/ExperimentValidator.java b/src/main/java/eu/hbp/mip/model/ExperimentValidator.java new file mode 100644 index 0000000000000000000000000000000000000000..208fc90fa7272779bf51e09ca7fa0b6f409c66d3 --- /dev/null +++ b/src/main/java/eu/hbp/mip/model/ExperimentValidator.java @@ -0,0 +1,40 @@ +package eu.hbp.mip.model; + +import java.util.List; + +/** + * Created by mirco on 09.11.16. + */ + +public class ExperimentValidator { + + private String code; + private String name; + + private List<AlgorithmParam> parameters; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List<AlgorithmParam> getParameters() { + return parameters; + } + + public void setParameters(List<AlgorithmParam> parameters) { + this.parameters = parameters; + } + +}