1 package uba.db.sql.language;
2
3 import org.apache.commons.lang.builder.EqualsBuilder;
4 import org.apache.commons.lang.builder.HashCodeBuilder;
5
6 /***
7 * Representa una clausula del tipo: value IN valueList (para utilizar en el
8 * criterio de selección de un SELECT).
9 *
10 * @see uba.db.sql.language.SelectionCriteria
11 *
12 * @version $Revision: 1.7 $
13 */
14 public class InSelectionCriteria extends SelectionCriteriaBehavior {
15 private SingleValue valueToFind;
16
17 private ValueList valueList;
18
19 /***
20 * Crea una instancia que representa la expresión: valueToFind IN valueList
21 *
22 * @param valueToFind
23 * valor a buscar
24 * @param valueList
25 * lista de valores (que puede ser tambien un SELECT).
26 */
27 public InSelectionCriteria(SingleValue valueToFind, ValueList valueList) {
28 this.valueToFind = valueToFind;
29 this.valueList = valueList;
30 }
31
32 /***
33 * @see uba.db.sql.language.Visitable#accept(uba.db.sql.language.Visitor)
34 */
35 public void accept(Visitor visitor) {
36 visitor.visitInSelectionCriteria(this);
37 }
38
39 /***
40 * @see java.lang.Object#equals(java.lang.Object)
41 */
42 public boolean equals(Object obj) {
43 return EqualsBuilder.reflectionEquals(this, obj);
44 }
45
46 /***
47 * @see java.lang.Object#hashCode()
48 */
49 public int hashCode() {
50 return HashCodeBuilder.reflectionHashCode(this);
51 }
52
53 /***
54 * Retorna el objeto que representa la lista de valores.
55 */
56 public ValueList valueList() {
57 return valueList;
58 }
59
60 /***
61 * Retorna el valor a buscar en la lista de valores.
62 */
63 public SingleValue valueToFind() {
64 return valueToFind;
65 }
66
67 /***
68 * @see java.lang.Object#toString()
69 */
70 public String toString() {
71 return valueToFind + " IN (" + valueList + ")";
72 }
73
74
75
76
77 public Object valueWith(EvaluationContext context) {
78 /***
79 * @TODO para la segunda parte del tp
80 */
81 return null;
82 }
83 }