TSK-634: Extend the TaskQuery with classificationKeyNotIn and stateNotIn
This commit is contained in:
parent
bc317b6c72
commit
0c5d540c56
|
@ -87,6 +87,15 @@ public interface TaskQuery extends BaseQuery<TaskSummary> {
|
|||
*/
|
||||
TaskQuery stateIn(TaskState... states);
|
||||
|
||||
/**
|
||||
* Exclude these states from your query.
|
||||
*
|
||||
* @param states
|
||||
* the states as {@link TaskState}
|
||||
* @return the query
|
||||
*/
|
||||
TaskQuery stateNotIn(TaskState... states);
|
||||
|
||||
/**
|
||||
* Add your classificationKey to your query.
|
||||
*
|
||||
|
@ -96,6 +105,15 @@ public interface TaskQuery extends BaseQuery<TaskSummary> {
|
|||
*/
|
||||
TaskQuery classificationKeyIn(String... classificationKeys);
|
||||
|
||||
/**
|
||||
* Exlude these classificationKeys from your query.
|
||||
*
|
||||
* @param classificationKeys
|
||||
* the classification key
|
||||
* @return the query
|
||||
*/
|
||||
TaskQuery classificationKeyNotIn(String... classificationKeys);
|
||||
|
||||
/**
|
||||
* Add your classificationKey for pattern matching to your query. It will be compared in SQL with the LIKE operator.
|
||||
* You may use a wildcard like % to specify the pattern. If you specify multiple arguments they are combined with
|
||||
|
|
|
@ -55,6 +55,7 @@ public class TaskQueryImpl implements TaskQuery {
|
|||
private String[] classificationIdIn;
|
||||
private String[] classificationKeyIn;
|
||||
private String[] classificationKeyLike;
|
||||
private String[] classificationKeyNotIn;
|
||||
private String[] classificationCategoryIn;
|
||||
private String[] classificationCategoryLike;
|
||||
private String[] ownerIn;
|
||||
|
@ -258,6 +259,12 @@ public class TaskQueryImpl implements TaskQuery {
|
|||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TaskQuery classificationKeyNotIn(String... classificationKeys) {
|
||||
this.classificationKeyNotIn = classificationKeys;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TaskQuery classificationKeyLike(String... classificationKeys) {
|
||||
this.classificationKeyLike = toUpperCopy(classificationKeys);
|
||||
|
@ -396,6 +403,17 @@ public class TaskQueryImpl implements TaskQuery {
|
|||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TaskQuery stateNotIn(TaskState... states) {
|
||||
// No benefit in introducing a new variable
|
||||
List<TaskState> stateIn = Arrays.asList(TaskState.values());
|
||||
for (TaskState state : states) {
|
||||
stateIn.remove(state);
|
||||
}
|
||||
this.stateIn = stateIn.toArray(new TaskState[0]);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TaskQuery customAttributeIn(String number, String... strings) throws InvalidArgumentException {
|
||||
int num = 0;
|
||||
|
@ -1179,6 +1197,10 @@ public class TaskQueryImpl implements TaskQuery {
|
|||
return classificationKeyIn;
|
||||
}
|
||||
|
||||
public String[] getClassificationKeyNotIn() {
|
||||
return classificationKeyNotIn;
|
||||
}
|
||||
|
||||
public String[] getClassificationKeyLike() {
|
||||
return classificationKeyLike;
|
||||
}
|
||||
|
@ -1248,6 +1270,8 @@ public class TaskQueryImpl implements TaskQuery {
|
|||
builder.append(Arrays.toString(classificationIdIn));
|
||||
builder.append(", classificationKeyIn=");
|
||||
builder.append(Arrays.toString(classificationKeyIn));
|
||||
builder.append(", classificationKeyNotIn=");
|
||||
builder.append(Arrays.toString(classificationKeyNotIn));
|
||||
builder.append(", classificationKeyLike=");
|
||||
builder.append(Arrays.toString(classificationKeyLike));
|
||||
builder.append(", classificationCategoryIn=");
|
||||
|
|
|
@ -57,6 +57,7 @@ public interface QueryMapper {
|
|||
+ "<if test='workbasketIdIn != null'>AND WORKBASKET_ID IN(<foreach item='item' collection='workbasketIdIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='workbasketKeyDomainIn != null'>AND (<foreach item='item' collection='workbasketKeyDomainIn' separator=' OR '>(WORKBASKET_KEY = #{item.key} AND DOMAIN = #{item.domain})</foreach>)</if> "
|
||||
+ "<if test='classificationKeyIn != null'>AND CLASSIFICATION_KEY IN(<foreach item='item' collection='classificationKeyIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationKeyNotIn != null'>AND CLASSIFICATION_KEY NOT IN(<foreach item='item' collection='classificationKeyNotIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationKeyLike != null'>AND (<foreach item='item' collection='classificationKeyLike' separator=' OR '>UPPER(CLASSIFICATION_KEY) LIKE #{item}</foreach>)</if> "
|
||||
+ "<if test='classificationIdIn != null'>AND CLASSIFICATION_ID IN(<foreach item='item' collection='classificationIdIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationCategoryIn != null'>AND CLASSIFICATION_CATEGORY IN(<foreach item='item' collection='classificationCategoryIn' separator=',' >#{item}</foreach>)</if> "
|
||||
|
@ -165,6 +166,7 @@ public interface QueryMapper {
|
|||
+ "<if test='workbasketIdIn != null'>AND t.WORKBASKET_ID IN(<foreach item='item' collection='workbasketIdIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='workbasketKeyDomainIn != null'>AND (<foreach item='item' collection='workbasketKeyDomainIn' separator=' OR '>(t.WORKBASKET_KEY = #{item.key} AND t.DOMAIN = #{item.domain})</foreach>)</if> "
|
||||
+ "<if test='classificationKeyIn != null'>AND t.CLASSIFICATION_KEY IN(<foreach item='item' collection='classificationKeyIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationKeyNotIn != null'>AND t.CLASSIFICATION_KEY NOT IN(<foreach item='item' collection='classificationKeyNotIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationKeyLike != null'>AND (<foreach item='item' collection='classificationKeyLike' separator=' OR '>UPPER(t.CLASSIFICATION_KEY) LIKE #{item}</foreach>)</if> "
|
||||
+ "<if test='classificationIdIn != null'>AND t.CLASSIFICATION_ID IN(<foreach item='item' collection='classificationIdIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationCategoryIn != null'>AND t.CLASSIFICATION_CATEGORY IN(<foreach item='item' collection='classificationCategoryIn' separator=',' >#{item}</foreach>)</if> "
|
||||
|
@ -517,6 +519,7 @@ public interface QueryMapper {
|
|||
+ "<if test='workbasketIdIn != null'>AND t.WORKBASKET_ID IN(<foreach item='item' collection='workbasketIdIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='workbasketKeyDomainIn != null'>AND (<foreach item='item' collection='workbasketKeyDomainIn' separator=' OR '>(t.WORKBASKET_KEY = #{item.key} AND t.DOMAIN = #{item.domain})</foreach>)</if> "
|
||||
+ "<if test='classificationKeyIn != null'>AND t.CLASSIFICATION_KEY IN(<foreach item='item' collection='classificationKeyIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationKeyNotIn != null'>AND t.CLASSIFICATION_KEY NOT IN(<foreach item='item' collection='classificationKeyNotIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationKeyLike != null'>AND (<foreach item='item' collection='classificationKeyLike' separator=' OR '>UPPER(t.CLASSIFICATION_KEY) LIKE #{item}</foreach>)</if> "
|
||||
+ "<if test='classificationIdIn != null'>AND t.CLASSIFICATION_ID IN(<foreach item='item' collection='classificationIdIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationCategoryIn != null'>AND t.CLASSIFICATION_CATEGORY IN(<foreach item='item' collection='classificationCategoryIn' separator=',' >#{item}</foreach>)</if> "
|
||||
|
@ -611,6 +614,7 @@ public interface QueryMapper {
|
|||
+ "<if test='workbasketIdIn != null'>AND t.WORKBASKET_ID IN(<foreach item='item' collection='workbasketIdIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='workbasketKeyDomainIn != null'>AND (<foreach item='item' collection='workbasketKeyDomainIn' separator=' OR '>(t.WORKBASKET_KEY = #{item.key} AND t.DOMAIN = #{item.domain})</foreach>)</if> "
|
||||
+ "<if test='classificationKeyIn != null'>AND t.CLASSIFICATION_KEY IN(<foreach item='item' collection='classificationKeyIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationKeyNotIn != null'>AND t.CLASSIFICATION_KEY NOT IN(<foreach item='item' collection='classificationKeyNotIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationKeyLike != null'>AND (<foreach item='item' collection='classificationKeyLike' separator=' OR '>UPPER(t.CLASSIFICATION_KEY) LIKE #{item}</foreach>)</if> "
|
||||
+ "<if test='classificationIdIn != null'>AND t.CLASSIFICATION_ID IN(<foreach item='item' collection='classificationIdIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationCategoryIn != null'>AND t.CLASSIFICATION_CATEGORY IN(<foreach item='item' collection='classificationCategoryIn' separator=',' >#{item}</foreach>)</if> "
|
||||
|
@ -844,6 +848,7 @@ public interface QueryMapper {
|
|||
+ "<if test='workbasketIdIn != null'>AND t.WORKBASKET_ID IN(<foreach item='item' collection='workbasketIdIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='workbasketKeyDomainIn != null'>AND (<foreach item='item' collection='workbasketKeyDomainIn' separator=' OR '>(t.WORKBASKET_KEY = #{item.key} AND t.DOMAIN = #{item.domain})</foreach>)</if> "
|
||||
+ "<if test='classificationKeyIn != null'>AND t.CLASSIFICATION_KEY IN(<foreach item='item' collection='classificationKeyIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationKeyNotIn != null'>AND t.CLASSIFICATION_KEY NOT IN(<foreach item='item' collection='classificationKeyNotIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationKeyLike != null'>AND (<foreach item='item' collection='classificationKeyLike' separator=' OR '>UPPER(t.CLASSIFICATION_KEY) LIKE #{item}</foreach>)</if> "
|
||||
+ "<if test='classificationIdIn != null'>AND t.CLASSIFICATION_ID IN(<foreach item='item' collection='classificationIdIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationCategoryIn != null'>AND t.CLASSIFICATION_CATEGORY IN(<foreach item='item' collection='classificationCategoryIn' separator=',' >#{item}</foreach>)</if> "
|
||||
|
|
|
@ -159,6 +159,16 @@ public class QueryTasksAccTest extends AbstractAccTest {
|
|||
.classificationKeyIn(ids)
|
||||
.list();
|
||||
assertThat(result2.size(), equalTo(66));
|
||||
|
||||
List<TaskSummary> result3 = taskService.createTaskQuery()
|
||||
.classificationKeyNotIn("T2100", "T2000")
|
||||
.list();
|
||||
assertThat(result3.size(), equalTo(70));
|
||||
|
||||
List<TaskSummary> result4 = taskService.createTaskQuery()
|
||||
.classificationKeyNotIn("L1050", "L1060", "T2100")
|
||||
.list();
|
||||
assertThat(result4.size(), equalTo(6));
|
||||
}
|
||||
|
||||
@WithAccessId(
|
||||
|
|
Loading…
Reference in New Issue