GeneticObservationFilter.java
/*
* Copyright 2026 Global Crop Diversity Trust
* Licensed under the Apache License, Version 2.0
* See LICENSE file in project root folder or http://www.apache.org/licenses/LICENSE-2.0
*/
package org.gringlobal.service.filter;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.genesys.blocks.model.filters.NumberFilter;
import org.genesys.blocks.model.filters.StringFilter;
import org.gringlobal.model.GeneticObservation;
import org.gringlobal.model.QGeneticObservation;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import com.querydsl.core.types.Predicate;
import org.apache.commons.collections4.CollectionUtils;
/**
* Filters for {@link GeneticObservation}
*/
@Getter
@Setter
@EqualsAndHashCode(callSuper = true)
@Accessors(fluent = true)
public class GeneticObservationFilter extends CooperatorOwnedModelFilter<GeneticObservationFilter, GeneticObservation, QGeneticObservation> {
private static final long serialVersionUID = -6740760232177787927L;
/** The inventory filter. */
public InventoryFilter inventory;
/** The genetic annotation filter. */
public GeneticAnnotationFilter geneticAnnotation;
/** The data quality code. */
public Set<String> dataQualityCode;
/** Archived flag. */
public Boolean isArchived;
/** The value. */
public StringFilter value;
/** The frequency. */
public NumberFilter<Double> frequency;
/** The maximum value. */
public NumberFilter<Double> maximumValue;
/** The mean value. */
public NumberFilter<Double> meanValue;
/** The minimum value. */
public NumberFilter<Double> minimumValue;
/** The standard deviation. */
public NumberFilter<Double> standardDeviation;
/** The rank. */
public NumberFilter<Integer> rank;
/** The sample size. */
public NumberFilter<Integer> sampleSize;
@Override
public List<Predicate> collectPredicates() {
return collectPredicates(QGeneticObservation.geneticObservation);
}
public List<Predicate> collectPredicates(QGeneticObservation geneticObservation) {
final List<Predicate> predicates = super.collectSuperPredicates(geneticObservation, geneticObservation._super);
if (inventory != null) {
predicates.add(inventory.nestedPredicate(geneticObservation.inventory()));
}
if (geneticAnnotation != null) {
predicates.add(geneticAnnotation.nestedPredicate(geneticObservation.geneticAnnotation()));
}
if (CollectionUtils.isNotEmpty(dataQualityCode)) {
predicates.add(geneticObservation.dataQualityCode.in(dataQualityCode));
}
if (isArchived != null) {
predicates.add(geneticObservation.isArchived.eq(convertToString(isArchived)));
}
if (value != null) {
predicates.add(value.buildQuery(geneticObservation.value));
}
if (frequency != null) {
predicates.add(frequency.buildQuery(geneticObservation.frequency));
}
if (maximumValue != null) {
predicates.add(maximumValue.buildQuery(geneticObservation.maximumValue));
}
if (meanValue != null) {
predicates.add(meanValue.buildQuery(geneticObservation.meanValue));
}
if (minimumValue != null) {
predicates.add(minimumValue.buildQuery(geneticObservation.minimumValue));
}
if (standardDeviation != null) {
predicates.add(standardDeviation.buildQuery(geneticObservation.standardDeviation));
}
if (rank != null) {
predicates.add(rank.buildQuery(geneticObservation.rank));
}
if (sampleSize != null) {
predicates.add(sampleSize.buildQuery(geneticObservation.sampleSize));
}
return predicates;
}
public synchronized InventoryFilter inventory() {
return inventory == null ? inventory = new InventoryFilter() : this.inventory;
}
public synchronized GeneticAnnotationFilter geneticAnnotation() {
return geneticAnnotation == null ? geneticAnnotation = new GeneticAnnotationFilter() : this.geneticAnnotation;
}
public synchronized Set<String> dataQualityCode() {
return dataQualityCode == null ? dataQualityCode = new HashSet<>() : this.dataQualityCode;
}
public synchronized StringFilter value() {
return value == null ? value = new StringFilter() : this.value;
}
public synchronized NumberFilter<Double> frequency() {
return frequency == null ? frequency = new NumberFilter<>() : this.frequency;
}
public synchronized NumberFilter<Double> maximumValue() {
return maximumValue == null ? maximumValue = new NumberFilter<>() : this.maximumValue;
}
public synchronized NumberFilter<Double> meanValue() {
return meanValue == null ? meanValue = new NumberFilter<>() : this.meanValue;
}
public synchronized NumberFilter<Double> minimumValue() {
return minimumValue == null ? minimumValue = new NumberFilter<>() : this.minimumValue;
}
public synchronized NumberFilter<Double> standardDeviation() {
return standardDeviation == null ? standardDeviation = new NumberFilter<>() : this.standardDeviation;
}
public synchronized NumberFilter<Integer> rank() {
return rank == null ? rank = new NumberFilter<>() : this.rank;
}
public synchronized NumberFilter<Integer> sampleSize() {
return sampleSize == null ? sampleSize = new NumberFilter<>() : this.sampleSize;
}
}