Author: jgbutler
Date: Thu Dec 18 09:45:44 2008
New Revision: 727776
URL: http://svn.apache.org/viewvc?rev=727776&view=rev
Log:
[ibator] add a plugin method to allow alteration of certain fundamental
attributes of code generation
Added:
ibatis/trunk/java/tools/ibator/core/buildsupport/org/apache/ibatis/ibator/build/test/
ibatis/trunk/java/tools/ibator/core/buildsupport/org/apache/ibatis/ibator/build/test/TestPlugin.java
Modified:
ibatis/trunk/java/tools/ibator/core/build/build.xml
ibatis/trunk/java/tools/ibator/core/build/setupCmdLine.bat
ibatis/trunk/java/tools/ibator/core/build/version.properties
ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt
ibatis/trunk/java/tools/ibator/core/doc/releasing.txt
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/ignoreColumn.html
ibatis/trunk/java/tools/ibator/core/htmldoc/reference/pluggingIn.html
ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IbatorPlugin.java
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IbatorPluginAdapter.java
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IntrospectedTable.java
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/IbatorContext.java
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/IbatorPluginAggregator.java
ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/miscellaneous/MiscellaneousTests.java
ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/ibatorConfig.xml
Modified: ibatis/trunk/java/tools/ibator/core/build/build.xml
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/build/build.xml?rev=727776&r1=727775&r2=727776&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/build/build.xml (original)
+++ ibatis/trunk/java/tools/ibator/core/build/build.xml Thu Dec 18 09:45:44 2008
@@ -41,6 +41,7 @@
<path id="emma.runtime.path">
<pathelement location="${work.instrumented}"/>
<pathelement location="${work.classes}"/>
+ <pathelement location="${work.buildsupport}"/>
<path refid="emma.lib"/>
</path>
@@ -77,7 +78,7 @@
</fileset>
</copy>
- <propertyfile file="version.properties" comment="ibator build version
info">
+ <propertyfile file="version.properties" comment="Ibator build version
info">
<entry key="buildNum" default="0" type="int" operation="+" value="1"/>
</propertyfile>
</target>
Modified: ibatis/trunk/java/tools/ibator/core/build/setupCmdLine.bat
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/build/setupCmdLine.bat?rev=727776&r1=727775&r2=727776&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/build/setupCmdLine.bat (original)
+++ ibatis/trunk/java/tools/ibator/core/build/setupCmdLine.bat Thu Dec 18
09:45:44 2008
@@ -1,6 +1,6 @@
rem Change the values in this file to the proper directories on your machine
if defined JAVA_HOME goto java_home_defined
-set JAVA_HOME=C:\JavaTools\jdk1.5.0_11
+set JAVA_HOME=C:\JavaTools\jdk1.5.0_17
:java_home_defined
Modified: ibatis/trunk/java/tools/ibator/core/build/version.properties
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/build/version.properties?rev=727776&r1=727775&r2=727776&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/build/version.properties (original)
+++ ibatis/trunk/java/tools/ibator/core/build/version.properties Thu Dec 18
09:45:44 2008
@@ -1,4 +1,4 @@
-#ibator build version info
-#Tue Dec 16 09:32:54 CST 2008
+#Ibator build version info
+#Thu Dec 18 11:42:11 CST 2008
version=1.2.1
-buildNum=667
+buildNum=673
Added:
ibatis/trunk/java/tools/ibator/core/buildsupport/org/apache/ibatis/ibator/build/test/TestPlugin.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/buildsupport/org/apache/ibatis/ibator/build/test/TestPlugin.java?rev=727776&view=auto
==============================================================================
---
ibatis/trunk/java/tools/ibator/core/buildsupport/org/apache/ibatis/ibator/build/test/TestPlugin.java
(added)
+++
ibatis/trunk/java/tools/ibator/core/buildsupport/org/apache/ibatis/ibator/build/test/TestPlugin.java
Thu Dec 18 09:45:44 2008
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2008 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.ibator.build.test;
+
+import java.util.List;
+
+import org.apache.ibatis.ibator.api.IbatorPluginAdapter;
+import org.apache.ibatis.ibator.api.IntrospectedTable;
+import org.apache.ibatis.ibator.api.dom.java.FullyQualifiedJavaType;
+
+/**
+ * This class is used to test certain plugin features during the Ibator build
+ *
+ * @author Jeff Butler
+ *
+ */
+public class TestPlugin extends IbatorPluginAdapter {
+
+ /**
+ *
+ */
+ public TestPlugin() {
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.ibatis.ibator.api.IbatorPlugin#validate(java.util.List)
+ */
+ public boolean validate(List<String> warnings) {
+ return true;
+ }
+
+ @Override
+ public void attributesCalculated(IntrospectedTable introspectedTable) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(introspectedTable.getJavaModelPackage());
+ sb.append('.');
+
sb.append(introspectedTable.getFullyQualifiedTable().getDomainObjectName());
+ sb.append("Criteria"); //$NON-NLS-1$
+
+ FullyQualifiedJavaType fqjt = new
FullyQualifiedJavaType(sb.toString());
+
+ introspectedTable.setAttribute(IntrospectedTable.ATTR_EXAMPLE_TYPE,
fqjt);
+ }
+}
Modified: ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt?rev=727776&r1=727775&r2=727776&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt (original)
+++ ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt Thu Dec 18
09:45:44 2008
@@ -10,6 +10,9 @@
1. Modified plugin methods for model fields, getters, and setters so that
the plugin will know which type of class (Primary Key, Base Record, or
Record with BLOBs) is being generated.
+2. Added methods to IntrospectedTable to get/set attributes. This
+ allows plugin classes to maintain table based state between
+ plugin calls.
-------------------------------------------------------------------------------
Version 1.2.0: Renamed to Ibator
Modified: ibatis/trunk/java/tools/ibator/core/doc/releasing.txt
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/doc/releasing.txt?rev=727776&r1=727775&r2=727776&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/doc/releasing.txt (original)
+++ ibatis/trunk/java/tools/ibator/core/doc/releasing.txt Thu Dec 18 09:45:44
2008
@@ -1,29 +1,41 @@
-Releasing ibator:
+Releasing Ibator:
-1. Build and test the base ibator (make sure to use JDK 5.0)
+1. Increment the version number of Ibator in version.properties
-2. Move the base JAR and src JAR into the appropriate eclipse project
+2. Build and test the base Ibator (make sure to use JDK 5.0)
-3. Build the new version of the plugin:
+3. Build the new version of the Eclipse feature:
+ - Copy new ibator.jar and ibator-src.zip into the core plugin
+ - Increment the version number of the feature
+ - Increment the version number of any plugin that has changed
- Build the doc
- - Build the update site
+ - Add the new version of the feature to site.xml in the IbatorUpdateSite
+ project
+ - Build the update site (just the new version, not build all)
+ - Delete the files artifacts.xml and content.xml generated by the
+ site builder (these files do not properly categorize the features.
+ See Eclipse bug 227675 for a possible solution in release 3.5)
+ - Do SVN Revert on any old plugin versions that were regenerated by the
+ site build process
-4. Zip the contents of the update site
+4. Run through the manual test scripts for the Eclipse feature
+
+5. Zip the contents of the update site (remove project metadata)
-5. Commit everything
+6. Commit everything
-6. Make an SVN label
+7. Make an SVN label
-7. Put the new base JAR file in /www/people.apache.org/builds/ibatis/alpha
+8. Put the new base Ibator zip file in
/www/people.apache.org/builds/ibatis/alpha
-8. Put the new zipped eclipse site in
/www/people.apache.org/builds/ibatis/alpha
+9. Put the new zipped eclipse site in
/www/people.apache.org/builds/ibatis/alpha
-9. Update /www/ibatis.apache.org/doc/tools/ibator from SVN (this updates the
documentation)
+10. Update /www/ibatis.apache.org/doc/tools/ibator from SVN (this updates the
documentation)
-10. Update /www/ibatis.apache.org/tools/ibator from SVN (this updates the
Eclipse site)
+11. Update /www/ibatis.apache.org/tools/ibator from SVN (this updates the
Eclipse site)
-11. Update the DTD (if required)
+12. Update the DTD (if required)
-12. Update the web site
+13. Update the iBATIS web site
-13. Send out the announcement
+14. Send out the announcement to dev@ and user@
Modified:
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/ignoreColumn.html
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/ignoreColumn.html?rev=727776&r1=727775&r2=727776&view=diff
==============================================================================
---
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/ignoreColumn.html
(original)
+++
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/ignoreColumn.html
Thu Dec 18 09:45:44 2008
@@ -35,7 +35,18 @@
</table>
<h2>Optional Attributes</h2>
-<p>None</p>
+<table border="1" cellspacing="0" cellpadding="5">
+ <tr>
+ <th>Attribute</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td>delimitedColumnName</td>
+ <td>If <code>true</code> then Ibator will perform a case-sensitive exact
+ match when matching against returned columns from the database. If
+ <code>false</code> (default) then the name is considered
case-insensitive.</td>
+ </tr>
+</table>
<h2>Child Elements</h2>
<p>None</p>
Modified: ibatis/trunk/java/tools/ibator/core/htmldoc/reference/pluggingIn.html
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/reference/pluggingIn.html?rev=727776&r1=727775&r2=727776&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/htmldoc/reference/pluggingIn.html
(original)
+++ ibatis/trunk/java/tools/ibator/core/htmldoc/reference/pluggingIn.html Thu
Dec 18 09:45:44 2008
@@ -37,6 +37,7 @@
then no further methods in the plugin will be called</li>
<li>For each table in the configuration:
<ol type="a">
+ <li><code>attributesCalculated</code> method called</li>
<li>DAO Methods:<sup>1,2</sup>
<ol type="i">
<li><code>daoXXXMethodGenerated(Method, TopLevelClass,
IntrospectedTable)</code> - these methods
Modified: ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html?rev=727776&r1=727775&r2=727776&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html (original)
+++ ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html Thu Dec 18
09:45:44 2008
@@ -28,8 +28,14 @@
<li>Modified plugin methods for model fields, getters, and setters so that
the plugin will know which type of class (Primary Key, Base Record, or
Record with BLOBs) is being generated.</li>
+ <li>Added methods to IntrospectedTable to get/set attributes. This
+ allows plugin classes to maintain table based state between
+ plugin calls.</li>
+ <li>Added <code>attributesCalculated</code> method to the plugin API. This
+ allows plugins to alter some of the fundamental code generation items
+ (like the name of a generated class, for example).</li>
</ul>
-
+
<h2>Version 1.2.0</h2>
<h3>Announcements</h3>
<ul>
Modified:
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IbatorPlugin.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IbatorPlugin.java?rev=727776&r1=727775&r2=727776&view=diff
==============================================================================
---
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IbatorPlugin.java
(original)
+++
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IbatorPlugin.java
Thu Dec 18 09:45:44 2008
@@ -37,6 +37,7 @@
* <ol>
* <li>The setXXX methods are called one time</li>
* <li>The validate method is called one time</li>
+ * <li>The attributesCalculated method is called for each introspected
table</li>
* <li>The daoXXX methods are called for each introspected table</li>
* <li>The modelXXX methods are called for each introspected table</li>
* <li>The sqlMapXXX methods are called for each introspected table</li>
@@ -87,6 +88,28 @@
void setProperties(Properties properties);
/**
+ * This method is called after the IntrospectedTable calculates all
+ * the attributes for code generation. Attributes are listed as
+ * static Strings with the prefix ATTR_ in IntrospectedTable. Plugins
+ * can implement this method to override any of the default attributes,
+ * or to add additional attributes for use by other plugin methods.
+ * <p>
+ * A good example of overriding an attribute would be the case where
+ * a user wanted to change the name of one of the generated classes,
+ * change the target package, or change the name of the generated SQL map
file.
+ * <p>
+ * <b>Warning:</b> Anything that is listed as an attribute should
+ * not be changed by one of the other plugin methods. For example,
+ * if you want to change the name of a generated example class, you
+ * should not simply change the Type in the
+ * <code>modelExampleClassGenerated()</code> method. If you do, the
+ * change will not be reflected in other generated artifacts.
+ *
+ * @param introspectedTable
+ */
+ void attributesCalculated(IntrospectedTable introspectedTable);
+
+ /**
* This method is called after all the setXXX methods are called, but
before any
* other method is called. This allows the plugin to determine whether
* it can run or not. For example, if the plugin requires certain
properties
Modified:
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IbatorPluginAdapter.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IbatorPluginAdapter.java?rev=727776&r1=727775&r2=727776&view=diff
==============================================================================
---
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IbatorPluginAdapter.java
(original)
+++
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IbatorPluginAdapter.java
Thu Dec 18 09:45:44 2008
@@ -303,4 +303,7 @@
public boolean daoInsertSelectiveMethodGenerated(Method method,
TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
return true;
}
+
+ public void attributesCalculated(IntrospectedTable introspectedTable) {
+ }
}
Modified:
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IntrospectedTable.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IntrospectedTable.java?rev=727776&r1=727775&r2=727776&view=diff
==============================================================================
---
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IntrospectedTable.java
(original)
+++
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IntrospectedTable.java
Thu Dec 18 09:45:44 2008
@@ -17,8 +17,10 @@
package org.apache.ibatis.ibator.api;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import org.apache.ibatis.ibator.api.dom.java.FullyQualifiedJavaType;
import org.apache.ibatis.ibator.config.DAOGeneratorConfiguration;
@@ -45,6 +47,67 @@
*
*/
public abstract class IntrospectedTable {
+ /**
+ * This attribute must be a class of type java.lang.String
+ */
+ public static final String ATTR_DAO_IMPLEMENTATION_PACKAGE =
"org.apache.ibatis.ibator.api.IntrospectedTable.ATTR_DAO_IMPLEMENTATION_PACKAGE";
//$NON-NLS-1$
+
+ /**
+ * This attribute must be a class of type java.lang.String
+ */
+ public static final String ATTR_DAO_INTERFACE_PACKAGE =
"org.apache.ibatis.ibator.api.IntrospectedTable.ATTR_DAO_INTERFACE_PACKAGE";
//$NON-NLS-1$
+
+ /**
+ * This attribute must be a class of type
+ * org.apache.ibatis.ibator.api.dom.java.FullyQualifiedJavaType
+ */
+ public static final String ATTR_DAO_IMPLEMENTATION_TYPE =
"org.apache.ibatis.ibator.api.IntrospectedTable.ATTR_DAO_IMPLEMENTATION_TYPE";
//$NON-NLS-1$
+
+ /**
+ * This attribute must be a class of type
+ * org.apache.ibatis.ibator.api.dom.java.FullyQualifiedJavaType
+ */
+ public static final String ATTR_DAO_INTERFACE_TYPE =
"org.apache.ibatis.ibator.api.IntrospectedTable.ATTR_DAO_INTERFACE_TYPE";
//$NON-NLS-1$
+
+ /**
+ * This attribute must be a class of type java.lang.String
+ */
+ public static final String ATTR_JAVA_MODEL_PACKAGE =
"org.apache.ibatis.ibator.api.IntrospectedTable.ATTR_JAVA_MODEL_PACKAGE";
//$NON-NLS-1$
+
+ /**
+ * This attribute must be a class of type
+ * org.apache.ibatis.ibator.api.dom.java.FullyQualifiedJavaType
+ */
+ public static final String ATTR_PRIMARY_KEY_TYPE =
"org.apache.ibatis.ibator.api.IntrospectedTable.ATTR_PRIMARY_KEY_TYPE";
//$NON-NLS-1$
+
+ /**
+ * This attribute must be a class of type
+ * org.apache.ibatis.ibator.api.dom.java.FullyQualifiedJavaType
+ */
+ public static final String ATTR_BASE_RECORD_TYPE =
"org.apache.ibatis.ibator.api.IntrospectedTable.ATTR_BASE_RECORD_TYPE";
//$NON-NLS-1$
+
+ /**
+ * This attribute must be a class of type
+ * org.apache.ibatis.ibator.api.dom.java.FullyQualifiedJavaType
+ */
+ public static final String ATTR_RECORD_WITH_BLOBS_TYPE =
"org.apache.ibatis.ibator.api.IntrospectedTable.ATTR_RECORD_WITH_BLOBS_TYPE";
//$NON-NLS-1$
+
+ /**
+ * This attribute must be a class of type
+ * org.apache.ibatis.ibator.api.dom.java.FullyQualifiedJavaType
+ */
+ public static final String ATTR_EXAMPLE_TYPE =
"org.apache.ibatis.ibator.api.IntrospectedTable.ATTR_EXAMPLE_TYPE";
//$NON-NLS-1$
+
+ /**
+ * This attribute must be a class of type java.lang.String
+ */
+ public static final String ATTR_SQL_MAP_PACKAGE =
"org.apache.ibatis.ibator.api.IntrospectedTable.ATTR_SQL_MAP_PACKAGE";
//$NON-NLS-1$
+
+ /**
+ * This attribute must be a class of type java.lang.String
+ */
+ public static final String ATTR_SQL_MAP_FILE_NAME =
"org.apache.ibatis.ibator.api.IntrospectedTable.ATTR_SQL_MAP_FILE_NAME";
//$NON-NLS-1$
+
protected TableConfiguration tableConfiguration;
protected FullyQualifiedTable fullyQualifiedTable;
protected IbatorContext ibatorContext;
@@ -55,11 +118,19 @@
protected boolean hasJDBCDateColumns;
protected boolean hasJDBCTimeColumns;
+ /**
+ * Attributes may be used by plugins to capture table related state
+ * between the different plugin calls. Attibutes also are used
+ * to store commonly accessed items by all code generators
+ */
+ protected Map<String, Object> attributes;
+
public IntrospectedTable() {
super();
primaryKeyColumns = new ArrayList<IntrospectedColumn>();
baseColumns = new ArrayList<IntrospectedColumn>();
blobColumns = new ArrayList<IntrospectedColumn>();
+ attributes = new HashMap<String, Object>();
}
public FullyQualifiedTable getFullyQualifiedTable() {
@@ -241,15 +312,7 @@
}
public FullyQualifiedJavaType getPrimaryKeyType() {
- StringBuilder sb = new StringBuilder();
- sb.append(getJavaModelPackage());
- sb.append('.');
- sb.append(fullyQualifiedTable.getDomainObjectName());
- sb.append("Key"); //$NON-NLS-1$
-
- FullyQualifiedJavaType fqjt = new
FullyQualifiedJavaType(sb.toString());
-
- return fqjt;
+ return (FullyQualifiedJavaType) getAttribute(ATTR_PRIMARY_KEY_TYPE);
}
/**
@@ -259,14 +322,7 @@
* the value will be calculated regardless of whether the table has these
columns or not.
*/
public FullyQualifiedJavaType getBaseRecordType() {
- StringBuilder sb = new StringBuilder();
- sb.append(getJavaModelPackage());
- sb.append('.');
- sb.append(fullyQualifiedTable.getDomainObjectName());
-
- FullyQualifiedJavaType fqjt = new
FullyQualifiedJavaType(sb.toString());
-
- return fqjt;
+ return (FullyQualifiedJavaType) getAttribute(ATTR_BASE_RECORD_TYPE);
}
/**
@@ -274,15 +330,7 @@
* @return the type for the example class.
*/
public FullyQualifiedJavaType getExampleType() {
- StringBuilder sb = new StringBuilder();
- sb.append(getJavaModelPackage());
- sb.append('.');
- sb.append(fullyQualifiedTable.getDomainObjectName());
- sb.append("Example"); //$NON-NLS-1$
-
- FullyQualifiedJavaType fqjt = new
FullyQualifiedJavaType(sb.toString());
-
- return fqjt;
+ return (FullyQualifiedJavaType) getAttribute(ATTR_EXAMPLE_TYPE);
}
/**
@@ -291,15 +339,7 @@
* the value will be calculated regardless of whether the table has BLOB
columns or not.
*/
public FullyQualifiedJavaType getRecordWithBLOBsType() {
- StringBuilder sb = new StringBuilder();
- sb.append(getJavaModelPackage());
- sb.append('.');
- sb.append(fullyQualifiedTable.getDomainObjectName());
- sb.append("WithBLOBs"); //$NON-NLS-1$
-
- FullyQualifiedJavaType fqjt = new
FullyQualifiedJavaType(sb.toString());
-
- return fqjt;
+ return (FullyQualifiedJavaType)
getAttribute(ATTR_RECORD_WITH_BLOBS_TYPE);
}
/**
@@ -310,11 +350,7 @@
* @return the name of the SqlMap file
*/
public String getSqlMapFileName() {
- StringBuilder sb = new StringBuilder();
- sb.append(fullyQualifiedTable.getSqlMapNamespace());
- sb.append("_SqlMap.xml"); //$NON-NLS-1$
-
- return sb.toString();
+ return (String) getAttribute(ATTR_SQL_MAP_FILE_NAME);
}
/**
@@ -323,38 +359,15 @@
* @return the package for the SqlMap for the current table
*/
public String getSqlMapPackage() {
- SqlMapGeneratorConfiguration config =
ibatorContext.getSqlMapGeneratorConfiguration();
-
- StringBuilder sb = new StringBuilder(config.getTargetPackage());
- if
(StringUtility.isTrue(config.getProperty(PropertyRegistry.ANY_ENABLE_SUB_PACKAGES)))
{
- sb.append(fullyQualifiedTable.getSubPackage());
- }
-
- return sb.toString();
+ return (String) getAttribute(ATTR_SQL_MAP_PACKAGE);
}
public FullyQualifiedJavaType getDAOImplementationType() {
- StringBuilder sb = new StringBuilder();
- sb.append(getDAOImplementationPackage());
- sb.append('.');
- sb.append(fullyQualifiedTable.getDomainObjectName());
- sb.append("DAOImpl"); //$NON-NLS-1$
-
- FullyQualifiedJavaType fqjt = new
FullyQualifiedJavaType(sb.toString());
-
- return fqjt;
+ return (FullyQualifiedJavaType)
getAttribute(ATTR_DAO_IMPLEMENTATION_TYPE);
}
public FullyQualifiedJavaType getDAOInterfaceType() {
- StringBuilder sb = new StringBuilder();
- sb.append(getDAOInterfacePackage());
- sb.append('.');
- sb.append(fullyQualifiedTable.getDomainObjectName());
- sb.append("DAO"); //$NON-NLS-1$
-
- FullyQualifiedJavaType fqjt = new
FullyQualifiedJavaType(sb.toString());
-
- return fqjt;
+ return (FullyQualifiedJavaType) getAttribute(ATTR_DAO_INTERFACE_TYPE);
}
public boolean hasAnyColumns() {
@@ -364,43 +377,15 @@
}
public String getDAOInterfacePackage() {
- DAOGeneratorConfiguration config =
ibatorContext.getDaoGeneratorConfiguration();
-
- StringBuilder sb = new StringBuilder();
- sb.append(config.getTargetPackage());
- if
(StringUtility.isTrue(config.getProperty(PropertyRegistry.ANY_ENABLE_SUB_PACKAGES)))
{
- sb.append(fullyQualifiedTable.getSubPackage());
- }
-
- return sb.toString();
+ return (String) getAttribute(ATTR_DAO_INTERFACE_PACKAGE);
}
public String getDAOImplementationPackage() {
- DAOGeneratorConfiguration config =
ibatorContext.getDaoGeneratorConfiguration();
-
- StringBuilder sb = new StringBuilder();
- if (StringUtility.stringHasValue(config.getImplementationPackage())) {
- sb.append(config.getImplementationPackage());
- } else {
- sb.append(config.getTargetPackage());
- }
- if
(StringUtility.isTrue(config.getProperty(PropertyRegistry.ANY_ENABLE_SUB_PACKAGES)))
{
- sb.append(fullyQualifiedTable.getSubPackage());
- }
-
- return sb.toString();
+ return (String) getAttribute(ATTR_DAO_IMPLEMENTATION_PACKAGE);
}
public String getJavaModelPackage() {
- JavaModelGeneratorConfiguration config =
ibatorContext.getJavaModelGeneratorConfiguration();
-
- StringBuilder sb = new StringBuilder();
- sb.append(config.getTargetPackage());
- if
(StringUtility.isTrue(config.getProperty(PropertyRegistry.ANY_ENABLE_SUB_PACKAGES)))
{
- sb.append(fullyQualifiedTable.getSubPackage());
- }
-
- return sb.toString();
+ return (String) getAttribute(ATTR_JAVA_MODEL_PACKAGE);
}
public void setTableConfiguration(TableConfiguration tableConfiguration) {
@@ -462,6 +447,166 @@
}
}
+ public Object getAttribute(String name) {
+ return attributes.get(name);
+ }
+
+ public void removeAttribute(String name) {
+ attributes.remove(name);
+ }
+
+ public void setAttribute(String name, Object value) {
+ attributes.put(name, value);
+ }
+
+ public void calculateAttributes() {
+ calculateDAOImplementationPackage();
+ calculateDAOInterfacePackage();
+ calculateDAOImplementationType();
+ calculateDAOInterfaceType();
+
+ calculateJavaModelPackage();
+ calculatePrimaryKeyType();
+ calculateBaseRecordType();
+ calculateRecordWithBLOBsType();
+ calculateExampleType();
+
+ calculateSqlMapPackage();
+ calculateSqlMapFileName();
+
+ ibatorContext.getPlugins().attributesCalculated(this);
+ }
+
+ private void calculateDAOImplementationPackage() {
+ DAOGeneratorConfiguration config =
ibatorContext.getDaoGeneratorConfiguration();
+
+ StringBuilder sb = new StringBuilder();
+ if (StringUtility.stringHasValue(config.getImplementationPackage())) {
+ sb.append(config.getImplementationPackage());
+ } else {
+ sb.append(config.getTargetPackage());
+ }
+ if
(StringUtility.isTrue(config.getProperty(PropertyRegistry.ANY_ENABLE_SUB_PACKAGES)))
{
+ sb.append(fullyQualifiedTable.getSubPackage());
+ }
+
+ setAttribute(ATTR_DAO_IMPLEMENTATION_PACKAGE, sb.toString());
+ }
+
+ private void calculateDAOInterfacePackage() {
+ DAOGeneratorConfiguration config =
ibatorContext.getDaoGeneratorConfiguration();
+
+ StringBuilder sb = new StringBuilder();
+ sb.append(config.getTargetPackage());
+ if
(StringUtility.isTrue(config.getProperty(PropertyRegistry.ANY_ENABLE_SUB_PACKAGES)))
{
+ sb.append(fullyQualifiedTable.getSubPackage());
+ }
+
+ setAttribute(ATTR_DAO_INTERFACE_PACKAGE, sb.toString());
+ }
+
+ private void calculateDAOImplementationType() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(getDAOImplementationPackage());
+ sb.append('.');
+ sb.append(fullyQualifiedTable.getDomainObjectName());
+ sb.append("DAOImpl"); //$NON-NLS-1$
+
+ FullyQualifiedJavaType fqjt = new
FullyQualifiedJavaType(sb.toString());
+
+ setAttribute(ATTR_DAO_IMPLEMENTATION_TYPE, fqjt);
+ }
+
+ private void calculateDAOInterfaceType() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(getDAOInterfacePackage());
+ sb.append('.');
+ sb.append(fullyQualifiedTable.getDomainObjectName());
+ sb.append("DAO"); //$NON-NLS-1$
+
+ FullyQualifiedJavaType fqjt = new
FullyQualifiedJavaType(sb.toString());
+
+ setAttribute(ATTR_DAO_INTERFACE_TYPE, fqjt);
+ }
+
+ private void calculateJavaModelPackage() {
+ JavaModelGeneratorConfiguration config =
ibatorContext.getJavaModelGeneratorConfiguration();
+
+ StringBuilder sb = new StringBuilder();
+ sb.append(config.getTargetPackage());
+ if
(StringUtility.isTrue(config.getProperty(PropertyRegistry.ANY_ENABLE_SUB_PACKAGES)))
{
+ sb.append(fullyQualifiedTable.getSubPackage());
+ }
+
+ setAttribute(ATTR_JAVA_MODEL_PACKAGE, sb.toString());
+ }
+
+ private void calculatePrimaryKeyType() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(getJavaModelPackage());
+ sb.append('.');
+ sb.append(fullyQualifiedTable.getDomainObjectName());
+ sb.append("Key"); //$NON-NLS-1$
+
+ FullyQualifiedJavaType fqjt = new
FullyQualifiedJavaType(sb.toString());
+
+ setAttribute(ATTR_PRIMARY_KEY_TYPE, fqjt);
+ }
+
+ private void calculateBaseRecordType() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(getJavaModelPackage());
+ sb.append('.');
+ sb.append(fullyQualifiedTable.getDomainObjectName());
+
+ FullyQualifiedJavaType fqjt = new
FullyQualifiedJavaType(sb.toString());
+
+ setAttribute(ATTR_BASE_RECORD_TYPE, fqjt);
+ }
+
+ private void calculateRecordWithBLOBsType() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(getJavaModelPackage());
+ sb.append('.');
+ sb.append(fullyQualifiedTable.getDomainObjectName());
+ sb.append("WithBLOBs"); //$NON-NLS-1$
+
+ FullyQualifiedJavaType fqjt = new
FullyQualifiedJavaType(sb.toString());
+
+ setAttribute(ATTR_RECORD_WITH_BLOBS_TYPE, fqjt);
+ }
+
+ private void calculateExampleType() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(getJavaModelPackage());
+ sb.append('.');
+ sb.append(fullyQualifiedTable.getDomainObjectName());
+ sb.append("Example"); //$NON-NLS-1$
+
+ FullyQualifiedJavaType fqjt = new
FullyQualifiedJavaType(sb.toString());
+
+ setAttribute(ATTR_EXAMPLE_TYPE, fqjt);
+ }
+
+ private void calculateSqlMapPackage() {
+ SqlMapGeneratorConfiguration config =
ibatorContext.getSqlMapGeneratorConfiguration();
+
+ StringBuilder sb = new StringBuilder(config.getTargetPackage());
+ if
(StringUtility.isTrue(config.getProperty(PropertyRegistry.ANY_ENABLE_SUB_PACKAGES)))
{
+ sb.append(fullyQualifiedTable.getSubPackage());
+ }
+
+ setAttribute(ATTR_SQL_MAP_PACKAGE, sb.toString());;
+ }
+
+ private void calculateSqlMapFileName() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(fullyQualifiedTable.getSqlMapNamespace());
+ sb.append("_SqlMap.xml"); //$NON-NLS-1$
+
+ setAttribute(ATTR_SQL_MAP_FILE_NAME, sb.toString());
+ }
+
/**
* This method can be used to initialize the generators before they
* will be called.
Modified:
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/IbatorContext.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/IbatorContext.java?rev=727776&r1=727775&r2=727776&view=diff
==============================================================================
---
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/IbatorContext.java
(original)
+++
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/IbatorContext.java
Thu Dec 18 09:45:44 2008
@@ -494,6 +494,7 @@
for (IntrospectedTable introspectedTable : introspectedTables) {
callback.checkCancel();
+ introspectedTable.calculateAttributes();
generatedJavaFiles.addAll(introspectedTable.getGeneratedJavaFiles());
generatedXmlFiles.addAll(introspectedTable.getGeneratedXmlFiles());
Modified:
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/IbatorPluginAggregator.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/IbatorPluginAggregator.java?rev=727776&r1=727775&r2=727776&view=diff
==============================================================================
---
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/IbatorPluginAggregator.java
(original)
+++
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/IbatorPluginAggregator.java
Thu Dec 18 09:45:44 2008
@@ -944,4 +944,10 @@
return rc;
}
+
+ public void attributesCalculated(IntrospectedTable introspectedTable) {
+ for (IbatorPlugin plugin : plugins) {
+ plugin.attributesCalculated(introspectedTable);
+ }
+ }
}
Modified:
ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/miscellaneous/MiscellaneousTests.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/miscellaneous/MiscellaneousTests.java?rev=727776&r1=727775&r2=727776&view=diff
==============================================================================
---
ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/miscellaneous/MiscellaneousTests.java
(original)
+++
ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/miscellaneous/MiscellaneousTests.java
Thu Dec 18 09:45:44 2008
@@ -34,7 +34,7 @@
import ibatortest.generated.miscellaneous.dao.MyObjectDAO;
import ibatortest.generated.miscellaneous.dao.RegexrenameDAO;
import ibatortest.generated.miscellaneous.model.MyObject;
-import ibatortest.generated.miscellaneous.model.MyObjectExample;
+import ibatortest.generated.miscellaneous.model.MyObjectCriteria;
import ibatortest.generated.miscellaneous.model.MyObjectKey;
import ibatortest.generated.miscellaneous.model.Regexrename;
@@ -223,7 +223,7 @@
int rows = dao.deleteMyObjectByPrimaryKey(key);
assertEquals(1, rows);
- MyObjectExample example = new MyObjectExample();
+ MyObjectCriteria example = new MyObjectCriteria();
List answer = dao.selectMyObjectByExample(example);
assertEquals(0, answer.size());
} catch (SQLException e) {
@@ -255,16 +255,16 @@
dao.insertMyObject(record);
- MyObjectExample example = new MyObjectExample();
+ MyObjectCriteria example = new MyObjectCriteria();
List answer = dao.selectMyObjectByExample(example);
assertEquals(2, answer.size());
- example = new MyObjectExample();
+ example = new MyObjectCriteria();
example.createCriteria().andLastnameLike("J%");
int rows = dao.deleteMyObjectByExample(example);
assertEquals(1, rows);
- example = new MyObjectExample();
+ example = new MyObjectCriteria();
answer = dao.selectMyObjectByExample(example);
assertEquals(1, answer.size());
} catch (SQLException e) {
@@ -368,7 +368,7 @@
record.setId2(3);
dao.insertMyObject(record);
- MyObjectExample example = new MyObjectExample();
+ MyObjectCriteria example = new MyObjectCriteria();
fn = new FirstName();
fn.setValue("B%");
example.createCriteria().andFirstnameLike(fn);
@@ -448,7 +448,7 @@
record.setId2(3);
dao.insertMyObject(record);
- MyObjectExample example = new MyObjectExample();
+ MyObjectCriteria example = new MyObjectCriteria();
fn = new FirstName();
fn.setValue("B%");
example.createCriteria().andFirstnameNotLike(fn);
@@ -528,7 +528,7 @@
record.setId2(3);
dao.insertMyObject(record);
- MyObjectExample example = new MyObjectExample();
+ MyObjectCriteria example = new MyObjectCriteria();
fn = new FirstName();
fn.setValue("B%");
example.createCriteria().andFirstnameLike(fn).andId2EqualTo(3);
@@ -612,7 +612,7 @@
ids.add(1);
ids.add(3);
- MyObjectExample example = new MyObjectExample();
+ MyObjectCriteria example = new MyObjectCriteria();
example.createCriteria().andId2In(ids);
example.setOrderByClause("ID1, ID2");
@@ -701,7 +701,7 @@
record.setId2(3);
dao.insertMyObject(record);
- MyObjectExample example = new MyObjectExample();
+ MyObjectCriteria example = new MyObjectCriteria();
example.createCriteria().andId2Between(1, 3);
example.setOrderByClause("ID1, ID2");
@@ -737,7 +737,7 @@
dao.insertMyObject(record);
- MyObjectExample example = new MyObjectExample();
+ MyObjectCriteria example = new MyObjectCriteria();
example.createCriteria().andTimefieldEqualTo(myTime);
List<MyObject> results = dao.selectMyObjectByExample(example);
assertEquals(1, results.size());
@@ -798,7 +798,7 @@
MyObject newRecord = new MyObject();
newRecord.setLastname("Barker");
- MyObjectExample example = new MyObjectExample();
+ MyObjectCriteria example = new MyObjectCriteria();
fn = new FirstName();
fn.setValue("B%");
example.createCriteria().andFirstnameLike(fn);
@@ -847,7 +847,7 @@
newRecord.setId1(3);
newRecord.setId2(4);
- MyObjectExample example = new MyObjectExample();
+ MyObjectCriteria example = new MyObjectCriteria();
example.createCriteria()
.andId1EqualTo(3)
.andId2EqualTo(4);
Modified:
ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/ibatorConfig.xml
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/ibatorConfig.xml?rev=727776&r1=727775&r2=727776&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/ibatorConfig.xml
(original)
+++ ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/ibatorConfig.xml
Thu Dec 18 09:45:44 2008
@@ -261,6 +261,7 @@
<ibatorContext id="miscellaneousTests" targetRuntime="Ibatis2Java5">
<ibatorPlugin type="org.apache.ibatis.ibator.plugins.EqualsHashCodePlugin"
/>
+ <ibatorPlugin type="org.apache.ibatis.ibator.build.test.TestPlugin" />
<commentGenerator>
<property name="suppressDate" value="true"/>