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 2006/09/30 00:14:28 UTC

svn commit: r451474 - in /ibatis/trunk/java/mapper/mapper2/tools/abator/core: build/ doc/ htmldoc/ htmldoc/configreference/ htmldoc/usage/ src/org/apache/ibatis/abator/api/ src/org/apache/ibatis/abator/api/dom/java/ src/org/apache/ibatis/abator/config/...

Author: jgbutler
Date: Fri Sep 29 15:14:27 2006
New Revision: 451474

URL: http://svn.apache.org/viewvc?view=rev&rev=451474
Log:
Abator - Add support for "ignoreQualifiersAtRuntime" and "runtimeTableName" properties on the <table> configuration element

Added:
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/usage/oracle.html
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/htmldoc/configreference/table.html
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/menu.html
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/usage/intro.html
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/whatsNew.html
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/FullyQualifiedTable.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/dom/java/Field.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/dom/java/InnerClass.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/dom/java/InnerEnum.java
    ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/dom/java/Method.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/DatabaseIntrospector.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/model/JavaModelGeneratorJava2Impl.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

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=451474&r1=451473&r2=451474
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/build/build.xml (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/build/build.xml Fri Sep 29 15:14:27 2006
@@ -149,6 +149,7 @@
   </target>
 	  
   <target name="test.generate.test.code.java2" depends="test.prepare">
+  	<echo message="Expect three warnings from Abator (BLOBSONLY, NonExistantTable, FRED)" />
 	  	
     <!-- note that the class does not exist until the build runs.
     	 Validating Ant editors will complain that the task cannot be
@@ -168,6 +169,8 @@
   </target>
 	  	
   <target name="test.generate.test.code.java5" depends="test.prepare" if="usingJava5">
+  	<echo message="Expect three warnings from Abator (BLOBSONLY, NonExistantTable, FRED)" />
+	  	
     <!-- 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. -->

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=451474&r1=451473&r2=451474
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/build/version.properties (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/build/version.properties Fri Sep 29 15:14:27 2006
@@ -1,4 +1,4 @@
 #Abator build version info
-#Tue Sep 26 14:22:03 CDT 2006
+#Fri Sep 29 16:33:41 CDT 2006
 version=1.0.1
-buildNum=249
+buildNum=251

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=451474&r1=451473&r2=451474
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/doc/ReleaseNotes.txt (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/doc/ReleaseNotes.txt Fri Sep 29 15:14:27 2006
@@ -5,6 +5,8 @@
 2. Add "clear" method to generated example classes in the Java2/Java5
    generator sets
 3. Fix bug - trimStrings on JavaModelGenerator not working
+4. Add support for "ignoreQualifiersAtRuntime" and "runtimeTableName" on
+   the <table> configuration
 
 -------------------------------------------------------------------------------
 Version 1.0.0:

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/configreference/table.html
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/configreference/table.html?view=diff&rev=451474&r1=451473&r2=451474
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/configreference/table.html (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/configreference/table.html Fri Sep 29 15:14:27 2006
@@ -213,6 +213,26 @@
         <code>setStartDate()</code>.</p>
         <p><i>The default value is false.</i></p></td>
   </tr>
+  <tr>
+    <td valign="top">ignoreQualifiersAtRuntime</td>
+    <td>If true, then
+        Abator will not add the schema or catalog to the table name in the generated SQL.
+        This is useful if you have tables with the same name in several schemas -
+        you can use Abator to generate objects based on the table in one schema,
+        but not include the schema for runtime.</p>
+        <p><i>The default value is false.</i></p></td>
+  </tr>
+  <tr>
+    <td valign="top">runtimeTableName</td>
+    <td>If you specify a value for this property, than Abator will use that
+        value as the table name in the generated SQL rather than the <code>tableName</code>
+        as configured above.
+        This is especially useful on Oracle if you want to generate objects to use
+        a public synonym.  In that case, you will need to generate the objects against the
+        actual table that the synonym points to, then specify the synonym name in
+        this property.  You should also specify the <code>ignoreQualifiersAtRuntime</code>
+        property in most cases with public synonyms.</td>
+  </tr>
 </table>
 
 <h2>Example</h2>

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/menu.html
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/menu.html?view=diff&rev=451474&r1=451473&r2=451474
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/menu.html (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/menu.html Fri Sep 29 15:14:27 2006
@@ -41,6 +41,7 @@
   <a href="usage/intro.html" target="mainFrame">Database Specific Information</a><br/>
   &nbsp;&nbsp;<a href="usage/db2.html" target="mainFrame">DB2</a><br/>
   &nbsp;&nbsp;<a href="usage/mysql.html" target="mainFrame">MySql</a><br/>
+  &nbsp;&nbsp;<a href="usage/oracle.html" target="mainFrame">Oracle</a><br/>
 
   <a href="reference/intro.html" target="mainFrame">Other Reference Information</a><br/>
   &nbsp;&nbsp;<a href="reference/building.html" target="mainFrame">Building Abator from Source</a><br/>

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/usage/intro.html
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/usage/intro.html?view=diff&rev=451474&r1=451473&r2=451474
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/usage/intro.html (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/usage/intro.html Fri Sep 29 15:14:27 2006
@@ -14,6 +14,7 @@
 <ul>
   <li><a href="db2.html">DB2</a></li>
   <li><a href="mysql.html">MySql</a></li>
+  <li><a href="oracle.html">Oracle</a></li>
 </ul>
 <p>Please let us know about any quirks you discover for the database you are using - we will
 be happy to add the information

Added: ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/usage/oracle.html
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/usage/oracle.html?view=auto&rev=451474
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/usage/oracle.html (added)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/usage/oracle.html Fri Sep 29 15:14:27 2006
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Abator Oracle Usage Notes</title>
+  <link type="text/css" rel="stylesheet" href="../abator.css"/>
+</head>
+<body>
+<h1>Abator Oracle Usage Notes</h1>
+<h2>Public Synonyms</h2>
+<p>If you want to generate objects for a table that has a public synonym, you
+should actually generate the objects against the real table - and then change the
+table name at runtime.  Abator supports this automatically.</p>
+<p>For example, assume there is a public alias "FRED" that points the the
+table "HR.EMPLOYEES".  The following table configuration will generate the objects
+based on HR.EMPLOYEES, but the runtime SQL will only refer to FRED:</p>
+<pre>
+  &lt;table schema="HR" tableName="EMPLOYEES" alias="A"&gt;
+    &lt;property name="ignoreQualifiersAtRuntime" value="true" /&gt;
+    &lt;property name="runtimeTableName" value="FRED" /&gt;
+  &lt;/table&gt;
+</pre>
+</body>
+</html>

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/whatsNew.html
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/whatsNew.html?view=diff&rev=451474&r1=451473&r2=451474
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/whatsNew.html (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/htmldoc/whatsNew.html Fri Sep 29 15:14:27 2006
@@ -9,8 +9,19 @@
 </head>
 <body>
 <h1>What's New in Abator</h1>
-<p>Version 1.0.0 is a significant update to Abator from the prior version 0.6.5.
-Many new features have been added as detailed below.</p>
+<h2>Version 1.0.1 Miscellaneous Changes</h2>
+<ul>
+  <li>Added the ability to specify properties to ignore qualifiers and change runtime
+      table names in the generated SQL for a table.  Primary use cases for this
+      support include:
+      <ul>
+        <li>Generating objects for a table that has a public synonym in Oracle</li>
+        <li>Generating objects for a table that exists in many schemas, and the
+            schema will be selected at runtime</li>
+      </ul>
+    See the <a href="configreference/table.html">&lt;table&gt;</a>
+    reference page for more information.</li>
+</ul>
 
 <h2>Generator Sets (Version 1.0.0)</h2>
 <p>A generator set is a set of

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/FullyQualifiedTable.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/FullyQualifiedTable.java?view=diff&rev=451474&r1=451473&r2=451474
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/FullyQualifiedTable.java (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/FullyQualifiedTable.java Fri Sep 29 15:14:27 2006
@@ -34,17 +34,56 @@
 	private String domainObjectName;
     
     private String alias;
+    
+    private boolean ignoreQualifiersAtRuntime;
+    
+    private String runtimeTableName;
 
-	/**
-	 *  
-	 */
+    /**
+     * This object is used to hold information related to the table itself,
+     * not the columns in the table.
+     * 
+     * @param catalog the actual catalog of the table as returned from
+     *  DatabaseMetaData.  This value should only be set if the user
+     *  configured a catalog.  Otherwise the DatabaseMetaData is reporting
+     *  some database default that we don't want in the generated code.
+     *  
+     * @param schema the actual schema of the table as returned from
+     *  DatabaseMetaData.  This value should only be set if the user
+     *  configured a schema.  Otherwise the DatabaseMetaData is reporting
+     *  some database default that we don't want in the generated code.
+     *  
+     * @param tableName the actual table name as returned from DatabaseMetaData
+     * 
+     * @param domainObjectName the configred domain object name for this table.
+     *  If nothing is configured, we'll build the domain object named based
+     *  on the tableName or runtimeTableName.
+     *  
+     * @param alias a configured alias for the table. This alias will be
+     *  added to the table name in the SQL
+     * 
+     * @param ignoreQualifiersAtRuntime if true, then the catalog and schema
+     *  qualifiers will be ignored when composing fully qualified names in 
+     *  the generated SQL.  This is used, for example, when the user needs
+     *  to specify a specific schema for generating code but does not want
+     *  the schema in the generated SQL 
+     * 
+     * @param runtimeTableName this is used to "rename" the table in the 
+     *  generated SQL.  This is usefule, for example, when generating code
+     *  to run with an Oracle synonym.  The user would have to specify
+     *  the actual table name and schema for generation, but would want to 
+     *  use the synonym name in the generated SQL
+     */
 	public FullyQualifiedTable(String catalog, String schema, String tableName,
-            String domainObjectName, String alias) {
+            String domainObjectName, String alias, boolean ignoreQualifiersAtRuntime,
+            String runtimeTableName) {
 		super();
         this.catalog = catalog;
         this.schema = schema;
         this.tableName = tableName;
         this.domainObjectName = domainObjectName;
+        this.ignoreQualifiersAtRuntime = ignoreQualifiersAtRuntime;
+        this.runtimeTableName = runtimeTableName;
         
         if (alias == null) {
             this.alias = null;
@@ -65,14 +104,23 @@
 		return tableName;
 	}
 
-	public String getFullyQualifiedTableName() {
-        return StringUtility.composeFullyQualifiedTableName(catalog, schema, tableName);
+	public String getFullyQualifiedTableNameAsConfigured() {
+        return StringUtility.composeFullyQualifiedTableName(
+                catalog, schema, tableName, '.');
 	}
 
-    public String getAliasedFullyQualifiedTableName() {
+    public String getFullyQualifiedTableNameAtRuntime() {
+        return StringUtility.composeFullyQualifiedTableName(
+                ignoreQualifiersAtRuntime ? null : catalog,
+                ignoreQualifiersAtRuntime ? null : schema,
+                StringUtility.stringHasValue(runtimeTableName) ? runtimeTableName : tableName,
+                '.');
+    }
+
+    public String getAliasedFullyQualifiedTableNameAtRuntime() {
         StringBuffer sb = new StringBuffer();
 
-        sb.append(getFullyQualifiedTableName());
+        sb.append(getFullyQualifiedTableNameAtRuntime());
         
         if(StringUtility.stringHasValue(alias)) {
             sb.append(' ');
@@ -82,31 +130,19 @@
         return sb.toString();
     }
 
-    public String getFullyQualifiedTableNameWithUnderscores() {
-		StringBuffer sb = new StringBuffer();
-
-		if (StringUtility.stringHasValue(catalog)) {
-			sb.append(catalog);
-			sb.append('_');
-		}
-
-		if (StringUtility.stringHasValue(schema)) {
-			sb.append(schema);
-			sb.append('_');
-		} else {
-		    if (sb.length() > 0) {
-				sb.append('_');
-		    }
-		}
-
-		sb.append(tableName);
-
-		return sb.toString();
+    public String getFullyQualifiedTableNameWithUnderscoresAtRuntime() {
+        return StringUtility.composeFullyQualifiedTableName(
+                ignoreQualifiersAtRuntime ? null : catalog,
+                ignoreQualifiersAtRuntime ? null : schema,
+                StringUtility.stringHasValue(runtimeTableName) ? runtimeTableName : tableName,
+                '_');
 	}
 	
 	public String getDomainObjectName() {
 		if (StringUtility.stringHasValue(domainObjectName)) {
 			return domainObjectName;
+        } else if (StringUtility.stringHasValue(runtimeTableName)) {
+            return JavaBeansUtil.getCamelCaseString(runtimeTableName, true);
 		} else {
 			return JavaBeansUtil.getCamelCaseString(tableName, true);
 		}
@@ -138,10 +174,34 @@
     }
     
     public String toString() {
-        return getFullyQualifiedTableName();
+        return getFullyQualifiedTableNameAsConfigured();
     }
 
     public String getAlias() {
         return alias;
+    }
+
+    /**
+     * Calculates a Java package fragment based on the 
+     * table catalog and schema.  If qualifiers are ignored,
+     * then this method will return an empty string 
+     * 
+     * @return
+     */
+    public String getSubPackage() {
+        StringBuffer sb = new StringBuffer();
+        if (!ignoreQualifiersAtRuntime) {
+            if (StringUtility.stringHasValue(catalog)) {
+                sb.append('.');
+                sb.append(catalog.toLowerCase());
+            }
+
+            if (StringUtility.stringHasValue(schema)) {
+                sb.append('.');
+                sb.append(schema.toLowerCase());
+            }
+        }
+
+        return sb.toString();
     }
 }

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/dom/java/Field.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/dom/java/Field.java?view=diff&rev=451474&r1=451473&r2=451474
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/dom/java/Field.java (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/dom/java/Field.java Fri Sep 29 15:14:27 2006
@@ -135,7 +135,7 @@
         addJavaDocLine(" * This field was generated by Abator for iBATIS."); //$NON-NLS-1$
 		
 		sb.append(" * This field corresponds to the database column "); //$NON-NLS-1$
-		sb.append(table.getFullyQualifiedTableName());
+		sb.append(table.getFullyQualifiedTableNameAsConfigured());
 		sb.append('.');
 		sb.append(columnName);
         addJavaDocLine(sb.toString());
@@ -157,7 +157,7 @@
         addJavaDocLine(" * This field was generated by Abator for iBATIS."); //$NON-NLS-1$
 		
 		sb.append(" * This field corresponds to the database table "); //$NON-NLS-1$
-		sb.append(table.getFullyQualifiedTableName());
+		sb.append(table.getFullyQualifiedTableNameAsConfigured());
         addJavaDocLine(sb.toString());
 		
         addJavaDocLine(" *"); //$NON-NLS-1$

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/dom/java/InnerClass.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/dom/java/InnerClass.java?view=diff&rev=451474&r1=451473&r2=451474
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/dom/java/InnerClass.java (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/dom/java/InnerClass.java Fri Sep 29 15:14:27 2006
@@ -258,7 +258,7 @@
         addJavaDocLine(" * This class was generated by Abator for iBATIS."); //$NON-NLS-1$
         
         sb.append(" * This class corresponds to the database table "); //$NON-NLS-1$
-        sb.append(table.getFullyQualifiedTableName());
+        sb.append(table.getFullyQualifiedTableNameAsConfigured());
         addJavaDocLine(sb.toString());
         
         addJavaDocLine(" *"); //$NON-NLS-1$

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/dom/java/InnerEnum.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/dom/java/InnerEnum.java?view=diff&rev=451474&r1=451473&r2=451474
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/dom/java/InnerEnum.java (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/dom/java/InnerEnum.java Fri Sep 29 15:14:27 2006
@@ -255,7 +255,7 @@
         addJavaDocLine(" * This enum was generated by Abator for iBATIS."); //$NON-NLS-1$
         
         sb.append(" * This enum corresponds to the database table "); //$NON-NLS-1$
-        sb.append(table.getFullyQualifiedTableName());
+        sb.append(table.getFullyQualifiedTableNameAsConfigured());
         addJavaDocLine(sb.toString());
         
         addJavaDocLine(" *"); //$NON-NLS-1$

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/dom/java/Method.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/dom/java/Method.java?view=diff&rev=451474&r1=451473&r2=451474
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/dom/java/Method.java (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/api/dom/java/Method.java Fri Sep 29 15:14:27 2006
@@ -268,7 +268,7 @@
         addJavaDocLine(" * This method was generated by Abator for iBATIS."); //$NON-NLS-1$
     
     	sb.append(" * This method returns the value of the database column "); //$NON-NLS-1$
-    	sb.append(table.getFullyQualifiedTableName());
+    	sb.append(table.getFullyQualifiedTableNameAsConfigured());
     	sb.append('.');
     	sb.append(columnDefinition.getColumnName());
         addJavaDocLine(sb.toString());
@@ -277,7 +277,7 @@
     	
     	sb.setLength(0);
     	sb.append(" * @return the value of "); //$NON-NLS-1$
-    	sb.append(table.getFullyQualifiedTableName());
+    	sb.append(table.getFullyQualifiedTableNameAsConfigured());
     	sb.append('.');
     	sb.append(columnDefinition.getColumnName());
         addJavaDocLine(sb.toString());
@@ -299,7 +299,7 @@
         addJavaDocLine(" * This method was generated by Abator for iBATIS."); //$NON-NLS-1$
     
     	sb.append(" * This method sets the value of the database column "); //$NON-NLS-1$
-    	sb.append(table.getFullyQualifiedTableName());
+    	sb.append(table.getFullyQualifiedTableNameAsConfigured());
     	sb.append('.');
     	sb.append(columnDefinition.getColumnName());
         addJavaDocLine(sb.toString());
@@ -310,7 +310,7 @@
     	sb.append(" * @param "); //$NON-NLS-1$
     	sb.append(columnDefinition.getJavaProperty());
     	sb.append(" the value for "); //$NON-NLS-1$
-    	sb.append(table.getFullyQualifiedTableName());
+    	sb.append(table.getFullyQualifiedTableNameAsConfigured());
     	sb.append('.');
     	sb.append(columnDefinition.getColumnName());
         addJavaDocLine(sb.toString());
@@ -332,7 +332,7 @@
         addJavaDocLine(" * This method was generated by Abator for iBATIS."); //$NON-NLS-1$
     	
     	sb.append(" * This method corresponds to the database table "); //$NON-NLS-1$
-    	sb.append(table.getFullyQualifiedTableName());
+    	sb.append(table.getFullyQualifiedTableNameAsConfigured());
         addJavaDocLine(sb.toString());
     	
         addJavaDocLine(" *"); //$NON-NLS-1$

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=451474&r1=451473&r2=451474
==============================================================================
--- 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 Sep 29 15:14:27 2006
@@ -198,7 +198,7 @@
 				&& !StringUtility.stringHasValue(tc.getGeneratedKey()
 						.getSqlStatement())) {
             String tableName = StringUtility.composeFullyQualifiedTableName(
-                    tc.getCatalog(), tc.getSchema(), tc.getTableName());
+                    tc.getCatalog(), tc.getSchema(), tc.getTableName(), '.');
 	        errors
 				.add(Messages.getString("ValidationError.7",  //$NON-NLS-1$
 						tableName));
@@ -246,7 +246,7 @@
 			while (iter.hasNext()) {
 				TableConfiguration tc = (TableConfiguration) iter.next();
 				String tableName = StringUtility.composeFullyQualifiedTableName(
-                        tc.getCatalog(), tc.getSchema(), tc.getTableName());
+                        tc.getCatalog(), tc.getSchema(), tc.getTableName(), '.');
 				
 				if (!tc.areAnyStatementsEnabled()) {
 				    warnings.add(Messages.getString("Warning.0", tableName)); //$NON-NLS-1$

Modified: ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/db/DatabaseIntrospector.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/db/DatabaseIntrospector.java?view=diff&rev=451474&r1=451473&r2=451474
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/db/DatabaseIntrospector.java (original)
+++ ibatis/trunk/java/mapper/mapper2/tools/abator/core/src/org/apache/ibatis/abator/internal/db/DatabaseIntrospector.java Fri Sep 29 15:14:27 2006
@@ -138,7 +138,9 @@
             FullyQualifiedTable table = new FullyQualifiedTable(
                     StringUtility.stringHasValue(tc.getCatalog()) ? catalog : null,
                     StringUtility.stringHasValue(tc.getSchema()) ? schema : null,
-                    tableName, tc.getDomainObjectName(), tc.getAlias());
+                    tableName, tc.getDomainObjectName(), tc.getAlias(),
+                    "true".equalsIgnoreCase((String) tc.getProperties().get("ignoreQualifiersAtRuntime")), //$NON-NLS-1$ //$NON-NLS-2$
+                    (String) tc.getProperties().get("runtimeTableName"));//$NON-NLS-1$
             
             ColumnOverride columnOverride = tc.getColumnOverride(cd
                     .getColumnName());
@@ -146,7 +148,7 @@
             if (columnOverride == null
                     || !StringUtility.stringHasValue(columnOverride
                             .getJavaProperty())) {
-                if ("true".equals(tc.getProperties().get("useActualColumnNames"))) { //$NON-NLS-1$ //$NON-NLS-2$
+                if ("true".equalsIgnoreCase((String) tc.getProperties().get("useActualColumnNames"))) { //$NON-NLS-1$ //$NON-NLS-2$
                     cd.setJavaProperty(JavaBeansUtil.getValidPropertyName(cd
                             .getColumnName()));
                 } else {
@@ -163,7 +165,7 @@
                 // if the type is not supported, then we'll report a warning and
                 // ignore the column
                 warnings.add(Messages.getString("Warning.14", //$NON-NLS-1$
-                        table.getFullyQualifiedTableName(),
+                        table.getFullyQualifiedTableNameAsConfigured(),
                         cd.getColumnName()));
                 continue;
             }
@@ -201,10 +203,10 @@
 
             if (!tc.isColumnIgnored(cd.getColumnName())) {
                 IntrospectedTableImpl introspectedTable =
-                    (IntrospectedTableImpl) introspectedTables.get(table.getFullyQualifiedTableName());
+                    (IntrospectedTableImpl) introspectedTables.get(table.getFullyQualifiedTableNameAsConfigured());
                 if (introspectedTable == null) {
                     introspectedTable = new IntrospectedTableImpl(tc, new ColumnDefinitions(), table);
-                    introspectedTables.put(table.getFullyQualifiedTableName(), introspectedTable);
+                    introspectedTables.put(table.getFullyQualifiedTableNameAsConfigured(), introspectedTable);
                 }
                 
                 introspectedTable.getColumnDefinitions().addColumn(cd);
@@ -238,12 +240,12 @@
             
             if (!cds.hasAnyColumns()) {
                 // add warning that the table has no columns, remove from the list
-                warnings.add(Messages.getString("Warning.1", introspectedTable.getTable().getFullyQualifiedTableName())); //$NON-NLS-1$
+                warnings.add(Messages.getString("Warning.1", introspectedTable.getTable().getFullyQualifiedTableNameAsConfigured())); //$NON-NLS-1$
                 iter.remove();
             } else if (!cds.hasPrimaryKeyColumns()
                     && !cds.hasBaseColumns()) {
                 // add warning that the table has only BLOB columns, remove from the list
-                warnings.add(Messages.getString("Warning.18", introspectedTable.getTable().getFullyQualifiedTableName())); //$NON-NLS-1$
+                warnings.add(Messages.getString("Warning.18", introspectedTable.getTable().getFullyQualifiedTableNameAsConfigured())); //$NON-NLS-1$
                 iter.remove();
             } else {
                 // now make sure that all columns called out in the configuration

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=451474&r1=451473&r2=451474
==============================================================================
--- 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 Sep 29 15:14:27 2006
@@ -213,7 +213,7 @@
         List list = new ArrayList();
 
         String tableName = introspectedTable.getTable()
-                .getFullyQualifiedTableName();
+                .getFullyQualifiedTableNameAsConfigured();
 
         callback.startSubTask(Messages.getString("Progress.10", //$NON-NLS-1$
                 tableName));
@@ -1110,15 +1110,7 @@
         if (s == null) {
             StringBuffer sb = new StringBuffer(targetPackage);
             if ("true".equals(properties.get("enableSubPackages"))) { //$NON-NLS-1$  //$NON-NLS-2$
-                if (StringUtility.stringHasValue(table.getCatalog())) {
-                    sb.append('.');
-                    sb.append(table.getCatalog().toLowerCase());
-                }
-
-                if (StringUtility.stringHasValue(table.getSchema())) {
-                    sb.append('.');
-                    sb.append(table.getSchema().toLowerCase());
-                }
+                sb.append(table.getSubPackage());
             }
 
             s = 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=451474&r1=451473&r2=451474
==============================================================================
--- 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 Sep 29 15:14:27 2006
@@ -230,24 +230,12 @@
         Map map = getTableValueMap(table);
         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$
-                StringBuffer sb = new StringBuffer(targetPackage);
-
-                if (StringUtility.stringHasValue(table.getCatalog())) {
-                    sb.append('.');
-                    sb.append(table.getCatalog().toLowerCase());
-                }
-
-                if (StringUtility.stringHasValue(table.getSchema())) {
-                    sb.append('.');
-                    sb.append(table.getSchema().toLowerCase());
-                }
-
-                s = sb.toString();
-            } else {
-                s = targetPackage;
+                sb.append(table.getSubPackage());
             }
-
+            
+            s = sb.toString();
             map.put(key, s);
         }
 
@@ -370,7 +358,7 @@
         List list = new ArrayList();
 
         String tableName = introspectedTable.getTable()
-                .getFullyQualifiedTableName();
+                .getFullyQualifiedTableNameAsConfigured();
 
         callback.startSubTask(Messages.getString(
                 "Progress.6", //$NON-NLS-1$

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=451474&r1=451473&r2=451474
==============================================================================
--- 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 Sep 29 15:14:27 2006
@@ -130,7 +130,7 @@
         FullyQualifiedTable table = introspectedTable.getTable();
         callback.startSubTask(Messages.getString(
                 "Progress.12", //$NON-NLS-1$
-                table.getFullyQualifiedTableName()));
+                table.getFullyQualifiedTableNameAsConfigured()));
         list.add(getSqlMap(introspectedTable));
 
         return list;
@@ -406,7 +406,7 @@
         StringBuffer valuesClause = new StringBuffer();
 
         insertClause.append("insert into "); //$NON-NLS-1$
-        insertClause.append(table.getFullyQualifiedTableName());
+        insertClause.append(table.getFullyQualifiedTableNameAtRuntime());
         insertClause.append(" ("); //$NON-NLS-1$
 
         valuesClause.append("values ("); //$NON-NLS-1$
@@ -477,7 +477,7 @@
         StringBuffer sb = new StringBuffer();
 
         sb.append("update "); //$NON-NLS-1$
-        sb.append(table.getFullyQualifiedTableName());
+        sb.append(table.getFullyQualifiedTableNameAtRuntime());
         answer.addElement(new TextElement(sb.toString()));
 
         // set up for first column
@@ -549,7 +549,7 @@
 
         StringBuffer sb = new StringBuffer();
         sb.append("update "); //$NON-NLS-1$
-        sb.append(table.getFullyQualifiedTableName());
+        sb.append(table.getFullyQualifiedTableNameAtRuntime());
         answer.addElement(new TextElement(sb.toString()));
 
         // set up for first column
@@ -626,7 +626,7 @@
 
         StringBuffer sb = new StringBuffer();
         sb.append("delete from "); //$NON-NLS-1$
-        sb.append(table.getFullyQualifiedTableName());
+        sb.append(table.getFullyQualifiedTableNameAtRuntime());
         answer.addElement(new TextElement(sb.toString()));
 
         boolean and = false;
@@ -675,7 +675,7 @@
 
         StringBuffer sb = new StringBuffer();
         sb.append("delete from "); //$NON-NLS-1$
-        sb.append(table.getAliasedFullyQualifiedTableName());
+        sb.append(table.getAliasedFullyQualifiedTableNameAtRuntime());
         answer.addElement(new TextElement(sb.toString()));
 
         XmlElement includeElement = new XmlElement("include"); //$NON-NLS-1$
@@ -755,7 +755,7 @@
 
         sb.setLength(0);
         sb.append("from "); //$NON-NLS-1$
-        sb.append(table.getAliasedFullyQualifiedTableName());
+        sb.append(table.getAliasedFullyQualifiedTableNameAtRuntime());
         answer.addElement(new TextElement(sb.toString()));
 
         boolean and = false;
@@ -816,7 +816,7 @@
         Map map = getTableStringMap(table);
         s = (String) map.get(key);
         if (s == null) {
-            s = table.getFullyQualifiedTableNameWithUnderscores();
+            s = table.getFullyQualifiedTableNameWithUnderscoresAtRuntime();
             map.put(key, s);
         }
 
@@ -870,7 +870,7 @@
         s = (String) map.get(key);
         if (s == null) {
             StringBuffer sb = new StringBuffer();
-            sb.append(table.getFullyQualifiedTableNameWithUnderscores());
+            sb.append(table.getFullyQualifiedTableNameWithUnderscoresAtRuntime());
 
             sb.append("_SqlMap.xml"); //$NON-NLS-1$
 
@@ -971,24 +971,12 @@
         Map map = getTableStringMap(table);
         s = (String) map.get(key);
         if (s == null) {
-            if ("true".equals(properties.get("enableSubPackages"))) { //$NON-NLS-1$ //$NON-NLS-2$
-                StringBuffer sb = new StringBuffer(targetPackage);
-
-                if (StringUtility.stringHasValue(table.getCatalog())) {
-                    sb.append('.');
-                    sb.append(table.getCatalog().toLowerCase());
-                }
-
-                if (StringUtility.stringHasValue(table.getSchema())) {
-                    sb.append('.');
-                    sb.append(table.getSchema().toLowerCase());
-                }
-
-                s = sb.toString();
-            } else {
-                s = targetPackage;
+            StringBuffer sb = new StringBuffer(targetPackage);
+            if ("true".equals(properties.get("enableSubPackages"))) { //$NON-NLS-1$  //$NON-NLS-2$
+                sb.append(table.getSubPackage());
             }
-
+            
+            s = sb.toString();
             map.put(key, s);
         }
 
@@ -1257,7 +1245,7 @@
 
         sb.setLength(0);
         sb.append("from "); //$NON-NLS-1$
-        sb.append(table.getAliasedFullyQualifiedTableName());
+        sb.append(table.getAliasedFullyQualifiedTableNameAtRuntime());
         answer.addElement((new TextElement(sb.toString())));
 
         XmlElement isParameterPresenteElement =
@@ -1329,7 +1317,7 @@
 
         sb.setLength(0);
         sb.append("from "); //$NON-NLS-1$
-        sb.append(table.getAliasedFullyQualifiedTableName());
+        sb.append(table.getAliasedFullyQualifiedTableNameAtRuntime());
         answer.addElement(new TextElement(sb.toString()));
 
         XmlElement isParameterPresenteElement =
@@ -1401,7 +1389,7 @@
         StringBuffer sb = new StringBuffer();
 
         sb.append("update "); //$NON-NLS-1$
-        sb.append(table.getFullyQualifiedTableName());
+        sb.append(table.getFullyQualifiedTableNameAtRuntime());
         answer.addElement(new TextElement(sb.toString()));
 
         XmlElement dynamicElement = new XmlElement("dynamic"); //$NON-NLS-1$

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=451474&r1=451473&r2=451474
==============================================================================
--- 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 Sep 29 15:14:27 2006
@@ -62,7 +62,7 @@
 
         StringBuffer sb = new StringBuffer();
         sb.append("delete from "); //$NON-NLS-1$
-        sb.append(table.getAliasedFullyQualifiedTableName());
+        sb.append(table.getAliasedFullyQualifiedTableNameAtRuntime());
         answer.addElement(new TextElement(sb.toString()));
 
         XmlElement includeElement = new XmlElement("include"); //$NON-NLS-1$
@@ -173,7 +173,7 @@
 
         sb.setLength(0);
         sb.append("from "); //$NON-NLS-1$
-        sb.append(table.getAliasedFullyQualifiedTableName());
+        sb.append(table.getAliasedFullyQualifiedTableNameAtRuntime());
         answer.addElement((new TextElement(sb.toString())));
 
         XmlElement isParameterPresenteElement =
@@ -240,7 +240,7 @@
 
         sb.setLength(0);
         sb.append("from "); //$NON-NLS-1$
-        sb.append(table.getAliasedFullyQualifiedTableName());
+        sb.append(table.getAliasedFullyQualifiedTableNameAtRuntime());
         answer.addElement((new TextElement(sb.toString())));
 
         XmlElement isParameterPresenteElement =

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=451474&r1=451473&r2=451474
==============================================================================
--- 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 Sep 29 15:14:27 2006
@@ -33,20 +33,20 @@
 	}
 
     public static String composeFullyQualifiedTableName(String catalog, String schema,
-            String tableName) {
+            String tableName, char separator) {
         StringBuffer sb = new StringBuffer();
 
         if (stringHasValue(catalog)) {
             sb.append(catalog);
-            sb.append('.');
+            sb.append(separator);
         }
 
         if (stringHasValue(schema)) {
             sb.append(schema);
-            sb.append('.');
+            sb.append(separator);
         } else {
             if (sb.length() > 0) {
-                sb.append('.');
+                sb.append(separator);
             }
         }