View Javadoc

1   package org.apache.torque.util;
2   
3   /*
4    * Copyright 2001-2005 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   * A typesafe enum of SQL string fragments.  Used by Criteria and SqlExpression
21   * to build queries.  Criteria also makes most of the constants available
22   * in order to specify a criterion.
23   *
24   * @author <a href="mailto:jmcnally@collab.net"></a>
25   * @author <a href="mailto:fischer@seitenbau.de">Thomas Fischer</a>
26   * @version $Id: SqlEnum.java 239639 2005-08-24 12:39:47Z henning $
27   * @since 3.0
28   */
29  public class SqlEnum implements java.io.Serializable
30  {
31      private final String s;
32  
33      private SqlEnum(String s)
34      {
35          this.s = s;
36      }
37  
38      public final String toString()
39      {
40          return s;
41      }
42  
43      public static final SqlEnum EQUAL =
44          new SqlEnum("=");
45      public static final SqlEnum NOT_EQUAL =
46              new SqlEnum("<>");
47      public static final SqlEnum ALT_NOT_EQUAL =
48          new SqlEnum("!=");
49      public static final SqlEnum GREATER_THAN =
50          new SqlEnum(">");
51      public static final SqlEnum LESS_THAN =
52          new SqlEnum("<");
53      public static final SqlEnum GREATER_EQUAL =
54          new SqlEnum(">=");
55      public static final SqlEnum LESS_EQUAL =
56          new SqlEnum("<=");
57      public static final SqlEnum LIKE =
58          new SqlEnum(" LIKE ");
59      public static final SqlEnum NOT_LIKE =
60          new SqlEnum(" NOT LIKE ");
61      public static final SqlEnum ILIKE =
62          new SqlEnum(" ILIKE ");
63      public static final SqlEnum NOT_ILIKE =
64          new SqlEnum(" NOT ILIKE ");
65      public static final SqlEnum IN =
66          new SqlEnum(" IN ");
67      public static final SqlEnum NOT_IN =
68          new SqlEnum(" NOT IN ");
69      public static final SqlEnum CUSTOM =
70          new SqlEnum("CUSTOM");
71      public static final SqlEnum JOIN =
72          new SqlEnum("JOIN");
73      public static final SqlEnum DISTINCT =
74          new SqlEnum("DISTINCT ");
75      public static final SqlEnum ALL =
76          new SqlEnum("ALL ");
77      public static final SqlEnum ASC =
78          new SqlEnum("ASC");
79      public static final SqlEnum DESC =
80          new SqlEnum("DESC");
81      public static final SqlEnum ISNULL =
82          new SqlEnum(" IS NULL ");
83      public static final SqlEnum ISNOTNULL =
84          new SqlEnum(" IS NOT NULL ");
85      public static final SqlEnum CURRENT_DATE =
86          new SqlEnum("CURRENT_DATE");
87      public static final SqlEnum CURRENT_TIME =
88          new SqlEnum("CURRENT_TIME");
89      public static final SqlEnum LEFT_JOIN =
90          new SqlEnum(" LEFT JOIN ");
91      public static final SqlEnum RIGHT_JOIN =
92          new SqlEnum(" RIGHT JOIN ");
93      public static final SqlEnum INNER_JOIN =
94          new SqlEnum(" INNER JOIN ");
95      public static final SqlEnum ON =
96          new SqlEnum(" ON ");
97      public static final SqlEnum AS =
98          new SqlEnum(" AS ");
99  
100     /***
101      * returns whether o is the same SqlEnum as this object.
102      * Two SqlEnums are considered equal if they contain the same String.
103      * @param o the object to compare the SqlEnum with.
104      */
105     public boolean equals(Object o)
106     {
107         if (o == null)
108         {
109             return false;
110         }
111 
112         if (! (o instanceof SqlEnum))
113         {
114             return false;
115         }
116 
117         SqlEnum otherEnum = (SqlEnum) o;
118 
119 
120         // both null: true
121         // other null, this not null: false
122         // else compare
123         return (otherEnum.s == null)
124                 ? (s == null)
125                 : otherEnum.s.equals(s);
126     }
127 
128     /***
129      * returns a hashcode for this object which is consistent with equals()
130      */
131     public int hashCode()
132     {
133         return (s == null)
134                 ? 0
135                 : s.hashCode();
136     }
137 }