package com.revolsys.jdbc.field; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Map; import com.revolsys.datatype.DataTypes; import com.revolsys.record.Record; import com.revolsys.util.Property; public class JdbcStringFieldDefinition extends JdbcFieldDefinition { private final boolean intern; public JdbcStringFieldDefinition(final String dbName, final String name, final int sqlType, final int length, final boolean required, final String description, final Map<String, Object> properties) { super(dbName, name, DataTypes.STRING, sqlType, length, 0, required, description, properties); this.intern = Property.getBoolean(properties, "stringIntern"); } @Override public JdbcStringFieldDefinition clone() { return new JdbcStringFieldDefinition(getDbName(), getName(), getSqlType(), getLength(), isRequired(), getDescription(), getProperties()); } @Override public int setFieldValueFromResultSet(final ResultSet resultSet, final int columnIndex, final Record record) throws SQLException { String value = resultSet.getString(columnIndex); if (this.intern) { value = value.intern(); } setValue(record, value); return columnIndex + 1; } @Override public int setPreparedStatementValue(final PreparedStatement statement, final int parameterIndex, final Object value) throws SQLException { if (value == null) { final int sqlType = getSqlType(); statement.setNull(parameterIndex, sqlType); } else { final String string = value.toString(); statement.setString(parameterIndex, string); } return parameterIndex + 1; } }