diff --git a/pom.xml b/pom.xml index cb01717b339b8cea04f084631c0d4a62256db2d9..9daff93b65c02e2ad6e414f8407d83c24a287f0c 100644 --- a/pom.xml +++ b/pom.xml @@ -47,7 +47,7 @@ <spring-data-jpa.version>1.10.11.RELEASE</spring-data-jpa.version> <spring-boot-starter-actuator.version>1.4.7.RELEASE</spring-boot-starter-actuator.version> <aspectjweaver.version>1.8.9</aspectjweaver.version> - <woken-messages.version>76f49ed</woken-messages.version> + <woken-messages.version>ee60327</woken-messages.version> <javax-inject.version>1</javax-inject.version> <akka.version>2.3.14</akka.version> <spring-context.version>4.3.4.RELEASE</spring-context.version> @@ -64,9 +64,9 @@ <snapshots> <enabled>false</enabled> </snapshots> - <id>bintray-lren-chuv-mip-portal</id> - <name>bintray</name> - <url>http://dl.bintray.com/lren-chuv/mip-portal</url> + <id>artifactory-libs-release-local</id> + <name>artifactory</name> + <url>http://hbps1.chuv.ch/artifactory/libs-release-local</url> </repository> </repositories> @@ -235,9 +235,9 @@ <snapshots> <enabled>false</enabled> </snapshots> - <id>bintray-lren-chuv-mip-portal</id> - <name>bintray-plugins</name> - <url>http://dl.bintray.com/lren-chuv/mip-portal</url> + <id>artifactory-libs-release-local</id> + <name>artifactory-plugins</name> + <url>http://hbps1.chuv.ch/artifactory/libs-release-local</url> </pluginRepository> </pluginRepositories> diff --git a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java index 3a13867b86dc3cb0db2692b332f90b007c9d883d..77b74ad65add6b47f07a910f70fa69b04c54198f 100644 --- a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java +++ b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java @@ -281,10 +281,12 @@ public class ModelsApi { allVars.addAll(model.getDataset().getHeader()); allVars.addAll(model.getDataset().getGrouping()); + String filters = model.getQuery().getFilters(); + Gson gson = new Gson(); JsonObject jsonModel = gson.fromJson(gson.toJson(model, Model.class), JsonObject.class); jsonModel.get("dataset").getAsJsonObject() - .add("data", dataUtil.getDataFromVariables(allVars)); + .add("data", dataUtil.getDataFromVariables(allVars, filters)); 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 5477047d41d664c8372621fdea4437113f969b8d..3ef2931c8460f93ecd8c505fed47f02c68c9ed2f 100644 --- a/src/main/java/eu/hbp/mip/controllers/RequestsApi.java +++ b/src/main/java/eu/hbp/mip/controllers/RequestsApi.java @@ -62,21 +62,19 @@ public class RequestsApi { List<String> variables = extractVarCodes(q, "variables"); List<String> groupings = extractVarCodes(q, "grouping"); List<String> covariables = extractVarCodes(q, "covariables"); - List<String> filters = extractVarCodes(q, "filter"); + String filters = extractFilters(q, "filters"); List<String> allVars = new LinkedList<>(); allVars.addAll(variables); allVars.addAll(groupings); allVars.addAll(covariables); - allVars.addAll(filters); dataset.addProperty("code", code); dataset.addProperty("date", date.getTime()); dataset.add("variable", gson.toJsonTree(variables)); dataset.add("grouping", gson.toJsonTree(groupings)); dataset.add("header", gson.toJsonTree(covariables)); - dataset.add("filter", gson.toJsonTree(filters)); - dataset.add("data", dataUtil.getDataFromVariables(allVars)); + dataset.add("data", dataUtil.getDataFromVariables(allVars, filters)); return ResponseEntity.ok(gson.fromJson(dataset, Object.class)); } @@ -91,6 +89,9 @@ public class RequestsApi { return codes; } + private String extractFilters(JsonObject q, String field) { + return q.getAsJsonPrimitive(field).getAsString(); + } private String generateDSCode(Query query) { String prefix = "DS"; diff --git a/src/main/java/eu/hbp/mip/model/Experiment.java b/src/main/java/eu/hbp/mip/model/Experiment.java index ba05e3e0037dec9348a30bd625bb47d40efb2f6d..762d055af8ddcbbc3aaf6551847b8d3639aa3bb7 100644 --- a/src/main/java/eu/hbp/mip/model/Experiment.java +++ b/src/main/java/eu/hbp/mip/model/Experiment.java @@ -114,14 +114,14 @@ public class Experiment { TypesConvert.variablesToVariableIds(model.getQuery().getCovariables()).iterator()).asScala().toSeq().toList(); Seq<VariableId> groupingSeq = JavaConverters.asScalaIteratorConverter( TypesConvert.variablesToVariableIds(model.getQuery().getGrouping()).iterator()).asScala().toSeq().toList(); - Seq<Filter> filtersSeq = JavaConverters.asScalaIteratorConverter( - new LinkedList<Filter>().iterator()).asScala().toSeq().toList(); Seq<Algorithm> algorithmsSeq = JavaConverters.asScalaIteratorConverter( algorithms.iterator()).asScala().toSeq().toList(); Seq<Validation> validationsSeq = JavaConverters.asScalaIteratorConverter( validations.iterator()).asScala().toSeq().toList(); - return new ExperimentQuery(variablesSeq, covariablesSeq, groupingSeq, filtersSeq, algorithmsSeq, validationsSeq); + String filters = model.getQuery().getFilters(); + + return new ExperimentQuery(variablesSeq, covariablesSeq, groupingSeq, filters, algorithmsSeq, validationsSeq); } diff --git a/src/main/java/eu/hbp/mip/model/MiningQuery.java b/src/main/java/eu/hbp/mip/model/MiningQuery.java index 378b65330e6a17502423184d116e0b56b85b8992..e1bae7d4b33c80beb8203c44140d3452e683381c 100644 --- a/src/main/java/eu/hbp/mip/model/MiningQuery.java +++ b/src/main/java/eu/hbp/mip/model/MiningQuery.java @@ -1,13 +1,11 @@ package eu.hbp.mip.model; import com.google.gson.Gson; -import eu.hbp.mip.messages.external.Filter; import eu.hbp.mip.messages.external.VariableId; import eu.hbp.mip.utils.TypesConvert; import scala.collection.JavaConverters; import scala.collection.Seq; -import java.util.LinkedList; import java.util.List; /** @@ -18,7 +16,7 @@ public class MiningQuery { private List<Variable> variables; private List<Variable> covariables; private List<Variable> grouping; - private List<Filter> filters; + private String filters; private Algorithm algorithm; public List<Variable> getVariables() { @@ -45,11 +43,11 @@ public class MiningQuery { this.grouping = grouping; } - public List<Filter> getFilters() { + public String getFilters() { return filters; } - public void setFilters(List<Filter> filters) { + public void setFilters(String filters) { this.filters = filters; } @@ -72,10 +70,9 @@ public class MiningQuery { TypesConvert.variablesToVariableIds(covariables).iterator()).asScala().toSeq().toList(); Seq<VariableId> groupingSeq = JavaConverters.asScalaIteratorConverter( TypesConvert.variablesToVariableIds(grouping).iterator()).asScala().toSeq().toList(); - Seq<Filter> filtersSeq = JavaConverters.asScalaIteratorConverter( - new LinkedList<Filter>().iterator()).asScala().toSeq().toList(); - return new eu.hbp.mip.messages.external.MiningQuery(variablesSeq, covariablesSeq,groupingSeq,filtersSeq, scalaAlgorithm); + return new eu.hbp.mip.messages.external.MiningQuery( + variablesSeq, covariablesSeq, groupingSeq, filters, scalaAlgorithm); } @Override diff --git a/src/main/java/eu/hbp/mip/model/Model.java b/src/main/java/eu/hbp/mip/model/Model.java index d788436a6d9a5b0c42fa1b616cdcc3be443ed1a0..8b25b7410a1ade9885002a21d23c3c50368b3d46 100644 --- a/src/main/java/eu/hbp/mip/model/Model.java +++ b/src/main/java/eu/hbp/mip/model/Model.java @@ -54,9 +54,6 @@ public class Model { @JoinColumn(name = "updatedby_username") private User updatedBy = null; - @Column(columnDefinition = "text") - private String textQuery = null; - public Model() { /* @@ -163,13 +160,4 @@ public class Model { this.updatedBy = updatedBy; } - - public String getTextQuery() { - return textQuery; - } - - public void setTextQuery(String textQuery) { - this.textQuery = textQuery; - } - } diff --git a/src/main/java/eu/hbp/mip/model/Query.java b/src/main/java/eu/hbp/mip/model/Query.java index 9073b12360ee537a51d341fdafc0cf4335965b5a..e0a07582837846540b3cc26201f806db8b8ee74d 100644 --- a/src/main/java/eu/hbp/mip/model/Query.java +++ b/src/main/java/eu/hbp/mip/model/Query.java @@ -47,15 +47,8 @@ public class Query { nullable = false, updatable = false) }) private List<Variable> grouping = new LinkedList<>(); - @ManyToMany - @JoinTable(name = "query_filter", joinColumns = { - @JoinColumn(name = "query_id", nullable = false, updatable = false) }, - inverseJoinColumns = { @JoinColumn(name = "code", - nullable = false, updatable = false) }) - private List<Variable> filters = new LinkedList<>(); - - @Column(columnDefinition = "text", name = "sql_filter") - private String sqlFilter = null; + @Column(columnDefinition = "text") + private String filters = ""; public Query() { @@ -103,12 +96,11 @@ public class Query { } - @JsonProperty("filter") - public List<Variable> getFilters() { + public String getFilters() { return filters; } - public void setFilters(List<Variable> filters) { + public void setFilters(String filters) { this.filters = filters; } @@ -120,13 +112,4 @@ public class Query { this.request = request; } - - @JsonProperty("sql_filter") - public String getSqlFilter() { - return sqlFilter; - } - - public void setSqlFilter(String sqlFilter) { - this.sqlFilter = sqlFilter; - } } diff --git a/src/main/java/eu/hbp/mip/utils/DataUtil.java b/src/main/java/eu/hbp/mip/utils/DataUtil.java index 4ce7416bcff58acd7a71e631db0a76e6465489ff..3d1d872d779766dc2948b3ff66a751ce0afedca8 100644 --- a/src/main/java/eu/hbp/mip/utils/DataUtil.java +++ b/src/main/java/eu/hbp/mip/utils/DataUtil.java @@ -26,7 +26,7 @@ public class DataUtil { } @Cacheable("varsdata") - public JsonObject getDataFromVariables(List<String> vars) + public JsonObject getDataFromVariables(List<String> vars, String filters) { JsonObject data = new JsonObject(); @@ -40,8 +40,8 @@ public class DataUtil { long nb_samples = Math.min(nbRows, MAX_NB_SAMPLES); int samplingPercentage = (int) (100 * nb_samples / nbRows); List<Object> queryResult = jdbcTemplate.queryForList( - String.format("SELECT %s FROM %s TABLESAMPLE SYSTEM (%d) REPEATABLE (%d)", - var, featuresMainTable, samplingPercentage, TABLESAMPLE_SEED), + String.format("SELECT %s FROM %s TABLESAMPLE SYSTEM (%d) REPEATABLE (%d) WHERE %s", + var, featuresMainTable, samplingPercentage, TABLESAMPLE_SEED, filters), Object.class); for (Object value : queryResult) { if (value == null) { @@ -73,6 +73,11 @@ public class DataUtil { return data; } + public JsonObject getDataFromVariables(List<String> vars) + { + return getDataFromVariables(vars); + } + @Cacheable("colscount") public long countVariables() {