6
6
7
7
public class AggregatePipeOperator extends PipeOperator {
8
8
private final ArrayList <SelectItem <?>> selectItems = new ArrayList <>();
9
+ private final ArrayList <String > selectItemsOrderSuffices = new ArrayList <>();
10
+
9
11
private final ArrayList <SelectItem <?>> groupItems = new ArrayList <>();
12
+ private final ArrayList <String > groupItemsOrderSuffices = new ArrayList <>();
10
13
private boolean usingShortHandOrdering = false ;
11
14
12
- public AggregatePipeOperator (SelectItem <?> selectItem ) {
15
+ public AggregatePipeOperator (SelectItem <?> selectItem , String orderSuffix ) {
13
16
selectItems .add (selectItem );
17
+ selectItemsOrderSuffices .add (orderSuffix );
14
18
}
15
19
16
20
public ArrayList <SelectItem <?>> getSelectItems () {
@@ -21,22 +25,31 @@ public ArrayList<SelectItem<?>> getGroupItems() {
21
25
return groupItems ;
22
26
}
23
27
24
- public AggregatePipeOperator add (SelectItem <?> selectItem ) {
28
+ public ArrayList <String > getSelectItemsOrderSuffices () {
29
+ return selectItemsOrderSuffices ;
30
+ }
31
+
32
+ public ArrayList <String > getGroupItemsOrderSuffices () {
33
+ return groupItemsOrderSuffices ;
34
+ }
35
+
36
+ public AggregatePipeOperator add (SelectItem <?> selectItem , String orderSuffix ) {
25
37
selectItems .add (selectItem );
26
38
return this ;
27
39
}
28
40
29
- public AggregatePipeOperator with (SelectItem <?> selectItem ) {
30
- return this .add (selectItem );
41
+ public AggregatePipeOperator with (SelectItem <?> selectItem , String orderSuffix ) {
42
+ return this .add (selectItem , orderSuffix );
31
43
}
32
44
33
- public AggregatePipeOperator addGroupItem (SelectItem <?> selectItem ) {
45
+ public AggregatePipeOperator addGroupItem (SelectItem <?> selectItem , String orderSuffix ) {
34
46
groupItems .add (selectItem );
47
+ groupItemsOrderSuffices .add (orderSuffix );
35
48
return this ;
36
49
}
37
50
38
- public AggregatePipeOperator withGroupItem (SelectItem <?> selectItem ) {
39
- return this .addGroupItem (selectItem );
51
+ public AggregatePipeOperator withGroupItem (SelectItem <?> selectItem , String orderSuffix ) {
52
+ return this .addGroupItem (selectItem , orderSuffix );
40
53
}
41
54
42
55
public boolean isUsingShortHandOrdering () {
@@ -58,7 +71,12 @@ public StringBuilder appendTo(StringBuilder builder) {
58
71
builder .append ("|> " ).append ("AGGREGATE" );
59
72
int i = 0 ;
60
73
for (SelectItem <?> selectItem : selectItems ) {
61
- builder .append (i ++ > 0 ? ", " : " " ).append (selectItem );
74
+ builder .append (i > 0 ? ", " : " " ).append (selectItem );
75
+ if (i < selectItemsOrderSuffices .size () && selectItemsOrderSuffices .get (i ) != null
76
+ && !selectItemsOrderSuffices .get (i ).isEmpty ()) {
77
+ builder .append (" " ).append (selectItemsOrderSuffices .get (i ));
78
+ }
79
+ i ++;
62
80
}
63
81
builder .append ("\n " );
64
82
@@ -70,7 +88,12 @@ public StringBuilder appendTo(StringBuilder builder) {
70
88
builder .append (" BY" );
71
89
i = 0 ;
72
90
for (SelectItem <?> selectItem : groupItems ) {
73
- builder .append (i ++ > 0 ? ", " : " " ).append (selectItem );
91
+ builder .append (i > 0 ? ", " : " " ).append (selectItem );
92
+ if (i < groupItemsOrderSuffices .size () && groupItemsOrderSuffices .get (i ) != null
93
+ && !groupItemsOrderSuffices .get (i ).isEmpty ()) {
94
+ builder .append (" " ).append (groupItemsOrderSuffices .get (i ));
95
+ }
96
+ i ++;
74
97
}
75
98
builder .append ("\n " );
76
99
}
0 commit comments