@Override public void setParameterFor(Query query, Object parameter1, Object parameter2) { if (parameter1 == null || parameter2 == null) { throw new IllegalArgumentException("The new parameters can not be null."); } if (operation != Operation.BETWEEN) { throw new UnsupportedOperationException("Only the BETWEEN condition supports two parameters."); } if (parameter1 instanceof Long && parameter2 instanceof Long) { query.setParameters(property, (Long) parameter1, (Long) parameter2); } else if (parameter1 instanceof Integer && parameter2 instanceof Integer) { query.setParameters(property, (Integer) parameter1, (Integer) parameter2); } else if (parameter1 instanceof Double && parameter2 instanceof Double) { query.setParameters(property, (Double) parameter1, (Double) parameter2); } else if (parameter1 instanceof Float && parameter2 instanceof Float) { query.setParameters(property, (Float) parameter1, (Float) parameter2); } else { throw new IllegalArgumentException("The BETWEEN condition only supports LONG, INTEGER, DOUBLE or FLOAT parameters."); } } }
@Test public void testSetParameter2Floats() { putTestEntitiesScalars(); Query<TestEntity> query = box.query().between(simpleFloat, 400.15, 400.75).parameterAlias("foo").build(); assertEquals(6, query.count()); query.setParameters(simpleFloat, 400.65, 400.85); List<TestEntity> entities = query.find(); assertEquals(2, entities.size()); assertEquals(8, entities.get(0).getId()); assertEquals(9, entities.get(1).getId()); query.setParameters("foo", 400.45, 400.55); assertEquals(6, query.findUnique().getId()); }
@Test public void testSetParameter2Ints() { putTestEntitiesScalars(); Query<TestEntity> query = box.query().between(simpleInt, 2005, 2008).parameterAlias("foo").build(); assertEquals(4, query.count()); query.setParameters(simpleInt, 2002, 2003); List<TestEntity> entities = query.find(); assertEquals(2, entities.size()); assertEquals(3, entities.get(0).getId()); assertEquals(4, entities.get(1).getId()); query.setParameters("foo", 2007, 2007); assertEquals(8, query.findUnique().getId()); }
@Test public void testLongIn() { putTestEntitiesScalars(); long[] valuesLong = {1, 1, 2, 3, 3003, 3007, 3002, -1}; Query<TestEntity> query = box.query().in(simpleLong, valuesLong).parameterAlias("long").build(); assertEquals(3, query.count()); long[] valuesLong2 = {3003}; query.setParameters(simpleLong, valuesLong2); assertEquals(1, query.count()); long[] valuesLong3 = {3003, 3007}; query.setParameters("long", valuesLong3); assertEquals(2, query.count()); }
@Test public void testIntIn() { putTestEntitiesScalars(); int[] valuesInt = {1, 1, 2, 3, 2003, 2007, 2002, -1}; Query<TestEntity> query = box.query().in(simpleInt, valuesInt).parameterAlias("int").build(); assertEquals(3, query.count()); int[] valuesInt2 = {2003}; query.setParameters(simpleInt, valuesInt2); assertEquals(1, query.count()); int[] valuesInt3 = {2003, 2007}; query.setParameters("int", valuesInt3); assertEquals(2, query.count()); }
@Test public void testIntNotIn() { putTestEntitiesScalars(); int[] valuesInt = {1, 1, 2, 3, 2003, 2007, 2002, -1}; Query<TestEntity> query = box.query().notIn(simpleInt, valuesInt).parameterAlias("int").build(); assertEquals(7, query.count()); int[] valuesInt2 = {2003}; query.setParameters(simpleInt, valuesInt2); assertEquals(9, query.count()); int[] valuesInt3 = {2003, 2007}; query.setParameters("int", valuesInt3); assertEquals(8, query.count()); }
@Test public void testLongNotIn() { putTestEntitiesScalars(); long[] valuesLong = {1, 1, 2, 3, 3003, 3007, 3002, -1}; Query<TestEntity> query = box.query().notIn(simpleLong, valuesLong).parameterAlias("long").build(); assertEquals(7, query.count()); long[] valuesLong2 = {3003}; query.setParameters(simpleLong, valuesLong2); assertEquals(9, query.count()); long[] valuesLong3 = {3003, 3007}; query.setParameters("long", valuesLong3); assertEquals(8, query.count()); }
@Test public void testStringIn() { putTestEntitiesStrings(); putTestEntity("BAR", 100); String[] values = {"bar", "foo bar"}; Query<TestEntity> query = box.query().in(simpleString, values).order(simpleString, OrderFlags.CASE_SENSITIVE) .build(); List<TestEntity> entities = query.find(); assertEquals(3, entities.size()); assertEquals("BAR", entities.get(0).getSimpleString()); assertEquals("bar", entities.get(1).getSimpleString()); assertEquals("foo bar", entities.get(2).getSimpleString()); String[] values2 = {"bar"}; query.setParameters(simpleString, values2); entities = query.find(); assertEquals(2, entities.size()); assertEquals("BAR", entities.get(0).getSimpleString()); assertEquals("bar", entities.get(1).getSimpleString()); // Case sensitive query = box.query().in(simpleString, values, StringOrder.CASE_SENSITIVE).order(simpleString).build(); entities = query.find(); assertEquals(2, entities.size()); assertEquals("bar", entities.get(0).getSimpleString()); assertEquals("foo bar", entities.get(1).getSimpleString()); }