From e116d3551e414dbaa2d5703504bce00b4abf558f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Mon, 11 Mar 2013 19:35:20 +0200 Subject: [PATCH] #174 Extend OrderSpecifier to support nullsFirst() and nullsLast() --- .../mysema/query/types/OrderSpecifier.java | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/querydsl-core/src/main/java/com/mysema/query/types/OrderSpecifier.java b/querydsl-core/src/main/java/com/mysema/query/types/OrderSpecifier.java index d349169f7..f5e0f9fcc 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/OrderSpecifier.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/OrderSpecifier.java @@ -28,13 +28,22 @@ public class OrderSpecifier implements Serializable { private static final long serialVersionUID = 3427652988262514678L; + public enum NullHandling { Default, NullsFirst, NullsLast } + private final Order order; private final Expression target; + + private final NullHandling nullHandling; - public OrderSpecifier(Order order, Expression target) { + public OrderSpecifier(Order order, Expression target, NullHandling nullhandling) { this.order = order; this.target = target; + this.nullHandling = nullhandling; + } + + public OrderSpecifier(Order order, Expression target) { + this(order, target, NullHandling.Default); } /** @@ -64,6 +73,27 @@ public class OrderSpecifier implements Serializable { return target; } + /** + * @return + */ + public NullHandling getNullHandling() { + return nullHandling; + } + + /** + * @return + */ + public OrderSpecifier nullsFirst() { + return new OrderSpecifier(order, target, NullHandling.NullsFirst); + } + + /** + * @return + */ + public OrderSpecifier nullsLast() { + return new OrderSpecifier(order, target, NullHandling.NullsLast); + } + @Override public String toString() { return target + " " + order; @@ -75,7 +105,8 @@ public class OrderSpecifier implements Serializable { return true; } else if (o instanceof OrderSpecifier) { OrderSpecifier os = (OrderSpecifier)o; - return os.order.equals(order) && os.target.equals(target); + return os.order.equals(order) && os.target.equals(target) + && os.nullHandling.equals(nullHandling); } else { return false; }