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 org.dbunit.dataset.Column;
24 import org.dbunit.dataset.ColumnFilterTable;
25 import org.dbunit.dataset.DataSetException;
26 import org.dbunit.dataset.ITable;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
29
30
31
32
33
34
35
36
37
38 public class DefaultColumnFilter implements IColumnFilter
39 {
40
41
42
43
44 private static final Logger logger = LoggerFactory.getLogger(DefaultColumnFilter.class);
45
46 private final PatternMatcher _includeMatcher = new PatternMatcher();
47 private final PatternMatcher _excludeMatcher = new PatternMatcher();
48
49
50
51
52
53
54
55
56 public void includeColumn(String columnPattern)
57 {
58 logger.debug("includeColumn(columnPattern={}) - start", columnPattern);
59
60 _includeMatcher.addPattern(columnPattern);
61 }
62
63
64
65
66 public void includeColumns(Column[] columns)
67 {
68 logger.debug("includeColumns(columns={}) - start", columns);
69
70 for (int i = 0; i < columns.length; i++)
71 {
72 _includeMatcher.addPattern(columns[i].getColumnName());
73 }
74 }
75
76
77
78
79
80
81
82 public void excludeColumn(String columnPattern)
83 {
84 logger.debug("excludeColumn(columnPattern={}) - start", columnPattern);
85
86 _excludeMatcher.addPattern(columnPattern);
87 }
88
89
90
91
92 public void excludeColumns(Column[] columns)
93 {
94 logger.debug("excludeColumns(columns={} - start", columns);
95
96 for (int i = 0; i < columns.length; i++)
97 {
98 _excludeMatcher.addPattern(columns[i].getColumnName());
99 }
100 }
101
102
103
104
105
106 public static ITable includedColumnsTable(ITable table, String[] columnNames)
107 throws DataSetException
108 {
109 logger.debug("includedColumnsTable(table={}, columnNames={}) - start", table, columnNames);
110
111 DefaultColumnFilter columnFilter = new DefaultColumnFilter();
112 for (int i = 0; i < columnNames.length; i++)
113 {
114 String columnName = columnNames[i];
115 columnFilter.includeColumn(columnName);
116 }
117
118 return new ColumnFilterTable(table, columnFilter);
119 }
120
121
122
123
124
125 public static ITable includedColumnsTable(ITable table, Column[] columns)
126 throws DataSetException
127 {
128 logger.debug("includedColumnsTable(table={}, columns={}) - start", table, columns);
129
130 DefaultColumnFilter columnFilter = new DefaultColumnFilter();
131 columnFilter.includeColumns(columns);
132
133 return new ColumnFilterTable(table, columnFilter);
134 }
135
136
137
138
139
140 public static ITable excludedColumnsTable(ITable table, String[] columnNames)
141 throws DataSetException
142 {
143 logger.debug("excludedColumnsTable(table={}, columnNames={}) - start", table, columnNames);
144
145 DefaultColumnFilter columnFilter = new DefaultColumnFilter();
146 for (int i = 0; i < columnNames.length; i++)
147 {
148 String columnName = columnNames[i];
149 columnFilter.excludeColumn(columnName);
150 }
151
152 return new ColumnFilterTable(table, columnFilter);
153 }
154
155
156
157
158
159 public static ITable excludedColumnsTable(ITable table, Column[] columns)
160 throws DataSetException
161 {
162 logger.debug("excludedColumnsTable(table={}, columns={}) - start", table, columns);
163
164 DefaultColumnFilter columnFilter = new DefaultColumnFilter();
165 columnFilter.excludeColumns(columns);
166
167 return new ColumnFilterTable(table, columnFilter);
168 }
169
170
171
172
173 public boolean accept(String tableName, Column column)
174 {
175 logger.debug("accept(tableName={}, column={}) - start", tableName, column);
176
177 if (_includeMatcher.isEmpty() ||
178 _includeMatcher.accept(column.getColumnName()))
179 {
180 return !_excludeMatcher.accept(column.getColumnName());
181 }
182 return false;
183 }
184
185
186 public String toString()
187 {
188 StringBuffer sb = new StringBuffer();
189 sb.append(getClass().getName()).append("[");
190 sb.append("_includeMatcher=").append(_includeMatcher);
191 sb.append(", _excludeMatcher=").append(_excludeMatcher);
192 sb.append("]");
193 return sb.toString();
194 }
195 }