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 2007/02/17 07:14:21 UTC

svn commit: r508716 [1/10] - in /ibatis/trunk/java/mapper/mapper2/tools/abator/core: build/ devlib/ doc/ src/org/apache/ibatis/abator/ant/ src/org/apache/ibatis/abator/api/ src/org/apache/ibatis/abator/config/ src/org/apache/ibatis/abator/internal/db/ ...

Author: jgbutler
Date: Fri Feb 16 22:14:18 2007
New Revision: 508716

URL: http://svn.apache.org/viewvc?view=rev&rev=508716
Log:
Abator: Lots of changes and tests to deal with the cases where column names need to be delimited.

Added:
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/devlib/hsqldb1.8.0.7.jar   (with props)
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/ant/SqlScriptRunnerTask.java
Removed:
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/devlib/hsqldb.jar
Modified:
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/build/build.xml
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/build/version.properties
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/doc/ReleaseNotes.txt
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/ant/AbatorAntTask.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/IntrospectedTable.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/config/AbatorContext.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/db/ColumnDefinition.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/db/IntrospectedTableImpl.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/java/dao/BaseDAOGenerator.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/java/dao/BaseLegacyDAOGenerator.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/java/model/JavaModelGeneratorJava2Impl.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/sqlmap/ExampleClause.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/sqlmap/SqlMapGeneratorIterateImpl.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/sqlmap/SqlMapGeneratorLegacyImpl.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/util/StringUtility.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/util/messages/messages.properties
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/CreateDB.sql
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/abatorConfig.xml
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/execute/conditional/java2/ConditionalJava2Tests.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/execute/conditional/java2/SqlMapConfig.xml
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/execute/conditional/legacy/ConditionalLegacyTests.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/execute/conditional/legacy/SqlMapConfig.xml
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/execute/flat/java2/FlatJava2Tests.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/execute/flat/java2/SqlMapConfig.xml
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/execute/flat/legacy/FlatLegacyTests.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/execute/flat/legacy/SqlMapConfig.xml
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/execute/hierarchical/java2/HierarchicalJava2Tests.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/execute/hierarchical/java2/SqlMapConfig.xml
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/execute/hierarchical/legacy/HierarchicalLegacyTests.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/execute/hierarchical/legacy/SqlMapConfig.xml
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava5/abatortest/CreateDB.sql
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava5/abatortest/abatorConfig.xml
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava5/abatortest/execute/conditional/java2/ConditionalJava2Tests.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava5/abatortest/execute/conditional/java2/SqlMapConfig.xml
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava5/abatortest/execute/conditional/java5/ConditionalJava5Tests.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava5/abatortest/execute/conditional/java5/SqlMapConfig.xml
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava5/abatortest/execute/conditional/legacy/ConditionalLegacyTests.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava5/abatortest/execute/conditional/legacy/SqlMapConfig.xml
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava5/abatortest/execute/flat/java2/FlatJava2Tests.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava5/abatortest/execute/flat/java2/SqlMapConfig.xml
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava5/abatortest/execute/flat/java5/FlatJava5Tests.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava5/abatortest/execute/flat/java5/SqlMapConfig.xml
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava5/abatortest/execute/flat/legacy/FlatLegacyTests.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava5/abatortest/execute/flat/legacy/SqlMapConfig.xml
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava5/abatortest/execute/hierarchical/java2/HierarchicalJava2Tests.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava5/abatortest/execute/hierarchical/java2/SqlMapConfig.xml
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava5/abatortest/execute/hierarchical/java5/HierarchicalJava5Tests.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava5/abatortest/execute/hierarchical/java5/SqlMapConfig.xml
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava5/abatortest/execute/hierarchical/legacy/HierarchicalLegacyTests.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava5/abatortest/execute/hierarchical/legacy/SqlMapConfig.xml

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/build/build.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/build/build.xml?view=diff&rev=508716&r1=508715&r2=508716
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/build/build.xml (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/build/build.xml Fri Feb 16 22:14:18 2007
@@ -164,8 +164,18 @@
     <mkdir dir="${generated.bin.dir.java2}"/>
     <mkdir dir="${generated.bin.dir.java5}"/>
 	  	
+    <!-- note that the class does not exist until the build runs.
+    	 Validating Ant editors will complain that the task cannot be
+    	 found, but it's not really an error. -->
+    <taskdef name="runscript"
+             classname="org.apache.ibatis.abator.ant.SqlScriptRunnerTask">
+      <classpath>
+    	  <pathelement location="${deploy.files}/abator.jar"/>
+      </classpath>
+    </taskdef>
+  	
   	<!-- create the test database -->
-  	<sql driver="org.hsqldb.jdbcDriver"
+  	<runscript driver="org.hsqldb.jdbcDriver"
   		url="jdbc:hsqldb:mem:aname"
   		userid="sa"
   		password=""
@@ -274,7 +284,7 @@
       <classpath>
       	<pathelement location="${generated.bin.dir.java2}"/>
 		<pathelement location="${basedir}/../devlib/ibatis-2.3.0.677.jar" />
-		<pathelement location="${basedir}/../devlib/hsqldb.jar" />
+		<pathelement location="${basedir}/../devlib/hsqldb1.8.0.7.jar" />
       </classpath>
     </junit>
   </target>
@@ -290,7 +300,7 @@
       <classpath>
       	<pathelement location="${generated.bin.dir.java5}"/>
 		<pathelement location="${basedir}/../devlib/ibatis-2.3.0.677.jar" />
-		<pathelement location="${basedir}/../devlib/hsqldb.jar" />
+		<pathelement location="${basedir}/../devlib/hsqldb1.8.0.7.jar" />
       </classpath>
     </junit>
   </target>
@@ -306,7 +316,7 @@
       <classpath>
       	<pathelement location="${generated.source.dir.java5}"/>
 		<pathelement location="${basedir}/../devlib/ibatis-2.3.0.677.jar" />
-		<pathelement location="${basedir}/../devlib/hsqldb.jar" />
+		<pathelement location="${basedir}/../devlib/hsqldb1.8.0.7.jar" />
       </classpath>
     </junit>
 
@@ -320,7 +330,7 @@
       <classpath>
       	<pathelement location="${generated.source.dir.java2}"/>
 		<pathelement location="${basedir}/../devlib/ibatis-2.3.0.677.jar" />
-		<pathelement location="${basedir}/../devlib/hsqldb.jar" />
+		<pathelement location="${basedir}/../devlib/hsqldb1.8.0.7.jar" />
       </classpath>
     </junit>
   </target>

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/build/version.properties
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/build/version.properties?view=diff&rev=508716&r1=508715&r2=508716
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/build/version.properties (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/build/version.properties Fri Feb 16 22:14:18 2007
@@ -1,4 +1,4 @@
 #Abator build version info
-#Thu Feb 15 17:37:34 CST 2007
+#Sat Feb 17 00:07:43 CST 2007
 version=1.0.1
-buildNum=323
+buildNum=339

Added: ibatis/trunk/java/mapper/mapper2/tools/abator/core/devlib/hsqldb1.8.0.7.jar
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/devlib/hsqldb1.8.0.7.jar?view=auto&rev=508716
==============================================================================
Binary file - no diff available.

Propchange: ibatis/trunk/java/mapper/mapper2/tools/abator/core/devlib/hsqldb1.8.0.7.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/doc/ReleaseNotes.txt
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/doc/ReleaseNotes.txt?view=diff&rev=508716&r1=508715&r2=508716
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/doc/ReleaseNotes.txt (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/doc/ReleaseNotes.txt Fri Feb 16 22:14:18 2007
@@ -18,6 +18,9 @@
    extra Java code or XML elements to any generated object.  Will make it
    easier to create customized generators
 6. Added SYBASE database dialect for generated keys
+7. Added the ability to specify that resultMaps should use column indexes
+   rather than column name.  This is necessary in poorly designed tables
+   where column names differ only in case.  This may also improve performance.
 
 -------------------------------------------------------------------------------
 Version 1.0.0:

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/ant/AbatorAntTask.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/ant/AbatorAntTask.java?view=diff&rev=508716&r1=508715&r2=508716
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/ant/AbatorAntTask.java (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/ant/AbatorAntTask.java Fri Feb 16 22:14:18 2007
@@ -101,10 +101,9 @@
             abator.generate(new AntProgressCallback(this, verbose));
             
         } catch (XMLParserException e) {
-            List errors = e.getErrors();
-            Iterator iter = errors.iterator();
-            while (iter.hasNext()) {
-                log((String) iter.next(), Project.MSG_ERR);
+            Iterator errors = e.getErrors().iterator();
+            while (errors.hasNext()) {
+                log((String) errors.next(), Project.MSG_ERR);
             }
             
             throw new BuildException(e.getMessage());
@@ -113,6 +112,10 @@
         } catch (IOException e) {
             throw new BuildException(e.getMessage());
         } catch (InvalidConfigurationException e) {
+            Iterator errors = e.getErrors().iterator();
+            while (errors.hasNext()) {
+                log((String) errors.next(), Project.MSG_ERR);
+            }
             throw new BuildException(e.getMessage());
         } catch (InterruptedException e) {
             // ignore (will never happen with the DefaultShellCallback)

Added: ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/ant/SqlScriptRunnerTask.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/ant/SqlScriptRunnerTask.java?view=auto&rev=508716
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/ant/SqlScriptRunnerTask.java (added)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/ant/SqlScriptRunnerTask.java Fri Feb 16 22:14:18 2007
@@ -0,0 +1,170 @@
+/*
+ *  Copyright 2007 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.ibatis.abator.ant;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import org.apache.ibatis.abator.internal.util.StringUtility;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+
+/**
+ * This task executes an SQL script.  It is used during the Abator build
+ * because the built in Ant SQL task treats some of the columns in "awful table"
+ * as properties.
+ * 
+ * This task is very simplistic and not intended for general use.
+ * 
+ * @author Jeff Butler
+ *
+ */
+public class SqlScriptRunnerTask extends Task {
+    
+    private String driver;
+    private String url;
+    private String userid;
+    private String password;
+    private String src;
+
+    public void execute() throws BuildException {
+        
+        Connection connection = null;
+        
+        try {
+            Class.forName(driver);
+            connection = DriverManager.getConnection(url, userid, password);
+            
+            Statement statement = connection.createStatement();
+            
+            BufferedReader br = new BufferedReader(new FileReader(src));
+            
+            String sql;
+            
+            while ((sql = readStatement(br)) != null) {
+                statement.execute(sql);
+            }
+            
+            closeStatement(statement);
+            connection.commit();
+            br.close();
+        } catch (Exception e) {
+            throw new BuildException(e.getMessage());
+        } finally {
+            closeConnection(connection);
+        }
+    }
+    
+    public String getDriver() {
+        return driver;
+    }
+
+    public void setDriver(String driver) {
+        this.driver = driver;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getSrc() {
+        return src;
+    }
+
+    public void setSrc(String src) {
+        this.src = src;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getUserid() {
+        return userid;
+    }
+
+    public void setUserid(String userid) {
+        this.userid = userid;
+    }
+
+    private void closeConnection(Connection connection) {
+        if (connection != null) {
+            try {
+                connection.close();
+            } catch (SQLException e) {
+                // ignore
+                ;
+            }
+        }
+    }
+          
+    private void closeStatement(Statement statement) {
+        if (statement != null) {
+            try {
+                statement.close();
+            } catch (SQLException e) {
+                // ignore
+                ;
+            }
+        }
+    }
+    
+    private String readStatement(BufferedReader br) throws IOException {
+        StringBuffer sb = new StringBuffer();
+        
+        String line;
+        
+        while ((line = br.readLine()) != null) {
+            if (line.startsWith("--")) {
+                continue;
+            }
+            
+            if (!StringUtility.stringHasValue(line)) {
+                continue;
+            }
+            
+            if (line.endsWith(";")) {
+                sb.append(line.substring(0, line.length() - 1));
+                break;
+            } else {
+                sb.append(line);
+            }
+        }
+        
+        String s = sb.toString().trim();
+
+        if (s.length() > 0) {
+            log("Found Statement: " + s, Project.MSG_DEBUG);
+        }
+        
+        return s.length() > 0 ? s : null;
+    }
+}

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/IntrospectedTable.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/IntrospectedTable.java?view=diff&rev=508716&r1=508715&r2=508716
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/IntrospectedTable.java (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/IntrospectedTable.java Fri Feb 16 22:14:18 2007
@@ -85,6 +85,8 @@
      */
     Iterator getNonBLOBColumns();
     
+    int getNonBLOBColumnCount();
+    
     Iterator getNonPrimaryKeyColumns();
     
     Iterator getBLOBColumns();
@@ -92,4 +94,6 @@
     boolean hasBLOBColumns();
     
     AbatorRules getRules();
+    
+    String getTableConfigurationProperty(String property);
 }

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/config/AbatorContext.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/config/AbatorContext.java?view=diff&rev=508716&r1=508715&r2=508716
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/config/AbatorContext.java (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/config/AbatorContext.java Fri Feb 16 22:14:18 2007
@@ -207,15 +207,30 @@
 			errors.add(Messages.getString("ValidationError.6", Integer.toString(listPosition))); //$NON-NLS-1$
 		}
 
+        String tableName = StringUtility.composeFullyQualifiedTableName(
+                tc.getCatalog(), tc.getSchema(), tc.getTableName(), '.');
+        
 		if (tc.getGeneratedKey() != null
 				&& !StringUtility.stringHasValue(tc.getGeneratedKey()
 						.getRuntimeSqlStatement())) {
-            String tableName = StringUtility.composeFullyQualifiedTableName(
-                    tc.getCatalog(), tc.getSchema(), tc.getTableName(), '.');
 	        errors
 				.add(Messages.getString("ValidationError.7",  //$NON-NLS-1$
 						tableName));
 		}
+        
+        if ("true".equalsIgnoreCase((String) tc.getProperties().get("useColumnIndexes"))) {  //$NON-NLS-1$  //$NON-NLS-2$
+            // when using column indexes, either both or neither query ids should be set
+            if (tc.isSelectByExampleStatementEnabled() && tc.isSelectByPrimaryKeyStatementEnabled()) {
+                boolean queryId1Set = StringUtility.stringHasValue(tc.getSelectByExampleQueryId());
+                boolean queryId2Set = StringUtility.stringHasValue(tc.getSelectByPrimaryKeyQueryId());
+            
+                if (queryId1Set != queryId2Set) {
+                    errors
+                    .add(Messages.getString("ValidationError.13",  //$NON-NLS-1$
+                        tableName));
+                }
+            }
+        }
 	}
 
 	/**

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/db/ColumnDefinition.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/db/ColumnDefinition.java?view=diff&rev=508716&r1=508715&r2=508716
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/db/ColumnDefinition.java (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/db/ColumnDefinition.java Fri Feb 16 22:14:18 2007
@@ -32,8 +32,6 @@
 public class ColumnDefinition {
     private String actualColumnName;
     
-    private String escapedColumnName;
-
     private int jdbcType;
 
     private boolean nullable;
@@ -59,27 +57,6 @@
     private boolean isColumnNameDelimited;
 
     /**
-     * The aliased column name for a select statement.  If there
-     * is a table alias, the value will be alias.columnName
-     */
-    private String aliasedActualColumnName;
-
-    private String aliasedEscapedColumnName;
-    
-    /**
-     * The renamed column name for a select statement.  If there
-     * is a table alias, the value will be alias_columnName
-     */
-    private String renamedColumnNameForResultMap;
-    
-    /**
-     * The phrase to use in a select list.  If there
-     * is a table alias, the value will be 
-     * "alias.columnName as alias_columnName"
-     */
-    private String selectListPhrase;
-    
-    /**
      * Constructs a Column definition.  This object holds all the 
      * information about a column that is required to generate
      * Java objects and SQL maps;
@@ -159,42 +136,7 @@
 
     public void setActualColumnName(String actualColumnName) {
         this.actualColumnName = actualColumnName;
-        this.escapedColumnName = escapeStringForIbatis(actualColumnName);
         isColumnNameDelimited = StringUtility.stringContainsSpace(actualColumnName);
-        
-        if (StringUtility.stringHasValue(tableAlias)) {
-            StringBuffer sb = new StringBuffer();
-            
-            sb.append(tableAlias);
-            sb.append('.');
-            sb.append(escapedColumnName);
-            aliasedEscapedColumnName = sb.toString();
-            
-            sb.setLength(0);
-            sb.append(tableAlias);
-            sb.append('.');
-            sb.append(actualColumnName);
-            aliasedActualColumnName = sb.toString();
-            
-            sb.setLength(0);
-            sb.append(tableAlias);
-            sb.append('_');
-            sb.append(actualColumnName);
-            renamedColumnNameForResultMap = sb.toString();
-            
-            sb.setLength(0);
-            sb.append(aliasedEscapedColumnName);
-            sb.append(" as "); //$NON-NLS-1$
-            sb.append(tableAlias);
-            sb.append('_');
-            sb.append(escapedColumnName);
-            selectListPhrase = sb.toString();
-        } else {
-            aliasedActualColumnName = actualColumnName;
-            aliasedEscapedColumnName = escapedColumnName;
-            renamedColumnNameForResultMap = actualColumnName;
-            selectListPhrase = escapedColumnName;
-        }
     }
 
     /**
@@ -251,12 +193,52 @@
         return javaProperty + "_Indicator"; //$NON-NLS-1$
     }
     
+    /**
+     * The renamed column name for a select statement.  If there
+     * is a table alias, the value will be alias_columnName.  This is
+     * appropriate for use in a result map.
+     * 
+     * @return
+     */
     public String getRenamedColumnNameForResultMap() {
-        return renamedColumnNameForResultMap;
+        if (StringUtility.stringHasValue(tableAlias)) {
+            StringBuffer sb = new StringBuffer();
+            
+            sb.append(tableAlias);
+            sb.append('_');
+            sb.append(actualColumnName);
+            return sb.toString();
+        } else {
+            return actualColumnName;
+        }
     }
 
+    /**
+     * The phrase to use in a select list.  If there
+     * is a table alias, the value will be 
+     * "alias.columnName as alias_columnName"
+     * 
+     * @return the proper phrase
+     */
     public String getSelectListPhrase() {
-        return selectListPhrase;
+        if (StringUtility.stringHasValue(tableAlias)) {
+            StringBuffer sb = new StringBuffer();
+            
+            sb.append(getAliasedEscapedColumnName());
+            sb.append(" as "); //$NON-NLS-1$
+            if (isColumnNameDelimited) {
+                sb.append(abatorContext.getBeginningDelimiter());
+            }
+            sb.append(tableAlias);
+            sb.append('_');
+            sb.append(escapeStringForIbatis(actualColumnName));
+            if (isColumnNameDelimited) {
+                sb.append(abatorContext.getEndingDelimiter());
+            }
+            return sb.toString();
+        } else {
+            return getEscapedColumnName();
+        }
     }
     
     public boolean isJDBCDateColumn() {
@@ -298,8 +280,8 @@
         this.typeHandler = typeHandler;
     }
     
-    private String escapeStringForIbatis(String actualColumnName) {
-        StringTokenizer st = new StringTokenizer(actualColumnName, "$#", true); //$NON-NLS-1$
+    private String escapeStringForIbatis(String s) {
+        StringTokenizer st = new StringTokenizer(s, "$#", true); //$NON-NLS-1$
         StringBuffer sb = new StringBuffer();
         while (st.hasMoreTokens()) {
             String token = st.nextToken();
@@ -320,15 +302,65 @@
     }
 
     public String getEscapedColumnName() {
-        return escapedColumnName;
+        StringBuffer sb = new StringBuffer();
+        sb.append(escapeStringForIbatis(actualColumnName));
+        
+        if (isColumnNameDelimited) {
+            sb.insert(0, abatorContext.getBeginningDelimiter());
+            sb.append(abatorContext.getEndingDelimiter());
+        }
+        
+        return sb.toString();
     }
 
+    /**
+     * The aliased column name for a select statement generated by the example clauses.
+     * This is not appropriate for selects in SqlMaps because the column is
+     * not escaped for iBATIS.  If there
+     * is a table alias, the value will be alias.columnName.
+     * 
+     * This method is used in the Example classes and the returned value will be
+     * in a Java string.  So we need to escape double quotes if they are
+     * the delimiters.
+     * 
+     * @return
+     */
     public String getAliasedActualColumnName() {
-        return aliasedActualColumnName;
+        StringBuffer sb = new StringBuffer();
+        if (StringUtility.stringHasValue(tableAlias)) {
+            sb.append(tableAlias);
+            sb.append('.');
+        }
+
+        if (isColumnNameDelimited) {
+            sb.append(StringUtility.escapeStringForJava(abatorContext.getBeginningDelimiter()));
+        }
+        
+        sb.append(actualColumnName);
+            
+        if (isColumnNameDelimited) {
+            sb.append(StringUtility.escapeStringForJava(abatorContext.getEndingDelimiter()));
+        }
+        
+        return sb.toString();
     }
 
+    /**
+     * Calculates the string to use in select phrases in SqlMaps.
+     * 
+     * @return
+     */
     public String getAliasedEscapedColumnName() {
-        return aliasedEscapedColumnName;
+        if (StringUtility.stringHasValue(tableAlias)) {
+            StringBuffer sb = new StringBuffer();
+            
+            sb.append(tableAlias);
+            sb.append('.');
+            sb.append(getEscapedColumnName());
+            return sb.toString();
+        } else {
+            return getEscapedColumnName();
+        }
     }
 
     public void setColumnNameDelimited(boolean isColumnNameDelimited) {

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/db/IntrospectedTableImpl.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/db/IntrospectedTableImpl.java?view=diff&rev=508716&r1=508715&r2=508716
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/db/IntrospectedTableImpl.java (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/db/IntrospectedTableImpl.java Fri Feb 16 22:14:18 2007
@@ -118,6 +118,12 @@
                 columnDefinitions.getBaseColumns().iterator());
     }
 
+
+    public int getNonBLOBColumnCount() {
+        return columnDefinitions.getPrimaryKeyColumns().size()
+            + columnDefinitions.getBaseColumns().size();
+    }
+    
     public Iterator getPrimaryKeyColumns() {
         return columnDefinitions.getPrimaryKeyColumns().iterator();
     }
@@ -141,5 +147,9 @@
     public Iterator getNonPrimaryKeyColumns() {
         return new AggregatingIterator(columnDefinitions.getBaseColumns().iterator(),
                 columnDefinitions.getBLOBColumns().iterator());
+    }
+
+    public String getTableConfigurationProperty(String property) {
+        return (String) tableConfiguration.getProperties().get(property);
     }
 }

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/java/dao/BaseDAOGenerator.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/java/dao/BaseDAOGenerator.java?view=diff&rev=508716&r1=508715&r2=508716
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/java/dao/BaseDAOGenerator.java (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/java/dao/BaseDAOGenerator.java Fri Feb 16 22:14:18 2007
@@ -1114,7 +1114,7 @@
         s = (String) map.get(key);
         if (s == null) {
             StringBuffer sb = new StringBuffer(targetPackage);
-            if ("true".equals(properties.get("enableSubPackages"))) { //$NON-NLS-1$  //$NON-NLS-2$
+            if ("true".equalsIgnoreCase((String)properties.get("enableSubPackages"))) { //$NON-NLS-1$  //$NON-NLS-2$
                 sb.append(table.getSubPackage());
             }
 

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/java/dao/BaseLegacyDAOGenerator.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/java/dao/BaseLegacyDAOGenerator.java?view=diff&rev=508716&r1=508715&r2=508716
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/java/dao/BaseLegacyDAOGenerator.java (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/java/dao/BaseLegacyDAOGenerator.java Fri Feb 16 22:14:18 2007
@@ -365,7 +365,7 @@
 
             sb.setLength(0);
             sb.append("parms.put(\""); //$NON-NLS-1$
-            sb.append(clause.getSelectorOrProperty(cd));
+            sb.append(clause.getSelectorOrProperty(cd, true));
             sb.append("\", \"Y\");"); //$NON-NLS-1$
             method.addBodyLine(sb.toString());
 
@@ -373,7 +373,7 @@
 
             sb.setLength(0);
             sb.append("parms.put(\""); //$NON-NLS-1$
-            sb.append(clause.getSelectorAndProperty(cd));
+            sb.append(clause.getSelectorAndProperty(cd, true));
             sb.append("\", \"Y\");"); //$NON-NLS-1$
             method.addBodyLine(sb.toString());
 

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/java/model/JavaModelGeneratorJava2Impl.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/java/model/JavaModelGeneratorJava2Impl.java?view=diff&rev=508716&r1=508715&r2=508716
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/java/model/JavaModelGeneratorJava2Impl.java (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/java/model/JavaModelGeneratorJava2Impl.java Fri Feb 16 22:14:18 2007
@@ -215,7 +215,7 @@
         s = (String) map.get(key);
         if (s == null) {
             StringBuffer sb = new StringBuffer(targetPackage);
-            if ("true".equals(properties.get("enableSubPackages"))) { //$NON-NLS-1$  //$NON-NLS-2$
+            if ("true".equalsIgnoreCase((String)properties.get("enableSubPackages"))) { //$NON-NLS-1$  //$NON-NLS-2$
                 sb.append(table.getSubPackage());
             }
             

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/sqlmap/ExampleClause.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/sqlmap/ExampleClause.java?view=diff&rev=508716&r1=508715&r2=508716
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/sqlmap/ExampleClause.java (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/sqlmap/ExampleClause.java Fri Feb 16 22:14:18 2007
@@ -22,6 +22,7 @@
 import java.util.List;
 
 import org.apache.ibatis.abator.internal.db.ColumnDefinition;
+import org.apache.ibatis.abator.internal.util.StringUtility;
 
 /**
  * @author Jeff Butler
@@ -116,16 +117,32 @@
 		this.examplePropertyValue = examplePropertyValue;
 	}
 
-	public String getSelectorAndProperty(ColumnDefinition cd) {
+	public String getSelectorAndProperty(ColumnDefinition cd, boolean forJava) {
 		Object[] arguments = { "AND", cd.getEscapedColumnName() }; //$NON-NLS-1$
+        
+        String s = MessageFormat.format(selectorProperty, arguments);
 
-		return MessageFormat.format(selectorProperty, arguments);
+        if (forJava) {
+            s = StringUtility.escapeStringForJava(s);
+        } else {
+            s = StringUtility.escapeStringForXml(s);
+        }
+        
+		return s;
 	}
 
-	public String getSelectorOrProperty(ColumnDefinition cd) {
+	public String getSelectorOrProperty(ColumnDefinition cd, boolean forJava) {
 		Object[] arguments = { "OR", cd.getEscapedColumnName() }; //$NON-NLS-1$
 
-		return MessageFormat.format(selectorProperty, arguments);
+        String s = MessageFormat.format(selectorProperty, arguments);
+
+        if (forJava) {
+            s = StringUtility.escapeStringForJava(s);
+        } else {
+            s = StringUtility.escapeStringForXml(s);
+        }
+        
+        return s;
 	}
 
 	public String getClause(ColumnDefinition cd) {

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/sqlmap/SqlMapGeneratorIterateImpl.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/sqlmap/SqlMapGeneratorIterateImpl.java?view=diff&rev=508716&r1=508715&r2=508716
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/sqlmap/SqlMapGeneratorIterateImpl.java (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/sqlmap/SqlMapGeneratorIterateImpl.java Fri Feb 16 22:14:18 2007
@@ -275,6 +275,8 @@
      * @return the resultMap element
      */
     protected XmlElement getBaseResultMapElement(IntrospectedTable introspectedTable) {
+        boolean useColumnIndex =
+            "true".equalsIgnoreCase(introspectedTable.getTableConfigurationProperty("useColumnIndexes")); //$NON-NLS-1$ //$NON-NLS-2$
         XmlElement answer = new XmlElement("resultMap"); //$NON-NLS-1$
         FullyQualifiedTable table = introspectedTable.getTable();
         answer.addAttribute(new Attribute("id", //$NON-NLS-1$
@@ -292,14 +294,25 @@
 
         answer.addComment();
 
+        int i = 1;
+        if (StringUtility.stringHasValue(introspectedTable.getSelectByPrimaryKeyQueryId())) {
+            i++;
+        }
+        
         Iterator iter = introspectedTable.getNonBLOBColumns();
         while (iter.hasNext()) {
             ColumnDefinition cd = (ColumnDefinition) iter.next();
 
             XmlElement resultElement = new XmlElement("result"); //$NON-NLS-1$
 
-            resultElement.addAttribute(new Attribute(
+            if (useColumnIndex) {
+                resultElement.addAttribute(new Attribute(
+                        "columnIndex", Integer.toString(i++))); //$NON-NLS-1$
+            } else {
+                resultElement.addAttribute(new Attribute(
                     "column", cd.getRenamedColumnNameForResultMap())); //$NON-NLS-1$
+            }
+            
             resultElement.addAttribute(new Attribute(
                     "property", cd.getJavaProperty())); //$NON-NLS-1$
             resultElement.addAttribute(new Attribute("jdbcType", //$NON-NLS-1$
@@ -325,6 +338,8 @@
      * @return the resultMap element
      */
     protected XmlElement getResultMapWithBLOBsElement(IntrospectedTable introspectedTable) {
+        boolean useColumnIndex =
+            "true".equalsIgnoreCase(introspectedTable.getTableConfigurationProperty("useColumnIndexes")); //$NON-NLS-1$ //$NON-NLS-2$
 
         XmlElement answer = new XmlElement("resultMap"); //$NON-NLS-1$
         FullyQualifiedTable table = introspectedTable.getTable();
@@ -355,14 +370,23 @@
 
         answer.addComment();
 
+        int i = introspectedTable.getNonBLOBColumnCount() + 1;
+        if (StringUtility.stringHasValue(introspectedTable.getSelectByPrimaryKeyQueryId())) {
+            i++;
+        }
         Iterator iter = introspectedTable.getBLOBColumns();
         while (iter.hasNext()) {
             ColumnDefinition cd = (ColumnDefinition) iter.next();
 
             XmlElement resultElement = new XmlElement("result"); //$NON-NLS-1$
             
-            resultElement.addAttribute(new Attribute(
+            if (useColumnIndex) {
+                resultElement.addAttribute(new Attribute(
+                        "columnIndex", Integer.toString(i++))); //$NON-NLS-1$
+            } else {
+                resultElement.addAttribute(new Attribute(
                     "column", cd.getRenamedColumnNameForResultMap())); //$NON-NLS-1$
+            }
             resultElement.addAttribute(new Attribute(
                     "property", cd.getJavaProperty())); //$NON-NLS-1$
             resultElement.addAttribute(new Attribute(
@@ -981,7 +1005,7 @@
         s = (String) map.get(key);
         if (s == null) {
             StringBuffer sb = new StringBuffer(targetPackage);
-            if ("true".equals(properties.get("enableSubPackages"))) { //$NON-NLS-1$  //$NON-NLS-2$
+            if ("true".equalsIgnoreCase((String)properties.get("enableSubPackages"))) { //$NON-NLS-1$  //$NON-NLS-2$
                 sb.append(table.getSubPackage());
             }
             

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/sqlmap/SqlMapGeneratorLegacyImpl.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/sqlmap/SqlMapGeneratorLegacyImpl.java?view=diff&rev=508716&r1=508715&r2=508716
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/sqlmap/SqlMapGeneratorLegacyImpl.java (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/sqlmap/SqlMapGeneratorLegacyImpl.java Fri Feb 16 22:14:18 2007
@@ -110,13 +110,13 @@
 
                 XmlElement isPropAvail = new XmlElement("isPropertyAvailable"); //$NON-NLS-1$
                 isPropAvail.addAttribute(new Attribute("prepend", "and")); //$NON-NLS-1$ //$NON-NLS-2$
-                isPropAvail.addAttribute(new Attribute("property", ec.getSelectorAndProperty(cd))); //$NON-NLS-1$
+                isPropAvail.addAttribute(new Attribute("property", ec.getSelectorAndProperty(cd, false))); //$NON-NLS-1$
                 isPropAvail.addElement(new TextElement(ec.getClause(cd)));
                 dynamicElement.addElement(isPropAvail);
 
                 isPropAvail = new XmlElement("isPropertyAvailable"); //$NON-NLS-1$
                 isPropAvail.addAttribute(new Attribute("prepend", "or")); //$NON-NLS-1$ //$NON-NLS-2$
-                isPropAvail.addAttribute(new Attribute("property", ec.getSelectorOrProperty(cd))); //$NON-NLS-1$
+                isPropAvail.addAttribute(new Attribute("property", ec.getSelectorOrProperty(cd, false))); //$NON-NLS-1$
                 isPropAvail.addElement(new TextElement(ec.getClause(cd)));
                 dynamicElement.addElement(isPropAvail);
             }

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/util/StringUtility.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/util/StringUtility.java?view=diff&rev=508716&r1=508715&r2=508716
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/util/StringUtility.java (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/util/StringUtility.java Fri Feb 16 22:14:18 2007
@@ -15,6 +15,8 @@
  */
 package org.apache.ibatis.abator.internal.util;
 
+import java.util.StringTokenizer;
+
 /**
  * 
  * @author Jeff Butler
@@ -57,5 +59,35 @@
     
     public static boolean stringContainsSpace(String s) {
         return s != null && s.indexOf(' ') != -1;
+    }
+
+    public static String escapeStringForJava(String s) {
+        StringTokenizer st = new StringTokenizer(s, "\"", true); //$NON-NLS-1$
+        StringBuffer sb = new StringBuffer();
+        while (st.hasMoreTokens()) {
+            String token = st.nextToken();
+            if ("\"".equals(token)) { //$NON-NLS-1$
+                sb.append("\\\""); //$NON-NLS-1$
+            } else {
+                sb.append(token);
+            }
+        }
+        
+        return sb.toString();
+    }
+
+    public static String escapeStringForXml(String s) {
+        StringTokenizer st = new StringTokenizer(s, "\"", true); //$NON-NLS-1$
+        StringBuffer sb = new StringBuffer();
+        while (st.hasMoreTokens()) {
+            String token = st.nextToken();
+            if ("\"".equals(token)) { //$NON-NLS-1$
+                sb.append("&quot;"); //$NON-NLS-1$
+            } else {
+                sb.append(token);
+            }
+        }
+        
+        return sb.toString();
     }
 }

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/util/messages/messages.properties
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/util/messages/messages.properties?view=diff&rev=508716&r1=508715&r2=508716
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/util/messages/messages.properties (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/util/messages/messages.properties Fri Feb 16 22:14:18 2007
@@ -11,6 +11,7 @@
 ValidationError.10=JdbcConnectionConfiguration is required
 ValidationError.11=At least one AbatorConfiguration element is required
 ValidationError.12={0} Target Package is Required for context {1}
+ValidationError.13=If "useColumnIndexes" property is set, then either both or neither query id must be set for table {0}
 
 RuntimeError.0=configfile is a required parameter
 RuntimeError.1=configfile {0} does not exist

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/CreateDB.sql
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/CreateDB.sql?view=diff&rev=508716&r1=508715&r2=508716
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/CreateDB.sql (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/CreateDB.sql Fri Feb 16 22:14:18 2007
@@ -4,6 +4,7 @@
 drop table PKBlobs if exists;
 drop table PKFieldsBlobs if exists;
 drop table FieldsBlobs if exists;
+drop table "awful table" if exists;
 drop table BlobsOnly if exists;
 
 create table FieldsOnly (
@@ -55,6 +56,25 @@
   lastName varchar(20),
   blob1 longvarbinary,
   blob2 longvarbinary
+);
+
+create table "awful table" (
+  "CuStOmEr iD" int generated by default as identity (start with 57) not null,
+  "customer id" int,
+  "first name" varchar(20),
+  "First Name" varchar(20),
+  "first Name" varchar(20),
+  first_name varchar(20),
+  firstName varchar(20),
+  E_MAIL varchar(20),
+  _id1 int not null,
+  $id2 int not null,
+  id5_ int not null,
+  id6$ int not null,
+  id7$$ int not null,
+  EmailAddress varchar(30),
+  "from" varchar(30),
+  primary key("CuStOmEr iD")
 );
 
 -- this table should be ignored, nothing generated

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/abatorConfig.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/abatorConfig.xml?view=diff&rev=508716&r1=508715&r2=508716
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/abatorConfig.xml (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/testJava2/abatortest/java2/abatorConfig.xml Fri Feb 16 22:14:18 2007
@@ -29,6 +29,17 @@
     <table tableName="PKBlobs" />
     <table tableName="PKFieldsBlobs" />
     <table tableName="FieldsBlobs" />
+    <table tableName="awful table" alias="A">
+      <property name="useColumnIndexes" value="true"/>
+      <generatedKey column="CuStOmEr iD" sqlStatement="HSQLDB" identity="true" />
+      <columnOverride column="customer id" property="secondCustomerId" />
+      <columnOverride column="first name" property="firstFirstName" />
+      <columnOverride column="First Name" property="secondFirstName" />
+      <ignoreColumn column="first Name" />
+      <columnOverride column="first_name" property="thirdFirstName" />
+      <columnOverride column="firstName" property="fourthFirstName" />
+      <columnOverride column="from" delimitedColumnName="true" />
+    </table>
   </abatorContext>
 
   <abatorContext generatorSet="Legacy" defaultModelType="flat">
@@ -55,6 +66,17 @@
     <table tableName="PKBlobs" />
     <table tableName="PKFieldsBlobs" />
     <table tableName="FieldsBlobs" />
+    <table tableName="awful table" alias="A">
+      <property name="useColumnIndexes" value="true"/>
+      <generatedKey column="CuStOmEr iD" sqlStatement="HSQLDB" identity="true" />
+      <columnOverride column="customer id" property="secondCustomerId" />
+      <columnOverride column="first name" property="firstFirstName" />
+      <columnOverride column="First Name" property="secondFirstName" />
+      <ignoreColumn column="first Name" />
+      <columnOverride column="first_name" property="thirdFirstName" />
+      <columnOverride column="firstName" property="fourthFirstName" />
+      <columnOverride column="from" delimitedColumnName="true" />
+    </table>
   </abatorContext>
 
   <abatorContext generatorSet="Java2" defaultModelType="hierarchical">
@@ -81,6 +103,17 @@
     <table tableName="PKBlobs" />
     <table tableName="PKFieldsBlobs" />
     <table tableName="FieldsBlobs" />
+    <table tableName="awful table" alias="A">
+      <property name="useColumnIndexes" value="true"/>
+      <generatedKey column="CuStOmEr iD" sqlStatement="HSQLDB" identity="true" />
+      <columnOverride column="customer id" property="secondCustomerId" />
+      <columnOverride column="first name" property="firstFirstName" />
+      <columnOverride column="First Name" property="secondFirstName" />
+      <ignoreColumn column="first Name" />
+      <columnOverride column="first_name" property="thirdFirstName" />
+      <columnOverride column="firstName" property="fourthFirstName" />
+      <columnOverride column="from" delimitedColumnName="true" />
+    </table>
   </abatorContext>
 
   <abatorContext generatorSet="Legacy" defaultModelType="hierarchical">
@@ -107,6 +140,17 @@
     <table tableName="PKBlobs" />
     <table tableName="PKFieldsBlobs" />
     <table tableName="FieldsBlobs" />
+    <table tableName="awful table" alias="A">
+      <property name="useColumnIndexes" value="true"/>
+      <generatedKey column="CuStOmEr iD" sqlStatement="HSQLDB" identity="true" />
+      <columnOverride column="customer id" property="secondCustomerId" />
+      <columnOverride column="first name" property="firstFirstName" />
+      <columnOverride column="First Name" property="secondFirstName" />
+      <ignoreColumn column="first Name" />
+      <columnOverride column="first_name" property="thirdFirstName" />
+      <columnOverride column="firstName" property="fourthFirstName" />
+      <columnOverride column="from" delimitedColumnName="true" />
+    </table>
   </abatorContext>
 
   <abatorContext generatorSet="Java2" defaultModelType="conditional">
@@ -133,6 +177,17 @@
     <table tableName="PKBlobs" />
     <table tableName="PKFieldsBlobs" />
     <table tableName="FieldsBlobs" />
+    <table tableName="awful table" alias="A">
+      <property name="useColumnIndexes" value="true"/>
+      <generatedKey column="CuStOmEr iD" sqlStatement="HSQLDB" identity="true" />
+      <columnOverride column="customer id" property="secondCustomerId" />
+      <columnOverride column="first name" property="firstFirstName" />
+      <columnOverride column="First Name" property="secondFirstName" />
+      <ignoreColumn column="first Name" />
+      <columnOverride column="first_name" property="thirdFirstName" />
+      <columnOverride column="firstName" property="fourthFirstName" />
+      <columnOverride column="from" delimitedColumnName="true" />
+    </table>
   </abatorContext>
 
   <abatorContext generatorSet="Legacy" defaultModelType="conditional">
@@ -159,6 +214,17 @@
     <table tableName="PKBlobs" />
     <table tableName="PKFieldsBlobs" />
     <table tableName="FieldsBlobs" />
+    <table tableName="awful table" alias="A">
+      <property name="useColumnIndexes" value="true"/>
+      <generatedKey column="CuStOmEr iD" sqlStatement="HSQLDB" identity="true" />
+      <columnOverride column="customer id" property="secondCustomerId" />
+      <columnOverride column="first name" property="firstFirstName" />
+      <columnOverride column="First Name" property="secondFirstName" />
+      <ignoreColumn column="first Name" />
+      <columnOverride column="first_name" property="thirdFirstName" />
+      <columnOverride column="firstName" property="fourthFirstName" />
+      <columnOverride column="from" delimitedColumnName="true" />
+    </table>
   </abatorContext>
 
   <abatorContext id="miscellaneousTests" generatorSet="Java2">