Skip to content

Commit

Permalink
Try to get condition via ExperimentalGroup
Browse files Browse the repository at this point in the history
  • Loading branch information
Steffengreiner committed Jul 10, 2023
1 parent 32c44cc commit f0fd103
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 29 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package life.qbic.projectmanagement.experiment.persistence;

import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.Predicate;
import jakarta.persistence.criteria.Root;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import life.qbic.persistence.OffsetBasedRequest;
Expand Down Expand Up @@ -65,17 +69,12 @@ private Specification<SamplePreview> generateExperimentIdandFilterSpecification(
Specification<SamplePreview> batchLabelSpec = SamplePreviewSpecs.batchLabelContains(filter);
Specification<SamplePreview> bioReplicateLabelSpec = SamplePreviewSpecs.BioReplicateLabelContains(
filter);
/*
Specification<SamplePreview> experimentalGroupSpec = SamplePreviewSpecs.experimentalGroupContains(
filter);
*/
Specification<SamplePreview> speciesSpec = SamplePreviewSpecs.speciesContains(filter);
Specification<SamplePreview> specimenSpec = SamplePreviewSpecs.specimenContains(filter);
Specification<SamplePreview> analyteSpec = SamplePreviewSpecs.analyteContains(filter);

Specification<SamplePreview> conditionSpec = SamplePreviewSpecs.conditionContains(filter);
Specification<SamplePreview> containsFilterSpec = Specification.anyOf(sampleCodeSpec,
sampleLabelSpec, batchLabelSpec, bioReplicateLabelSpec, speciesSpec,
sampleLabelSpec, batchLabelSpec, bioReplicateLabelSpec, conditionSpec, speciesSpec,
specimenSpec,
analyteSpec);
return Specification.where(experimentIdSpec).and(containsFilterSpec);
Expand Down Expand Up @@ -119,14 +118,14 @@ public static Specification<SamplePreview> sampleLabelContains(String filter) {
builder.like(root.get("sampleLabel"), "%" + filter + "%");
}

/*
public static Specification<SamplePreview> experimentalGroupContains(String filter) {
return (root, query, builder) ->
StringUtil.isBlank(filter) ?
builder.conjunction() :
builder.any(), "%" + filter + "%")
}
*/

public static Specification<SamplePreview> conditionContains(String filter) {
return (root, query, builder) ->
StringUtil.isBlank(filter) ?
builder.conjunction() :
generateConditionPredicates(root, builder, filter);
}

public static Specification<SamplePreview> speciesContains(String filter) {
return (root, query, builder) ->
StringUtil.isBlank(filter) ?
Expand All @@ -148,4 +147,22 @@ public static Specification<SamplePreview> analyteContains(String filter) {
builder.like(root.get("analyte"), "%" + filter + "%");
}
}

private static Predicate generateConditionPredicates(Root<SamplePreview> root,
CriteriaBuilder builder, String filter) {
List<Predicate> predicates = new ArrayList<>();
Predicate experimentalVariableNamePredicate = builder.like(
root.get("experimentalGroup").get("condition").get("variableLevels").get("variableName")
.as(String.class), "%" + filter + "%");
predicates.add(experimentalVariableNamePredicate);
Predicate experimentalValueValuePredicate = builder.like(
root.get("experimentalGroup").get("condition").get("variableLevels")
.get("experimentalValue").get("value"), "%" + filter + "%");
predicates.add(experimentalValueValuePredicate);
Predicate experimentalValueUnitPredicate = builder.like(
root.get("experimentalGroup").get("condition").get("variableLevels")
.get("experimentalValue").get("unit"), "%" + filter + "%");
predicates.add(experimentalValueUnitPredicate);
return builder.or(predicates.toArray(new Predicate[0]));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,6 @@ public List<SamplePreview> queryPreview(ExperimentId experimentId, int offset, i
limit,
sortOrders, filter);
// the list must be modifiable for spring security to filter it
previewList.forEach(
samplePreview -> System.out.println(samplePreview.experimentalVariables().size()));
return new ArrayList<>(previewList);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,14 @@
import jakarta.persistence.Embedded;
import jakarta.persistence.EmbeddedId;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.OneToMany;
import jakarta.persistence.OneToOne;
import jakarta.persistence.Table;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import life.qbic.projectmanagement.domain.project.experiment.BiologicalReplicate;
import life.qbic.projectmanagement.domain.project.experiment.Experiment;
import life.qbic.projectmanagement.domain.project.experiment.ExperimentId;
import life.qbic.projectmanagement.domain.project.experiment.ExperimentalGroup;
import life.qbic.projectmanagement.domain.project.experiment.ExperimentalVariable;
import life.qbic.projectmanagement.domain.project.experiment.vocabulary.Analyte;
import life.qbic.projectmanagement.domain.project.experiment.vocabulary.Species;
import life.qbic.projectmanagement.domain.project.experiment.vocabulary.Specimen;
Expand Down Expand Up @@ -55,9 +50,6 @@ public class SamplePreview {
private String species;
private String specimen;
private String analyte;
@OneToMany(fetch = FetchType.EAGER, orphanRemoval = true, cascade = CascadeType.ALL)
@JoinColumn(name = "experimentId", referencedColumnName = "experiment_id")
private final List<ExperimentalVariable> experimentalVariables = new ArrayList<>();

protected SamplePreview() {
//needed by JPA
Expand Down Expand Up @@ -159,10 +151,6 @@ public ExperimentalGroup experimentalGroup() {
return experimentalGroup;
}

public List<ExperimentalVariable> experimentalVariables() {
return experimentalVariables;
}

@Override
public boolean equals(Object o) {
if (this == o) {
Expand Down

0 comments on commit f0fd103

Please sign in to comment.