![JAR search and dependency download from the Maven repository](/logo.png)
org.kuali.student.r2.common.criteria.LookupCustomizer Maven / Gradle / Ivy
package org.kuali.student.r2.common.criteria;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.kuali.rice.core.api.criteria.Predicate;
import org.kuali.rice.core.api.mo.ModelBuilder;
import org.kuali.rice.core.framework.persistence.jpa.criteria.Criteria;
public class LookupCustomizer {
private List additionalTransforms;
private List predicateTransforms;
private final Transform resultTransform;
private LookupCustomizer(Builder builder) {
this.additionalTransforms = builder.getAdditionalTransforms();
this.predicateTransforms = builder.getPredicateTransforms();
this.resultTransform = builder.getResultTransform() != null ? builder.getResultTransform() : IndentityTransform.getInstance();
}
public Predicate applyAdditionalTransforms(Predicate predicate, Criteria criteria) {
for (PredicateTransform transform : additionalTransforms){
predicate = transform.apply(predicate, criteria);
}
return predicate;
}
public Predicate applyPredicateTransforms(Predicate predicate, Criteria criteria) {
for (PredicateTransform transform : predicateTransforms){
predicate = transform.apply(predicate, criteria);
}
return predicate;
}
public T applyResultTransforms(Object o) {
return null;
}
public List getAdditionalTransforms() {
return additionalTransforms;
}
public void setAdditionalTransforms(List additionalTransforms) {
this.additionalTransforms = additionalTransforms;
}
public List getPredicateTransforms() {
return predicateTransforms;
}
public void setPredicateTransforms(List predicateTransforms) {
this.predicateTransforms = predicateTransforms;
}
public Transform getResultTransform() {
return resultTransform;
}
public static final class Builder implements ModelBuilder, Serializable {
private List additionalTransforms;
private List predicateTransforms;
private Transform resultTransform;
private Builder() {
}
public static Builder create() {
return new Builder();
}
public List getAdditionalTransforms() {
return additionalTransforms;
}
public void setAdditionalTransforms(List additionalTransforms) {
this.additionalTransforms = additionalTransforms;
}
public List getPredicateTransforms() {
return predicateTransforms;
}
public void setPredicateTransforms(List predicateTransforms) {
this.predicateTransforms = predicateTransforms;
}
public Transform getResultTransform() {
return resultTransform;
}
public void setResultTransform(final Transform resultTransform) {
this.resultTransform = resultTransform;
}
@Override
public LookupCustomizer build() {
if (additionalTransforms == null){
additionalTransforms = new ArrayList();
}
if (predicateTransforms == null){
predicateTransforms = new ArrayList();
}
return new LookupCustomizer(this);
}
}
public interface PredicateTransform {
Predicate apply(Predicate input, Criteria criteria);
}
public interface Transform {
R apply(P input);
}
/**
* f: x -> x. This function just returns the passed in parameter.
*
* @param the type the function acts on.
*/
private static final class IndentityTransform implements Transform {
@SuppressWarnings("unchecked")
private static final Transform INSTANCE = new IndentityTransform();
@SuppressWarnings("unchecked")
public static
Transform
getInstance() {
return INSTANCE;
}
@Override
public I apply(final I input) {
return input;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy