From 1c6d584f5e6146fffde85587b5d0633685935cf7 Mon Sep 17 00:00:00 2001 From: Mirco Nasuti <mirco.nasuti@chuv.ch> Date: Wed, 31 Aug 2016 08:56:09 +0200 Subject: [PATCH] variables api is working --- .../eu/hbp/mip/controllers/VariablesApi.java | 56 ++++++++++++++----- 1 file changed, 41 insertions(+), 15 deletions(-) diff --git a/src/main/java/eu/hbp/mip/controllers/VariablesApi.java b/src/main/java/eu/hbp/mip/controllers/VariablesApi.java index 381515f1e..6cfb3e873 100644 --- a/src/main/java/eu/hbp/mip/controllers/VariablesApi.java +++ b/src/main/java/eu/hbp/mip/controllers/VariablesApi.java @@ -6,10 +6,10 @@ package eu.hbp.mip.controllers; import com.google.gson.Gson; +import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonReader; -import eu.hbp.mip.model.Value; import eu.hbp.mip.model.Variable; import io.swagger.annotations.*; import org.apache.log4j.Logger; @@ -33,10 +33,10 @@ public class VariablesApi { private static final String VARIABLES_FILE = "data/variables.json"; - private static LinkedList<Variable> variables; + private static LinkedList<String> variables; - @ApiOperation(value = "Get variables", response = Variable.class, responseContainer = "List") + @ApiOperation(value = "Get variables", response = List.class, responseContainer = "List") @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @RequestMapping(method = RequestMethod.GET) public ResponseEntity<Iterable> getVariables( @@ -51,24 +51,32 @@ public class VariablesApi { loadVariables(); - return ResponseEntity.ok(variables); + LinkedList<Object> variablesObjects = new LinkedList<>(); + + for (String var : variables) + { + variablesObjects.add(new Gson().fromJson(var, Object.class)); + } + + return ResponseEntity.ok(variablesObjects); } - @ApiOperation(value = "Get a variable", response = Variable.class) + @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<Variable> getAVariable( + public ResponseEntity<Object> getAVariable( @ApiParam(value = "code of the variable ( multiple codes are allowed, separated by \",\" )", required = true) @PathVariable("code") String code ) { LOGGER.info("Get a variable"); loadVariables(); - for (Variable var : variables) + for (String var : variables) { - if (var.getCode().equals(code)) + JsonObject varObj = new Gson().fromJson(var, JsonElement.class).getAsJsonObject(); + if (varObj.get("code").getAsString().equals(code)) { - return ResponseEntity.ok(var); + return ResponseEntity.ok(new Gson().fromJson(varObj, Object.class)); } } @@ -78,19 +86,37 @@ public class VariablesApi { } - @ApiOperation(value = "Get values from a variable", response = Value.class, responseContainer = "List") + @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<List> getValuesFromAVariable( + public ResponseEntity<Iterable> getValuesFromAVariable( @ApiParam(value = "code", required = true) @PathVariable("code") String code, @ApiParam(value = "Pattern to match") @RequestParam(value = "q", required = false) String q ) { LOGGER.info("Get values from a variable"); - return ResponseEntity.ok(null); // TODO : findOne(code).getValues() + loadVariables(); + + for (String var : variables) + { + JsonObject varObj = new 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)); + } + return ResponseEntity.ok(valuesObjects); + } + } + + LOGGER.warn("Variable " + code + " not found ! "); + + return ResponseEntity.ok(null); } - @ApiOperation(value = "Get groups and variables hierarchy", response = Variable.class) + @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( @@ -110,7 +136,7 @@ public class VariablesApi { private static void loadVariables() { if(variables == null) { - InputStream is = Variable.class.getClassLoader().getResourceAsStream(VARIABLES_FILE); + InputStream is = VariablesApi.class.getClassLoader().getResourceAsStream(VARIABLES_FILE); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); @@ -129,7 +155,7 @@ public class VariablesApi { } if (element.has("variables")){ for (JsonElement var : element.getAsJsonArray("variables")){ - variables.add(new Gson().fromJson(var, Variable.class)); + variables.add(new Gson().toJson(var)); } } } -- GitLab