You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by jg...@apache.org on 2009/03/10 22:39:16 UTC

svn commit: r752276 - in /ibatis/trunk/java/tools/ibator/core: build/ doc/ htmldoc/ htmldoc/configreference/ htmldoc/usage/ src/org/apache/ibatis/ibator/api/ src/org/apache/ibatis/ibator/config/ src/org/apache/ibatis/ibator/config/xml/ src/org/apache/i...

Author: jgbutler
Date: Tue Mar 10 21:39:15 2009
New Revision: 752276

URL: http://svn.apache.org/viewvc?rev=752276&view=rev
Log:
[Ibator] Fix for IBATIS-586 - Add properties support to columnOverride

Modified:
    ibatis/trunk/java/tools/ibator/core/build/version.properties
    ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt
    ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/columnOverride.html
    ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/ibatorPlugin.html
    ibatis/trunk/java/tools/ibator/core/htmldoc/usage/postgresql.html
    ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IntrospectedColumn.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/ColumnOverride.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/xml/IbatorConfigurationParser.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/xml/ibator-config_1_0.dtd
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/DatabaseIntrospector.java

Modified: ibatis/trunk/java/tools/ibator/core/build/version.properties
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/build/version.properties?rev=752276&r1=752275&r2=752276&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/build/version.properties (original)
+++ ibatis/trunk/java/tools/ibator/core/build/version.properties Tue Mar 10 21:39:15 2009
@@ -1,4 +1,4 @@
 #Ibator build version info
-#Fri Mar 06 13:35:30 CST 2009
+#Tue Mar 10 11:54:23 CDT 2009
 version=1.2.2
-buildNum=715
+buildNum=716

Modified: ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt?rev=752276&r1=752275&r2=752276&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt (original)
+++ ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt Tue Mar 10 21:39:15 2009
@@ -14,6 +14,10 @@
 4. Added some additional command line arguments
 5. Added logging
 6. Added Case Insensitive LIKE example Plugin
+7. Added delimitAllCoumns to table configurations
+8. Added page describing some of PostgreSQL idiosyncracies with Ibator
+9. IBATIS-586 - Added the ability to specify nested property elements on
+   columnOverrides (thanks to Dan Turkenkopf for the idea and a nice initial patch)
 
 -------------------------------------------------------------------------------
 Version 1.2.1:

Modified: ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/columnOverride.html
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/columnOverride.html?rev=752276&r1=752275&r2=752276&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/columnOverride.html (original)
+++ ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/columnOverride.html Tue Mar 10 21:39:15 2009
@@ -95,7 +95,14 @@
 </table>
 
 <h2>Child Elements</h2>
-<p>None</p>
+<ul>
+  <li><a href="property.html">&lt;property&gt;</a> (0..N)
+    Note: any properties specified here will be added to the
+    properties collection of the corresponding IntrospectedColumn.  Ibator does not currently
+    respond to any properties.  This element is provided so that special values
+    for each column may be provided to a plugin in the event that a plugin is
+    coded to generate or modify something unique to a particular column.</li>
+</ul>
 
 </body>
 </html>

Modified: ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/ibatorPlugin.html
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/ibatorPlugin.html?rev=752276&r1=752275&r2=752276&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/ibatorPlugin.html (original)
+++ ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/ibatorPlugin.html Tue Mar 10 21:39:15 2009
@@ -124,7 +124,7 @@
 
 <h2>Child Elements</h2>
 <ul>
-  <li><a href="properties.html">&lt;properties&gt;</a> (0 or 1)</li>
+  <li><a href="property.html">&lt;property&gt;</a> (0 or 1)</li>
 </ul>
 
 </body>

Modified: ibatis/trunk/java/tools/ibator/core/htmldoc/usage/postgresql.html
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/usage/postgresql.html?rev=752276&r1=752275&r2=752276&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/htmldoc/usage/postgresql.html (original)
+++ ibatis/trunk/java/tools/ibator/core/htmldoc/usage/postgresql.html Tue Mar 10 21:39:15 2009
@@ -23,13 +23,15 @@
 If you use all lower case identifiers for PostgreSQL, then Ibator will find tables
 and write correct SQL with no additional consideration.  If you used mixed cased,
 or upper case, identifiers you will
-need to configure Ibator appropriately.</p>
-<p>Use the <code>delimitIdentifiers</code> option if your table or schema
-is mixed case or all upper case.</p>
-<p>For each mixed case or upper case column you could specify a
-<code>&lt;columnOverride&gt;</code> element to specifically delimit the column,
-or you could specify the <code>delimitAllColumns</code> attribute
-to delimit all column names.</p>
+need to configure Ibator appropriately:</p>
+<ul>
+  <li>Use the <code>delimitIdentifiers</code> option if your table or schema
+      is mixed case or all upper case.</li>
+  <li>For each mixed case or upper case column you could specify a
+      <code>&lt;columnOverride&gt;</code> element to specifically delimit the column,
+      or you could specify the <code>delimitAllColumns</code> attribute
+      to delimit all column names.</li>
+</ul>
 <p>Examples:</p>
 <pre>
   &lt;table schema="HR" tableName="Employees"

Modified: ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html?rev=752276&r1=752275&r2=752276&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html (original)
+++ ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html Tue Mar 10 21:39:15 2009
@@ -46,7 +46,7 @@
      <a href="reference/logging.html">Logging</a> page
       for more information.</li>
   <li>Added new example plugin to demonstrate adding case insensitive LIKE
-      support to generated Example classes. See the
+      support to generated Example classes.  See the
      <a href="configreference/ibatorPlugin.html">&lt;ibatorPlugin&gt;</a> page
       for more information.</li>
   <li>Added "delimitAllColumns" attribute to table configurations.  This suppports databases
@@ -56,6 +56,9 @@
   <li>Added a page explaining how to deal with case sensitivity in PostgreSQL.  See the
      <a href="usage/postgresql.html">PostgreSQL</a> page
       for more information.</li>
+  <li>IBATIS-586 - Added the ability to specify nested property elements on columnOverrides.
+      See the <a href="configreference/columnOverride.html">&lt;columnOverride&gt;</a> page
+      for more information. Thanks to Dan Turkenkopf for the idea and a nice initial patch.</li>
 </ul>
 
 <h2>Version 1.2.1</h2>

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IntrospectedColumn.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IntrospectedColumn.java?rev=752276&r1=752275&r2=752276&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IntrospectedColumn.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IntrospectedColumn.java Tue Mar 10 21:39:15 2009
@@ -16,6 +16,7 @@
 package org.apache.ibatis.ibator.api;
 
 import java.sql.Types;
+import java.util.Properties;
 
 import org.apache.ibatis.ibator.api.dom.java.FullyQualifiedJavaType;
 import org.apache.ibatis.ibator.config.IbatorContext;
@@ -56,6 +57,8 @@
     protected boolean isColumnNameDelimited;
     
     protected IntrospectedTable introspectedTable;
+    
+    protected Properties properties;
 
     /**
      * Constructs a Column definition.  This object holds all the 
@@ -64,6 +67,7 @@
      */
     public IntrospectedColumn() {
         super();
+        properties = new Properties();
     }
 
     public int getJdbcType() {
@@ -391,4 +395,12 @@
     public void setIntrospectedTable(IntrospectedTable introspectedTable) {
         this.introspectedTable = introspectedTable;
     }
+
+    public Properties getProperties() {
+        return properties;
+    }
+
+    public void setProperties(Properties properties) {
+        this.properties.putAll(properties);
+    }
 }

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/ColumnOverride.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/ColumnOverride.java?rev=752276&r1=752275&r2=752276&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/ColumnOverride.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/ColumnOverride.java Tue Mar 10 21:39:15 2009
@@ -22,7 +22,7 @@
 /**
  * @author Jeff Butler
  */
-public class ColumnOverride {
+public class ColumnOverride extends PropertyHolder {
 
 	private String columnName;
 
@@ -108,6 +108,8 @@
             xmlElement.addAttribute(new Attribute("delimitedColumnName", configuredDelimitedColumnName)); //$NON-NLS-1$
         }
         
+        addPropertyXmlElements(xmlElement);
+        
         return xmlElement;
     }
 

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/xml/IbatorConfigurationParser.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/xml/IbatorConfigurationParser.java?rev=752276&r1=752275&r2=752276&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/xml/IbatorConfigurationParser.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/xml/IbatorConfigurationParser.java Tue Mar 10 21:39:15 2009
@@ -174,7 +174,7 @@
         for (int i = 0; i < nodeList.getLength(); i++) {
             Node childNode = nodeList.item(i);
 
-            if (childNode.getNodeType() != 1) {
+            if (childNode.getNodeType() != Node.ELEMENT_NODE) {
                 continue;
             }
 
@@ -260,7 +260,7 @@
         for (int i = 0; i < nodeList.getLength(); i++) {
             Node childNode = nodeList.item(i);
 
-            if (childNode.getNodeType() != 1) {
+            if (childNode.getNodeType() != Node.ELEMENT_NODE) {
                 continue;
             }
 
@@ -303,7 +303,7 @@
         for (int i = 0; i < nodeList.getLength(); i++) {
             Node childNode = nodeList.item(i);
 
-            if (childNode.getNodeType() != 1) {
+            if (childNode.getNodeType() != Node.ELEMENT_NODE) {
                 continue;
             }
 
@@ -427,7 +427,7 @@
         for (int i = 0; i < nodeList.getLength(); i++) {
             Node childNode = nodeList.item(i);
 
-            if (childNode.getNodeType() != 1) {
+            if (childNode.getNodeType() != Node.ELEMENT_NODE) {
                 continue;
             }
 
@@ -476,6 +476,19 @@
             co.setColumnNameDelimited(StringUtility.isTrue(delimitedColumnName));
         }
         
+        NodeList nodeList = node.getChildNodes();
+        for (int i = 0; i < nodeList.getLength(); i++) {
+            Node childNode = nodeList.item(i);
+
+            if (childNode.getNodeType() != Node.ELEMENT_NODE) {
+                continue;
+            }
+
+            if ("property".equals(childNode.getNodeName())) { //$NON-NLS-1$
+                parseProperty(co, childNode);
+            }
+        }
+        
         tc.addColumnOverride(co);
     }
 
@@ -539,7 +552,7 @@
         for (int i = 0; i < nodeList.getLength(); i++) {
             Node childNode = nodeList.item(i);
 
-            if (childNode.getNodeType() != 1) {
+            if (childNode.getNodeType() != Node.ELEMENT_NODE) {
                 continue;
             }
 
@@ -563,7 +576,7 @@
         for (int i = 0; i < nodeList.getLength(); i++) {
             Node childNode = nodeList.item(i);
 
-            if (childNode.getNodeType() != 1) {
+            if (childNode.getNodeType() != Node.ELEMENT_NODE) {
                 continue;
             }
 
@@ -590,7 +603,7 @@
         for (int i = 0; i < nodeList.getLength(); i++) {
             Node childNode = nodeList.item(i);
 
-            if (childNode.getNodeType() != 1) {
+            if (childNode.getNodeType() != Node.ELEMENT_NODE) {
                 continue;
             }
 
@@ -620,7 +633,7 @@
         for (int i = 0; i < nodeList.getLength(); i++) {
             Node childNode = nodeList.item(i);
 
-            if (childNode.getNodeType() != 1) {
+            if (childNode.getNodeType() != Node.ELEMENT_NODE) {
                 continue;
             }
 
@@ -657,7 +670,7 @@
         for (int i = 0; i < nodeList.getLength(); i++) {
             Node childNode = nodeList.item(i);
 
-            if (childNode.getNodeType() != 1) {
+            if (childNode.getNodeType() != Node.ELEMENT_NODE) {
                 continue;
             }
 
@@ -739,7 +752,7 @@
         for (int i = 0; i < nodeList.getLength(); i++) {
             Node childNode = nodeList.item(i);
 
-            if (childNode.getNodeType() != 1) {
+            if (childNode.getNodeType() != Node.ELEMENT_NODE) {
                 continue;
             }
 

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/xml/ibator-config_1_0.dtd
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/xml/ibator-config_1_0.dtd?rev=752276&r1=752275&r2=752276&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/xml/ibator-config_1_0.dtd (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/xml/ibator-config_1_0.dtd Tue Mar 10 21:39:15 2009
@@ -166,7 +166,7 @@
   The columnOverride element is used to change certain attributes of the column
   from their default values.
 -->
-<!ELEMENT columnOverride EMPTY>
+<!ELEMENT columnOverride (property*)>
 <!ATTLIST columnOverride
   column CDATA #REQUIRED
   property CDATA #IMPLIED

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/DatabaseIntrospector.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/DatabaseIntrospector.java?rev=752276&r1=752275&r2=752276&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/DatabaseIntrospector.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/DatabaseIntrospector.java Tue Mar 10 21:39:15 2009
@@ -343,6 +343,8 @@
                     if (columnOverride.isColumnNameDelimited()) {
                         introspectedColumn.setColumnNameDelimited(true);
                     }
+                    
+                    introspectedColumn.setProperties(columnOverride.getProperties());
                 }
             }
         }