From 4c300516e6b017550f3ac0eb309ae1f48e048ff2 Mon Sep 17 00:00:00 2001 From: Mirco Nasuti <mirco.nasuti@chuv.ch> Date: Tue, 30 Aug 2016 17:19:22 +0200 Subject: [PATCH] refactoring in progress : return all variables from JSON --- .../PersistenceConfiguration.java | 3 ++ .../eu/hbp/mip/controllers/VariablesApi.java | 29 ++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java b/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java index 7bd98ed3b..55ba11393 100644 --- a/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java +++ b/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java @@ -25,6 +25,9 @@ public class PersistenceConfiguration { @Autowired DataSource dataSource; + @Autowired + DataSource variablesDatasource; + @Bean @DependsOn("flyway") public LocalContainerEntityManagerFactoryBean entityManagerFactory() { diff --git a/src/main/java/eu/hbp/mip/controllers/VariablesApi.java b/src/main/java/eu/hbp/mip/controllers/VariablesApi.java index 7849409a9..9c8b40114 100644 --- a/src/main/java/eu/hbp/mip/controllers/VariablesApi.java +++ b/src/main/java/eu/hbp/mip/controllers/VariablesApi.java @@ -6,6 +6,8 @@ package eu.hbp.mip.controllers; import com.google.gson.Gson; +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; @@ -17,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; +import java.util.LinkedList; import java.util.List; import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; @@ -30,6 +33,8 @@ public class VariablesApi { private static final String VARIABLES_FILE = "data/variables.json"; + private static LinkedList<Variable> variables; + @ApiOperation(value = "Get variables", response = Variable.class, responseContainer = "List") @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -44,7 +49,29 @@ public class VariablesApi { ) { LOGGER.info("Get variables"); - return ResponseEntity.ok(null); // TODO : findall + 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); + + 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) -- GitLab