package jef.orm.custom;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;
import jef.database.dialect.DatabaseDialect;
import jef.database.dialect.type.AColumnMapping;
import jef.database.jdbc.result.IResultSet;
import jef.tools.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.hsqldb.types.Types;
public class JSONVarcharMapping extends AColumnMapping{
@SuppressWarnings("unchecked")
@Override
public Object jdbcSet(PreparedStatement st, Object value, int index, DatabaseDialect dialect) throws SQLException {
if(value==null){
st.setNull(index, java.sql.Types.VARCHAR);
return null;
}else{
List<String> data=(List<String>)value;
String v=StringUtils.join(data, ',');
st.setString(index,v);
return v;
}
}
@Override
public int getSqlType() {
return Types.VARCHAR;
}
@Override
public Object jdbcGet(IResultSet rs, int n) throws SQLException {
String s=rs.getString(n);
if(s==null)return null;
return ArrayUtils.asList(StringUtils.split(s,','));
}
@SuppressWarnings("unchecked")
@Override
protected String getSqlExpression(Object value, DatabaseDialect profile) {
List<String> data=(List<String>)value;
String v=StringUtils.join(data,',');
return wrapSqlStr(v);
}
@Override
protected Class<?> getDefaultJavaType() {
return List.class;
}
}