ReplacementDataSet.java 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package org.ccframe.commons.dbunit;
  2. import org.ccframe.commons.util.DbUnitUtils;
  3. import org.ccframe.commons.util.DbUnitUtils.DBTYPE;
  4. import org.dbunit.database.IDatabaseConnection;
  5. import org.dbunit.dataset.*;
  6. import org.slf4j.Logger;
  7. import org.slf4j.LoggerFactory;
  8. import java.util.ArrayList;
  9. import java.util.List;
  10. public class ReplacementDataSet extends AbstractDataSet {
  11. /**
  12. * Logger for this class
  13. */
  14. private static final Logger LOGGER = LoggerFactory.getLogger(ReplacementDataSet.class);
  15. private final IDataSet dataSet;
  16. private IDatabaseConnection connection;
  17. private DBTYPE dbType;
  18. private List<ReplacementProcessor> processorList = new ArrayList<ReplacementProcessor>();
  19. private static int tableId = 0;
  20. public ReplacementDataSet(IDataSet dataSet, IDatabaseConnection connection, DBTYPE dbType, List<ReplacementProcessor> processorList)
  21. {
  22. this.dataSet = dataSet;
  23. this.connection = connection;
  24. this.dbType = dbType;
  25. this.processorList.addAll(processorList);
  26. }
  27. private ReplacementTable createReplacementTable(ITable table)
  28. {
  29. tableId ++;
  30. return new ReplacementTable(table, tableId, connection, dbType, processorList);
  31. }
  32. ////////////////////////////////////////////////////////////////////////////
  33. // AbstractDataSet class
  34. protected ITableIterator createIterator(boolean reversed)
  35. throws DataSetException
  36. {
  37. return new ReplacementIterator(reversed ?
  38. dataSet.reverseIterator() : dataSet.iterator());
  39. }
  40. ////////////////////////////////////////////////////////////////////////////
  41. // IDataSet interface
  42. public String[] getTableNames() throws DataSetException
  43. {
  44. LOGGER.debug("getTableNames() - start");
  45. return dataSet.getTableNames();
  46. }
  47. public ITableMetaData getTableMetaData(String tableName)
  48. throws DataSetException
  49. {
  50. return dataSet.getTableMetaData(tableName);
  51. }
  52. public ITable getTable(String tableName) throws DataSetException
  53. {
  54. return createReplacementTable(dataSet.getTable(tableName));
  55. }
  56. ////////////////////////////////////////////////////////////////////////////
  57. // ReplacementIterator class
  58. private class ReplacementIterator implements ITableIterator
  59. {
  60. // private final Logger logger = LoggerFactory.getLogger(ReplacementIterator.class);
  61. private final ITableIterator iterator;
  62. public ReplacementIterator(ITableIterator iterator)
  63. {
  64. this.iterator = iterator;
  65. }
  66. ////////////////////////////////////////////////////////////////////////
  67. // ITableIterator interface
  68. public boolean next() throws DataSetException
  69. {
  70. return iterator.next();
  71. }
  72. public ITableMetaData getTableMetaData() throws DataSetException
  73. {
  74. return iterator.getTableMetaData();
  75. }
  76. public ITable getTable() throws DataSetException
  77. {
  78. return createReplacementTable(iterator.getTable());
  79. }
  80. }
  81. }