Update of /cvsroot/dbunit/dbunit/src/java/org/dbunit/operation In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17517/src/java/org/dbunit/operation Modified Files: AbstractBatchOperation.java DeleteOperation.java InsertOperation.java RefreshOperation.java UpdateOperation.java Log Message: Use BitSet to store mapping of omited columns. Index: AbstractBatchOperation.java =================================================================== RCS file: /cvsroot/dbunit/dbunit/src/java/org/dbunit/operation/AbstractBatchOperation.java,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** AbstractBatchOperation.java 29 Mar 2004 00:59:54 -0000 1.27 --- AbstractBatchOperation.java 29 May 2004 00:02:24 -0000 1.28 *************** *** 27,34 **** import org.dbunit.database.statement.IPreparedBatchStatement; import org.dbunit.database.statement.IStatementFactory; ! import org.dbunit.dataset.*; - import java.math.BigInteger; import java.sql.SQLException; /** --- 27,40 ---- import org.dbunit.database.statement.IPreparedBatchStatement; import org.dbunit.database.statement.IStatementFactory; ! import org.dbunit.dataset.Column; ! import org.dbunit.dataset.DataSetException; ! import org.dbunit.dataset.IDataSet; ! import org.dbunit.dataset.ITable; ! import org.dbunit.dataset.ITableIterator; ! import org.dbunit.dataset.ITableMetaData; ! import org.dbunit.dataset.RowOutOfBoundsException; import java.sql.SQLException; + import java.util.BitSet; /** *************** *** 41,45 **** public abstract class AbstractBatchOperation extends AbstractOperation { ! private static final BigInteger EMPTY_IGNORE_MAPPING = new BigInteger("0"); protected boolean _reverseRowOrder = false; --- 47,51 ---- public abstract class AbstractBatchOperation extends AbstractOperation { ! private static final BitSet EMPTY_BITSET = new BitSet(); protected boolean _reverseRowOrder = false; *************** *** 80,87 **** * a column to ignore. */ ! BigInteger getIgnoreMapping(ITable table, int row) throws DataSetException { ! return EMPTY_IGNORE_MAPPING; } --- 86,93 ---- * a column to ignore. */ ! BitSet getIgnoreMapping(ITable table, int row) throws DataSetException { ! return EMPTY_BITSET; } *************** *** 90,94 **** * than the specified mapping. */ ! boolean equalsIgnoreMapping(BigInteger ignoreMapping, ITable table, int row) throws DataSetException { --- 96,100 ---- * than the specified mapping. */ ! boolean equalsIgnoreMapping(BitSet ignoreMapping, ITable table, int row) throws DataSetException { *************** *** 97,101 **** abstract OperationData getOperationData(ITableMetaData metaData, ! BigInteger ignoreMapping, IDatabaseConnection connection) throws DataSetException; //////////////////////////////////////////////////////////////////////////// --- 103,107 ---- abstract OperationData getOperationData(ITableMetaData metaData, ! BitSet ignoreMapping, IDatabaseConnection connection) throws DataSetException; //////////////////////////////////////////////////////////////////////////// *************** *** 123,127 **** ITableMetaData metaData = getOperationMetaData(connection, table.getTableMetaData()); ! BigInteger ignoreMapping = null; OperationData operationData = null; IPreparedBatchStatement statement = null; --- 129,133 ---- ITableMetaData metaData = getOperationMetaData(connection, table.getTableMetaData()); ! BitSet ignoreMapping = null; OperationData operationData = null; IPreparedBatchStatement statement = null; *************** *** 163,167 **** { // Bind value only if not in ignore mapping ! if (!ignoreMapping.testBit(j)) { Column column = columns[j]; --- 169,173 ---- { // Bind value only if not in ignore mapping ! if (!ignoreMapping.get(j)) { Column column = columns[j]; Index: DeleteOperation.java =================================================================== RCS file: /cvsroot/dbunit/dbunit/src/java/org/dbunit/operation/DeleteOperation.java,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** DeleteOperation.java 15 Mar 2004 16:44:19 -0000 1.17 --- DeleteOperation.java 29 May 2004 00:02:25 -0000 1.18 *************** *** 27,30 **** --- 27,31 ---- import java.math.BigInteger; + import java.util.BitSet; /** *************** *** 52,56 **** } ! public OperationData getOperationData(ITableMetaData metaData, BigInteger ignoreMapping, IDatabaseConnection connection) throws DataSetException { // cannot construct where clause if no primary key --- 53,57 ---- } ! public OperationData getOperationData(ITableMetaData metaData, BitSet ignoreMapping, IDatabaseConnection connection) throws DataSetException { // cannot construct where clause if no primary key Index: InsertOperation.java =================================================================== RCS file: /cvsroot/dbunit/dbunit/src/java/org/dbunit/operation/InsertOperation.java,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** InsertOperation.java 29 Mar 2004 00:59:55 -0000 1.16 --- InsertOperation.java 29 May 2004 00:02:25 -0000 1.17 *************** *** 28,32 **** import org.dbunit.dataset.ITableMetaData; ! import java.math.BigInteger; /** --- 28,32 ---- import org.dbunit.dataset.ITableMetaData; ! import java.util.BitSet; /** *************** *** 50,54 **** public OperationData getOperationData(ITableMetaData metaData, ! BigInteger ignoreMapping, IDatabaseConnection connection) throws DataSetException { Column[] columns = metaData.getColumns(); --- 50,54 ---- public OperationData getOperationData(ITableMetaData metaData, ! BitSet ignoreMapping, IDatabaseConnection connection) throws DataSetException { Column[] columns = metaData.getColumns(); *************** *** 65,69 **** for (int i = 0; i < columns.length; i++) { ! if (!ignoreMapping.testBit(i)) { // escape column name --- 65,69 ---- for (int i = 0; i < columns.length; i++) { ! if (!ignoreMapping.get(i)) { // escape column name *************** *** 81,85 **** for (int i = 0; i < columns.length; i++) { ! if (!ignoreMapping.testBit(i)) { sqlBuffer.append(valueSeparator); --- 81,85 ---- for (int i = 0; i < columns.length; i++) { ! if (!ignoreMapping.get(i)) { sqlBuffer.append(valueSeparator); *************** *** 93,115 **** } ! protected BigInteger getIgnoreMapping(ITable table, int row) throws DataSetException { Column[] columns = table.getTableMetaData().getColumns(); - int n = columns.length; - int byteNum = n / 8; - byte[] result = new byte[byteNum + 2]; ! for (int i = 0; i < n; i++) { Object value = table.getValue(row, columns[i].getColumnName()); if (value == ITable.NO_VALUE) { ! result[result.length - (i / 8) - 1] |= (1 << (i % 8)); } } ! return new BigInteger(result); } ! protected boolean equalsIgnoreMapping(BigInteger ignoreMapping, ITable table, int row) throws DataSetException { --- 93,113 ---- } ! protected BitSet getIgnoreMapping(ITable table, int row) throws DataSetException { Column[] columns = table.getTableMetaData().getColumns(); ! BitSet ignoreMapping = new BitSet(); ! for (int i = 0; i < columns.length; i++) { Object value = table.getValue(row, columns[i].getColumnName()); if (value == ITable.NO_VALUE) { ! ignoreMapping.set(i); } } ! return ignoreMapping; } ! protected boolean equalsIgnoreMapping(BitSet ignoreMapping, ITable table, int row) throws DataSetException { *************** *** 118,122 **** for (int i = 0; i < columns.length; i++) { ! boolean bit = ignoreMapping.testBit(i); Object value = table.getValue(row, columns[i].getColumnName()); if ((bit && value != ITable.NO_VALUE) || (!bit && value == ITable.NO_VALUE)) --- 116,120 ---- for (int i = 0; i < columns.length; i++) { ! boolean bit = ignoreMapping.get(i); Object value = table.getValue(row, columns[i].getColumnName()); if ((bit && value != ITable.NO_VALUE) || (!bit && value == ITable.NO_VALUE)) Index: RefreshOperation.java =================================================================== RCS file: /cvsroot/dbunit/dbunit/src/java/org/dbunit/operation/RefreshOperation.java,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** RefreshOperation.java 29 Mar 2004 01:00:05 -0000 1.34 --- RefreshOperation.java 29 May 2004 00:02:25 -0000 1.35 *************** *** 26,36 **** import org.dbunit.database.statement.IPreparedBatchStatement; import org.dbunit.database.statement.SimplePreparedStatement; ! import org.dbunit.dataset.*; import org.dbunit.dataset.datatype.DataType; - import java.math.BigInteger; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** --- 26,43 ---- import org.dbunit.database.statement.IPreparedBatchStatement; import org.dbunit.database.statement.SimplePreparedStatement; ! import org.dbunit.dataset.Column; ! import org.dbunit.dataset.DataSetException; ! import org.dbunit.dataset.IDataSet; ! import org.dbunit.dataset.ITable; ! import org.dbunit.dataset.ITableIterator; ! import org.dbunit.dataset.ITableMetaData; ! import org.dbunit.dataset.NoPrimaryKeyException; ! import org.dbunit.dataset.RowOutOfBoundsException; import org.dbunit.dataset.datatype.DataType; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; + import java.util.BitSet; /** *************** *** 132,136 **** protected IPreparedBatchStatement _statement; protected OperationData _operationData; ! protected BigInteger _ignoreMapping; /** --- 139,143 ---- protected IPreparedBatchStatement _statement; protected OperationData _operationData; ! protected BitSet _ignoreMapping; /** *************** *** 145,149 **** { // Bind value only if not in ignore mapping ! if (_ignoreMapping == null || !_ignoreMapping.testBit(i)) { Object value = table.getValue(row, columns[i].getColumnName()); --- 152,156 ---- { // Bind value only if not in ignore mapping ! if (_ignoreMapping == null || !_ignoreMapping.get(i)) { Object value = table.getValue(row, columns[i].getColumnName()); Index: UpdateOperation.java =================================================================== RCS file: /cvsroot/dbunit/dbunit/src/java/org/dbunit/operation/UpdateOperation.java,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** UpdateOperation.java 15 Mar 2004 16:44:19 -0000 1.13 --- UpdateOperation.java 29 May 2004 00:02:25 -0000 1.14 *************** *** 28,31 **** --- 28,32 ---- import java.util.ArrayList; import java.util.List; + import java.util.BitSet; /** *************** *** 46,50 **** // AbstractBatchOperation class ! public OperationData getOperationData(ITableMetaData metaData, BigInteger ignoreMapping, IDatabaseConnection connection) throws DataSetException { Column[] columns = metaData.getColumns(); --- 47,51 ---- // AbstractBatchOperation class ! public OperationData getOperationData(ITableMetaData metaData, BitSet ignoreMapping, IDatabaseConnection connection) throws DataSetException { Column[] columns = metaData.getColumns(); |