From b5eef58c942a22c70d36a943cc32d1b3bc77db4d Mon Sep 17 00:00:00 2001 From: Mirco Nasuti <mirco.nasuti@chuv.ch> Date: Tue, 18 Oct 2016 13:31:32 +0200 Subject: [PATCH] make filters work --- .../eu/hbp/mip/controllers/ModelsApi.java | 5 -- .../eu/hbp/mip/controllers/RequestsApi.java | 19 ++++- src/main/java/eu/hbp/mip/model/Filter.java | 78 ------------------- src/main/java/eu/hbp/mip/model/Query.java | 14 ++-- .../mip/repositories/FilterRepository.java | 11 --- .../db/migration/V3_0__AddFilter.sql | 9 ++- 6 files changed, 32 insertions(+), 104 deletions(-) delete mode 100644 src/main/java/eu/hbp/mip/model/Filter.java delete mode 100644 src/main/java/eu/hbp/mip/repositories/FilterRepository.java diff --git a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java index 34ac327dc..03bae52c1 100644 --- a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java +++ b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java @@ -8,7 +8,6 @@ import com.github.slugify.Slugify; import com.google.gson.Gson; import com.google.gson.JsonObject; import eu.hbp.mip.configuration.SecurityConfiguration; -import eu.hbp.mip.model.Filter; import eu.hbp.mip.model.Model; import eu.hbp.mip.model.User; import eu.hbp.mip.model.Variable; @@ -218,10 +217,6 @@ public class ModelsApi { Collection<String> yAxisVarsColl = new LinkedHashSet<>(yAxisVars); model.getConfig().setyAxisVariables(new LinkedList<>(yAxisVarsColl)); - List<Filter> fltrs = queryRepository.findOne(model.getQuery().getId()).getFilters(); - Collection<Filter> fltrsColl = new LinkedHashSet<>(fltrs); - model.getQuery().setFilters(new LinkedList<>(fltrsColl)); - return new ResponseEntity<>(HttpStatus.OK).ok(getModelWithDataset(model)); } diff --git a/src/main/java/eu/hbp/mip/controllers/RequestsApi.java b/src/main/java/eu/hbp/mip/controllers/RequestsApi.java index f5f2ff009..a0938937a 100644 --- a/src/main/java/eu/hbp/mip/controllers/RequestsApi.java +++ b/src/main/java/eu/hbp/mip/controllers/RequestsApi.java @@ -23,7 +23,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; -import java.util.*; +import java.util.Date; +import java.util.LinkedList; +import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -59,13 +61,15 @@ public class RequestsApi { List<String> variables = new LinkedList<>(); List<String> groupings = new LinkedList<>(); List<String> covariables = new LinkedList<>(); + List<String> filters = new LinkedList<>(); Gson gson = new Gson(); JsonObject q = gson.fromJson(gson.toJson(query, Query.class), JsonObject.class); - JsonArray queryVars = q.getAsJsonArray("variables"); - JsonArray queryGrps = q.getAsJsonArray("grouping"); - JsonArray queryCoVars = q.getAsJsonArray("covariables"); + JsonArray queryVars = q.getAsJsonArray("variables") != null ? q.getAsJsonArray("variables") : new JsonArray(); + JsonArray queryGrps = q.getAsJsonArray("grouping") != null ? q.getAsJsonArray("grouping") : new JsonArray(); + JsonArray queryCoVars = q.getAsJsonArray("covariables") != null ? q.getAsJsonArray("covariables") : new JsonArray(); + JsonArray queryfltrs = q.getAsJsonArray("filter") != null ? q.getAsJsonArray("filter") : new JsonArray(); List<String> allVars = new LinkedList<>(); @@ -87,11 +91,18 @@ public class RequestsApi { allVars.add(varCode); } + for (JsonElement var : queryfltrs) { + String fltCode = var.getAsJsonObject().get("code").getAsString(); + filters.add(fltCode); + allVars.add(fltCode); + } + 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", new DataUtil(scienceJdbcTemplate, scienceMainTable).getDataFromVariables(allVars)); return ResponseEntity.ok(new Gson().fromJson(dataset, Object.class)); diff --git a/src/main/java/eu/hbp/mip/model/Filter.java b/src/main/java/eu/hbp/mip/model/Filter.java deleted file mode 100644 index e55b405e9..000000000 --- a/src/main/java/eu/hbp/mip/model/Filter.java +++ /dev/null @@ -1,78 +0,0 @@ -/** - * Created by mirco on 04.12.15. - */ - -package eu.hbp.mip.model; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import io.swagger.annotations.ApiModel; - -import javax.persistence.*; -import java.util.LinkedList; -import java.util.List; - -@Entity -@Table(name = "`filter`") -@ApiModel -@JsonIgnoreProperties(value = { "id" }) -@JsonInclude(JsonInclude.Include.NON_NULL) -public class Filter { - - @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE) - private Long id = null; - - @ManyToOne - private Variable variable = null; - - private String operator = null; - - @ElementCollection(fetch = FetchType.EAGER) - @CollectionTable(name = "filter_values", joinColumns = @JoinColumn(name = "filter_id")) - private List<String> values = new LinkedList<>(); - - - public Filter() { - /* - * Empty constructor is needed by Hibernate - */ - } - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - - public Variable getVariable() { - return variable; - } - - public void setVariable(Variable variable) { - this.variable = variable; - } - - - public String getOperator() { - return operator; - } - - public void setOperator(String operator) { - this.operator = operator; - } - - - public List<String> getValues() { - return values; - } - - public void setValues(List<String> values) { - this.values = values; - } - -} diff --git a/src/main/java/eu/hbp/mip/model/Query.java b/src/main/java/eu/hbp/mip/model/Query.java index 83d13a1fe..9073b1236 100644 --- a/src/main/java/eu/hbp/mip/model/Query.java +++ b/src/main/java/eu/hbp/mip/model/Query.java @@ -47,8 +47,12 @@ public class Query { nullable = false, updatable = false) }) private List<Variable> grouping = new LinkedList<>(); - @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) - private List<Filter> filters = 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; @@ -99,15 +103,15 @@ public class Query { } - public List<Filter> getFilters() { + @JsonProperty("filter") + public List<Variable> getFilters() { return filters; } - public void setFilters(List<Filter> filters) { + public void setFilters(List<Variable> filters) { this.filters = filters; } - public String getRequest() { return request; } diff --git a/src/main/java/eu/hbp/mip/repositories/FilterRepository.java b/src/main/java/eu/hbp/mip/repositories/FilterRepository.java deleted file mode 100644 index d8d8e5ff4..000000000 --- a/src/main/java/eu/hbp/mip/repositories/FilterRepository.java +++ /dev/null @@ -1,11 +0,0 @@ -package eu.hbp.mip.repositories; - -import eu.hbp.mip.model.Filter; -import org.springframework.data.repository.CrudRepository; - -/** - * Created by mirco on 11.07.16. - */ - -public interface FilterRepository extends CrudRepository<Filter, Long> { -} diff --git a/src/main/resources/db/migration/V3_0__AddFilter.sql b/src/main/resources/db/migration/V3_0__AddFilter.sql index 202fc3d8e..731e54b8e 100644 --- a/src/main/resources/db/migration/V3_0__AddFilter.sql +++ b/src/main/resources/db/migration/V3_0__AddFilter.sql @@ -1 +1,8 @@ -ALTER TABLE query ADD COLUMN sql_filter text; \ No newline at end of file +ALTER TABLE query ADD COLUMN sql_filter text; + +ALTER TABLE query_filter DROP COLUMN filters_id; +DROP TABLE filter_values, filter; + +ALTER TABLE query_filter ADD COLUMN code character varying(255) NOT NULL; +ALTER TABLE ONLY query_filter + ADD CONSTRAINT fk_1 FOREIGN KEY (query_id) REFERENCES query(id); \ No newline at end of file -- GitLab