package com.ard.data.noflyzone.domain;
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
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;
|
|
@MappedJdbcTypes(JdbcType.VARCHAR)
|
@MappedTypes(FeatureCollection.class)
|
public class FeatureCollectionTypeHandler extends BaseTypeHandler<FeatureCollection> {
|
|
private static final ObjectMapper objectMapper = new ObjectMapper();
|
|
@Override
|
public void setNonNullParameter(PreparedStatement ps, int i, FeatureCollection parameter, JdbcType jdbcType) throws SQLException {
|
try {
|
ps.setString(i, objectMapper.writeValueAsString(parameter));
|
} catch (JsonProcessingException e) {
|
throw new SQLException("Failed to convert FeatureCollection to JSON", e);
|
}
|
}
|
|
@Override
|
public FeatureCollection getNullableResult(ResultSet rs, String columnName) throws SQLException {
|
String json = rs.getString(columnName);
|
if (json != null) {
|
try {
|
return objectMapper.readValue(json, FeatureCollection.class);
|
} catch (JsonProcessingException e) {
|
throw new SQLException("Failed to parse JSON to FeatureCollection", e);
|
}
|
}
|
return null;
|
}
|
|
@Override
|
public FeatureCollection getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
|
String json = rs.getString(columnIndex);
|
if (json != null) {
|
try {
|
return objectMapper.readValue(json, FeatureCollection.class);
|
} catch (JsonProcessingException e) {
|
throw new SQLException("Failed to parse JSON to FeatureCollection", e);
|
}
|
}
|
return null;
|
}
|
|
@Override
|
public FeatureCollection getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
|
String json = cs.getString(columnIndex);
|
if (json != null) {
|
try {
|
return objectMapper.readValue(json, FeatureCollection.class);
|
} catch (JsonProcessingException e) {
|
throw new SQLException("Failed to parse JSON to FeatureCollection", e);
|
}
|
}
|
return null;
|
}
|
}
|