1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.jumpmind.symmetric.load;
21
22 import org.apache.ddlutils.model.Table;
23 import org.jumpmind.symmetric.ext.IExtensionPoint;
24 import org.jumpmind.symmetric.load.StatementBuilder.DmlType;
25
26 /***
27 * This is an extension point that can be implemented to filter out columns from
28 * use by the dataloader. One column filter may be added per target table.
29 * </p>
30 * Please implement {@link ITableColumnFilter} instead of this class directly if
31 * you want the extension to be auto discovered.
32 */
33 public interface IColumnFilter extends IExtensionPoint {
34
35 /***
36 * This method is always called first. Typically, you must cache the column
37 * index you are interested in order to be able to filter the column value
38 * as well.
39 *
40 * @return The columnName that the data loader will use to build its dml.
41 */
42 public String[] filterColumnsNames(IDataLoaderContext ctx, DmlType dml, Table table, String[] columnNames);
43
44 /***
45 * This method is always called after
46 * {@link IColumnFilter#filterColumnsNames(DmlType, String[])}. It should
47 * perform the same filtering under the same conditions for the values as
48 * was done for the column names.
49 *
50 * @return the column values
51 */
52 public Object[] filterColumnsValues(IDataLoaderContext ctx, DmlType dml, Table table, Object[] columnValues);
53 }