From 153ba5f28702b66ce9adad4a881f82c478cd9600 Mon Sep 17 00:00:00 2001
From: Ludovic Claude <ludovic.claude@laposte.net>
Date: Mon, 6 Nov 2017 22:50:48 +0100
Subject: [PATCH] Change service /histogram_groupings to
 /{code}/histogram_query

---
 .../eu/hbp/mip/controllers/VariablesApi.java  | 22 ++++++++++++++-----
 src/main/java/eu/hbp/mip/model/Algorithm.java |  9 ++++++++
 src/main/java/eu/hbp/mip/model/Variable.java  | 11 ++++++----
 3 files changed, 33 insertions(+), 9 deletions(-)

diff --git a/src/main/java/eu/hbp/mip/controllers/VariablesApi.java b/src/main/java/eu/hbp/mip/controllers/VariablesApi.java
index 3e13293cf..3f4de6eb5 100644
--- a/src/main/java/eu/hbp/mip/controllers/VariablesApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/VariablesApi.java
@@ -9,6 +9,9 @@ import com.google.gson.Gson;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
+import eu.hbp.mip.model.Algorithm;
+import eu.hbp.mip.model.MiningQuery;
+import eu.hbp.mip.model.Variable;
 import io.swagger.annotations.*;
 import org.apache.log4j.Logger;
 import org.postgresql.util.PGobject;
@@ -21,8 +24,10 @@ import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.support.rowset.SqlRowSet;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Arrays;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
 
@@ -135,12 +140,13 @@ public class VariablesApi {
         return ResponseEntity.ok(hierarchy);
     }
 
-    @ApiOperation(value = "Get groupings for histograms", response = Object.class)
-    @Cacheable("vars_histogram_groupings")
-    @RequestMapping(value = "/histogram_groupings", method = RequestMethod.GET)
-    public ResponseEntity<String> getHistogramGroupings(
+    @ApiOperation(value = "Get query for histograms", response = Object.class)
+    @Cacheable("vars_histogram_query")
+    @RequestMapping(value = "/{code}/histogram_query", method = RequestMethod.GET)
+    public ResponseEntity<String> getHistogramQuery(
+            @ApiParam(value = "code", required = true) @PathVariable("code") String code
     )  {
-        LOGGER.info("Get groupings for histograms");
+        LOGGER.info("Get query for histograms");
 
         String sqlQuery = String.format(
                 "SELECT histogram_groupings FROM meta_variables where upper(target_table)='%s'", featuresMainTable.toUpperCase());
@@ -148,6 +154,12 @@ public class VariablesApi {
         data.next();
         String histogramGroupings = data.getString("histogram_groupings");
 
+        MiningQuery query = new MiningQuery();
+        query.getVariables().add(new Variable(code));
+        List<String> groupings = Arrays.asList(histogramGroupings.split(","));
+        query.getGrouping().addAll(groupings.stream().map(Variable::new).collect(Collectors.toList()));
+        query.setAlgorithm(new Algorithm("histograms", "Histograms", false));
+
         return ResponseEntity.ok(histogramGroupings);
     }
 
diff --git a/src/main/java/eu/hbp/mip/model/Algorithm.java b/src/main/java/eu/hbp/mip/model/Algorithm.java
index 862136617..f861468cf 100644
--- a/src/main/java/eu/hbp/mip/model/Algorithm.java
+++ b/src/main/java/eu/hbp/mip/model/Algorithm.java
@@ -8,6 +8,15 @@ public class Algorithm extends ExperimentValidator {
 
     private boolean validation;
 
+    public Algorithm() {
+    }
+
+    public Algorithm(String code, String name, boolean validation) {
+        this.validation = validation;
+        setCode(code);
+        setName(name);
+    }
+
     public boolean isValidation() {
         return validation;
     }
diff --git a/src/main/java/eu/hbp/mip/model/Variable.java b/src/main/java/eu/hbp/mip/model/Variable.java
index fc619b87f..8fc4d2dd9 100644
--- a/src/main/java/eu/hbp/mip/model/Variable.java
+++ b/src/main/java/eu/hbp/mip/model/Variable.java
@@ -24,11 +24,14 @@ public class Variable {
     @Expose
     private String code = null;
 
-
+    /**
+     *  Empty constructor is needed by Hibernate
+     */
     public Variable() {
-        /*
-        *  Empty constructor is needed by Hibernate
-        */
+    }
+
+    public Variable(String code) {
+        this.code = code;
     }
 
     public String getCode() {
-- 
GitLab