View Javadoc

1   package org.apache.torque.util;
2   
3   /*
4    * Copyright 2001-2004 The Apache Software Foundation.
5    *
6    * Licensed under the Apache License, Version 2.0 (the "License")
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  
20  /***
21   * A typesafe enum of SQL string fragments.  Used by Criteria and SqlExpression
22   * to build queries.  Criteria also makes most of the constants available
23   * in order to specify a criterion.
24   *
25   * @author <a href="mailto:jmcnally@collab.net"></a>
26   * @author <a href="mailto:fischer@seitenbau.de">Thomas Fischer</a>
27   * @version $Id: SqlEnum.java,v 1.8 2005/01/31 19:43:52 tfischer Exp $
28   * @since 3.0
29   */
30  public class SqlEnum implements java.io.Serializable
31  {
32      private final String s;
33      
34      private SqlEnum(String s) 
35      { 
36          this.s = s;
37      }
38  
39      public final String toString()  
40      { 
41          return s;
42      }
43      
44      public static final SqlEnum EQUAL = 
45          new SqlEnum("=");
46      public static final SqlEnum NOT_EQUAL = 
47              new SqlEnum("<>");
48      public static final SqlEnum ALT_NOT_EQUAL = 
49          new SqlEnum("!=");
50      public static final SqlEnum GREATER_THAN =
51          new SqlEnum(">");
52      public static final SqlEnum LESS_THAN =
53          new SqlEnum("<");
54      public static final SqlEnum GREATER_EQUAL =
55          new SqlEnum(">=");
56      public static final SqlEnum LESS_EQUAL =
57          new SqlEnum("<=");  
58      public static final SqlEnum LIKE =
59          new SqlEnum(" LIKE ");
60      public static final SqlEnum NOT_LIKE =
61          new SqlEnum(" NOT LIKE ");
62      public static final SqlEnum ILIKE =
63          new SqlEnum(" ILIKE ");
64      public static final SqlEnum NOT_ILIKE =
65          new SqlEnum(" NOT ILIKE ");
66      public static final SqlEnum IN =
67          new SqlEnum(" IN ");
68      public static final SqlEnum NOT_IN =
69          new SqlEnum(" NOT IN ");
70      public static final SqlEnum CUSTOM =
71          new SqlEnum("CUSTOM");
72      public static final SqlEnum JOIN =
73          new SqlEnum("JOIN");
74      public static final SqlEnum DISTINCT =
75          new SqlEnum("DISTINCT ");
76      public static final SqlEnum ALL =
77          new SqlEnum("ALL ");
78      public static final SqlEnum ASC =
79          new SqlEnum("ASC");
80      public static final SqlEnum DESC =
81          new SqlEnum("DESC");
82      public static final SqlEnum ISNULL =
83          new SqlEnum(" IS NULL ");
84      public static final SqlEnum ISNOTNULL =
85          new SqlEnum(" IS NOT NULL ");
86      public static final SqlEnum CURRENT_DATE =
87          new SqlEnum("CURRENT_DATE");
88      public static final SqlEnum CURRENT_TIME =
89          new SqlEnum("CURRENT_TIME");
90      public static final SqlEnum LEFT_JOIN =
91          new SqlEnum(" LEFT JOIN ");
92      public static final SqlEnum RIGHT_JOIN =
93          new SqlEnum(" RIGHT JOIN ");
94      public static final SqlEnum INNER_JOIN =
95          new SqlEnum(" INNER JOIN ");
96      public static final SqlEnum ON =
97          new SqlEnum(" ON ");
98      public static final SqlEnum AS =
99          new SqlEnum(" AS ");
100     
101     /***
102      * returns whether o is the same SqlEnum as this object.
103      * Two SqlEnums are considered equal if they contain the same String.
104      * @param o the object to compare the SqlEnum with.
105      */
106     public boolean equals(Object o) 
107     {
108         if (o == null) 
109         {
110             return false;
111         }
112 
113         if (! (o instanceof SqlEnum)) 
114         {
115             return false;
116         }
117 
118         SqlEnum otherEnum = (SqlEnum) o;
119 
120 
121         // both null: true
122         // other null, this not null: false
123         // else compare
124         return (otherEnum.s == null) 
125                 ? (s == null)
126                 : otherEnum.s.equals(s);
127     }
128     
129     /***
130      * returns a hashcode for this object which is consistent with equals()
131      */
132     public int hashCode() 
133     {
134         return (s == null) 
135                 ? 0
136                 : s.hashCode();
137     }
138 }