001: package com.completex.objective.components.persistency;
002:
003: import java.util.Set;
004:
005: /**
006: * @author Gennady Krizhevsky
007: */
008: public interface CompoundColumnFilter {
009:
010: public static final int TYPE_BY_COLUMN_INDEX = 1;
011: public static final int TYPE_BY_COLUMN_NAME = 2;
012: public static final int TYPE_BY_COLUMN_ALIAS = 3;
013:
014: /**
015: * Accept All Column Filter - can be used as default.
016: */
017: public static final NullColumnFilter NULL_COLUMN_FILTER = new NullColumnFilter();
018:
019: /**
020: * This is a callback method called when populating persistent objects.
021: * Retriever normally iterates trough all the persistent object columns
022: * and rets values from the <tt>ResultSet</tt> based on it. Seeting the filter will
023: * force the retriver to skip the columns that are not accepted
024: *
025: * @see com.completex.objective.components.persistency.Record
026: * @see com.completex.objective.components.persistency.MetaColumn
027: * @param entryIndex compound persistent entry index (0 for non-compound ones)
028: * @param columnIndex Record column index - 0 based
029: * @param columnName Record column name
030: * @param columnAlias Record column alias
031: * @return true if column is accepted
032: */
033: public boolean accept(int entryIndex, int columnIndex,
034: String columnName, String columnAlias);
035:
036: /**
037: * Adds persistent entry ColumnFilter
038: *
039: * @param columnsNames column names to exclude
040: */
041: void addExcludeEntryFilter(Set columnsNames);
042:
043: /**
044: * Adds persistent entry ColumnFilter
045: *
046: * @param columnIndices column indices to exclude
047: */
048: void addExcludeEntryFilter(int[] columnIndices);
049:
050: /**
051: * Adds persistent entry ColumnFilter
052: *
053: * @param columns column names to exclude if byAlias == false, column aliases otherwise
054: */
055: void addExcludeEntryFilter(String[] columns, boolean byAlias);
056:
057: /**
058: * Adds persistent entry ColumnFilter
059: *
060: * @param columns column names to exclude
061: */
062: void addExcludeEntryFilter(String[] columns);
063:
064: /**
065: * Adds persistent entry ColumnFilter
066: *
067: * @param filter
068: */
069: void addExcludeEntryFilter(ColumnFilter filter);
070:
071: /**
072: * Adds persistent entry ColumnFilter
073: *
074: * @param columnsNames column names to include
075: */
076: void addIncludeEntryFilter(Set columnsNames);
077:
078: /**
079: * Adds persistent entry ColumnFilter
080: *
081: * @param columnIndices column indices to include
082: */
083: void addIncludeEntryFilter(int[] columnIndices);
084:
085: /**
086: * Adds persistent entry ColumnFilter
087: *
088: * @param columns column names to include if byAlias == false, column aliases otherwise
089: */
090: void addIncludeEntryFilter(String[] columns, boolean byAlias);
091:
092: /**
093: * Adds persistent entry ColumnFilter
094: *
095: * @param columns column names to include
096: */
097: void addIncludeEntryFilter(String[] columns);
098:
099: /**
100: * Adds persistent entry ColumnFilter
101: *
102: * @param filter
103: */
104: void addEntryFilter(ColumnFilter filter);
105:
106: /**
107: * Return number of entry filters
108: *
109: * @return number of entry filters
110: */
111: int size();
112:
113: boolean isEmpty();
114:
115: /**
116: * Accept All ColumnFilter implementation.
117: */
118: static class NullColumnFilter implements CompoundColumnFilter {
119: public boolean accept(int entryIndex, int columnIndex,
120: String columnName, String columnAlias) {
121: return true;
122: }
123:
124: public void addExcludeEntryFilter(Set columnsNames) {
125: throw new UnsupportedOperationException();
126: }
127:
128: public void addExcludeEntryFilter(int[] columnIndices) {
129: throw new UnsupportedOperationException();
130: }
131:
132: public void addExcludeEntryFilter(String[] columns,
133: boolean byAlias) {
134: throw new UnsupportedOperationException();
135: }
136:
137: public void addExcludeEntryFilter(ColumnFilter filter) {
138: throw new UnsupportedOperationException();
139: }
140:
141: public void addIncludeEntryFilter(Set columnsNames) {
142: throw new UnsupportedOperationException();
143: }
144:
145: public void addIncludeEntryFilter(int[] columnIndices) {
146: throw new UnsupportedOperationException();
147: }
148:
149: public void addIncludeEntryFilter(String[] columns,
150: boolean byAlias) {
151: throw new UnsupportedOperationException();
152: }
153:
154: public void addEntryFilter(ColumnFilter filter) {
155: throw new UnsupportedOperationException();
156: }
157:
158: public void addExcludeEntryFilter(String[] columns) {
159: }
160:
161: public void addIncludeEntryFilter(String[] columns) {
162: }
163:
164: public int size() {
165: return 0;
166: }
167:
168: public boolean isEmpty() {
169: return true;
170: }
171:
172: }
173:
174: }
|