From db9d1a401cf3de634acbc4b2aa853bd9c2490880 Mon Sep 17 00:00:00 2001
From: Mirco Nasuti <mirco.nasuti@chuv.ch>
Date: Thu, 22 Dec 2016 12:36:59 +0100
Subject: [PATCH] refactoring : try to reduce NPath complexity

---
 .../eu/hbp/mip/controllers/RequestsApi.java   | 50 +++++++------------
 1 file changed, 18 insertions(+), 32 deletions(-)

diff --git a/src/main/java/eu/hbp/mip/controllers/RequestsApi.java b/src/main/java/eu/hbp/mip/controllers/RequestsApi.java
index bbb864112..5477047d4 100644
--- a/src/main/java/eu/hbp/mip/controllers/RequestsApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/RequestsApi.java
@@ -56,43 +56,19 @@ public class RequestsApi {
 
         String code = generateDSCode(query);
         Date date = new Date();
-        List<String> variables = new LinkedList<>();
-        List<String> groupings = new LinkedList<>();
-        List<String> covariables = new LinkedList<>();
-        List<String> filters = new LinkedList<>();
 
         JsonObject q = gson.fromJson(gson.toJson(query, Query.class), JsonObject.class);
 
-        JsonArray queryVars = q.getAsJsonArray("variables") != null ? q.getAsJsonArray("variables") : new JsonArray();
-        JsonArray queryGrps = q.getAsJsonArray("grouping") != null ? q.getAsJsonArray("grouping") : new JsonArray();
-        JsonArray queryCoVars = q.getAsJsonArray("covariables") != null ? q.getAsJsonArray("covariables") : new JsonArray();
-        JsonArray queryfltrs = q.getAsJsonArray("filter") != null ? q.getAsJsonArray("filter") : new JsonArray();
+        List<String> variables = extractVarCodes(q, "variables");
+        List<String> groupings = extractVarCodes(q, "grouping");
+        List<String> covariables = extractVarCodes(q, "covariables");
+        List<String> filters = extractVarCodes(q, "filter");
 
         List<String> allVars = new LinkedList<>();
-
-        for (JsonElement var : queryVars) {
-            String varCode = var.getAsJsonObject().get("code").getAsString();
-            variables.add(varCode);
-            allVars.add(varCode);
-        }
-
-        for (JsonElement var : queryGrps) {
-            String varCode = var.getAsJsonObject().get("code").getAsString();
-            groupings.add(varCode);
-            allVars.add(varCode);
-        }
-
-        for (JsonElement var : queryCoVars) {
-            String varCode = var.getAsJsonObject().get("code").getAsString();
-            covariables.add(varCode);
-            allVars.add(varCode);
-        }
-
-        for (JsonElement var : queryfltrs) {
-            String fltCode = var.getAsJsonObject().get("code").getAsString();
-            filters.add(fltCode);
-            allVars.add(fltCode);
-        }
+        allVars.addAll(variables);
+        allVars.addAll(groupings);
+        allVars.addAll(covariables);
+        allVars.addAll(filters);
 
         dataset.addProperty("code", code);
         dataset.addProperty("date", date.getTime());
@@ -105,6 +81,16 @@ public class RequestsApi {
         return ResponseEntity.ok(gson.fromJson(dataset, Object.class));
     }
 
+    private List<String> extractVarCodes(JsonObject q, String field) {
+        List<String> codes = new LinkedList<>();
+        JsonArray elements = q.getAsJsonArray(field) != null ? q.getAsJsonArray(field) : new JsonArray();
+        for (JsonElement var : elements) {
+            String varCode = var.getAsJsonObject().get("code").getAsString();
+            codes.add(varCode);
+        }
+        return codes;
+    }
+
 
     private String generateDSCode(Query query) {
         String prefix = "DS";
-- 
GitLab