From 049e7c95bd6c45ff1b938875d75b82568f8d40d6 Mon Sep 17 00:00:00 2001 From: Mirco Nasuti <mirco.nasuti@chuv.ch> Date: Tue, 30 Aug 2016 17:42:48 +0200 Subject: [PATCH] refactor extract method for load variables from json --- .../eu/hbp/mip/controllers/VariablesApi.java | 66 ++++++++++++------- 1 file changed, 43 insertions(+), 23 deletions(-) diff --git a/src/main/java/eu/hbp/mip/controllers/VariablesApi.java b/src/main/java/eu/hbp/mip/controllers/VariablesApi.java index 9c8b40114..381515f1e 100644 --- a/src/main/java/eu/hbp/mip/controllers/VariablesApi.java +++ b/src/main/java/eu/hbp/mip/controllers/VariablesApi.java @@ -49,31 +49,11 @@ public class VariablesApi { ) { LOGGER.info("Get variables"); - InputStream is = Variable.class.getClassLoader().getResourceAsStream(VARIABLES_FILE); - InputStreamReader isr = new InputStreamReader(is); - BufferedReader br = new BufferedReader(isr); - - JsonObject root = new Gson().fromJson(new JsonReader(br), JsonObject.class); - variables = new LinkedList<>(); - - extractVariablesRecursive(root); + loadVariables(); return ResponseEntity.ok(variables); } - private static void extractVariablesRecursive(JsonObject element) { - if (element.has("groups")){ - for(JsonElement child : element.getAsJsonArray("groups")) { - extractVariablesRecursive(child.getAsJsonObject()); - } - } - if (element.has("variables")){ - for (JsonElement var : element.getAsJsonArray("variables")){ - variables.add(new Gson().fromJson(var, Variable.class)); - } - } - } - @ApiOperation(value = "Get a variable", response = Variable.class) @ApiResponses(value = { @ApiResponse(code = 200, message = "Found"), @ApiResponse(code = 404, message = "Not found") }) @RequestMapping(value = "/{code}", method = RequestMethod.GET) @@ -82,7 +62,19 @@ public class VariablesApi { ) { LOGGER.info("Get a variable"); - return ResponseEntity.ok(null); // TODO findOne(code) + loadVariables(); + + for (Variable var : variables) + { + if (var.getCode().equals(code)) + { + return ResponseEntity.ok(var); + } + } + + LOGGER.warn("Variable " + code + " not found ! "); + + return ResponseEntity.ok(null); } @@ -101,7 +93,7 @@ public class VariablesApi { @ApiOperation(value = "Get groups and variables hierarchy", response = Variable.class) @ApiResponses(value = { @ApiResponse(code = 200, message = "Found"), @ApiResponse(code = 404, message = "Not found") }) @RequestMapping(value = "/hierarchy", method = RequestMethod.GET) - public ResponseEntity<Object> getAVariable( + public ResponseEntity<Object> getVariablesHierarchy( ) { LOGGER.info("Get groups and variables hierarchy"); @@ -115,4 +107,32 @@ public class VariablesApi { } + private static void loadVariables() { + if(variables == null) + { + InputStream is = Variable.class.getClassLoader().getResourceAsStream(VARIABLES_FILE); + InputStreamReader isr = new InputStreamReader(is); + BufferedReader br = new BufferedReader(isr); + + JsonObject root = new Gson().fromJson(new JsonReader(br), JsonObject.class); + variables = new LinkedList<>(); + + extractVariablesRecursive(root); + } + } + + private static void extractVariablesRecursive(JsonObject element) { + if (element.has("groups")){ + for(JsonElement child : element.getAsJsonArray("groups")) { + extractVariablesRecursive(child.getAsJsonObject()); + } + } + if (element.has("variables")){ + for (JsonElement var : element.getAsJsonArray("variables")){ + variables.add(new Gson().fromJson(var, Variable.class)); + } + } + } + + } -- GitLab