package nl.amis.jsf.model; import java.util.ArrayList; import java.util.List; import oracle.adf.view.rich.model.ConjunctionCriterion; import oracle.adf.view.rich.model.Criterion; public class EntityConjunctionCriterion extends ConjunctionCriterion { private List<Criterion> criteria = new ArrayList<Criterion>(); private Conjunction conjunction = Conjunction.AND; public EntityConjunctionCriterion() { super(); } public ConjunctionCriterion.Conjunction getConjunction() { return conjunction; } public void setConjunction(ConjunctionCriterion.Conjunction conjunction) { this.conjunction = conjunction; } public List<Criterion> getCriterionList() { return criteria; } public Object getKey(Criterion criterion) { return criteria.indexOf(criterion); } public Criterion getCriterion(Object object) { int index = 0; if (object instanceof String) { index = Integer.valueOf((String)object); } if (object instanceof Number) { index = ((Number)object).intValue(); } return criteria.get(index); } public void addCriterion(Criterion criterion) { criteria.add(criterion); } public boolean removeCriterion(Criterion criterion) { return criteria.remove(criterion); } public boolean isReadOnly() { return true; } @Override public boolean equals(Object object) { if (this == object) { return true; } if (!(object instanceof EntityConjunctionCriterion)) { return false; } final EntityConjunctionCriterion other = (EntityConjunctionCriterion)object; if (!(criteria == null ? other.criteria == null : criteria.equals(other.criteria))) { return false; } if (!(conjunction == null ? other.conjunction == null : conjunction.equals(other.conjunction))) { return false; } return true; } @Override public int hashCode() { final int PRIME = 37; int result = super.hashCode(); result = PRIME * result + ((criteria == null) ? 0 : criteria.hashCode()); result = PRIME * result + ((conjunction == null) ? 0 : conjunction.hashCode()); return result; } }