diff --git a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java index 34ac327dc20a0721eefa3e0a5574cd3d66fb4a54..03bae52c1a77b2c3ddaec0f439791735c20fc84c 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 f5f2ff009b9357320468b7560d6a02fe5c527d68..a0938937a5eaf0da1ea0c5fcffe44ac9b6264a16 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 e55b405e95e36cffb75dfbafcb4abf1c077ecdc5..0000000000000000000000000000000000000000 --- 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 83d13a1fedfda525ff315aa2aa6844523fa74ea6..9073b12360ee537a51d341fdafc0cf4335965b5a 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 d8d8e5ff440331608f6bdb7f368f209c27e49d06..0000000000000000000000000000000000000000 --- 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 202fc3d8eeb57c783fca46725b2207d1ee3d0bc5..731e54b8e17c971fb8b6c651a1f48b2da32f501c 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