Add BETWEEN, NOT_BETWEEN

This commit is contained in:
Darin Kelkhoff
2021-11-30 18:08:41 -06:00
parent cc5bfeeb08
commit ada10f1445
2 changed files with 52 additions and 0 deletions

View File

@ -283,6 +283,18 @@ public class RDBMSQueryAction extends AbstractRDBMSAction implements QueryInterf
expectedNoOfParams = 0; expectedNoOfParams = 0;
break; break;
} }
case BETWEEN:
{
clause += " BETWEEN ? AND ? ";
expectedNoOfParams = 2;
break;
}
case NOT_BETWEEN:
{
clause += " NOT BETWEEN ? AND ? ";
expectedNoOfParams = 2;
break;
}
default: default:
{ {
throw new IllegalArgumentException("Unexpected operator: " + criterion.getOperator()); throw new IllegalArgumentException("Unexpected operator: " + criterion.getOperator());

View File

@ -346,6 +346,46 @@ public class RDBMSQueryActionTest extends RDBMSActionTest
/*******************************************************************************
**
*******************************************************************************/
@Test
public void testBetweenQuery() throws QException
{
QueryRequest queryRequest = initQueryRequest();
queryRequest.setFilter(new QQueryFilter()
.withCriteria(new QFilterCriteria()
.withFieldName("id")
.withOperator(QCriteriaOperator.BETWEEN)
.withValues(List.of(2, 4))
));
QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest);
Assertions.assertEquals(3, queryResult.getRecords().size(), "Expected # of rows");
Assertions.assertTrue(queryResult.getRecords().stream().allMatch(r -> r.getValueInteger("id").equals(2) || r.getValueInteger("id").equals(3) || r.getValueInteger("id").equals(4)), "Should find expected ids");
}
/*******************************************************************************
**
*******************************************************************************/
@Test
public void testNotBetweenQuery() throws QException
{
QueryRequest queryRequest = initQueryRequest();
queryRequest.setFilter(new QQueryFilter()
.withCriteria(new QFilterCriteria()
.withFieldName("id")
.withOperator(QCriteriaOperator.NOT_BETWEEN)
.withValues(List.of(2, 4))
));
QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest);
Assertions.assertEquals(2, queryResult.getRecords().size(), "Expected # of rows");
Assertions.assertTrue(queryResult.getRecords().stream().allMatch(r -> r.getValueInteger("id").equals(1) || r.getValueInteger("id").equals(5)), "Should find expected ids");
}
/******************************************************************************* /*******************************************************************************
** **
*******************************************************************************/ *******************************************************************************/