package jnpf.dmsDatabase;
|
|
import org.apache.ibatis.type.BaseTypeHandler;
|
import org.apache.ibatis.type.JdbcType;
|
import org.apache.ibatis.type.MappedJdbcTypes;
|
import org.apache.ibatis.type.MappedTypes;
|
|
import java.sql.CallableStatement;
|
import java.sql.PreparedStatement;
|
import java.sql.ResultSet;
|
import java.sql.SQLException;
|
import java.sql.Types;
|
import java.util.UUID;
|
|
@MappedTypes(UUID.class)
|
@MappedJdbcTypes(value = JdbcType.OTHER, includeNullJdbcType = true)
|
public class DmsUuidTypeHandler extends BaseTypeHandler<UUID> {
|
|
@Override
|
public void setNonNullParameter(PreparedStatement statement, int index, UUID value, JdbcType jdbcType)
|
throws SQLException {
|
statement.setObject(index, value, Types.OTHER);
|
}
|
|
@Override
|
public UUID getNullableResult(ResultSet resultSet, String columnName) throws SQLException {
|
return toUuid(resultSet.getObject(columnName));
|
}
|
|
@Override
|
public UUID getNullableResult(ResultSet resultSet, int columnIndex) throws SQLException {
|
return toUuid(resultSet.getObject(columnIndex));
|
}
|
|
@Override
|
public UUID getNullableResult(CallableStatement statement, int columnIndex) throws SQLException {
|
return toUuid(statement.getObject(columnIndex));
|
}
|
|
private UUID toUuid(Object value) throws SQLException {
|
if (value == null) {
|
return null;
|
}
|
if (value instanceof UUID) {
|
return (UUID) value;
|
}
|
try {
|
return UUID.fromString(value.toString());
|
} catch (IllegalArgumentException exception) {
|
throw new SQLException("Invalid PostgreSQL UUID value: " + value, exception);
|
}
|
}
|
}
|