1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.dbunit.dataset.filter;
22
23 import java.util.ArrayList;
24 import java.util.List;
25
26 import org.dbunit.dataset.DataSetException;
27 import org.dbunit.dataset.IDataSet;
28 import org.dbunit.dataset.ITable;
29 import org.dbunit.dataset.ITableIterator;
30 import org.dbunit.dataset.ITableMetaData;
31 import org.slf4j.Logger;
32 import org.slf4j.LoggerFactory;
33
34
35
36
37
38
39
40
41
42
43
44 public abstract class AbstractTableFilter implements ITableFilter
45 {
46
47
48
49
50 private static final Logger logger = LoggerFactory.getLogger(AbstractTableFilter.class);
51
52
53
54
55
56
57 public abstract boolean isValidName(String tableName) throws DataSetException;
58
59
60
61
62 public boolean accept(String tableName) throws DataSetException
63 {
64 logger.debug("accept(tableName={}) - start", tableName);
65
66 return isValidName(tableName);
67 }
68
69 public String[] getTableNames(IDataSet dataSet) throws DataSetException
70 {
71 logger.debug("getTableNames(dataSet={}) - start", dataSet);
72
73 String[] tableNames = dataSet.getTableNames();
74 List nameList = new ArrayList();
75 for (int i = 0; i < tableNames.length; i++)
76 {
77 String tableName = tableNames[i];
78 if (accept(tableName))
79 {
80 nameList.add(tableName);
81 }
82 }
83 return (String[])nameList.toArray(new String[0]);
84 }
85
86 public ITableIterator iterator(IDataSet dataSet, boolean reversed)
87 throws DataSetException
88 {
89 logger.debug("iterator(dataSet={}, reversed={}) - start", dataSet, String.valueOf(reversed));
90
91 return new FilterIterator(reversed ?
92 dataSet.reverseIterator() : dataSet.iterator());
93 }
94
95
96
97
98 private class FilterIterator implements ITableIterator
99 {
100
101
102
103
104 private final Logger logger = LoggerFactory.getLogger(FilterIterator.class);
105
106 private final ITableIterator _iterator;
107
108 public FilterIterator(ITableIterator iterator)
109 {
110 _iterator = iterator;
111 }
112
113
114
115
116 public boolean next() throws DataSetException
117 {
118 logger.debug("next() - start");
119
120 while(_iterator.next())
121 {
122 if (accept(_iterator.getTableMetaData().getTableName()))
123 {
124 return true;
125 }
126 }
127 return false;
128 }
129
130 public ITableMetaData getTableMetaData() throws DataSetException
131 {
132 logger.debug("getTableMetaData() - start");
133
134 return _iterator.getTableMetaData();
135 }
136
137 public ITable getTable() throws DataSetException
138 {
139 logger.debug("getTable() - start");
140
141 return _iterator.getTable();
142 }
143 }
144 }