svn commit: r1936826 - in db/torque/trunk/torque-runtime/src/main/java/org/apache/torque: criteria sql sql/whereclausebuilder

[email protected] Mon, 03 Aug 2026 13:40:52 -0000
Newsgroups gmane.comp.jakarta.turbine.torque.devel
Message-ID <178576445230.1863416.7063867675188416607@svn03-he-fi>
Author: tv
Date: Mon Aug  3 13:40:51 2026
New Revision: 1936826

Log:
Make SqlEnum a proper enum

Modified:
   db/torque/trunk/torque-runtime/src/main/java/org/apache/torque/criteria/SqlEnum.java
   db/torque/trunk/torque-runtime/src/main/java/org/apache/torque/sql/SqlBuilder.java
   db/torque/trunk/torque-runtime/src/main/java/org/apache/torque/sql/whereclausebuilder/EnumValueBuilder.java

Modified: db/torque/trunk/torque-runtime/src/main/java/org/apache/torque/criteria/SqlEnum.java
==============================================================================
--- db/torque/trunk/torque-runtime/src/main/java/org/apache/torque/criteria/SqlEnum.java	Mon Aug  3 13:33:07 2026	(r1936825)
+++ db/torque/trunk/torque-runtime/src/main/java/org/apache/torque/criteria/SqlEnum.java	Mon Aug  3 13:40:51 2026	(r1936826)
@@ -29,179 +29,108 @@ package org.apache.torque.criteria;
  * @version $Id$
  * @since 3.0
  */
-public final class SqlEnum implements java.io.Serializable
+public enum SqlEnum
 {
-    /**
-     * Serial version
-     */
-    private static final long serialVersionUID = 5963149836513364800L;
-
-    /** The SQL expression. */
-    private final String s;
-
-    /**
-     * The number of operands, if the SqlEnum is a comparison operator.
-     * -1 if the SqlEnum is no comparison operator.
-     * A Set operand (e.g. in IN) is counted as one operand.
-     */
-    private final int numberOfCompareOperands;
-
-    private SqlEnum(final String s, final int numberOfCompareOperands)
-    {
-        this.s = s;
-        this.numberOfCompareOperands = numberOfCompareOperands;
-    }
-
-    @Override
-    public String toString()
-    {
-        return s;
-    }
-
-    /**
-     * Returns the number of operands, if the SqlEnum is a comparison operator.
-     * A Set operand (e.g. in IN) is counted as one operand.
-     *
-     * @return the number of compare operands, or -1 if the SqlEnum
-     *         is no comparison operator.
-     */
-    public int getNumberOfCompareOperands()
-    {
-        return numberOfCompareOperands;
-    }
-
     /** SQL Expression "=". */
-    public static final SqlEnum EQUAL =
-            new SqlEnum("=", 2);
+    EQUAL("=", 2),
     /** SQL Expression "&lt;&gt;". */
-    public static final SqlEnum NOT_EQUAL =
-            new SqlEnum("<>", 2);
+    NOT_EQUAL("<>", 2),
     /** SQL Expression "!=". */
-    public static final SqlEnum ALT_NOT_EQUAL =
-            new SqlEnum("!=", 2);
+    ALT_NOT_EQUAL("!=", 2),
     /** SQL Expression "&gt;". */
-    public static final SqlEnum GREATER_THAN =
-            new SqlEnum(">", 2);
+    GREATER_THAN(">", 2),
     /** SQL Expression "&lt;". */
-    public static final SqlEnum LESS_THAN =
-            new SqlEnum("<", 2);
+    LESS_THAN("<", 2),
     /** SQL Expression "&gt;=". */
-    public static final SqlEnum GREATER_EQUAL =
-            new SqlEnum(">=", 2);
+    GREATER_EQUAL(">=", 2),
     /** SQL Expression "&lt;=". */
-    public static final SqlEnum LESS_EQUAL =
-            new SqlEnum("<=", 2);
+    LESS_EQUAL("<=", 2),
     /** SQL Expression " LIKE ". */
-    public static final SqlEnum LIKE =
-            new SqlEnum(" LIKE ", 2);
+    LIKE(" LIKE ", 2),
     /** SQL Expression " NOT LIKE ". */
-    public static final SqlEnum NOT_LIKE =
-            new SqlEnum(" NOT LIKE ", 2);
+    NOT_LIKE(" NOT LIKE ", 2),
     /** SQL Expression " ILIKE ". */
-    public static final SqlEnum ILIKE =
-            new SqlEnum(" ILIKE ", 2);
+    ILIKE(" ILIKE ", 2),
     /** SQL Expression " NOT ILIKE ". */
-    public static final SqlEnum NOT_ILIKE =
-            new SqlEnum(" NOT ILIKE ", 2);
+    NOT_ILIKE(" NOT ILIKE ", 2),
     /** SQL Expression " IN ". */
-    public static final SqlEnum IN =
-            new SqlEnum(" IN ", 2);
+    IN(" IN ", 2),
     /** SQL Expression " NOT IN ". */
-    public static final SqlEnum NOT_IN =
-            new SqlEnum(" NOT IN ", 2);
+    NOT_IN(" NOT IN ", 2),
     /** SQL Expression "JOIN". */
-    public static final SqlEnum JOIN =
-            new SqlEnum("JOIN", -1);
+    JOIN("JOIN", -1),
     /** SQL Expression "DISTINCT ". */
-    public static final SqlEnum DISTINCT =
-            new SqlEnum("DISTINCT ", -1);
+    DISTINCT("DISTINCT ", -1),
     /** SQL Expression "ALL ". */
-    public static final SqlEnum ALL =
-            new SqlEnum("ALL ", -1);
+    ALL("ALL ", -1),
     /** SQL Expression "ASC". */
-    public static final SqlEnum ASC =
-            new SqlEnum("ASC", -1);
+    ASC("ASC", -1),
     /** SQL Expression "DESC". */
-    public static final SqlEnum DESC =
-            new SqlEnum("DESC", -1);
+    DESC("DESC", -1),
     /** SQL Expression " IS NULL". */
-    public static final SqlEnum ISNULL =
-            new SqlEnum(" IS NULL", 1);
+    ISNULL(" IS NULL", 1),
     /** SQL Expression " IS NOT NULL". */
-    public static final SqlEnum ISNOTNULL =
-            new SqlEnum(" IS NOT NULL", 1);
+    ISNOTNULL(" IS NOT NULL", 1),
     /** SQL Expression "CURRENT_DATE". */
-    public static final SqlEnum CURRENT_DATE =
-            new SqlEnum("CURRENT_DATE", -1);
+    CURRENT_DATE("CURRENT_DATE", -1),
     /** SQL Expression "CURRENT_TIME". */
-    public static final SqlEnum CURRENT_TIME =
-            new SqlEnum("CURRENT_TIME", -1);
+    CURRENT_TIME("CURRENT_TIME", -1),
     /** SQL Expression "CURRENT_TIMESTAMP". */
-    public static final SqlEnum CURRENT_TIMESTAMP =
-            new SqlEnum("CURRENT_TIMESTAMP", -1);
+    CURRENT_TIMESTAMP("CURRENT_TIMESTAMP", -1),
     /** SQL Expression " ON ". */
-    public static final SqlEnum ON =
-            new SqlEnum(" ON ", -1);
+    ON(" ON ", -1),
     /** SQL Expression " AS ". */
-    public static final SqlEnum AS =
-            new SqlEnum(" AS ", -1);
+    AS(" AS ", -1),
     /** SQL Expression " ESCAPE ". */
-    public static final SqlEnum ESCAPE =
-            new SqlEnum(" ESCAPE ", -1);
+    ESCAPE(" ESCAPE ", -1),
     /** SQL Expression " UNION ". */
-    public static final SqlEnum UNION =
-            new SqlEnum(" UNION ", -1);
+    UNION(" UNION ", -1),
     /** SQL Expression " UNION ALL ". */
-    public static final SqlEnum UNION_ALL =
-            new SqlEnum(" UNION ALL ", -1);
+    UNION_ALL(" UNION ALL ", -1),
     /** SQL Expression " INTERSECT ". */
-    public static final SqlEnum INTERSECT =
-            new SqlEnum(" INTERSECT ", -1);
+    INTERSECT(" INTERSECT ", -1),
     /** SQL Expression " INTERSECT ALL ". */
-    public static final SqlEnum INTERSECT_ALL =
-            new SqlEnum(" INTERSECT ALL ", -1);
+    INTERSECT_ALL(" INTERSECT ALL ", -1),
     /** SQL Expression " EXCEPT ". */
-    public static final SqlEnum EXCEPT =
-            new SqlEnum(" EXCEPT ", -1);
+    EXCEPT(" EXCEPT ", -1),
     /** SQL Expression " EXCEPT ALL ". */
-    public static final SqlEnum EXCEPT_ALL =
-            new SqlEnum(" EXCEPT ALL ", -1);
+    EXCEPT_ALL(" EXCEPT ALL ", -1),
     /** SQL Expression " MINUS ". */
-    public static final SqlEnum MINUS =
-            new SqlEnum(" MINUS ", -1);
+    MINUS(" MINUS ", -1),
     /** SQL Expression " MINUS ALL ". */
-    public static final SqlEnum MINUS_ALL =
-            new SqlEnum(" MINUS ALL ", -1);
+    MINUS_ALL(" MINUS ALL ", -1);
+
+    /** The SQL expression. */
+    private final String s;
 
     /**
-     * returns whether o is the same SqlEnum as this object.
-     * Two SqlEnums are considered equal if they contain the same String.
-     * @param o the object to compare the SqlEnum with.
+     * The number of operands, if the SqlEnum is a comparison operator.
+     * -1 if the SqlEnum is no comparison operator.
+     * A Set operand (e.g. in IN) is counted as one operand.
      */
-    @Override
-    public boolean equals(final Object o)
+    private final int numberOfCompareOperands;
+
+    private SqlEnum(final String s, final int numberOfCompareOperands)
     {
-        if (o != null && o instanceof SqlEnum otherEnum)
-        {
-            // both null: true
-            // other null, this not null: false
-            // else compare
-            return (otherEnum.s == null)
-                    ? (s == null)
-                            : otherEnum.s.equals(s);
-        }
+        this.s = s;
+        this.numberOfCompareOperands = numberOfCompareOperands;
+    }
 
-        return false;
+    @Override
+    public String toString()
+    {
+        return s;
     }
 
     /**
-     * returns a hashcode for this object which is consistent with equals()
+     * Returns the number of operands, if the SqlEnum is a comparison operator.
+     * A Set operand (e.g. in IN) is counted as one operand.
+     *
+     * @return the number of compare operands, or -1 if the SqlEnum
+     *         is no comparison operator.
      */
-    @Override
-    public int hashCode()
+    public int getNumberOfCompareOperands()
     {
-        return (s == null)
-                ? 0
-                        : s.hashCode();
+        return numberOfCompareOperands;
     }
 }

Modified: db/torque/trunk/torque-runtime/src/main/java/org/apache/torque/sql/SqlBuilder.java
==============================================================================
--- db/torque/trunk/torque-runtime/src/main/java/org/apache/torque/sql/SqlBuilder.java	Mon Aug  3 13:33:07 2026	(r1936825)
+++ db/torque/trunk/torque-runtime/src/main/java/org/apache/torque/sql/SqlBuilder.java	Mon Aug  3 13:40:51 2026	(r1936826)
@@ -19,7 +19,6 @@ package org.apache.torque.sql;
  * under the License.
  */
 
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -75,19 +74,14 @@ public final class SqlBuilder
     /**
      * The list of WhereClausePsPartBuilders which can build the where clause.
      */
-    private static List<WhereClausePsPartBuilder> whereClausePsPartBuilders
-        = new ArrayList<>();
-
-    static
-    {
-        whereClausePsPartBuilders.add(new EnumValueBuilder());
-        whereClausePsPartBuilders.add(new VerbatimSqlConditionBuilder());
-        whereClausePsPartBuilders.add(new CurrentDateTimePsPartBuilder());
-        whereClausePsPartBuilders.add(new NullValueBuilder());
-        whereClausePsPartBuilders.add(new LikeBuilder());
-        whereClausePsPartBuilders.add(new InBuilder());
-        whereClausePsPartBuilders.add(new StandardBuilder());
-    }
+    private static final List<WhereClausePsPartBuilder> whereClausePsPartBuilders = List.of(
+        new EnumValueBuilder(),
+        new VerbatimSqlConditionBuilder(),
+        new CurrentDateTimePsPartBuilder(),
+        new NullValueBuilder(),
+        new LikeBuilder(),
+        new InBuilder(),
+        new StandardBuilder());
 
     /**
      * Private constructor to prevent instantiation.

Modified: db/torque/trunk/torque-runtime/src/main/java/org/apache/torque/sql/whereclausebuilder/EnumValueBuilder.java
==============================================================================
--- db/torque/trunk/torque-runtime/src/main/java/org/apache/torque/sql/whereclausebuilder/EnumValueBuilder.java	Mon Aug  3 13:33:07 2026	(r1936825)
+++ db/torque/trunk/torque-runtime/src/main/java/org/apache/torque/sql/whereclausebuilder/EnumValueBuilder.java	Mon Aug  3 13:40:51 2026	(r1936826)
@@ -25,6 +25,7 @@ import java.lang.reflect.Method;
 import org.apache.torque.TorqueException;
 import org.apache.torque.adapter.Adapter;
 import org.apache.torque.criteria.PreparedStatementPart;
+import org.apache.torque.criteria.SqlEnum;
 import org.apache.torque.sql.Query;
 import org.apache.torque.sql.SqlBuilder;
 import org.apache.torque.sql.WhereClauseExpression;
@@ -134,7 +135,7 @@ public class EnumValueBuilder extends Ab
             final WhereClauseExpression whereClauseExpression,
             final Adapter adapter)
     {
-        return (whereClauseExpression.getLValue() instanceof Enum
-                || whereClauseExpression.getRValue() instanceof Enum);
+        return ((whereClauseExpression.getLValue() instanceof Enum && !(whereClauseExpression.getLValue() instanceof SqlEnum))
+                || (whereClauseExpression.getRValue() instanceof Enum) && !(whereClauseExpression.getRValue() instanceof SqlEnum));
     }
 }