private void initConditions() { if (condition == null) { return; } condition.init(r, endpointClazz); }
public QueryBuilder<T> where(BaseCondition c) { if (condition == null) { condition = c; } else { condition = Condition.and(condition, c); } condition.init(r, clazz); return this; }
@Override public void init(Repository r, Class<?> clazz) { boolean allSubConditionsHasPreFilter = true; boolean oneSubConditionHasPreFilter = false; for (BaseCondition c : conditions) { c.init(r, clazz); if (!c.hasPreFilter()) { allSubConditionsHasPreFilter = false; } else { oneSubConditionHasPreFilter = true; } if (c.hasPostFilter()) { hasPostFilter = true; } } hasPreFilter = (oneSubConditionHasPreFilter && logicalOperator == LogicalOperator.AND) || (allSubConditionsHasPreFilter && logicalOperator == LogicalOperator.OR); }
@Test public void testParentRef() { Parent parent = new Parent("parent"); yawp.save(parent); Child child = new Child("child", parent.getId()); yawp.save(child); Grandchild grandchild = new Grandchild("grandchild", child.getId()); yawp.save(grandchild); BaseCondition c = c("parent->parent->name", "=", "parent"); c.init(yawp, Grandchild.class); assertTrue(c.evaluate(grandchild)); assertTrue(c.evaluate(child)); assertTrue(c.evaluate(parent)); }
@Test public void testIgnoreConditionForChildFields() { Parent parent = new Parent("parent"); yawp.save(parent); Child child = new Child("child", parent.getId()); yawp.save(child); Grandchild grandchild = new Grandchild("grandchild", child.getId()); grandchild.setAge(10); yawp.save(grandchild); BaseCondition c = c("age", "=", 11); c.init(yawp, Grandchild.class); assertFalse(c.evaluate(grandchild)); assertTrue(c.evaluate(child)); assertTrue(c.evaluate(parent)); } }