Skip to content
Snippets Groups Projects
Commit 8e755175 authored by Mirco Nasuti's avatar Mirco Nasuti
Browse files

fix filters

parent fe703c66
No related branches found
No related tags found
No related merge requests found
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
<spring-data-jpa.version>1.10.11.RELEASE</spring-data-jpa.version> <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> <spring-boot-starter-actuator.version>1.4.7.RELEASE</spring-boot-starter-actuator.version>
<aspectjweaver.version>1.8.9</aspectjweaver.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> <javax-inject.version>1</javax-inject.version>
<akka.version>2.3.14</akka.version> <akka.version>2.3.14</akka.version>
<spring-context.version>4.3.4.RELEASE</spring-context.version> <spring-context.version>4.3.4.RELEASE</spring-context.version>
...@@ -64,9 +64,9 @@ ...@@ -64,9 +64,9 @@
<snapshots> <snapshots>
<enabled>false</enabled> <enabled>false</enabled>
</snapshots> </snapshots>
<id>bintray-lren-chuv-mip-portal</id> <id>artifactory-libs-release-local</id>
<name>bintray</name> <name>artifactory</name>
<url>http://dl.bintray.com/lren-chuv/mip-portal</url> <url>http://hbps1.chuv.ch/artifactory/libs-release-local</url>
</repository> </repository>
</repositories> </repositories>
...@@ -235,9 +235,9 @@ ...@@ -235,9 +235,9 @@
<snapshots> <snapshots>
<enabled>false</enabled> <enabled>false</enabled>
</snapshots> </snapshots>
<id>bintray-lren-chuv-mip-portal</id> <id>artifactory-libs-release-local</id>
<name>bintray-plugins</name> <name>artifactory-plugins</name>
<url>http://dl.bintray.com/lren-chuv/mip-portal</url> <url>http://hbps1.chuv.ch/artifactory/libs-release-local</url>
</pluginRepository> </pluginRepository>
</pluginRepositories> </pluginRepositories>
......
...@@ -281,10 +281,12 @@ public class ModelsApi { ...@@ -281,10 +281,12 @@ public class ModelsApi {
allVars.addAll(model.getDataset().getHeader()); allVars.addAll(model.getDataset().getHeader());
allVars.addAll(model.getDataset().getGrouping()); allVars.addAll(model.getDataset().getGrouping());
String filters = model.getQuery().getFilters();
Gson gson = new Gson(); Gson gson = new Gson();
JsonObject jsonModel = gson.fromJson(gson.toJson(model, Model.class), JsonObject.class); JsonObject jsonModel = gson.fromJson(gson.toJson(model, Model.class), JsonObject.class);
jsonModel.get("dataset").getAsJsonObject() jsonModel.get("dataset").getAsJsonObject()
.add("data", dataUtil.getDataFromVariables(allVars)); .add("data", dataUtil.getDataFromVariables(allVars, filters));
return gson.fromJson(jsonModel, Model.class); return gson.fromJson(jsonModel, Model.class);
} }
......
...@@ -62,21 +62,19 @@ public class RequestsApi { ...@@ -62,21 +62,19 @@ public class RequestsApi {
List<String> variables = extractVarCodes(q, "variables"); List<String> variables = extractVarCodes(q, "variables");
List<String> groupings = extractVarCodes(q, "grouping"); List<String> groupings = extractVarCodes(q, "grouping");
List<String> covariables = extractVarCodes(q, "covariables"); List<String> covariables = extractVarCodes(q, "covariables");
List<String> filters = extractVarCodes(q, "filter"); String filters = extractFilters(q, "filters");
List<String> allVars = new LinkedList<>(); List<String> allVars = new LinkedList<>();
allVars.addAll(variables); allVars.addAll(variables);
allVars.addAll(groupings); allVars.addAll(groupings);
allVars.addAll(covariables); allVars.addAll(covariables);
allVars.addAll(filters);
dataset.addProperty("code", code); dataset.addProperty("code", code);
dataset.addProperty("date", date.getTime()); dataset.addProperty("date", date.getTime());
dataset.add("variable", gson.toJsonTree(variables)); dataset.add("variable", gson.toJsonTree(variables));
dataset.add("grouping", gson.toJsonTree(groupings)); dataset.add("grouping", gson.toJsonTree(groupings));
dataset.add("header", gson.toJsonTree(covariables)); dataset.add("header", gson.toJsonTree(covariables));
dataset.add("filter", gson.toJsonTree(filters)); dataset.add("data", dataUtil.getDataFromVariables(allVars, filters));
dataset.add("data", dataUtil.getDataFromVariables(allVars));
return ResponseEntity.ok(gson.fromJson(dataset, Object.class)); return ResponseEntity.ok(gson.fromJson(dataset, Object.class));
} }
...@@ -91,6 +89,9 @@ public class RequestsApi { ...@@ -91,6 +89,9 @@ public class RequestsApi {
return codes; return codes;
} }
private String extractFilters(JsonObject q, String field) {
return q.getAsJsonPrimitive(field).getAsString();
}
private String generateDSCode(Query query) { private String generateDSCode(Query query) {
String prefix = "DS"; String prefix = "DS";
......
...@@ -114,14 +114,14 @@ public class Experiment { ...@@ -114,14 +114,14 @@ public class Experiment {
TypesConvert.variablesToVariableIds(model.getQuery().getCovariables()).iterator()).asScala().toSeq().toList(); TypesConvert.variablesToVariableIds(model.getQuery().getCovariables()).iterator()).asScala().toSeq().toList();
Seq<VariableId> groupingSeq = JavaConverters.asScalaIteratorConverter( Seq<VariableId> groupingSeq = JavaConverters.asScalaIteratorConverter(
TypesConvert.variablesToVariableIds(model.getQuery().getGrouping()).iterator()).asScala().toSeq().toList(); 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( Seq<Algorithm> algorithmsSeq = JavaConverters.asScalaIteratorConverter(
algorithms.iterator()).asScala().toSeq().toList(); algorithms.iterator()).asScala().toSeq().toList();
Seq<Validation> validationsSeq = JavaConverters.asScalaIteratorConverter( Seq<Validation> validationsSeq = JavaConverters.asScalaIteratorConverter(
validations.iterator()).asScala().toSeq().toList(); 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);
} }
......
package eu.hbp.mip.model; package eu.hbp.mip.model;
import com.google.gson.Gson; import com.google.gson.Gson;
import eu.hbp.mip.messages.external.Filter;
import eu.hbp.mip.messages.external.VariableId; import eu.hbp.mip.messages.external.VariableId;
import eu.hbp.mip.utils.TypesConvert; import eu.hbp.mip.utils.TypesConvert;
import scala.collection.JavaConverters; import scala.collection.JavaConverters;
import scala.collection.Seq; import scala.collection.Seq;
import java.util.LinkedList;
import java.util.List; import java.util.List;
/** /**
...@@ -18,7 +16,7 @@ public class MiningQuery { ...@@ -18,7 +16,7 @@ public class MiningQuery {
private List<Variable> variables; private List<Variable> variables;
private List<Variable> covariables; private List<Variable> covariables;
private List<Variable> grouping; private List<Variable> grouping;
private List<Filter> filters; private String filters;
private Algorithm algorithm; private Algorithm algorithm;
public List<Variable> getVariables() { public List<Variable> getVariables() {
...@@ -45,11 +43,11 @@ public class MiningQuery { ...@@ -45,11 +43,11 @@ public class MiningQuery {
this.grouping = grouping; this.grouping = grouping;
} }
public List<Filter> getFilters() { public String getFilters() {
return filters; return filters;
} }
public void setFilters(List<Filter> filters) { public void setFilters(String filters) {
this.filters = filters; this.filters = filters;
} }
...@@ -72,10 +70,9 @@ public class MiningQuery { ...@@ -72,10 +70,9 @@ public class MiningQuery {
TypesConvert.variablesToVariableIds(covariables).iterator()).asScala().toSeq().toList(); TypesConvert.variablesToVariableIds(covariables).iterator()).asScala().toSeq().toList();
Seq<VariableId> groupingSeq = JavaConverters.asScalaIteratorConverter( Seq<VariableId> groupingSeq = JavaConverters.asScalaIteratorConverter(
TypesConvert.variablesToVariableIds(grouping).iterator()).asScala().toSeq().toList(); 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 @Override
......
...@@ -54,9 +54,6 @@ public class Model { ...@@ -54,9 +54,6 @@ public class Model {
@JoinColumn(name = "updatedby_username") @JoinColumn(name = "updatedby_username")
private User updatedBy = null; private User updatedBy = null;
@Column(columnDefinition = "text")
private String textQuery = null;
public Model() { public Model() {
/* /*
...@@ -163,13 +160,4 @@ public class Model { ...@@ -163,13 +160,4 @@ public class Model {
this.updatedBy = updatedBy; this.updatedBy = updatedBy;
} }
public String getTextQuery() {
return textQuery;
}
public void setTextQuery(String textQuery) {
this.textQuery = textQuery;
}
} }
...@@ -47,15 +47,8 @@ public class Query { ...@@ -47,15 +47,8 @@ public class Query {
nullable = false, updatable = false) }) nullable = false, updatable = false) })
private List<Variable> grouping = new LinkedList<>(); private List<Variable> grouping = new LinkedList<>();
@ManyToMany @Column(columnDefinition = "text")
@JoinTable(name = "query_filter", joinColumns = { private String filters = "";
@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;
public Query() { public Query() {
...@@ -103,12 +96,11 @@ public class Query { ...@@ -103,12 +96,11 @@ public class Query {
} }
@JsonProperty("filter") public String getFilters() {
public List<Variable> getFilters() {
return filters; return filters;
} }
public void setFilters(List<Variable> filters) { public void setFilters(String filters) {
this.filters = filters; this.filters = filters;
} }
...@@ -120,13 +112,4 @@ public class Query { ...@@ -120,13 +112,4 @@ public class Query {
this.request = request; this.request = request;
} }
@JsonProperty("sql_filter")
public String getSqlFilter() {
return sqlFilter;
}
public void setSqlFilter(String sqlFilter) {
this.sqlFilter = sqlFilter;
}
} }
...@@ -26,7 +26,7 @@ public class DataUtil { ...@@ -26,7 +26,7 @@ public class DataUtil {
} }
@Cacheable("varsdata") @Cacheable("varsdata")
public JsonObject getDataFromVariables(List<String> vars) public JsonObject getDataFromVariables(List<String> vars, String filters)
{ {
JsonObject data = new JsonObject(); JsonObject data = new JsonObject();
...@@ -40,8 +40,8 @@ public class DataUtil { ...@@ -40,8 +40,8 @@ public class DataUtil {
long nb_samples = Math.min(nbRows, MAX_NB_SAMPLES); long nb_samples = Math.min(nbRows, MAX_NB_SAMPLES);
int samplingPercentage = (int) (100 * nb_samples / nbRows); int samplingPercentage = (int) (100 * nb_samples / nbRows);
List<Object> queryResult = jdbcTemplate.queryForList( List<Object> queryResult = jdbcTemplate.queryForList(
String.format("SELECT %s FROM %s TABLESAMPLE SYSTEM (%d) REPEATABLE (%d)", String.format("SELECT %s FROM %s TABLESAMPLE SYSTEM (%d) REPEATABLE (%d) WHERE %s",
var, featuresMainTable, samplingPercentage, TABLESAMPLE_SEED), var, featuresMainTable, samplingPercentage, TABLESAMPLE_SEED, filters),
Object.class); Object.class);
for (Object value : queryResult) { for (Object value : queryResult) {
if (value == null) { if (value == null) {
...@@ -73,6 +73,11 @@ public class DataUtil { ...@@ -73,6 +73,11 @@ public class DataUtil {
return data; return data;
} }
public JsonObject getDataFromVariables(List<String> vars)
{
return getDataFromVariables(vars);
}
@Cacheable("colscount") @Cacheable("colscount")
public long countVariables() public long countVariables()
{ {
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment