GeneticAnnotationFilter.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.List;
import org.genesys.blocks.model.filters.NumberFilter;
import org.genesys.blocks.model.filters.StringFilter;
import org.gringlobal.model.GeneticAnnotation;
import org.gringlobal.model.QGeneticAnnotation;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import com.querydsl.core.types.Predicate;
/**
* Filters for {@link GeneticAnnotation}
*/
@Getter
@Setter
@EqualsAndHashCode(callSuper = true)
@Accessors(fluent = true)
public class GeneticAnnotationFilter extends CooperatorOwnedModelFilter<GeneticAnnotationFilter, GeneticAnnotation, QGeneticAnnotation> {
private static final long serialVersionUID = -7840555493439868769L;
/** The genetic marker filter. */
public GeneticMarkerFilter geneticMarker;
/** The method filter. */
public MethodFilter method;
/** The assay method. */
public StringFilter assayMethod;
/** The scoring method. */
public StringFilter scoringMethod;
/** The size alleles. */
public StringFilter sizeAlleles;
/** The unusual alleles. */
public StringFilter unusualAlleles;
/** The maximum number of GOB alleles. */
public NumberFilter<Integer> maxGobAlleles;
/** The observation alleles count. */
public NumberFilter<Integer> observationAllelesCount;
@Override
public List<Predicate> collectPredicates() {
return collectPredicates(QGeneticAnnotation.geneticAnnotation);
}
public List<Predicate> collectPredicates(QGeneticAnnotation geneticAnnotation) {
final List<Predicate> predicates = super.collectSuperPredicates(geneticAnnotation, geneticAnnotation._super);
if (geneticMarker != null) {
predicates.add(geneticMarker.nestedPredicate(geneticAnnotation.geneticMarker()));
}
if (method != null) {
predicates.add(method.nestedPredicate(geneticAnnotation.method()));
}
if (assayMethod != null) {
predicates.add(assayMethod.buildQuery(geneticAnnotation.assayMethod));
}
if (scoringMethod != null) {
predicates.add(scoringMethod.buildQuery(geneticAnnotation.scoringMethod));
}
if (sizeAlleles != null) {
predicates.add(sizeAlleles.buildQuery(geneticAnnotation.sizeAlleles));
}
if (unusualAlleles != null) {
predicates.add(unusualAlleles.buildQuery(geneticAnnotation.unusualAlleles));
}
if (maxGobAlleles != null) {
predicates.add(maxGobAlleles.buildQuery(geneticAnnotation.maxGobAlleles));
}
if (observationAllelesCount != null) {
predicates.add(observationAllelesCount.buildQuery(geneticAnnotation.observationAllelesCount));
}
return predicates;
}
public synchronized GeneticMarkerFilter geneticMarker() {
return geneticMarker == null ? geneticMarker = new GeneticMarkerFilter() : this.geneticMarker;
}
public synchronized MethodFilter method() {
return method == null ? method = new MethodFilter() : this.method;
}
public synchronized StringFilter assayMethod() {
return assayMethod == null ? assayMethod = new StringFilter() : this.assayMethod;
}
public synchronized StringFilter scoringMethod() {
return scoringMethod == null ? scoringMethod = new StringFilter() : this.scoringMethod;
}
public synchronized StringFilter sizeAlleles() {
return sizeAlleles == null ? sizeAlleles = new StringFilter() : this.sizeAlleles;
}
public synchronized StringFilter unusualAlleles() {
return unusualAlleles == null ? unusualAlleles = new StringFilter() : this.unusualAlleles;
}
public synchronized NumberFilter<Integer> maxGobAlleles() {
return maxGobAlleles == null ? maxGobAlleles = new NumberFilter<>() : this.maxGobAlleles;
}
public synchronized NumberFilter<Integer> observationAllelesCount() {
return observationAllelesCount == null ? observationAllelesCount = new NumberFilter<>() : this.observationAllelesCount;
}
}