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 }