Skip to content

Commit ce45fbc

Browse files
committed
order by clause improved nulls first last
1 parent 06bbda8 commit ce45fbc

File tree

4 files changed

+1728
-1652
lines changed

4 files changed

+1728
-1652
lines changed

src/main/java/net/sf/jsqlparser/statement/select/OrderByElement.java

Lines changed: 45 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -28,31 +28,55 @@
2828
*/
2929
public class OrderByElement {
3030

31-
private Expression expression;
32-
private boolean asc = true;
31+
public enum NullOrdering {
3332

34-
public boolean isAsc() {
35-
return asc;
36-
}
33+
NULLS_FIRST,
34+
NULLS_LAST
35+
}
3736

38-
public void setAsc(boolean b) {
39-
asc = b;
40-
}
37+
private Expression expression;
38+
private boolean asc = true;
39+
private NullOrdering nullOrdering;
4140

42-
public void accept(OrderByVisitor orderByVisitor) {
43-
orderByVisitor.visit(this);
44-
}
41+
public boolean isAsc() {
42+
return asc;
43+
}
4544

46-
public Expression getExpression() {
47-
return expression;
48-
}
45+
public NullOrdering getNullOrdering() {
46+
return nullOrdering;
47+
}
4948

50-
public void setExpression(Expression expression) {
51-
this.expression = expression;
52-
}
49+
public void setNullOrdering(NullOrdering nullOrdering) {
50+
this.nullOrdering = nullOrdering;
51+
}
5352

54-
@Override
55-
public String toString() {
56-
return "" + expression + ((asc) ? "" : " DESC");
57-
}
53+
public void setAsc(boolean b) {
54+
asc = b;
55+
}
56+
57+
public void accept(OrderByVisitor orderByVisitor) {
58+
orderByVisitor.visit(this);
59+
}
60+
61+
public Expression getExpression() {
62+
return expression;
63+
}
64+
65+
public void setExpression(Expression expression) {
66+
this.expression = expression;
67+
}
68+
69+
@Override
70+
public String toString() {
71+
StringBuilder b = new StringBuilder();
72+
b.append(expression.toString());
73+
if (!asc) {
74+
b.append(" DESC");
75+
}
76+
if (nullOrdering != null) {
77+
b.append(' ');
78+
b.append(nullOrdering == NullOrdering.NULLS_FIRST ? "NULLS FIRST" : "NULLS LAST");
79+
}
80+
return b.toString();
81+
}
5882
}

0 commit comments

Comments
 (0)