You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2007/06/08 22:52:52 UTC

svn commit: r545617 - /cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/query/SQLTemplate.java

Author: aadamchik
Date: Fri Jun  8 13:52:51 2007
New Revision: 545617

URL: http://svn.apache.org/viewvc?view=rev&rev=545617
Log:
CAY-800: SQLTemplate improvement
modeler support

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/query/SQLTemplate.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/query/SQLTemplate.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/query/SQLTemplate.java?view=diff&rev=545617&r1=545616&r2=545617
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/query/SQLTemplate.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/query/SQLTemplate.java Fri Jun  8 13:52:51 2007
@@ -48,7 +48,7 @@
  * </p>
  * 
  * <pre>
- *  SELECT ID, NAME FROM SOME_TABLE WHERE NAME LIKE $a
+ *    SELECT ID, NAME FROM SOME_TABLE WHERE NAME LIKE $a
  * </pre>
  * 
  * <p>
@@ -75,6 +75,8 @@
 public class SQLTemplate extends AbstractQuery implements ParameterizedQuery,
         XMLSerializable {
 
+    static final String COLUMN_NAME_CAPITALIZATION_PROPERTY = "cayenne.SQLTemplate.columnNameCapitalization";
+
     /**
      * @since 3.0
      */
@@ -218,6 +220,12 @@
 
         selectInfo.encodeAsXML(encoder);
 
+        if (getColumnNamesCapitalization() != null) {
+            encoder.printProperty(
+                    COLUMN_NAME_CAPITALIZATION_PROPERTY,
+                    getColumnNamesCapitalization());
+        }
+
         // encode default SQL
         if (defaultTemplate != null) {
             encoder.print("<sql><![CDATA[");
@@ -260,6 +268,16 @@
     public void initWithProperties(Map properties) {
         // must init defaults even if properties are empty
         selectInfo.initWithProperties(properties);
+
+        if (properties == null) {
+            properties = Collections.EMPTY_MAP;
+        }
+
+        Object columnNamesCapitalization = properties
+                .get(COLUMN_NAME_CAPITALIZATION_PROPERTY);
+        this.columnNamesCapitalization = (columnNamesCapitalization != null)
+                ? columnNamesCapitalization.toString()
+                : null;
     }
 
     /**
@@ -566,7 +584,8 @@
      * across database engines that can have varying default capitalization. Default
      * (null) value indicates that column names provided in result set are used unchanged.
      * <p/> Note that while a non-default setting is useful for queries that do not rely
-     * on a #result directive to describe columns, it works for all SQLTemplates the same way.
+     * on a #result directive to describe columns, it works for all SQLTemplates the same
+     * way.
      * 
      * @param columnNameCapitalization Can be null of one of
      *            {@link #LOWERCASE_COLUMN_NAMES} or {@link #UPPERCASE_COLUMN_NAMES}.