01: /*
02: *
03: * The DbUnit Database Testing Framework
04: * Copyright (C)2002-2004, DbUnit.org
05: *
06: * This library is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU Lesser General Public
08: * License as published by the Free Software Foundation; either
09: * 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:
22: package org.dbunit.dataset;
23:
24: import org.slf4j.Logger;
25: import org.slf4j.LoggerFactory;
26:
27: import org.dbunit.dataset.filter.IColumnFilter;
28:
29: import java.util.List;
30: import java.util.ArrayList;
31:
32: /**
33: * @author Manuel Laflamme
34: * @version $Revision: 554 $
35: * @since May 11, 2004
36: */
37: public class FilteredTableMetaData extends AbstractTableMetaData {
38:
39: /**
40: * Logger for this class
41: */
42: private static final Logger logger = LoggerFactory
43: .getLogger(FilteredTableMetaData.class);
44:
45: private final String _tableName;
46: private final Column[] _columns;
47: private final Column[] _primaryKeys;
48:
49: public FilteredTableMetaData(ITableMetaData metaData,
50: IColumnFilter columnFilter) throws DataSetException {
51: _tableName = metaData.getTableName();
52: _columns = getFilteredColumns(_tableName,
53: metaData.getColumns(), columnFilter);
54: _primaryKeys = getFilteredColumns(_tableName, metaData
55: .getPrimaryKeys(), columnFilter);
56: }
57:
58: public static Column[] getFilteredColumns(String tableName,
59: Column[] columns, IColumnFilter columnFilter) {
60: logger.debug("getFilteredColumns(tableName=" + tableName
61: + ", columns=" + columns + ", columnFilter="
62: + columnFilter + ") - start");
63:
64: if (columns == null) {
65: return new Column[0];
66: }
67:
68: List columnList = new ArrayList();
69: for (int i = 0; i < columns.length; i++) {
70: Column column = columns[i];
71: if (columnFilter.accept(tableName, column)) {
72: columnList.add(column);
73: }
74: }
75: return (Column[]) columnList.toArray(new Column[0]);
76: }
77:
78: ////////////////////////////////////////////////////////////////////////////
79: // ITableMetaData interface
80:
81: public String getTableName() {
82: logger.debug("getTableName() - start");
83:
84: return _tableName;
85: }
86:
87: public Column[] getColumns() throws DataSetException {
88: logger.debug("getColumns() - start");
89:
90: return _columns;
91: }
92:
93: public Column[] getPrimaryKeys() throws DataSetException {
94: logger.debug("getPrimaryKeys() - start");
95:
96: return _primaryKeys;
97: }
98: }
|