public void or(BaseCondition condition) { if (this.condition != null) { this.condition = Condition.or(this.condition, condition); return; } this.condition = condition; }
public BaseCondition or(BaseCondition c) { return Condition.or(this, c); }
private BaseCondition parseJoinedCondition(JsonObject json) { String op = json.get("op").getAsString(); List<BaseCondition> conditions = new ArrayList<>(); for (JsonElement jsonElement : json.getAsJsonArray("c")) { conditions.add(parseConditionObject(jsonElement.getAsJsonObject())); } if (op.equalsIgnoreCase("and")) { return Condition.and(conditions.toArray(new BaseCondition[]{})); } if (op.equalsIgnoreCase("or")) { return Condition.or(conditions.toArray(new BaseCondition[]{})); } throw new RuntimeException("Invalid joined condition operator"); }
@Test public void testWhereInWithEmptyListOrTrueExpression() { saveManyBasicObjects(3); BaseCondition emptyListCondition = c("intValue", "in", Collections.emptyList()); BaseCondition condition = or(emptyListCondition, c("stringValue", "=", "xpto")); List<BasicObject> objects = yawp(BasicObject.class).where(condition).list(); assertEquals(3, objects.size()); }
@Test public void testWhereInWithEmptyListOrFalseExpression() { saveManyBasicObjects(1); BaseCondition emptyListCondition = c("intValue", "in", Collections.emptyList()); BaseCondition condition = or(emptyListCondition, c("stringValue", "=", "otpx")); List<BasicObject> objects = yawp(BasicObject.class).where(condition).list(); assertEquals(0, objects.size()); }
@Test public void testWhereWithOr() { saveManyBasicObjects(2); List<BasicObject> objects = yawp(BasicObject.class).where(or(c("intValue", "=", 1), c("intValue", "=", 2))).list(); assertEquals(2, objects.size()); sort(objects); assertEquals(2, objects.size()); assertEquals("xpto", objects.get(0).getStringValue()); assertEquals(1, objects.get(0).getIntValue()); assertEquals("xpto", objects.get(1).getStringValue()); assertEquals(2, objects.get(1).getIntValue()); }
@Test public void testWhereWithOrNot() { saveManyBasicObjects(3); List<BasicObject> objects = yawp(BasicObject.class).where(or(c("intValue", "=", 1), c("intValue", "=", 2)).not()).list(); assertEquals(1, objects.size()); assertEquals("xpto", objects.get(0).getStringValue()); assertEquals(3, objects.get(0).getIntValue()); }
@Test public void testWhereWithComplexAndOrStructure() { saveManyBasicObjects(3); List<BasicObject> objects1 = yawp(BasicObject.class).where( or(and(c("intValue", "=", 1), c("intValue", "=", 2)), and(c("intValue", "=", 3), c("intValue", "=", 3)))).list(); assertEquals(1, objects1.size()); assertEquals(3, objects1.get(0).getIntValue()); BaseCondition condition = or(and(c("intValue", "=", 3), c("intValue", "=", 3)), and(c("intValue", "=", 1), c("intValue", "=", 2))); List<BasicObject> objects2 = yawp(BasicObject.class).where(condition).list(); assertEquals(1, objects2.size()); assertEquals(3, objects2.get(0).getIntValue()); }