DATAJDBC-518 - Allows the combination for CriteriaDefinition.
Original pull request: #205.
This commit is contained in:
committed by
Mark Paluch
parent
2b6f7b2b48
commit
8df5037061
@@ -51,6 +51,7 @@ import org.springframework.util.Assert;
|
||||
* @author Mark Paluch
|
||||
* @author Oliver Drotbohm
|
||||
* @author Roman Chigvintsev
|
||||
* @author Jens Schauder
|
||||
* @since 2.0
|
||||
*/
|
||||
public class Criteria implements CriteriaDefinition {
|
||||
@@ -59,7 +60,7 @@ public class Criteria implements CriteriaDefinition {
|
||||
|
||||
private final @Nullable Criteria previous;
|
||||
private final Combinator combinator;
|
||||
private final List<Criteria> group;
|
||||
private final List<CriteriaDefinition> group;
|
||||
|
||||
private final @Nullable SqlIdentifier column;
|
||||
private final @Nullable Comparator comparator;
|
||||
@@ -70,12 +71,12 @@ public class Criteria implements CriteriaDefinition {
|
||||
this(null, Combinator.INITIAL, Collections.emptyList(), column, comparator, value, false);
|
||||
}
|
||||
|
||||
private Criteria(@Nullable Criteria previous, Combinator combinator, List<Criteria> group,
|
||||
private Criteria(@Nullable Criteria previous, Combinator combinator, List<CriteriaDefinition> group,
|
||||
@Nullable SqlIdentifier column, @Nullable Comparator comparator, @Nullable Object value) {
|
||||
this(previous, combinator, group, column, comparator, value, false);
|
||||
}
|
||||
|
||||
private Criteria(@Nullable Criteria previous, Combinator combinator, List<Criteria> group,
|
||||
private Criteria(@Nullable Criteria previous, Combinator combinator, List<CriteriaDefinition> group,
|
||||
@Nullable SqlIdentifier column, @Nullable Comparator comparator, @Nullable Object value, boolean ignoreCase) {
|
||||
|
||||
this.previous = previous;
|
||||
@@ -87,7 +88,7 @@ public class Criteria implements CriteriaDefinition {
|
||||
this.ignoreCase = ignoreCase;
|
||||
}
|
||||
|
||||
private Criteria(@Nullable Criteria previous, Combinator combinator, List<Criteria> group) {
|
||||
private Criteria(@Nullable Criteria previous, Combinator combinator, List<CriteriaDefinition> group) {
|
||||
|
||||
this.previous = previous;
|
||||
this.combinator = previous != null && previous.isEmpty() ? Combinator.INITIAL : combinator;
|
||||
@@ -112,7 +113,7 @@ public class Criteria implements CriteriaDefinition {
|
||||
*
|
||||
* @return new {@link Criteria}.
|
||||
*/
|
||||
public static Criteria from(Criteria... criteria) {
|
||||
public static CriteriaDefinition from(CriteriaDefinition... criteria) {
|
||||
|
||||
Assert.notNull(criteria, "Criteria must not be null");
|
||||
Assert.noNullElements(criteria, "Criteria must not contain null elements");
|
||||
@@ -125,7 +126,7 @@ public class Criteria implements CriteriaDefinition {
|
||||
*
|
||||
* @return new {@link Criteria}.
|
||||
*/
|
||||
public static Criteria from(List<Criteria> criteria) {
|
||||
public static CriteriaDefinition from(List<CriteriaDefinition> criteria) {
|
||||
|
||||
Assert.notNull(criteria, "Criteria must not be null");
|
||||
Assert.noNullElements(criteria, "Criteria must not contain null elements");
|
||||
@@ -180,7 +181,7 @@ public class Criteria implements CriteriaDefinition {
|
||||
* @return a new {@link Criteria} object.
|
||||
* @since 1.1
|
||||
*/
|
||||
public Criteria and(Criteria criteria) {
|
||||
public Criteria and(CriteriaDefinition criteria) {
|
||||
|
||||
Assert.notNull(criteria, "Criteria must not be null!");
|
||||
|
||||
@@ -192,9 +193,8 @@ public class Criteria implements CriteriaDefinition {
|
||||
*
|
||||
* @param criteria criteria objects.
|
||||
* @return a new {@link Criteria} object.
|
||||
* @since 1.1
|
||||
*/
|
||||
public Criteria and(List<Criteria> criteria) {
|
||||
public Criteria and(List<CriteriaDefinition> criteria) {
|
||||
|
||||
Assert.notNull(criteria, "Criteria must not be null!");
|
||||
|
||||
@@ -227,7 +227,7 @@ public class Criteria implements CriteriaDefinition {
|
||||
* @return a new {@link Criteria} object.
|
||||
* @since 1.1
|
||||
*/
|
||||
public Criteria or(Criteria criteria) {
|
||||
public Criteria or(CriteriaDefinition criteria) {
|
||||
|
||||
Assert.notNull(criteria, "Criteria must not be null!");
|
||||
|
||||
@@ -241,7 +241,7 @@ public class Criteria implements CriteriaDefinition {
|
||||
* @return a new {@link Criteria} object.
|
||||
* @since 1.1
|
||||
*/
|
||||
public Criteria or(List<Criteria> criteria) {
|
||||
public Criteria or(List<CriteriaDefinition> criteria) {
|
||||
|
||||
Assert.notNull(criteria, "Criteria must not be null!");
|
||||
|
||||
@@ -312,7 +312,7 @@ public class Criteria implements CriteriaDefinition {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (Criteria criteria : group) {
|
||||
for (CriteriaDefinition criteria : group) {
|
||||
|
||||
if (!criteria.isEmpty()) {
|
||||
return false;
|
||||
@@ -336,7 +336,7 @@ public class Criteria implements CriteriaDefinition {
|
||||
return combinator;
|
||||
}
|
||||
|
||||
public List<Criteria> getGroup() {
|
||||
public List<CriteriaDefinition> getGroup() {
|
||||
return group;
|
||||
}
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ import org.springframework.util.Assert;
|
||||
* represent a group of nested criteria objects.
|
||||
*
|
||||
* @author Mark Paluch
|
||||
* @author Jens Schauder
|
||||
* @since 2.0
|
||||
*/
|
||||
public interface CriteriaDefinition {
|
||||
@@ -45,7 +46,7 @@ public interface CriteriaDefinition {
|
||||
*
|
||||
* @return new {@link Criteria}.
|
||||
*/
|
||||
static CriteriaDefinition from(Criteria... criteria) {
|
||||
static CriteriaDefinition from(CriteriaDefinition... criteria) {
|
||||
|
||||
Assert.notNull(criteria, "Criteria must not be null");
|
||||
Assert.noNullElements(criteria, "Criteria must not contain null elements");
|
||||
@@ -59,7 +60,7 @@ public interface CriteriaDefinition {
|
||||
* @return new {@link Criteria}.
|
||||
* @since 1.1
|
||||
*/
|
||||
static CriteriaDefinition from(List<Criteria> criteria) {
|
||||
static CriteriaDefinition from(List<CriteriaDefinition> criteria) {
|
||||
|
||||
Assert.notNull(criteria, "Criteria must not be null");
|
||||
Assert.noNullElements(criteria, "Criteria must not contain null elements");
|
||||
@@ -80,7 +81,7 @@ public interface CriteriaDefinition {
|
||||
*/
|
||||
boolean isGroup();
|
||||
|
||||
List<? extends CriteriaDefinition> getGroup();
|
||||
List<CriteriaDefinition> getGroup();
|
||||
|
||||
/**
|
||||
* @return the column/property name.
|
||||
|
||||
@@ -39,7 +39,7 @@ public class CriteriaUnitTests {
|
||||
|
||||
Criteria nested1 = where("foo").isNotNull();
|
||||
Criteria nested2 = where("foo").isNull();
|
||||
Criteria criteria = Criteria.from(nested1, nested2);
|
||||
CriteriaDefinition criteria = Criteria.from(nested1, nested2);
|
||||
|
||||
assertThat(criteria.isGroup()).isTrue();
|
||||
assertThat(criteria.getGroup()).containsExactly(nested1, nested2);
|
||||
@@ -51,7 +51,7 @@ public class CriteriaUnitTests {
|
||||
public void fromCriteriaOptimized() {
|
||||
|
||||
Criteria nested = where("foo").is("bar").and("baz").isNotNull();
|
||||
Criteria criteria = Criteria.from(nested);
|
||||
CriteriaDefinition criteria = Criteria.from(nested);
|
||||
|
||||
assertThat(criteria).isSameAs(nested).hasToString("foo = 'bar' AND baz IS NOT NULL");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user