@Test public void outside() throws Exception { ConstraintSet outsideExp = new ConstraintSet(AND); ConstraintSet outsideInner1 = new ConstraintSet(OR); outsideInner1.addConstraint(new SimpleConstraint(start, ConstraintOp.LESS_THAN, startOf17May2008)); outsideInner1.addConstraint(new SimpleConstraint(end, ConstraintOp.GREATER_THAN_EQUALS, endOf17May2008)); outsideExp.addConstraint(outsideInner1); ConstraintSet outsideInner2 = new ConstraintSet(OR); outsideInner2.addConstraint(new SimpleConstraint(start, LESS_THAN, startOfJan2012)); outsideInner2.addConstraint(new SimpleConstraint(end, GREATER_THAN_EQUALS, endOfJan2012)); outsideExp.addConstraint(outsideInner2); Constraint got = MainHelper.makeRangeConstraint(null, empPeriod, new PathConstraintRange("EmploymentPeriod", OUTSIDE, ranges)); assertEquals(outsideExp, got); }
public void testRemoveConstrint() { ConstraintSet set = new ConstraintSet(ConstraintOp.AND); set.addConstraint(sc1); set.addConstraint(sc2); set.removeConstraint(sc1); LinkedHashSet test = new LinkedHashSet(); test.add(sc2); assertEquals(test, set.getConstraints()); }
/** * Adds all the constraints present in the argument into the given List. * * @param list a List of Constraints, to which to add more entries * @param constraint a Constraint to pick apart */ public static void addToList(List<Constraint> list, Constraint constraint) { if (constraint != null) { if (constraint instanceof ConstraintSet) { if (((ConstraintSet) constraint).getOp() == ConstraintOp.AND) { Set<Constraint> constraints = ((ConstraintSet) constraint).getConstraints(); for (Constraint con : constraints) { addToList(list, con); } } else { list.add(constraint); } } else { list.add(constraint); } } }
cs.addConstraint(con); ConstraintSet set = null; if (op instanceof LogicExpression.And) { if (ConstraintOp.AND.equals(cs.getOp())) { set = cs; } else { set = new ConstraintSet(ConstraintOp.AND); if (ConstraintOp.OR.equals(cs.getOp())) { set = cs; } else { set = new ConstraintSet(ConstraintOp.OR); cs.addConstraint(set);
public void testAddConstrint() { ConstraintSet set = new ConstraintSet(ConstraintOp.AND); set.addConstraint(sc1); set.addConstraint(sc2); LinkedHashSet test = new LinkedHashSet(); test.add(sc1); test.add(sc2); assertEquals(test, set.getConstraints()); }
@Override public Constraint createConstraint(Queryable q, QueryNode node, PathConstraintRange con) { QueryField qf = (QueryField) node; ConstraintOp mainSetOp = OR; ConstraintOp rangeSetOp = AND; ConstraintOp leftOp = GTE; ConstraintOp rightOp = LTE; ConstraintOp op = con.getOp(); if (!(op == WITHIN || op == OVERLAPS || op == OUTSIDE || op == DOES_NOT_OVERLAP)) { throw new RuntimeException("Unimplemented behaviour: " + op); } ConstraintSet mainSet = new ConstraintSet(mainSetOp); for (String range: con.getValues()) { ConstraintSet conSet = new ConstraintSet(rangeSetOp); StringRange r = new StringRange(range); conSet.addConstraint(new SimpleConstraint(qf, leftOp, new QueryValue(r.start))); conSet.addConstraint(new SimpleConstraint(qf, rightOp, new QueryValue(r.end))); mainSet.addConstraint(conSet); } if (op == OUTSIDE || op == DOES_NOT_OVERLAP) { mainSet.negate(); } return mainSet; }
public void testRemoveNotExists() throws Exception { try { ConstraintSet set = new ConstraintSet(ConstraintOp.OR); set.addConstraint(sc1); set.removeConstraint(sc2); fail("Expected IllegalArgumentExcepion"); } catch (IllegalArgumentException e) { } }
public static Query emptyNorConstraintSet() throws Exception { Query q = new Query(); QueryClass qc = new QueryClass(Company.class); q.addFrom(qc); q.addToSelect(qc); q.setConstraint(new ConstraintSet(ConstraintOp.NOR)); return q; }
private static void setConstraints(Queryable q, ConstraintSet andCs) { if (!andCs.getConstraints().isEmpty()) { Constraint c = andCs; while ((c instanceof ConstraintSet) && (((ConstraintSet) c).getConstraints().size() == 1)) { c = ((ConstraintSet) c).getConstraints().iterator().next(); } q.setConstraint(c); } }
public void testAddReference() throws ClassNotFoundException { Query query = new Query(); ConstraintSet cs = new ConstraintSet(ConstraintOp.AND); query.setConstraint(cs); QueryClass startQc = new QueryClass(Class.forName("org.intermine.model.testmodel.Employee")); query.addFrom(startQc); widgetLdr.addReference(query, startQc, "department", "Employee.department"); ContainsConstraint cc = (ContainsConstraint) (cs.getConstraints().iterator().next()); assertEquals("Department", cc.getQueryClass().getType().getSimpleName()); QueryObjectReference qr = (QueryObjectReference) cc.getReference(); assertEquals("department", qr.getFieldName()); assertEquals("Employee", qr.getQcType().getSimpleName()); }
private void specifyOrganism(ConstraintSet cs, String taxonId) { QueryValue taxon = new QueryValue(taxonId); QueryObjectReference orgref = new QueryObjectReference(chromosome, "organism"); addFrom(q, organism); cs.addConstraint(new ContainsConstraint(orgref, ConstraintOp.CONTAINS, organism)); cs.addConstraint(new SimpleConstraint(taxonIdField, ConstraintOp.EQUALS, taxon)); } }
for (Constraint subC : ((ConstraintSet) constraint).getConstraints()) { ((ConstraintSet) queryConstraint).addConstraint(subC); ((ConstraintSet) queryConstraint).addConstraint(constraint); ConstraintSet constraints = new ConstraintSet(ConstraintOp.AND); constraints.addConstraint(queryConstraint); if (constraint instanceof ConstraintSet && constraint.getOp().equals(ConstraintOp.AND)) { for (Constraint subC : ((ConstraintSet) constraint).getConstraints()) { constraints.addConstraint(subC); constraints.addConstraint(constraint);
@Override public Constraint createConstraint(Queryable q, QueryNode node, PathConstraintRange con) { QueryField qf = (QueryField) node; ConstraintOp mainSetOp = OR; ConstraintOp rangeSetOp = AND; ConstraintOp leftOp = GTE; ConstraintOp rightOp = LTE; ConstraintOp op = con.getOp(); if (!(op == WITHIN || op == OVERLAPS || op == OUTSIDE || op == DOES_NOT_OVERLAP)) { throw new RuntimeException("Unimplemented behaviour: " + op); } ConstraintSet mainSet = new ConstraintSet(mainSetOp); for (String range: con.getValues()) { ConstraintSet conSet = new ConstraintSet(rangeSetOp); IntRange ir = new IntRange(range); conSet.addConstraint(new SimpleConstraint(qf, leftOp, new QueryValue(ir.start))); conSet.addConstraint(new SimpleConstraint(qf, rightOp, new QueryValue(ir.end))); mainSet.addConstraint(conSet); } if (op == OUTSIDE || op == DOES_NOT_OVERLAP) { mainSet.negate(); } return mainSet; }
cs.addConstraint(con); ConstraintSet set = null; if (op instanceof LogicExpression.And) { if (ConstraintOp.AND.equals(cs.getOp())) { set = cs; } else { set = new ConstraintSet(ConstraintOp.AND); if (ConstraintOp.OR.equals(cs.getOp())) { set = cs; } else { set = new ConstraintSet(ConstraintOp.OR); cs.addConstraint(set);
public static Query emptyAndConstraintSet() throws Exception { Query q = new Query(); QueryClass qc = new QueryClass(Company.class); q.addFrom(qc); q.addToSelect(qc); q.setConstraint(new ConstraintSet(ConstraintOp.AND)); return q; }
private static void setConstraints(Queryable q, ConstraintSet andCs) { if (!andCs.getConstraints().isEmpty()) { Constraint c = andCs; while ((c instanceof ConstraintSet) && (((ConstraintSet) c).getConstraints().size() == 1)) { c = ((ConstraintSet) c).getConstraints().iterator().next(); } q.setConstraint(c); } }
public void testAddConstraintEmpty() throws Exception { Query q = new Query(); QueryClass qc = new QueryClass(Employee.class); SimpleConstraint sc = new SimpleConstraint(new QueryField(qc, "name"), ConstraintOp.EQUALS, new QueryValue("Bob")); q.setConstraint(sc); QueryHelper.addAndConstraint(q, new ConstraintSet(ConstraintOp.AND)); assertEquals(1, ((ConstraintSet) q.getConstraint()).getConstraints().size()); }
/** * Helper method for getTags. * @param cs The constraint set being built up. * @param qc The class the constrain on. * @param fieldName The field to constrain. * @param value The value to constrain to. */ private static void constrain(ConstraintSet cs, QueryClass qc, String fieldName, String value) { if (value != null) { QueryValue qv = new QueryValue(value); QueryField qf = new QueryField(qc, fieldName); SimpleConstraint c = new SimpleConstraint(qf, ConstraintOp.EQUALS, qv); cs.addConstraint(c); } }
@Test public void doesntOverlap() throws Exception { ConstraintSet exp = new ConstraintSet(AND); ConstraintSet inner1 = new ConstraintSet(OR); inner1.addConstraint(new SimpleConstraint(end, LESS_THAN, startOf17May2008)); inner1.addConstraint(new SimpleConstraint(start, GREATER_THAN_EQUALS, endOf17May2008)); exp.addConstraint(inner1); ConstraintSet inner2 = new ConstraintSet(OR); inner2.addConstraint(new SimpleConstraint(end, LESS_THAN, startOfJan2012)); inner2.addConstraint(new SimpleConstraint(start, GREATER_THAN_EQUALS, endOfJan2012)); exp.addConstraint(inner2); Constraint got = MainHelper.makeRangeConstraint(null, empPeriod, new PathConstraintRange("EmploymentPeriod", DOES_NOT_OVERLAP, ranges)); assertEquals(exp, got); }
if (con instanceof ConstraintSet) { ConstraintSet cs = (ConstraintSet) con; Set<Constraint> constraints = new HashSet<Constraint>(cs.getConstraints()); for (Constraint c : constraints) { if (c instanceof BagConstraint) { ((ConstraintSet) con).removeConstraint(c); if (cs.getOp().equals(ConstraintOp.OR)) { nodes.put((QueryEvaluable) ((BagConstraint) c).getQueryNode(), cs); } else { ConstraintSet replacement = new ConstraintSet(ConstraintOp.OR); nodes.put((QueryEvaluable) ((BagConstraint) c).getQueryNode(), replacement); cs.addConstraint(replacement);