mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 13:10:44 +00:00
Add cases for merging an IN and IS_NOT_BLANK
This commit is contained in:
@ -34,6 +34,7 @@ import com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter;
|
|||||||
import static com.kingsrook.qqq.backend.core.logging.LogUtils.logPair;
|
import static com.kingsrook.qqq.backend.core.logging.LogUtils.logPair;
|
||||||
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.EQUALS;
|
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.EQUALS;
|
||||||
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.IN;
|
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.IN;
|
||||||
|
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.IS_NOT_BLANK;
|
||||||
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.NOT_EQUALS;
|
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.NOT_EQUALS;
|
||||||
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.NOT_IN;
|
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.NOT_IN;
|
||||||
|
|
||||||
@ -311,6 +312,28 @@ public class QQueryFilterDeduper
|
|||||||
log.add("Merge two not-equals as not-in");
|
log.add("Merge two not-equals as not-in");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
else if(IN.equals(other.getOperator()) && IS_NOT_BLANK.equals(criteria.getOperator()))
|
||||||
|
{
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
// for an IN and IS_NOT_BLANK, remove the IS_NOT_BLANK - it's redundant //
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
iterator.remove();
|
||||||
|
didAnyGood = true;
|
||||||
|
log.add("Removing redundant is-not-blank");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if(IS_NOT_BLANK.equals(other.getOperator()) && IN.equals(criteria.getOperator()))
|
||||||
|
{
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
// for an IN and IS_NOT_BLANK, remove the IS_NOT_BLANK - it's redundant //
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
other.setOperator(IN);
|
||||||
|
other.setValues(new ArrayList<>(criteria.getValues()));
|
||||||
|
iterator.remove();
|
||||||
|
didAnyGood = true;
|
||||||
|
log.add("Removing redundant is-not-blank");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
log.add("Fail because unhandled operator pair");
|
log.add("Fail because unhandled operator pair");
|
||||||
|
@ -29,6 +29,7 @@ import org.junit.jupiter.api.Test;
|
|||||||
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.EQUALS;
|
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.EQUALS;
|
||||||
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.GREATER_THAN;
|
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.GREATER_THAN;
|
||||||
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.IN;
|
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.IN;
|
||||||
|
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.IS_NOT_BLANK;
|
||||||
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.NOT_EQUALS;
|
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.NOT_EQUALS;
|
||||||
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.NOT_IN;
|
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.NOT_IN;
|
||||||
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter.BooleanOperator.OR;
|
import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter.BooleanOperator.OR;
|
||||||
@ -352,4 +353,23 @@ class QQueryFilterDeduperTest extends BaseTest
|
|||||||
assertEquals(contradiction, dedupeFilter(contradiction));
|
assertEquals(contradiction, dedupeFilter(contradiction));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
**
|
||||||
|
*******************************************************************************/
|
||||||
|
@Test
|
||||||
|
void testInAndIsNotBlank()
|
||||||
|
{
|
||||||
|
assertEquals(new QQueryFilter().withCriteria(new QFilterCriteria("f", IN, 1, 2)), dedupeFilter(new QQueryFilter()
|
||||||
|
.withCriteria(new QFilterCriteria("f", IN, 1, 2))
|
||||||
|
.withCriteria(new QFilterCriteria("f", IS_NOT_BLANK))
|
||||||
|
));
|
||||||
|
|
||||||
|
assertEquals(new QQueryFilter().withCriteria(new QFilterCriteria("f", IN, 1, 2)), dedupeFilter(new QQueryFilter()
|
||||||
|
.withCriteria(new QFilterCriteria("f", IS_NOT_BLANK))
|
||||||
|
.withCriteria(new QFilterCriteria("f", IN, 1, 2))
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Reference in New Issue
Block a user