diff --git a/docker/runner/config/application.tmpl b/docker/runner/config/application.tmpl index 2c4b7da57cb1b7945fd599223eef7fe249665595..e31a092725523fa88f4fd9bbdf7099756aa682c3 100644 --- a/docker/runner/config/application.tmpl +++ b/docker/runner/config/application.tmpl @@ -17,6 +17,7 @@ spring: scienceDatasource: url: {{ default .Env.SCIENCE_DB_URL "jdbc:postgresql://172.22.0.1:5433/science" }} schema: {{ default .Env.SCIENCE_DB_SCHEMA "public" }} + main-table: {{ default .Env.SCIENCE_DB_MAIN_TABLE "adni_merge" }} username: {{ default .Env.SCIENCE_DB_USER "postgres" }} password: {{ .Env.SCIENCE_DB_PASSWORD }} driver-class-name: org.postgresql.Driver diff --git a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java index 6066eb20598d5e4ba33b76dd4a6cb9c8d2c07595..34ac327dc20a0721eefa3e0a5574cd3d66fb4a54 100644 --- a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java +++ b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java @@ -18,6 +18,7 @@ import io.swagger.annotations.*; import org.apache.log4j.Logger; 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.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.jdbc.core.JdbcTemplate; @@ -58,6 +59,9 @@ public class ModelsApi { @Qualifier("scienceJdbcTemplate") private JdbcTemplate scienceJdbcTemplate; + @Value("#{'${spring.scienceDatasource.main-table:adni_merge}'}") + private String scienceMainTable; + @ApiOperation(value = "Get models", response = Model.class, responseContainer = "List") @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -284,7 +288,7 @@ public class ModelsApi { Gson gson = new Gson(); JsonObject jsonModel = gson.fromJson(gson.toJson(model, Model.class), JsonObject.class); jsonModel.get("dataset").getAsJsonObject() - .add("data", new DataUtil(scienceJdbcTemplate).getDataFromVariables(allVars)); + .add("data", new DataUtil(scienceJdbcTemplate, scienceMainTable).getDataFromVariables(allVars)); return gson.fromJson(jsonModel, Model.class); } diff --git a/src/main/java/eu/hbp/mip/controllers/RequestsApi.java b/src/main/java/eu/hbp/mip/controllers/RequestsApi.java index 7192fa80d1a9222c6e983232fab6fa7b54cb996c..f5f2ff009b9357320468b7560d6a02fe5c527d68 100644 --- a/src/main/java/eu/hbp/mip/controllers/RequestsApi.java +++ b/src/main/java/eu/hbp/mip/controllers/RequestsApi.java @@ -15,6 +15,7 @@ import io.swagger.annotations.*; import org.apache.log4j.Logger; 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.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.RequestBody; @@ -39,6 +40,9 @@ public class RequestsApi { @Qualifier("scienceJdbcTemplate") private JdbcTemplate scienceJdbcTemplate; + @Value("#{'${spring.scienceDatasource.main-table:adni_merge}'}") + private String scienceMainTable; + @ApiOperation(value = "Post a request", response = Dataset.class) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @RequestMapping(method = RequestMethod.POST) @@ -88,7 +92,7 @@ public class RequestsApi { dataset.add("variable", gson.toJsonTree(variables)); dataset.add("grouping", gson.toJsonTree(groupings)); dataset.add("header", gson.toJsonTree(covariables)); - dataset.add("data", new DataUtil(scienceJdbcTemplate).getDataFromVariables(allVars)); + dataset.add("data", new DataUtil(scienceJdbcTemplate, scienceMainTable).getDataFromVariables(allVars)); return ResponseEntity.ok(new Gson().fromJson(dataset, Object.class)); } diff --git a/src/main/java/eu/hbp/mip/controllers/StatsApi.java b/src/main/java/eu/hbp/mip/controllers/StatsApi.java index 50232c3e49468c0de937c0d423961df7cb7fdc8c..3625219cfb722c45899e8d50b75d52836208025c 100644 --- a/src/main/java/eu/hbp/mip/controllers/StatsApi.java +++ b/src/main/java/eu/hbp/mip/controllers/StatsApi.java @@ -15,6 +15,7 @@ import io.swagger.annotations.ApiResponses; import org.apache.log4j.Logger; 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.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.RequestMapping; @@ -40,6 +41,9 @@ public class StatsApi { @Qualifier("scienceJdbcTemplate") private JdbcTemplate scienceJdbcTemplate; + @Value("#{'${spring.scienceDatasource.main-table:adni_merge}'}") + private String scienceMainTable; + @ApiOperation(value = "Get general statistics", response = GeneralStats.class) @ApiResponses(value = {@ApiResponse(code = 200, message = "Found"), @ApiResponse(code = 404, message = "Not found") }) @RequestMapping(method = RequestMethod.GET) @@ -50,7 +54,7 @@ public class StatsApi { stats.setUsers(userRepository.count()); stats.setArticles(articleRepository.count()); - stats.setVariables(new DataUtil(scienceJdbcTemplate).countVariables()); + stats.setVariables(new DataUtil(scienceJdbcTemplate, scienceMainTable).countVariables()); return ResponseEntity.ok(stats); } diff --git a/src/main/java/eu/hbp/mip/utils/DataUtil.java b/src/main/java/eu/hbp/mip/utils/DataUtil.java index ff74b8831934ad601314ca37d7f19aced2f78863..27031ec23c8120051bfe2066c859c4832266e36f 100644 --- a/src/main/java/eu/hbp/mip/utils/DataUtil.java +++ b/src/main/java/eu/hbp/mip/utils/DataUtil.java @@ -17,10 +17,12 @@ public class DataUtil { private static final int TABLESAMPLE_SEED = 42; private JdbcTemplate jdbcTemplate; + private String scienceMainTable; - public DataUtil(JdbcTemplate jdbcTemplate) + public DataUtil(JdbcTemplate jdbcTemplate, String scienceMainTable) { this.jdbcTemplate = jdbcTemplate; + this.scienceMainTable = scienceMainTable; } @Cacheable("varsdata") @@ -32,7 +34,7 @@ public class DataUtil { JsonArray currentVarData = new JsonArray(); int samplingPercentage = 100 * NB_ROWS_SAMPLING / (int) countAdniRows(); List<Object> queryResult = jdbcTemplate.queryForList( - "SELECT " + var + " FROM adni_merge " + + "SELECT " + var + " FROM "+scienceMainTable+" " + "TABLESAMPLE SYSTEM ("+ samplingPercentage +") REPEATABLE ( "+ TABLESAMPLE_SEED +" )", Object.class); for (Object value : queryResult) { @@ -55,7 +57,7 @@ public class DataUtil { { long count = jdbcTemplate.queryForObject( "SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS " + - "WHERE table_name = 'adni_merge'", Long.class); + "WHERE table_name = '"+scienceMainTable+"'", Long.class); return count; } @@ -63,7 +65,7 @@ public class DataUtil { public long countAdniRows() { long count = jdbcTemplate.queryForObject( - "SELECT COUNT(*) FROM adni_merge", Long.class); + "SELECT COUNT(*) FROM "+scienceMainTable, Long.class); return count; }