package com.w11k.lsql.converter.sqltypes; import com.google.common.io.CharStreams; import com.w11k.lsql.LSql; import com.w11k.lsql.converter.Converter; import javax.sql.rowset.serial.SerialClob; import java.io.IOException; import java.io.Reader; import java.sql.*; public class ClobConverter extends Converter { public static final ClobConverter INSTANCE = new ClobConverter(); public ClobConverter() { super( String.class, new int[]{Types.CLOB}, Types.CLOB ); } @Override protected void setValue(LSql lSql, PreparedStatement ps, int index, Object val) throws SQLException { ps.setClob(index, new SerialClob(val.toString().toCharArray())); } @Override protected Object getValue(LSql lSql, ResultSet rs, int index) throws SQLException { Clob clob = rs.getClob(index); if (clob != null) { Reader reader = clob.getCharacterStream(); try { return CharStreams.toString(reader); } catch (IOException e) { throw new RuntimeException(e); } } else { return null; } } }