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;
}
}