@@ -63,9 +63,6 @@ public void process(Predicate predicate) {
6363
6464 var type = gridColumn .getTargetType ();
6565
66- // java.sql.Date, java.sql.Time and java.sql.Timestamp,
67- // LocalDate, LocalDateTime and ZonedDateTime are not Comparable
68-
6966 if (type == Byte .class || type == BigDecimal .class || type == BigInteger .class ||
7067 type == Integer .class || type == Short .class || type == Double .class ||
7168 type == Long .class || type == Float .class ) {
@@ -82,6 +79,36 @@ public void process(Predicate predicate) {
8279 if (gridColumn .isMinEnabled ())
8380 gridColumn .setMinValue (new Total (getMin (expression , this .grid )));
8481 }
82+ else if (type == java .sql .Time .class ) {
83+ gridColumn .setSumEnabled (false );
84+ gridColumn .setAverageEnabled (false );
85+
86+ if (gridColumn .isMaxEnabled ())
87+ gridColumn .setMaxValue (new Total (getGreatest (expression , this .grid , java .sql .Time .class )));
88+
89+ if (gridColumn .isMinEnabled ())
90+ gridColumn .setMinValue (new Total (getLeast (expression , this .grid , java .sql .Time .class )));
91+ }
92+ else if (type == java .sql .Date .class ) {
93+ gridColumn .setSumEnabled (false );
94+ gridColumn .setAverageEnabled (false );
95+
96+ if (gridColumn .isMaxEnabled ())
97+ gridColumn .setMaxValue (new Total (getGreatest (expression , this .grid , java .sql .Date .class )));
98+
99+ if (gridColumn .isMinEnabled ())
100+ gridColumn .setMinValue (new Total (getLeast (expression , this .grid , java .sql .Date .class )));
101+ }
102+ else if (type == java .sql .Timestamp .class ) {
103+ gridColumn .setSumEnabled (false );
104+ gridColumn .setAverageEnabled (false );
105+
106+ if (gridColumn .isMaxEnabled ())
107+ gridColumn .setMaxValue (new Total (getGreatest (expression , this .grid , java .sql .Timestamp .class )));
108+
109+ if (gridColumn .isMinEnabled ())
110+ gridColumn .setMinValue (new Total (getLeast (expression , this .grid , java .sql .Timestamp .class )));
111+ }
85112 else if (type == Date .class ) {
86113 gridColumn .setSumEnabled (false );
87114 gridColumn .setAverageEnabled (false );
@@ -122,6 +149,26 @@ else if (type == LocalTime.class) {
122149 if (gridColumn .isMinEnabled ())
123150 gridColumn .setMinValue (new Total (getLeast (expression , this .grid , LocalTime .class )));
124151 }
152+ else if (type == LocalDate .class ) {
153+ gridColumn .setSumEnabled (false );
154+ gridColumn .setAverageEnabled (false );
155+
156+ if (gridColumn .isMaxEnabled ())
157+ gridColumn .setMaxValue (new Total (getGreatest (expression , this .grid , LocalDate .class )));
158+
159+ if (gridColumn .isMinEnabled ())
160+ gridColumn .setMinValue (new Total (getLeast (expression , this .grid , LocalDate .class )));
161+ }
162+ else if (type == LocalDateTime .class ) {
163+ gridColumn .setSumEnabled (false );
164+ gridColumn .setAverageEnabled (false );
165+
166+ if (gridColumn .isMaxEnabled ())
167+ gridColumn .setMaxValue (new Total (getGreatest (expression , this .grid , LocalDateTime .class )));
168+
169+ if (gridColumn .isMinEnabled ())
170+ gridColumn .setMinValue (new Total (getLeast (expression , this .grid , LocalDateTime .class )));
171+ }
125172 else if (type == OffsetTime .class ) {
126173 gridColumn .setSumEnabled (false );
127174 gridColumn .setAverageEnabled (false );
@@ -142,6 +189,16 @@ else if (type == OffsetDateTime.class) {
142189 if (gridColumn .isMinEnabled ())
143190 gridColumn .setMinValue (new Total (getLeast (expression , this .grid , OffsetDateTime .class )));
144191 }
192+ else if (type == ZonedDateTime .class ) {
193+ gridColumn .setSumEnabled (false );
194+ gridColumn .setAverageEnabled (false );
195+
196+ if (gridColumn .isMaxEnabled ())
197+ gridColumn .setMaxValue (new Total (getGreatest (expression , this .grid , ZonedDateTime .class )));
198+
199+ if (gridColumn .isMinEnabled ())
200+ gridColumn .setMinValue (new Total (getLeast (expression , this .grid , ZonedDateTime .class )));
201+ }
145202 else if (type == String .class ) {
146203 gridColumn .setSumEnabled (false );
147204 gridColumn .setAverageEnabled (false );
@@ -284,7 +341,7 @@ private Number getMin(String expression, IGrid<T> grid) {
284341 return grid .getEntityManager ().createQuery (totalQuery ).getSingleResult ();
285342 }
286343
287- private <TData extends Comparable <TData >> TData getGreatest (String expression , IGrid <T > grid , Class <TData > type ) {
344+ private <TData extends Comparable <? super TData >> TData getGreatest (String expression , IGrid <T > grid , Class <TData > type ) {
288345
289346 var gridQuery = (SqmSelectStatement ) grid .getCriteriaQuery ();
290347 var gridQuerySpec = gridQuery .getQuerySpec ();
@@ -305,7 +362,7 @@ private <TData extends Comparable<TData>> TData getGreatest(String expression, I
305362 return grid .getEntityManager ().createQuery (totalQuery ).getSingleResult ();
306363 }
307364
308- private <TData extends Comparable <TData >> TData getLeast (String expression , IGrid <T > grid , Class <TData > type ) {
365+ private <TData extends Comparable <? super TData >> TData getLeast (String expression , IGrid <T > grid , Class <TData > type ) {
309366
310367 var gridQuery = (SqmSelectStatement ) grid .getCriteriaQuery ();
311368 var gridQuerySpec = gridQuery .getQuerySpec ();
0 commit comments