From bb9d85e9f7d568f276ecfd3ed025c2d5a4d33629 Mon Sep 17 00:00:00 2001
From: Manuel Spuhler <manuel.spuhler@chuv.ch>
Date: Thu, 15 Feb 2018 16:07:15 +0100
Subject: [PATCH] Ludovic's code

---
 docker/README.md                              |  1 +
 docker/config/application.tmpl                |  1 +
 .../PersistenceConfiguration.java             |  1 +
 .../eu/hbp/mip/controllers/DatasetsApi.java   | 39 ++++++++++++-------
 4 files changed, 27 insertions(+), 15 deletions(-)

diff --git a/docker/README.md b/docker/README.md
index 419dd0798..33262bdde 100644
--- a/docker/README.md
+++ b/docker/README.md
@@ -24,6 +24,7 @@ To use this image, you need a running instance of PostgreSQL and to configure th
 * FEATURES_DB_USER: User to use when connecting to the science database, default value is "postgres".
 * FEATURES_DB_PASSWORD: Password to use when connecting to the science database.
 * FEATURES_DB_MAIN_TABLE: Table that contains the scientific data to use, default value is "features".
+* DATASETS (temporary hack): list of datasets available in the features table
 
 
 ### OAUTH2 LOGIN
diff --git a/docker/config/application.tmpl b/docker/config/application.tmpl
index 16a901f6b..3be9dac65 100644
--- a/docker/config/application.tmpl
+++ b/docker/config/application.tmpl
@@ -21,6 +21,7 @@ spring:
       username: {{ default .Env.FEATURES_DB_USER "postgres" }}
       password: {{ .Env.FEATURES_DB_PASSWORD }}
       driver-class-name: org.postgresql.Driver
+      datasets: {{ .Env.DATASETS }}
   jpa:
     hibernate:
       dialect: org.hibernate.dialect.PostgreSQL9Dialect
diff --git a/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java b/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java
index eb783e675..9efcec064 100644
--- a/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java
+++ b/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java
@@ -16,6 +16,7 @@ import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
 import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
 
 import javax.sql.DataSource;
+import java.util.List;
 
 /**
  * Created by mirco on 11.07.16.
diff --git a/src/main/java/eu/hbp/mip/controllers/DatasetsApi.java b/src/main/java/eu/hbp/mip/controllers/DatasetsApi.java
index 81d9e72e0..446b3af00 100644
--- a/src/main/java/eu/hbp/mip/controllers/DatasetsApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/DatasetsApi.java
@@ -6,19 +6,23 @@ package eu.hbp.mip.controllers;
 
 
 import com.google.gson.Gson;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonObject;
 import eu.hbp.mip.model.Dataset;
+import eu.hbp.mip.model.Variable;
+import eu.hbp.mip.repositories.VariableRepository;
 import io.swagger.annotations.*;
 import eu.hbp.mip.repositories.DatasetRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.PostConstruct;
+
 import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
 
 
@@ -33,25 +37,30 @@ public class DatasetsApi {
     @Autowired
     private DatasetRepository datasetRepository;
 
+    @Autowired
+    private VariableRepository variableRepository;
+
+    @Value("#{'${spring.featuresDatasource.datasets:adni,ppmi,edsd}'}")
+    private String datasets;
+
+    @PostConstruct
+    public void init() {
+        for (String dataset: datasets.split(",")) {
+            Variable v = variableRepository.findOne(dataset);
+            if (v == null) {
+                v = new Variable(dataset);
+                variableRepository.save(v);
+            }
+        }
+    }
+
     @ApiOperation(value = "Get dataset list", response = Dataset.class, responseContainer = "List")
     @RequestMapping(method = RequestMethod.GET)
     public ResponseEntity getDatasets(
     )  {
         LOGGER.info("Get dataset list");
 
-        JsonArray datasets = new JsonArray();
-
-        JsonObject o = new JsonObject();
-        o.addProperty("code",  "chuv");
-        o.addProperty("label",  "CHUV");
-        datasets.add(o);
-
-        JsonObject p = new JsonObject();
-        p.addProperty("code",  "brescia");
-        p.addProperty("label",  "Brescia");
-        datasets.add(p);
-
-        return ResponseEntity.ok(gson.toJson(datasets));
+        return ResponseEntity.ok(datasets.split(","));
     }
 
 }
-- 
GitLab