Setters.java
package org.itsallcode.jdbc.dialect;
import java.sql.PreparedStatement;
import java.time.*;
import java.time.format.DateTimeFormatter;
final class Setters {
private Setters() {
}
static <T> ColumnValueSetter<T> generic() {
return PreparedStatement::setObject;
}
static ColumnValueSetter<LocalDate> localDateToString() {
return (final PreparedStatement stmt, final int parameterIndex, final LocalDate date) -> stmt
.setString(parameterIndex, date.toString());
}
static ColumnValueSetter<Instant> instantToString(final DateTimeFormatter dateTimeFormatter,
final ZoneId timeZone) {
return (final PreparedStatement stmt, final int parameterIndex, final Instant instant) -> stmt
.setString(parameterIndex, dateTimeFormatter.format(LocalDateTime.ofInstant(instant, timeZone)));
}
static ColumnValueSetter<LocalDateTime> localDateTimeToString(final DateTimeFormatter dateTimeFormatter) {
return (final PreparedStatement stmt, final int parameterIndex, final LocalDateTime localDateTime) -> stmt
.setString(parameterIndex, dateTimeFormatter.format(localDateTime));
}
}