21
21
22
22
import org .hibernate .HibernateException ;
23
23
import org .hibernate .dialect .Dialect ;
24
- import org .hibernate .internal .util .CharSequenceHelper ;
25
24
import org .hibernate .sql .ast .spi .SqlAppender ;
26
25
import org .hibernate .type .descriptor .DateTimeUtils ;
27
26
import org .hibernate .type .descriptor .WrapperOptions ;
31
30
32
31
import jakarta .persistence .TemporalType ;
33
32
33
+ import static org .hibernate .internal .util .CharSequenceHelper .subSequence ;
34
+
34
35
/**
35
36
* Descriptor for {@link Time} handling.
36
37
*
42
43
public class JdbcTimeJavaType extends AbstractTemporalJavaType <Date > {
43
44
public static final JdbcTimeJavaType INSTANCE = new JdbcTimeJavaType ();
44
45
45
- public static final String TIME_FORMAT = "HH:mm:ss.SSS" ;
46
-
47
46
public static final DateTimeFormatter LITERAL_FORMATTER = DateTimeFormatter .ISO_LOCAL_TIME ;
48
47
49
- /**
50
- * Alias for {@link DateTimeFormatter#ISO_LOCAL_TIME}.
51
- *
52
- * Intended for use with logging
53
- *
54
- * @see #LITERAL_FORMATTER
55
- */
56
- @ SuppressWarnings ("unused" )
57
- public static final DateTimeFormatter LOGGABLE_FORMATTER = DateTimeFormatter .ISO_LOCAL_TIME ;
58
48
private static final DateTimeFormatter ENCODED_FORMATTER = new DateTimeFormatterBuilder ()
59
49
.optionalStart ()
60
50
.append ( DateTimeFormatter .ISO_DATE )
@@ -63,6 +53,7 @@ public class JdbcTimeJavaType extends AbstractTemporalJavaType<Date> {
63
53
.append ( DateTimeFormatter .ISO_LOCAL_TIME )
64
54
.toFormatter ();
65
55
56
+
66
57
public JdbcTimeJavaType () {
67
58
super ( Time .class , TimeMutabilityPlan .INSTANCE );
68
59
}
@@ -76,7 +67,7 @@ public TemporalType getPrecision() {
76
67
public boolean isInstance (Object value ) {
77
68
// this check holds true for java.sql.Time as well
78
69
return value instanceof Date
79
- && !( value instanceof java .sql .Date );
70
+ && !( value instanceof java .sql .Date );
80
71
}
81
72
82
73
@ Override
@@ -111,9 +102,9 @@ public boolean areEqual(Date one, Date another) {
111
102
calendar2 .setTime ( another );
112
103
113
104
return calendar1 .get ( Calendar .HOUR_OF_DAY ) == calendar2 .get ( Calendar .HOUR_OF_DAY )
114
- && calendar1 .get ( Calendar .MINUTE ) == calendar2 .get ( Calendar .MINUTE )
115
- && calendar1 .get ( Calendar .SECOND ) == calendar2 .get ( Calendar .SECOND )
116
- && calendar1 .get ( Calendar .MILLISECOND ) == calendar2 .get ( Calendar .MILLISECOND );
105
+ && calendar1 .get ( Calendar .MINUTE ) == calendar2 .get ( Calendar .MINUTE )
106
+ && calendar1 .get ( Calendar .SECOND ) == calendar2 .get ( Calendar .SECOND )
107
+ && calendar1 .get ( Calendar .MILLISECOND ) == calendar2 .get ( Calendar .MILLISECOND );
117
108
}
118
109
119
110
@ Override
@@ -217,8 +208,8 @@ public Date wrap(Object value, WrapperOptions options) {
217
208
218
209
@ Override
219
210
public String toString (Date value ) {
220
- if ( value instanceof java .sql .Time ) {
221
- return LITERAL_FORMATTER .format ( ( ( java . sql . Time ) value ) .toLocalTime () );
211
+ if ( value instanceof java .sql .Time time ) {
212
+ return LITERAL_FORMATTER .format ( time .toLocalTime () );
222
213
}
223
214
else {
224
215
return LITERAL_FORMATTER .format ( LocalTime .ofInstant ( value .toInstant (), ZoneOffset .systemDefault () ) );
@@ -242,13 +233,7 @@ public Date fromString(CharSequence string) {
242
233
@ Override
243
234
public Date fromEncodedString (CharSequence charSequence , int start , int end ) {
244
235
try {
245
- final TemporalAccessor accessor = ENCODED_FORMATTER .parse (
246
- CharSequenceHelper .subSequence (
247
- charSequence ,
248
- start ,
249
- end
250
- )
251
- );
236
+ final TemporalAccessor accessor = ENCODED_FORMATTER .parse ( subSequence ( charSequence , start , end ) );
252
237
return java .sql .Time .valueOf ( accessor .query ( LocalTime ::from ) );
253
238
}
254
239
catch ( DateTimeParseException pe ) {
@@ -258,8 +243,8 @@ public Date fromEncodedString(CharSequence charSequence, int start, int end) {
258
243
259
244
@ Override
260
245
public void appendEncodedString (SqlAppender sb , Date value ) {
261
- if ( value instanceof java .sql .Time ) {
262
- LITERAL_FORMATTER .formatTo ( ( ( java . sql . Time ) value ) .toLocalTime (), sb );
246
+ if ( value instanceof java .sql .Time time ) {
247
+ LITERAL_FORMATTER .formatTo ( time .toLocalTime (), sb );
263
248
}
264
249
else {
265
250
LITERAL_FORMATTER .formatTo ( LocalTime .ofInstant ( value .toInstant (), ZoneOffset .systemDefault () ), sb );
0 commit comments