Skip to content

Commit 0dedc62

Browse files
committed
clean up JdbcXxxxJavaTypes
1 parent 2e4c2ff commit 0dedc62

File tree

3 files changed

+31
-61
lines changed

3 files changed

+31
-61
lines changed

hibernate-core/src/main/java/org/hibernate/type/descriptor/java/JdbcDateJavaType.java

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import java.util.GregorianCalendar;
2020

2121
import org.hibernate.HibernateException;
22-
import org.hibernate.internal.util.CharSequenceHelper;
2322
import org.hibernate.sql.ast.spi.SqlAppender;
2423
import org.hibernate.type.descriptor.WrapperOptions;
2524
import org.hibernate.type.descriptor.jdbc.JdbcType;
@@ -28,6 +27,8 @@
2827

2928
import jakarta.persistence.TemporalType;
3029

30+
import static org.hibernate.internal.util.CharSequenceHelper.subSequence;
31+
3132
/**
3233
* Descriptor for {@link java.sql.Date} handling.
3334
*
@@ -39,15 +40,13 @@
3940
public class JdbcDateJavaType extends AbstractTemporalJavaType<Date> {
4041
public static final JdbcDateJavaType INSTANCE = new JdbcDateJavaType();
4142

42-
public static final String DATE_FORMAT = "dd MMMM yyyy";
43-
4443
/**
4544
* Intended for use in reading HQL literals and writing SQL literals
4645
*
47-
* @see #DATE_FORMAT
46+
* @see DateTimeFormatter#ISO_LOCAL_DATE
4847
*/
49-
@SuppressWarnings("unused")
5048
public static final DateTimeFormatter LITERAL_FORMATTER = DateTimeFormatter.ISO_LOCAL_DATE;
49+
5150
private static final DateTimeFormatter ENCODED_FORMATTER = new DateTimeFormatterBuilder()
5251
.append( DateTimeFormatter.ISO_DATE )
5352
.optionalStart()
@@ -68,7 +67,7 @@ public TemporalType getPrecision() {
6867
public boolean isInstance(Object value) {
6968
// this check holds true for java.sql.Date as well
7069
return value instanceof Date
71-
&& !( value instanceof java.sql.Time );
70+
&& !( value instanceof java.sql.Time );
7271
}
7372

7473
@Override
@@ -91,8 +90,8 @@ public boolean areEqual(Date one, Date another) {
9190
calendar2.setTime( another );
9291

9392
return calendar1.get( Calendar.MONTH ) == calendar2.get( Calendar.MONTH )
94-
&& calendar1.get( Calendar.DAY_OF_MONTH ) == calendar2.get( Calendar.DAY_OF_MONTH )
95-
&& calendar1.get( Calendar.YEAR ) == calendar2.get( Calendar.YEAR );
93+
&& calendar1.get( Calendar.DAY_OF_MONTH ) == calendar2.get( Calendar.DAY_OF_MONTH )
94+
&& calendar1.get( Calendar.YEAR ) == calendar2.get( Calendar.YEAR );
9695
}
9796

9897
@Override
@@ -156,16 +155,15 @@ public Object unwrap(Date value, Class type, WrapperOptions options) {
156155
}
157156

158157
private LocalDate unwrapLocalDate(Date value) {
159-
return value instanceof java.sql.Date
160-
? ( (java.sql.Date) value ).toLocalDate()
158+
return value instanceof java.sql.Date date
159+
? date.toLocalDate()
161160
: new java.sql.Date( unwrapDateEpoch( value ) ).toLocalDate();
162161
}
163162

164163
private java.sql.Date unwrapSqlDate(Date value) {
165-
if ( value instanceof java.sql.Date ) {
166-
final java.sql.Date sqlDate = (java.sql.Date) value;
167-
final long dateEpoch = toDateEpoch( sqlDate.getTime() );
168-
return dateEpoch == sqlDate.getTime() ? sqlDate : new java.sql.Date( dateEpoch );
164+
if ( value instanceof java.sql.Date date ) {
165+
final long dateEpoch = toDateEpoch( date.getTime() );
166+
return dateEpoch == date.getTime() ? date : new java.sql.Date( dateEpoch );
169167
}
170168
return new java.sql.Date( unwrapDateEpoch( value ) );
171169

@@ -238,13 +236,7 @@ public Date fromString(CharSequence string) {
238236
@Override
239237
public Date fromEncodedString(CharSequence charSequence, int start, int end) {
240238
try {
241-
final TemporalAccessor accessor = ENCODED_FORMATTER.parse(
242-
CharSequenceHelper.subSequence(
243-
charSequence,
244-
start,
245-
end
246-
)
247-
);
239+
final TemporalAccessor accessor = ENCODED_FORMATTER.parse( subSequence( charSequence, start, end ) );
248240
return java.sql.Date.valueOf( accessor.query( LocalDate::from ) );
249241
}
250242
catch ( DateTimeParseException pe) {

hibernate-core/src/main/java/org/hibernate/type/descriptor/java/JdbcTimeJavaType.java

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
import org.hibernate.HibernateException;
2323
import org.hibernate.dialect.Dialect;
24-
import org.hibernate.internal.util.CharSequenceHelper;
2524
import org.hibernate.sql.ast.spi.SqlAppender;
2625
import org.hibernate.type.descriptor.DateTimeUtils;
2726
import org.hibernate.type.descriptor.WrapperOptions;
@@ -31,6 +30,8 @@
3130

3231
import jakarta.persistence.TemporalType;
3332

33+
import static org.hibernate.internal.util.CharSequenceHelper.subSequence;
34+
3435
/**
3536
* Descriptor for {@link Time} handling.
3637
*
@@ -42,19 +43,8 @@
4243
public class JdbcTimeJavaType extends AbstractTemporalJavaType<Date> {
4344
public static final JdbcTimeJavaType INSTANCE = new JdbcTimeJavaType();
4445

45-
public static final String TIME_FORMAT = "HH:mm:ss.SSS";
46-
4746
public static final DateTimeFormatter LITERAL_FORMATTER = DateTimeFormatter.ISO_LOCAL_TIME;
4847

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;
5848
private static final DateTimeFormatter ENCODED_FORMATTER = new DateTimeFormatterBuilder()
5949
.optionalStart()
6050
.append( DateTimeFormatter.ISO_DATE )
@@ -63,6 +53,7 @@ public class JdbcTimeJavaType extends AbstractTemporalJavaType<Date> {
6353
.append( DateTimeFormatter.ISO_LOCAL_TIME )
6454
.toFormatter();
6555

56+
6657
public JdbcTimeJavaType() {
6758
super( Time.class, TimeMutabilityPlan.INSTANCE );
6859
}
@@ -76,7 +67,7 @@ public TemporalType getPrecision() {
7667
public boolean isInstance(Object value) {
7768
// this check holds true for java.sql.Time as well
7869
return value instanceof Date
79-
&& !( value instanceof java.sql.Date );
70+
&& !( value instanceof java.sql.Date );
8071
}
8172

8273
@Override
@@ -111,9 +102,9 @@ public boolean areEqual(Date one, Date another) {
111102
calendar2.setTime( another );
112103

113104
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 );
117108
}
118109

119110
@Override
@@ -217,8 +208,8 @@ public Date wrap(Object value, WrapperOptions options) {
217208

218209
@Override
219210
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() );
222213
}
223214
else {
224215
return LITERAL_FORMATTER.format( LocalTime.ofInstant( value.toInstant(), ZoneOffset.systemDefault() ) );
@@ -242,13 +233,7 @@ public Date fromString(CharSequence string) {
242233
@Override
243234
public Date fromEncodedString(CharSequence charSequence, int start, int end) {
244235
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 ) );
252237
return java.sql.Time.valueOf( accessor.query( LocalTime::from ) );
253238
}
254239
catch ( DateTimeParseException pe) {
@@ -258,8 +243,8 @@ public Date fromEncodedString(CharSequence charSequence, int start, int end) {
258243

259244
@Override
260245
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 );
263248
}
264249
else {
265250
LITERAL_FORMATTER.formatTo( LocalTime.ofInstant( value.toInstant(), ZoneOffset.systemDefault() ), sb );

hibernate-core/src/main/java/org/hibernate/type/descriptor/java/JdbcTimestampJavaType.java

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,15 @@
2525
import org.hibernate.HibernateException;
2626
import org.hibernate.dialect.Dialect;
2727
import org.hibernate.engine.spi.SharedSessionContractImplementor;
28-
import org.hibernate.internal.util.CharSequenceHelper;
2928
import org.hibernate.sql.ast.spi.SqlAppender;
3029
import org.hibernate.type.descriptor.DateTimeUtils;
3130
import org.hibernate.type.descriptor.WrapperOptions;
3231
import org.hibernate.type.descriptor.jdbc.JdbcType;
3332
import org.hibernate.type.descriptor.jdbc.JdbcTypeIndicators;
3433
import org.hibernate.type.spi.TypeConfiguration;
3534

35+
import static org.hibernate.internal.util.CharSequenceHelper.subSequence;
36+
3637
/**
3738
* Descriptor for {@link Timestamp} handling.
3839
*
@@ -51,7 +52,6 @@ public class JdbcTimestampJavaType extends AbstractTemporalJavaType<Date> implem
5152
*
5253
* @see #TIMESTAMP_FORMAT
5354
*/
54-
@SuppressWarnings("unused")
5555
public static final DateTimeFormatter LITERAL_FORMATTER = DateTimeFormatter.ofPattern( TIMESTAMP_FORMAT )
5656
.withZone( ZoneId.from( ZoneOffset.UTC ) );
5757

@@ -231,13 +231,7 @@ public void appendEncodedString(SqlAppender sb, Date value) {
231231
@Override
232232
public Date fromEncodedString(CharSequence charSequence, int start, int end) {
233233
try {
234-
final TemporalAccessor accessor = DateTimeUtils.DATE_TIME.parse(
235-
CharSequenceHelper.subSequence(
236-
charSequence,
237-
start,
238-
end
239-
)
240-
);
234+
final TemporalAccessor accessor = DateTimeUtils.DATE_TIME.parse( subSequence( charSequence, start, end ) );
241235
final Timestamp timestamp;
242236
if ( accessor.isSupported( ChronoField.INSTANT_SECONDS ) ) {
243237
timestamp = new Timestamp( accessor.getLong( ChronoField.INSTANT_SECONDS ) * 1000L );
@@ -297,11 +291,10 @@ public static class TimestampMutabilityPlan extends MutableMutabilityPlan<Date>
297291
public static final TimestampMutabilityPlan INSTANCE = new TimestampMutabilityPlan();
298292
@Override
299293
public Date deepCopyNotNull(Date value) {
300-
if ( value instanceof Timestamp ) {
294+
if ( value instanceof Timestamp timestamp ) {
301295
// make sure to get the nanos
302-
final Timestamp orig = (Timestamp) value;
303-
final Timestamp copy = new Timestamp( orig.getTime() );
304-
copy.setNanos( orig.getNanos() );
296+
final Timestamp copy = new Timestamp( timestamp.getTime() );
297+
copy.setNanos( timestamp.getNanos() );
305298
return copy;
306299
}
307300
else {

0 commit comments

Comments
 (0)