package com.revolsys.oracle.recordstore.field;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.Collections;
import com.revolsys.datatype.DataTypes;
import com.revolsys.jdbc.field.JdbcFieldDefinition;
import com.revolsys.record.Record;
import oracle.sql.ROWID;
public class OracleJdbcRowIdFieldDefinition extends JdbcFieldDefinition {
public OracleJdbcRowIdFieldDefinition() {
super("rowid", "ORACLE_ROWID", DataTypes.STRING, Types.ROWID, 18, 0, true, "Row identifier",
Collections.emptyMap());
}
@Override
public void addColumnName(final StringBuilder sql, final String tablePrefix) {
super.addColumnName(sql, tablePrefix);
sql.append(" \"ORACLE_ROWID\"");
}
@Override
public void addInsertStatementPlaceHolder(final StringBuilder sql, final boolean generateKeys) {
}
@Override
public void addStatementPlaceHolder(final StringBuilder sql) {
sql.append("chartorowid(");
super.addStatementPlaceHolder(sql);
sql.append(")");
}
@Override
public int setFieldValueFromResultSet(final ResultSet resultSet, final int columnIndex,
final Record record) throws SQLException {
final ROWID rowId = (ROWID)resultSet.getRowId(columnIndex);
if (rowId == null) {
setValue(record, null);
} else {
setValue(record, rowId.stringValue());
}
return columnIndex + 1;
}
@Override
public int setInsertPreparedStatementValue(final PreparedStatement statement,
final int parameterIndex, final Record record) throws SQLException {
return parameterIndex;
}
@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;
}
}