@@ -36,6 +36,9 @@ public List<Order> process(List<Order> orderList) {
3636 if (this .process != null )
3737 return this .process .apply (orderList );
3838
39+ if (orderList == null )
40+ orderList = new ArrayList <>();
41+
3942 var sortValues = this .settings .getSortValues ();
4043 if (sortValues != null && !sortValues .isEmpty ()) {
4144
@@ -46,103 +49,48 @@ public int compare(ColumnOrderValue c1, ColumnOrderValue c2) {
4649 }
4750 }).toList ();
4851
49- var firstSortedColumn = sortedColumns .get (0 );
50- var gridColumn = this .grid .getColumns ().values ().stream ()
51- .filter (c -> Objects .equals (c .getName ().toUpperCase (),
52- firstSortedColumn .getColumnName ().toUpperCase ()))
53- .findFirst ();
54- if (gridColumn .isEmpty ())
55- return orderList ;
56-
57- var columnOrderer = gridColumn .get ().getOrderers ().get (0 );
58- var order = columnOrderer .applyOrder (this .grid .getCriteriaBuilder (), this .grid .getRoot (),
59- firstSortedColumn .getDirection ());
60- if (order != null ) {
61- if (orderList == null )
62- orderList = new ArrayList <>();
63- orderList .add (order );
64- }
52+ for (var sortedColumn : sortedColumns ) {
53+
54+ var column = this .grid .getColumns ().values ().stream ()
55+ .filter (r -> Objects .equals (r .getName ().toUpperCase (),
56+ sortedColumn .getColumnName ().toUpperCase ())).findFirst ();
57+ if (column .isEmpty () || column .get ().getOrderers ().isEmpty ())
58+ continue ;
6559
66- for (int i = 1 ; i < gridColumn .get ().getOrderers ().size (); i ++) {
67- var orderer = gridColumn .get ().getOrderers ().get (i );
68- order = orderer .applyOrder (this .grid .getCriteriaBuilder (), this .grid .getRoot (), GridSortDirection .ASCENDING );
69- if (order != null ) {
70- if (orderList == null )
71- orderList = new ArrayList <>();
60+ var order = column .get ().getOrderers ().get (0 ).applyOrder (this .grid .getCriteriaBuilder (),
61+ this .grid .getRoot (), sortedColumn .getDirection ());
62+ if (order != null && orderList .stream ()
63+ .noneMatch (r -> r .getExpression ().equals (order .getExpression ()))) {
7264 orderList .add (order );
7365 }
74- }
75-
76- if (sortedColumns .size () > 1 ) {
77- for (int i = 1 ; i < sortedColumns .size (); i ++) {
78-
79- int finalI = i ;
80- var gridCol = this .grid .getColumns ().values ().stream ()
81- .filter (r -> Objects .equals (r .getName ().toUpperCase (),
82- sortedColumns .get (finalI ).getColumnName ().toUpperCase ())).findFirst ();
83- if (gridCol .isEmpty () || gridCol .get ().getOrderers ().isEmpty ())
84- continue ;
85-
86- order = gridCol .get ().getOrderers ().get (0 ).applyOrder (this .grid .getCriteriaBuilder (),
87- this .grid .getRoot (), sortedColumns .get (finalI ).getDirection ());
88- if (order != null ) {
89- if (orderList == null )
90- orderList = new ArrayList <>();
91- orderList .add (order );
92- }
9366
94- for (int j = 1 ; j < gridCol .get ().getOrderers ().size (); j ++) {
95- var orderer = gridCol .get ().getOrderers ().get (j );
96- order = orderer .applyOrder (this .grid .getCriteriaBuilder (), this .grid .getRoot (),
97- GridSortDirection .ASCENDING );
98- if (order != null ) {
99- if (orderList == null )
100- orderList = new ArrayList <>();
101- orderList .add (order );
102- }
67+ for (var orderer : column .get ().getOrderers ()) {
68+ var order2 = orderer .applyOrder (this .grid .getCriteriaBuilder (), this .grid .getRoot (),
69+ GridSortDirection .ASCENDING );
70+ if (order2 != null && orderList .stream ()
71+ .noneMatch (r -> r .getExpression ().equals (order2 .getExpression ()))) {
72+ orderList .add (order2 );
10373 }
10474 }
10575 }
106-
107- if (this .settings .getColumnName () == null || this .settings .getColumnName ().isEmpty ())
108- return orderList ;
109-
110- //determine gridColumn sortable:
111- gridColumn = this .grid .getColumns ().values ().stream ()
112- .filter (c -> Objects .equals (c .getName ().toUpperCase (),
113- this .settings .getColumnName ().toUpperCase ())).findFirst ();
114- if (gridColumn .isEmpty () || !gridColumn .get ().isSortEnabled ())
115- return orderList ;
116-
117- for (var colOrderer : gridColumn .get ().getOrderers ()) {
118- order = colOrderer .applyOrder (this .grid .getCriteriaBuilder (), this .grid .getRoot (),
119- this .settings .getDirection ());
120- if (order != null ) {
121- if (orderList == null )
122- orderList = new ArrayList <>();
123- orderList .add (order );
124- }
125- }
12676 }
127- else {
128- if (this .settings .getColumnName () == null || this .settings .getColumnName ().isEmpty ())
129- return orderList ;
130-
131- //determine gridColumn sortable:
132- var gridColumn = this .grid .getColumns ().values ().stream ()
133- .filter (c -> Objects .equals (c .getName ().toUpperCase (),
134- this .settings .getColumnName ().toUpperCase ())).findFirst ();
135- if (gridColumn .isEmpty () || !gridColumn .get ().isSortEnabled ())
136- return orderList ;
137-
138- for (var columnOrderer : gridColumn .get ().getOrderers ()) {
139- var order = columnOrderer .applyOrder (this .grid .getCriteriaBuilder (), this .grid .getRoot (),
140- this .settings .getDirection ());
141- if (order != null ) {
142- if (orderList == null )
143- orderList = new ArrayList <>();
144- orderList .add (order );
145- }
77+
78+ if (this .settings .getColumnName () == null || this .settings .getColumnName ().isEmpty ())
79+ return orderList ;
80+
81+ //determine gridColumn sortable:
82+ var column = this .grid .getColumns ().values ().stream ()
83+ .filter (c -> Objects .equals (c .getName ().toUpperCase (),
84+ this .settings .getColumnName ().toUpperCase ())).findFirst ();
85+ if (column .isEmpty () || !column .get ().isSortEnabled ())
86+ return orderList ;
87+
88+ for (var colOrderer : column .get ().getOrderers ()) {
89+ var order = colOrderer .applyOrder (this .grid .getCriteriaBuilder (), this .grid .getRoot (),
90+ this .settings .getDirection ());
91+ if (order != null && orderList .stream ()
92+ .noneMatch (r -> r .getExpression ().equals (order .getExpression ()))) {
93+ orderList .add (order );
14694 }
14795 }
14896 return orderList ;
0 commit comments