1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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
34
35
36
37 public class FilteredTableMetaData extends AbstractTableMetaData
38 {
39
40
41
42
43 private static final Logger logger = LoggerFactory.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 {
52 _tableName = metaData.getTableName();
53 _columns = getFilteredColumns(_tableName, metaData.getColumns(), columnFilter);
54 _primaryKeys = getFilteredColumns(_tableName, metaData.getPrimaryKeys(), columnFilter);
55 }
56
57 public static Column[] getFilteredColumns(String tableName,
58 Column[] columns, IColumnFilter columnFilter)
59 {
60 if (logger.isDebugEnabled())
61 {
62 logger.debug("getFilteredColumns(tableName={}, columns={}, columnFilter={}) - start",
63 new Object[]{ tableName, columns, columnFilter });
64 }
65
66 if (columns == null)
67 {
68 return new Column[0];
69 }
70
71 List columnList = new ArrayList();
72 for (int i = 0; i < columns.length; i++)
73 {
74 Column column = columns[i];
75 if (columnFilter.accept(tableName, column))
76 {
77 columnList.add(column);
78 }
79 }
80 return (Column[])columnList.toArray(new Column[0]);
81 }
82
83
84
85
86 public String getTableName()
87 {
88 return _tableName;
89 }
90
91 public Column[] getColumns() throws DataSetException
92 {
93 return _columns;
94 }
95
96 public Column[] getPrimaryKeys() throws DataSetException
97 {
98 return _primaryKeys;
99 }
100 }