DatabaseTableIterator.java

  1. /*
  2.  *
  3.  * The DbUnit Database Testing Framework
  4.  * Copyright (C)2002-2004, DbUnit.org
  5.  *
  6.  * This library is free software; you can redistribute it and/or
  7.  * modify it under the terms of the GNU Lesser General Public
  8.  * License as published by the Free Software Foundation; either
  9.  * version 2.1 of the License, or (at your option) any later version.
  10.  *
  11.  * This library is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.  * Lesser General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU Lesser General Public
  17.  * License along with this library; if not, write to the Free Software
  18.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  19.  *
  20.  */
  21. package org.dbunit.database;

  22. import org.dbunit.dataset.DataSetException;
  23. import org.dbunit.dataset.IDataSet;
  24. import org.dbunit.dataset.ITable;
  25. import org.dbunit.dataset.ITableIterator;
  26. import org.dbunit.dataset.ITableMetaData;
  27. import org.slf4j.Logger;
  28. import org.slf4j.LoggerFactory;

  29. /**
  30.  * @author Manuel Laflamme
  31.  * @author Last changed by: $Author$
  32.  * @version $Revision$ $Date$
  33.  * @since 1.x (Apr 12, 2003)
  34.  */
  35. public class DatabaseTableIterator implements ITableIterator
  36. {

  37.     /**
  38.      * Logger for this class
  39.      */
  40.     private static final Logger logger = LoggerFactory.getLogger(DatabaseTableIterator.class);

  41.     private final String[] _tableNames;
  42.     private final IDataSet _dataSet;
  43.     private IResultSetTable _currentTable;
  44.     private int _index = -1;

  45.     public DatabaseTableIterator(String[] tableNames, IDataSet dataSet)
  46.     {
  47.         _tableNames = tableNames;
  48.         _dataSet = dataSet;
  49.         _currentTable = null;
  50.     }

  51.     ////////////////////////////////////////////////////////////////////////////
  52.     // ITableIterator interface

  53.     public boolean next() throws DataSetException
  54.     {
  55.         logger.debug("next() - start");

  56.         _index++;

  57.         // Ensure previous table is closed
  58.         if (_currentTable != null)
  59.         {
  60.             _currentTable.close();
  61.             _currentTable = null;
  62.         }

  63.         return _index < _tableNames.length;
  64.     }

  65.     public ITableMetaData getTableMetaData() throws DataSetException
  66.     {
  67.         logger.debug("getTableMetaData() - start");

  68.         return _dataSet.getTableMetaData(_tableNames[_index]);
  69.     }

  70.     public ITable getTable() throws DataSetException
  71.     {
  72.         logger.debug("getTable() - start");

  73.         if (_currentTable == null)
  74.         {
  75.             _currentTable = (IResultSetTable)_dataSet.getTable(_tableNames[_index]);
  76.         }
  77.         return _currentTable;
  78.     }
  79. }