1 package uba.db.sql.language;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 /***
7 * Visitor para los tests de unidad, simplemente recolecta los objetos
8 * visitados. Implementa {@link uba.db.sql.language.VisitorBehavior}, y
9 * simplemente delega todos los metodos a su super-clase, recolectando primero
10 * el objeto que se visitor. <br>
11 * Notar que no se puede hacer esto usando un dynamic proxy de Java, por que en
12 * un proxy una vez que se delega el metodo no se tiene mas control sobre las
13 * invocaciones de métodos al objeto proxeado.
14 *
15 * @version $Revision: 1.4 $
16 */
17 public class VisitCollector extends VisitorBehavior {
18 private List visitedObjects;
19
20 /***
21 * Crea una nueva instancia, {@link #visitedObjects()}retornará una
22 * colección vacía.
23 */
24 public VisitCollector() {
25 visitedObjects = new ArrayList();
26 }
27
28 /***
29 * @see uba.db.sql.language.Visitor#visitSelect(uba.db.sql.language.Select)
30 */
31 public void visitSelect(Select select) {
32 visitedObjects.add(select);
33 super.visitSelect(select);
34 }
35
36 /***
37 * @see uba.db.sql.language.VisitorBehavior#visitAndSelectionCriteria(uba.db.sql.language.AndSelectionCriteria)
38 */
39 public void visitAndSelectionCriteria(AndSelectionCriteria criteria) {
40 visitedObjects.add(criteria);
41 super.visitAndSelectionCriteria(criteria);
42 }
43
44 /***
45 * @see uba.db.sql.language.VisitorBehavior#visitColumnName(uba.db.sql.language.ColumnName)
46 */
47 public void visitColumnName(ColumnName columnName) {
48 visitedObjects.add(columnName);
49 super.visitColumnName(columnName);
50 }
51
52 /***
53 * @see uba.db.sql.language.VisitorBehavior#visitCreateTable(uba.db.sql.language.CreateTable)
54 */
55 public void visitCreateTable(CreateTable table) {
56 visitedObjects.add(table);
57 super.visitCreateTable(table);
58 }
59
60 /***
61 * @see uba.db.sql.language.VisitorBehavior#visitDisplayAllColumns(uba.db.sql.language.DisplayAllColumns)
62 */
63 public void visitDisplayAllColumns(DisplayAllColumns columns) {
64 visitedObjects.add(columns);
65 super.visitDisplayAllColumns(columns);
66 }
67
68 /***
69 * @see uba.db.sql.language.VisitorBehavior#visitDisplayMultipleColumns(uba.db.sql.language.DisplayMultipleColumns)
70 */
71 public void visitDisplayMultipleColumns(DisplayMultipleColumns columns) {
72 visitedObjects.add(columns);
73 super.visitDisplayMultipleColumns(columns);
74 }
75
76 /***
77 * @see uba.db.sql.language.VisitorBehavior#visitDisplayOneColumn(uba.db.sql.language.DisplayOneColumn)
78 */
79 public void visitDisplayOneColumn(DisplayOneColumn column) {
80 visitedObjects.add(column);
81 super.visitDisplayOneColumn(column);
82 }
83
84 /***
85 * @see uba.db.sql.language.VisitorBehavior#visitEqualComparison(uba.db.sql.language.EqualComparison)
86 */
87 public void visitEqualComparison(EqualComparison comparison) {
88 visitedObjects.add(comparison);
89 super.visitEqualComparison(comparison);
90 }
91
92 /***
93 * @see uba.db.sql.language.VisitorBehavior#visitGreatherThanComparison(uba.db.sql.language.GreatherThanComparison)
94 */
95 public void visitGreatherThanComparison(GreatherThanComparison comparison) {
96 visitedObjects.add(comparison);
97 super.visitGreatherThanComparison(comparison);
98 }
99
100 /***
101 * @see uba.db.sql.language.VisitorBehavior#visitGreatherThanEqualsComparison(uba.db.sql.language.GreatherThanEqualsComparison)
102 */
103 public void visitGreatherThanEqualsComparison(GreatherThanEqualsComparison comparison) {
104 visitedObjects.add(comparison);
105 super.visitGreatherThanEqualsComparison(comparison);
106 }
107
108 /***
109 * @see uba.db.sql.language.VisitorBehavior#visitInSelectionCriteria(uba.db.sql.language.InSelectionCriteria)
110 */
111 public void visitInSelectionCriteria(InSelectionCriteria criteria) {
112 visitedObjects.add(criteria);
113 super.visitInSelectionCriteria(criteria);
114 }
115
116 /***
117 * @see uba.db.sql.language.VisitorBehavior#visitInsert(uba.db.sql.language.Insert)
118 */
119 public void visitInsert(Insert insert) {
120 visitedObjects.add(insert);
121 super.visitInsert(insert);
122 }
123
124 /***
125 * @see uba.db.sql.language.VisitorBehavior#visitJoin(uba.db.sql.language.Join)
126 */
127 public void visitJoin(Join join) {
128 visitedObjects.add(join);
129 super.visitJoin(join);
130 }
131
132 /***
133 * @see uba.db.sql.language.VisitorBehavior#visitLessThanComparison(uba.db.sql.language.LessThanComparison)
134 */
135 public void visitLessThanComparison(LessThanComparison comparison) {
136 visitedObjects.add(comparison);
137 super.visitLessThanComparison(comparison);
138 }
139
140 /***
141 * @see uba.db.sql.language.VisitorBehavior#visitLessThanEqualsComparison(uba.db.sql.language.LessThanEqualsComparison)
142 */
143 public void visitLessThanEqualsComparison(LessThanEqualsComparison comparison) {
144 visitedObjects.add(comparison);
145 super.visitLessThanEqualsComparison(comparison);
146 }
147
148 /***
149 * @see uba.db.sql.language.VisitorBehavior#visitNegatedSelectionCriteria(uba.db.sql.language.NegatedSelectionCriteria)
150 */
151 public void visitNegatedSelectionCriteria(NegatedSelectionCriteria criteria) {
152 visitedObjects.add(criteria);
153 super.visitNegatedSelectionCriteria(criteria);
154 }
155
156 /***
157 * @see uba.db.sql.language.VisitorBehavior#visitNotInSelectionCriteria(uba.db.sql.language.NotInSelectionCriteria)
158 */
159 public void visitNotInSelectionCriteria(NotInSelectionCriteria criteria) {
160 visitedObjects.add(criteria);
161 super.visitNotInSelectionCriteria(criteria);
162 }
163
164 /***
165 * @see uba.db.sql.language.VisitorBehavior#visitNumericValue
166 */
167 public void visitIntegerValue(IntegerValue value) {
168 visitedObjects.add(value);
169 super.visitIntegerValue(value);
170 }
171
172 /***
173 * @see uba.db.sql.language.VisitorBehavior#visitOrSelectionCriteria(uba.db.sql.language.OrSelectionCriteria)
174 */
175 public void visitOrSelectionCriteria(OrSelectionCriteria criteria) {
176 visitedObjects.add(criteria);
177 super.visitOrSelectionCriteria(criteria);
178 }
179
180 /***
181 * @see uba.db.sql.language.VisitorBehavior#visitQualifiedColumnName(uba.db.sql.language.QualifiedColumnName)
182 */
183 public void visitQualifiedColumnName(QualifiedColumnName name) {
184 visitedObjects.add(name);
185 super.visitQualifiedColumnName(name);
186 }
187
188 /***
189 * @see uba.db.sql.language.VisitorBehavior#visitSingleSelectionCriteria(uba.db.sql.language.SingleSelectionCriteria)
190 */
191 public void visitSingleSelectionCriteria(SingleSelectionCriteria criteria) {
192 visitedObjects.add(criteria);
193 super.visitSingleSelectionCriteria(criteria);
194 }
195
196 /***
197 * @see uba.db.sql.language.VisitorBehavior#visitStringValue(uba.db.sql.language.StringValue)
198 */
199 public void visitStringValue(StringValue value) {
200 visitedObjects.add(value);
201 super.visitStringValue(value);
202 }
203
204 /***
205 * @see uba.db.sql.language.VisitorBehavior#visitTableName(uba.db.sql.language.TableName)
206 */
207 public void visitTableName(TableName name) {
208 visitedObjects.add(name);
209 super.visitTableName(name);
210 }
211
212 /***
213 * @see uba.db.sql.language.VisitorBehavior#visitTableSelectionSource(uba.db.sql.language.TableSelectionSource)
214 */
215 public void visitTableSelectionSource(TableSelectionSource source) {
216 visitedObjects.add(source);
217 super.visitTableSelectionSource(source);
218 }
219
220 /***
221 * @see uba.db.sql.language.VisitorBehavior#visitValueEnumeration(uba.db.sql.language.ValueEnumeration)
222 */
223 public void visitValueEnumeration(ValueEnumeration enumeration) {
224 visitedObjects.add(enumeration);
225 super.visitValueEnumeration(enumeration);
226 }
227
228 /***
229 * Retorna la lista de objetos visitados (en el orden en que fueron
230 * visitados).
231 */
232 public List visitedObjects() {
233 return visitedObjects;
234 }
235
236 /***
237 * @see uba.db.sql.language.VisitorBehavior#visitCharColumnDeclaration(uba.db.sql.language.CharColumnDeclaration)
238 */
239 public void visitCharColumnDeclaration(CharColumnDeclaration declaration) {
240 visitedObjects.add(declaration);
241 super.visitCharColumnDeclaration(declaration);
242 }
243
244 /***
245 * @see uba.db.sql.language.VisitorBehavior#visitIntegerColumnDeclaration(uba.db.sql.language.IntegerColumnDeclaration)
246 */
247 public void visitIntegerColumnDeclaration(IntegerColumnDeclaration declaration) {
248 visitedObjects.add(declaration);
249 super.visitIntegerColumnDeclaration(declaration);
250 }
251 }