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 2008/07/24 01:29:11 UTC

svn commit: r679231 [1/2] - in /ibatis/trunk/java/tools/ibator/core: build/ doc/ src/org/apache/ibatis/ibator/api/ src/org/apache/ibatis/ibator/api/dom/ src/org/apache/ibatis/ibator/api/dom/java/ src/org/apache/ibatis/ibator/api/dom/xml/ src/org/apache...

Author: jgbutler
Date: Wed Jul 23 16:29:10 2008
New Revision: 679231

URL: http://svn.apache.org/viewvc?rev=679231&view=rev
Log:
ibator: Add insertSelective method

Modified:
    ibatis/trunk/java/tools/ibator/core/build/build.xml
    ibatis/trunk/java/tools/ibator/core/build/version.properties
    ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/DAOMethodNameCalculator.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/FullyQualifiedTable.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/Ibator.java
    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/dom/OutputUtilities.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/Field.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/FullyQualifiedJavaType.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/InnerClass.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/InnerEnum.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/Interface.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/JavaElement.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/JavaWildcardType.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/Method.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/TopLevelClass.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/TopLevelEnumeration.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/xml/Attribute.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/xml/Document.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/xml/TextElement.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/xml/XmlElement.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/DefaultCommentGenerator.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/DefaultDAOMethodNameCalculator.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/DefaultShellCallback.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/ExtendedDAOMethodNameCalculator.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/IbatorPluginAggregator.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/ColumnDefinition.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/DatabaseIntrospector.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/IntrospectedTableDefaultImpl.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/java/dao/BaseDAOGenerator.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/java/model/JavaModelGeneratorJava2Impl.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/java/model/JavaModelGeneratorJava5Impl.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/rules/IbatorRules.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/sqlmap/SqlMapGeneratorIterateImpl.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/sqlmap/XmlConstants.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/util/JavaBeansUtil.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/util/StringUtility.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/plugins/EqualsHashCodePlugin.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/plugins/SqlMapConfigPlugin.java
    ibatis/trunk/java/tools/ibator/core/testJava2/ibatortest/java2/CreateDB.sql
    ibatis/trunk/java/tools/ibator/core/testJava2/ibatortest/java2/execute/conditional/java2/InsertTests.java
    ibatis/trunk/java/tools/ibator/core/testJava2/ibatortest/java2/execute/flat/java2/FlatJava2Tests.java
    ibatis/trunk/java/tools/ibator/core/testJava2/ibatortest/java2/execute/hierarchical/java2/HierarchicalJava2Tests.java
    ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/CreateDB.sql
    ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/conditional/java2/ConditionalJava2Tests.java
    ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/conditional/java5/ConditionalJava5Tests.java
    ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/flat/java2/FlatJava2Tests.java
    ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/flat/java5/FlatJava5Tests.java
    ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/hierarchical/java2/HierarchicalJava2Tests.java
    ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/hierarchical/java5/HierarchicalJava5Tests.java

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=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/build/build.xml (original)
+++ ibatis/trunk/java/tools/ibator/core/build/build.xml Wed Jul 23 16:29:10 2008
@@ -401,7 +401,7 @@
       <fileset dir="${reports.junit}">
         <include name="TEST-*.xml"/>
       </fileset>
-	      <report format="frames" todir="${reports.junit}"/>
+      <report format="frames" todir="${reports.junit}"/>
     </junitreport>
   </target>
 	

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=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/build/version.properties (original)
+++ ibatis/trunk/java/tools/ibator/core/build/version.properties Wed Jul 23 16:29:10 2008
@@ -1,4 +1,4 @@
 #ibator build version info
-#Mon Jul 21 20:40:21 CDT 2008
+#Wed Jul 23 17:01:53 CDT 2008
 version=1.2.0
-buildNum=570
+buildNum=577

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=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt (original)
+++ ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt Wed Jul 23 16:29:10 2008
@@ -4,6 +4,7 @@
 Bugs:
 1. Fixed the JavaTypeResolver so that an unsupported data type can be
    overridden by configuration.
+2. Fixed IBATIS-523 - bug in EqualsHashCodePlugin
 
 Enhancements:
 1. Ibator now includes a plugin machanism that you can use to extend or
@@ -17,6 +18,7 @@
    patch!
 3. Added abiliy to configure an implementation of IntrospectedTable interface.
    This to allow overriding of many default behaviors of ibator.
+4. New method - insertSelective
    
    
 Changes:

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/DAOMethodNameCalculator.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/DAOMethodNameCalculator.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/DAOMethodNameCalculator.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/DAOMethodNameCalculator.java Wed Jul 23 16:29:10 2008
@@ -34,6 +34,14 @@
     String getInsertMethodName(IntrospectedTable introspectedTable);
     
     /**
+     * Calculates and returns a name for the insert selective method.
+     * 
+     * @param introspectedTable
+     * @return the calculated name
+     */
+    String getInsertSelectiveMethodName(IntrospectedTable introspectedTable);
+    
+    /**
      * Calculates and returns a name for the update by primary key without BLOBs
      * method.
      * 

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/FullyQualifiedTable.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/FullyQualifiedTable.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/FullyQualifiedTable.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/FullyQualifiedTable.java Wed Jul 23 16:29:10 2008
@@ -140,7 +140,7 @@
 	}
 
     public String getFullyQualifiedTableNameAtRuntime() {
-        StringBuffer localCatalog = new StringBuffer();
+        StringBuilder localCatalog = new StringBuilder();
         if (!ignoreQualifiersAtRuntime) {
             if (StringUtility.stringHasValue(runtimeCatalog)) {
                 localCatalog.append(runtimeCatalog);
@@ -152,7 +152,7 @@
             addDelimiters(localCatalog);
         }
         
-        StringBuffer localSchema = new StringBuffer();
+        StringBuilder localSchema = new StringBuilder();
         if (!ignoreQualifiersAtRuntime) {
             if (StringUtility.stringHasValue(runtimeSchema)) {
                 localSchema.append(runtimeSchema);
@@ -164,7 +164,7 @@
             addDelimiters(localSchema);
         }
         
-        StringBuffer localTableName = new StringBuffer();
+        StringBuilder localTableName = new StringBuilder();
         if (StringUtility.stringHasValue(runtimeTableName)) {
             localTableName.append(runtimeTableName);
         } else {
@@ -180,7 +180,7 @@
     }
 
     public String getAliasedFullyQualifiedTableNameAtRuntime() {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
 
         sb.append(getFullyQualifiedTableNameAtRuntime());
         
@@ -268,7 +268,7 @@
      * @return the subpackage for this table
      */
     public String getSubPackage() {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         if (!ignoreQualifiersAtRuntime) {
             if (StringUtility.stringHasValue(runtimeCatalog)) {
                 sb.append('.');
@@ -291,7 +291,7 @@
         return sb.toString();
     }
     
-    private void addDelimiters(StringBuffer sb) {
+    private void addDelimiters(StringBuilder sb) {
         if (StringUtility.stringHasValue(beginningDelimiter)) {
             sb.insert(0, beginningDelimiter);
         }

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/Ibator.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/Ibator.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/Ibator.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/Ibator.java Wed Jul 23 16:29:10 2008
@@ -287,7 +287,7 @@
         File answer = null;
         
         // try up to 1000 times to generate a unique file name
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         for (int i = 1; i < 1000; i++) {
             sb.setLength(0);
             sb.append(fileName);

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=679231&r1=679230&r2=679231&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 Wed Jul 23 16:29:10 2008
@@ -241,6 +241,23 @@
     boolean daoInsertMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedTable introspectedTable);
     
     /**
+     * This method is called when the insert selective method has been
+     * generated in the DAO implementation class.
+     * 
+     * @param method the generated insert method
+     * @param topLevelClass the partially implemented DAO implementation
+     *   class.  You can add additional imported classes to the 
+     *   implementation class if necessary.
+     * @param introspectedTable ibator's class containing information
+     *   about the table as introspected from the database
+     * @return true if the method should be generated, false
+     *   if the generated method should be ignored.  In the case
+     *   of multiple plugins, the first plugin returning false
+     *   will disable the calling of further plugins.
+     */
+    boolean daoInsertSelectiveMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedTable introspectedTable);
+    
+    /**
      * This method is called when the selectByExampleWithBLOBs method has been
      * generated in the DAO implementation class.
      * 
@@ -462,6 +479,23 @@
     boolean daoInsertMethodGenerated(Method method, Interface interfaze, IntrospectedTable introspectedTable);
     
     /**
+     * This method is called when the insert selective method has been
+     * generated in the DAO interface class.
+     * 
+     * @param method the generated insert method
+     * @param interfaze the partially implemented DAO interface
+     *   class.  You can add additional imported classes to the 
+     *   interface class if necessary.
+     * @param introspectedTable ibator's class containing information
+     *   about the table as introspected from the database
+     * @return true if the method should be generated, false
+     *   if the generated method should be ignored.  In the case
+     *   of multiple plugins, the first plugin returning false
+     *   will disable the calling of further plugins.
+     */
+    boolean daoInsertSelectiveMethodGenerated(Method method, Interface interfaze, IntrospectedTable introspectedTable);
+    
+    /**
      * This method is called when the selectByExampleWithBLOBs method has been
      * generated in the DAO interface class.
      * 
@@ -863,6 +897,19 @@
     boolean sqlMapInsertElementGenerated(XmlElement element, IntrospectedTable introspectedTable);
 
     /**
+     * This method is called when the insert selective element is generated.
+     * 
+     * @param element the generated &lt;insert&gt; element
+     * @param introspectedTable ibator's class containing information
+     *   about the table as introspected from the database
+     * @return true if the element should be generated, false
+     *   if the generated element should be ignored.  In the case
+     *   of multiple plugins, the first plugin returning false
+     *   will disable the calling of further plugins.
+     */
+    boolean sqlMapInsertSelectiveElementGenerated(XmlElement element, IntrospectedTable introspectedTable);
+
+    /**
      * This method is called when the resultMap with BLOBs element is
      * generated - this resultMap will extend the base resultMap.
      * 

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=679231&r1=679230&r2=679231&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 Wed Jul 23 16:29:10 2008
@@ -289,4 +289,16 @@
     public boolean sqlMapUpdateByPrimaryKeyWithoutBLOBsElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
         return true;
     }
+
+    public boolean sqlMapInsertSelectiveElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
+        return true;
+    }
+
+    public boolean daoInsertSelectiveMethodGenerated(Method method, Interface interfaze, IntrospectedTable introspectedTable) {
+        return true;
+    }
+
+    public boolean daoInsertSelectiveMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
+        return true;
+    }
 }

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/OutputUtilities.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/OutputUtilities.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/OutputUtilities.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/OutputUtilities.java Wed Jul 23 16:29:10 2008
@@ -41,11 +41,11 @@
      * (four spaces per indent level).
      * 
      * @param sb
-     *            a StringBuffer to append to
+     *            a StringBuilder to append to
      * @param indentLevel
      *            the required indent level
      */
-    public static void javaIndent(StringBuffer sb, int indentLevel) {
+    public static void javaIndent(StringBuilder sb, int indentLevel) {
         for (int i = 0; i < indentLevel; i++) {
             sb.append("    "); //$NON-NLS-1$
         }
@@ -56,23 +56,23 @@
      * (two spaces per indent level).
      * 
      * @param sb
-     *            a StringBuffer to append to
+     *            a StringBuilder to append to
      * @param indentLevel
      *            the required indent level
      */
-    public static void xmlIndent(StringBuffer sb, int indentLevel) {
+    public static void xmlIndent(StringBuilder sb, int indentLevel) {
         for (int i = 0; i < indentLevel; i++) {
             sb.append("  "); //$NON-NLS-1$
         }
     }
 
     /**
-     * Utility method. Adds a newline character to a StringBuffer.
+     * Utility method. Adds a newline character to a StringBuilder.
      * 
      * @param sb
-     *            the StringBuffer to be appended to
+     *            the StringBuilder to be appended to
      */
-    public static void newLine(StringBuffer sb) {
+    public static void newLine(StringBuilder sb) {
         sb.append(lineSeparator);
     }
 }

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/Field.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/Field.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/Field.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/Field.java Wed Jul 23 16:29:10 2008
@@ -76,7 +76,7 @@
     }
     
     public String getFormattedContent(int indentLevel) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
 
         addFormattedJavadoc(sb, indentLevel);
         addFormattedAnnotations(sb, indentLevel);

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/FullyQualifiedJavaType.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/FullyQualifiedJavaType.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/FullyQualifiedJavaType.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/FullyQualifiedJavaType.java Wed Jul 23 16:29:10 2008
@@ -258,7 +258,7 @@
     public void addTypeArgument(FullyQualifiedJavaType type) {
         typeArguments.add(type);
         
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append(baseShortName);
         sb.append('<');
         

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/InnerClass.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/InnerClass.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/InnerClass.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/InnerClass.java Wed Jul 23 16:29:10 2008
@@ -102,7 +102,7 @@
     }
     
     public String getFormattedContent(int indentLevel) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
 
         addFormattedJavadoc(sb, indentLevel);
         addFormattedAnnotations(sb, indentLevel);

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/InnerEnum.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/InnerEnum.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/InnerEnum.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/InnerEnum.java Wed Jul 23 16:29:10 2008
@@ -99,7 +99,7 @@
     }
     
     public String getFormattedContent(int indentLevel) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
 
         addFormattedJavadoc(sb, indentLevel);
         addFormattedAnnotations(sb, indentLevel);

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/Interface.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/Interface.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/Interface.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/Interface.java Wed Jul 23 16:29:10 2008
@@ -64,7 +64,7 @@
     }
 
     public String getFormattedContent() {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
 
         for (String commentLine : fileCommentLines) {
             sb.append(commentLine);

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/JavaElement.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/JavaElement.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/JavaElement.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/JavaElement.java Wed Jul 23 16:29:10 2008
@@ -81,7 +81,7 @@
         addAnnotation("@SuppressWarnings(\"unchecked\")"); //$NON-NLS-1$
     }
     
-    public void addFormattedJavadoc(StringBuffer sb, int indentLevel) {
+    public void addFormattedJavadoc(StringBuilder sb, int indentLevel) {
         for (String javaDocLine : javaDocLines) {
             OutputUtilities.javaIndent(sb, indentLevel);
             sb.append(javaDocLine);
@@ -89,7 +89,7 @@
         }
     }
 
-    public void addFormattedAnnotations(StringBuffer sb, int indentLevel) {
+    public void addFormattedAnnotations(StringBuilder sb, int indentLevel) {
         for (String annotation : annotations) {
             OutputUtilities.javaIndent(sb, indentLevel);
             sb.append(annotation);

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/JavaWildcardType.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/JavaWildcardType.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/JavaWildcardType.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/JavaWildcardType.java Wed Jul 23 16:29:10 2008
@@ -37,7 +37,7 @@
 
     @Override
     public String getShortName() {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         if (extendsType) {
             sb.append("? extends "); //$NON-NLS-1$
         } else {

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/Method.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/Method.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/Method.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/Method.java Wed Jul 23 16:29:10 2008
@@ -73,7 +73,7 @@
     }
     
     public String getFormattedContent(int indentLevel, boolean interfaceMethod) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
 
         addFormattedJavadoc(sb, indentLevel);
         addFormattedAnnotations(sb, indentLevel);

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/TopLevelClass.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/TopLevelClass.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/TopLevelClass.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/TopLevelClass.java Wed Jul 23 16:29:10 2008
@@ -56,7 +56,7 @@
     }
 
     public String getFormattedContent() {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
 
         for (String fileCommentLine : fileCommentLines) {
             sb.append(fileCommentLine);

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/TopLevelEnumeration.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/TopLevelEnumeration.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/TopLevelEnumeration.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/java/TopLevelEnumeration.java Wed Jul 23 16:29:10 2008
@@ -47,7 +47,7 @@
      * @see org.apache.ibatis.ibator.api.dom.java.CompilationUnit#getFormattedContent()
      */
     public String getFormattedContent() {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
 
         for (String fileCommentLine : fileCommentLines) {
             sb.append(fileCommentLine);

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/xml/Attribute.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/xml/Attribute.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/xml/Attribute.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/xml/Attribute.java Wed Jul 23 16:29:10 2008
@@ -45,7 +45,7 @@
     }
     
     public String getFormattedContent() {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append(name);
         sb.append("=\""); //$NON-NLS-1$
         sb.append(value);

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/xml/Document.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/xml/Document.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/xml/Document.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/xml/Document.java Wed Jul 23 16:29:10 2008
@@ -66,7 +66,7 @@
     }
     
     public String getFormattedContent() {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         
         sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"); //$NON-NLS-1$
 

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/xml/TextElement.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/xml/TextElement.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/xml/TextElement.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/xml/TextElement.java Wed Jul 23 16:29:10 2008
@@ -61,7 +61,7 @@
     private static String formatLongString(String s, int maxLineLength,
             int indentLevel) {
 
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         OutputUtilities.xmlIndent(sb, indentLevel);
         sb.append(s);
         if (sb.length() <= maxLineLength || s.indexOf(' ') == -1) {

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/xml/XmlElement.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/xml/XmlElement.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/xml/XmlElement.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/dom/xml/XmlElement.java Wed Jul 23 16:29:10 2008
@@ -80,7 +80,7 @@
      */
     @Override
     public String getFormattedContent(int indentLevel) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
 
         OutputUtilities.xmlIndent(sb, indentLevel);
         sb.append('<');

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/DefaultCommentGenerator.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/DefaultCommentGenerator.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/DefaultCommentGenerator.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/DefaultCommentGenerator.java Wed Jul 23 16:29:10 2008
@@ -50,7 +50,7 @@
     }
 
     public void addFieldComment(Field field, FullyQualifiedTable table, String columnName) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         
         field.addJavaDocLine("/**"); //$NON-NLS-1$
         field.addJavaDocLine(" * This field was generated by Apache iBATIS ibator."); //$NON-NLS-1$
@@ -67,7 +67,7 @@
     }
     
     public void addFieldComment(Field field, FullyQualifiedTable table) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         
         field.addJavaDocLine("/**"); //$NON-NLS-1$
         field.addJavaDocLine(" * This field was generated by Apache iBATIS ibator."); //$NON-NLS-1$
@@ -82,7 +82,7 @@
     }
 
     public void addClassComment(InnerClass innerClass, FullyQualifiedTable table) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         
         innerClass.addJavaDocLine("/**"); //$NON-NLS-1$
         innerClass.addJavaDocLine(" * This class was generated by Apache iBATIS ibator."); //$NON-NLS-1$
@@ -97,7 +97,7 @@
     }
 
     public void addEnumComment(InnerEnum innerEnum, FullyQualifiedTable table) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         
         innerEnum.addJavaDocLine("/**"); //$NON-NLS-1$
         innerEnum.addJavaDocLine(" * This enum was generated by Apache iBATIS ibator."); //$NON-NLS-1$
@@ -112,7 +112,7 @@
     }
 
     public void addGetterComment(Method method, FullyQualifiedTable table, String columnName) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         
         method.addJavaDocLine("/**"); //$NON-NLS-1$
         method.addJavaDocLine(" * This method was generated by Apache iBATIS ibator."); //$NON-NLS-1$
@@ -138,7 +138,7 @@
     }
 
     public void addSetterComment(Method method, FullyQualifiedTable table, String columnName) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         
         method.addJavaDocLine("/**"); //$NON-NLS-1$
         method.addJavaDocLine(" * This method was generated by Apache iBATIS ibator."); //$NON-NLS-1$
@@ -167,7 +167,7 @@
     }
 
     public void addGeneralMethodComment(Method method, FullyQualifiedTable table) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         
         method.addJavaDocLine("/**"); //$NON-NLS-1$
         method.addJavaDocLine(" * This method was generated by Apache iBATIS ibator."); //$NON-NLS-1$
@@ -197,7 +197,7 @@
 
         String s = getDateString();
         if (s != null) {
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
             sb.append("  This element was generated on "); //$NON-NLS-1$
             sb.append(s);
             sb.append('.');
@@ -230,7 +230,7 @@
      */
     protected void addIbatorJavadocTag(JavaElement javaElement) {
         javaElement.addJavaDocLine(" *"); //$NON-NLS-1$
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append(" * "); //$NON-NLS-1$
         sb.append(MergeConstants.NEW_JAVA_ELEMENT_TAG);
         String s = getDateString();

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/DefaultDAOMethodNameCalculator.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/DefaultDAOMethodNameCalculator.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/DefaultDAOMethodNameCalculator.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/DefaultDAOMethodNameCalculator.java Wed Jul 23 16:29:10 2008
@@ -154,4 +154,8 @@
             return "updateByExampleWithoutBLOBs"; //$NON-NLS-1$
         }
     }
+
+    public String getInsertSelectiveMethodName(IntrospectedTable introspectedTable) {
+        return "insertSelective"; //$NON-NLS-1$
+    }
 }

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/DefaultShellCallback.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/DefaultShellCallback.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/DefaultShellCallback.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/DefaultShellCallback.java Wed Jul 23 16:29:10 2008
@@ -56,7 +56,7 @@
                     targetProject));
         }
         
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         StringTokenizer st = new StringTokenizer(targetPackage, "."); //$NON-NLS-1$
         while (st.hasMoreTokens()) {
             sb.append(st.nextToken());

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/ExtendedDAOMethodNameCalculator.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/ExtendedDAOMethodNameCalculator.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/ExtendedDAOMethodNameCalculator.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/ExtendedDAOMethodNameCalculator.java Wed Jul 23 16:29:10 2008
@@ -34,7 +34,7 @@
     }
 
     public String getInsertMethodName(IntrospectedTable introspectedTable) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append("insert"); //$NON-NLS-1$
         sb.append(introspectedTable.getFullyQualifiedTable().getDomainObjectName());
         
@@ -50,7 +50,7 @@
      * 3. Else the method name should be updateByPrimaryKeyWithoutBLOBs
      */
     public String getUpdateByPrimaryKeyWithoutBLOBsMethodName(IntrospectedTable introspectedTable) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
 
         sb.append("update"); //$NON-NLS-1$
         sb.append(introspectedTable.getFullyQualifiedTable().getDomainObjectName());
@@ -77,7 +77,7 @@
      * 3. Else the method name should be updateByPrimaryKeyWithBLOBs
      */
     public String getUpdateByPrimaryKeyWithBLOBsMethodName(IntrospectedTable introspectedTable) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append("update"); //$NON-NLS-1$
         sb.append(introspectedTable.getFullyQualifiedTable().getDomainObjectName());
         
@@ -95,7 +95,7 @@
     }
 
     public String getDeleteByExampleMethodName(IntrospectedTable introspectedTable) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append("delete"); //$NON-NLS-1$
         sb.append(introspectedTable.getFullyQualifiedTable().getDomainObjectName());
         sb.append("ByExample"); //$NON-NLS-1$
@@ -104,7 +104,7 @@
     }
 
     public String getDeleteByPrimaryKeyMethodName(IntrospectedTable introspectedTable) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append("delete"); //$NON-NLS-1$
         sb.append(introspectedTable.getFullyQualifiedTable().getDomainObjectName());
         sb.append("ByPrimaryKey"); //$NON-NLS-1$
@@ -118,7 +118,7 @@
      * 2. Else the method name should be selectByExampleWithoutBLOBs
      */
     public String getSelectByExampleWithoutBLOBsMethodName(IntrospectedTable introspectedTable) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append("select"); //$NON-NLS-1$
         sb.append(introspectedTable.getFullyQualifiedTable().getDomainObjectName());
         sb.append("ByExample"); //$NON-NLS-1$
@@ -138,7 +138,7 @@
      * 2. Else the method name should be selectByExampleWithBLOBs
      */
     public String getSelectByExampleWithBLOBsMethodName(IntrospectedTable introspectedTable) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append("select"); //$NON-NLS-1$
         sb.append(introspectedTable.getFullyQualifiedTable().getDomainObjectName());
         sb.append("ByExample"); //$NON-NLS-1$
@@ -153,7 +153,7 @@
     }
 
     public String getSelectByPrimaryKeyMethodName(IntrospectedTable introspectedTable) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append("select"); //$NON-NLS-1$
         sb.append(introspectedTable.getFullyQualifiedTable().getDomainObjectName());
         sb.append("ByPrimaryKey"); //$NON-NLS-1$
@@ -163,7 +163,7 @@
 
 
     public String getUpdateByPrimaryKeySelectiveMethodName(IntrospectedTable introspectedTable) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append("update"); //$NON-NLS-1$
         sb.append(introspectedTable.getFullyQualifiedTable().getDomainObjectName());
         sb.append("ByPrimaryKeySelective"); //$NON-NLS-1$
@@ -172,7 +172,7 @@
     }
 
     public String getCountByExampleMethodName(IntrospectedTable introspectedTable) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append("count"); //$NON-NLS-1$
         sb.append(introspectedTable.getFullyQualifiedTable().getDomainObjectName());
         sb.append("ByExample"); //$NON-NLS-1$
@@ -181,7 +181,7 @@
     }
 
     public String getUpdateByExampleSelectiveMethodName(IntrospectedTable introspectedTable) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append("update"); //$NON-NLS-1$
         sb.append(introspectedTable.getFullyQualifiedTable().getDomainObjectName());
         sb.append("ByExampleSelective"); //$NON-NLS-1$
@@ -190,7 +190,7 @@
     }
 
     public String getUpdateByExampleWithBLOBsMethodName(IntrospectedTable introspectedTable) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append("update"); //$NON-NLS-1$
         sb.append(introspectedTable.getFullyQualifiedTable().getDomainObjectName());
         
@@ -208,7 +208,7 @@
     }
 
     public String getUpdateByExampleWithoutBLOBsMethodName(IntrospectedTable introspectedTable) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
 
         sb.append("update"); //$NON-NLS-1$
         sb.append(introspectedTable.getFullyQualifiedTable().getDomainObjectName());
@@ -225,4 +225,13 @@
         
         return sb.toString();
     }
+
+    public String getInsertSelectiveMethodName(IntrospectedTable introspectedTable) {
+        StringBuilder sb = new StringBuilder();
+        sb.append("insert"); //$NON-NLS-1$
+        sb.append(introspectedTable.getFullyQualifiedTable().getDomainObjectName());
+        sb.append("Selective"); //$NON-NLS-1$
+        
+        return sb.toString();
+    }
 }

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=679231&r1=679230&r2=679231&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 Wed Jul 23 16:29:10 2008
@@ -899,4 +899,46 @@
 
         return rc;
     }
+
+    public boolean sqlMapInsertSelectiveElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
+        boolean rc = true;
+
+        for (IbatorPlugin plugin : plugins) {
+            if (!plugin
+                    .sqlMapInsertSelectiveElementGenerated(element, introspectedTable)) {
+                rc = false;
+                break;
+            }
+        }
+
+        return rc;
+    }
+
+    public boolean daoInsertSelectiveMethodGenerated(Method method, Interface interfaze, IntrospectedTable introspectedTable) {
+        boolean rc = true;
+
+        for (IbatorPlugin plugin : plugins) {
+            if (!plugin.daoInsertSelectiveMethodGenerated(method, interfaze,
+                    introspectedTable)) {
+                rc = false;
+                break;
+            }
+        }
+
+        return rc;
+    }
+
+    public boolean daoInsertSelectiveMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
+        boolean rc = true;
+
+        for (IbatorPlugin plugin : plugins) {
+            if (!plugin.daoInsertSelectiveMethodGenerated(method, topLevelClass,
+                    introspectedTable)) {
+                rc = false;
+                break;
+            }
+        }
+
+        return rc;
+    }
 }

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/ColumnDefinition.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/ColumnDefinition.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/ColumnDefinition.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/ColumnDefinition.java Wed Jul 23 16:29:10 2008
@@ -115,7 +115,7 @@
 	 */
     @Override
     public String toString() {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
 
         sb.append("Actual Column Name: "); //$NON-NLS-1$
         sb.append(actualColumnName);
@@ -184,7 +184,7 @@
             return javaProperty;
         }
         
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append(prefix);
         sb.append(javaProperty);
         
@@ -212,7 +212,7 @@
      */
     public String getRenamedColumnNameForResultMap() {
         if (StringUtility.stringHasValue(tableAlias)) {
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
             
             sb.append(tableAlias);
             sb.append('_');
@@ -232,7 +232,7 @@
      */
     public String getSelectListPhrase() {
         if (StringUtility.stringHasValue(tableAlias)) {
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
             
             sb.append(getAliasedEscapedColumnName());
             sb.append(" as "); //$NON-NLS-1$
@@ -266,7 +266,7 @@
     }
     
     public String getIbatisFormattedParameterClause(String prefix) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         
         sb.append('#');
         sb.append(getJavaProperty(prefix));
@@ -296,7 +296,7 @@
     
     private String escapeStringForIbatis(String s) {
         StringTokenizer st = new StringTokenizer(s, "$#", true); //$NON-NLS-1$
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         while (st.hasMoreTokens()) {
             String token = st.nextToken();
             if ("$".equals(token)) { //$NON-NLS-1$
@@ -316,7 +316,7 @@
     }
 
     public String getEscapedColumnName() {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append(escapeStringForIbatis(actualColumnName));
         
         if (isColumnNameDelimited) {
@@ -340,7 +340,7 @@
      * @return the aliased column name
      */
     public String getAliasedActualColumnName() {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         if (StringUtility.stringHasValue(tableAlias)) {
             sb.append(tableAlias);
             sb.append('.');
@@ -366,7 +366,7 @@
      */
     public String getAliasedEscapedColumnName() {
         if (StringUtility.stringHasValue(tableAlias)) {
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
             
             sb.append(tableAlias);
             sb.append('.');

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/DatabaseIntrospector.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/DatabaseIntrospector.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/DatabaseIntrospector.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/DatabaseIntrospector.java Wed Jul 23 16:29:10 2008
@@ -362,7 +362,7 @@
         if (tc.isWildcardEscapingEnabled()) {
             String escapeString = databaseMetaData.getSearchStringEscape();
             
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
             StringTokenizer st;
             if (localSchema != null) {
                 st = new StringTokenizer(localSchema, "_%", true); //$NON-NLS-1$

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/IntrospectedTableDefaultImpl.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/IntrospectedTableDefaultImpl.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/IntrospectedTableDefaultImpl.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/IntrospectedTableDefaultImpl.java Wed Jul 23 16:29:10 2008
@@ -165,7 +165,7 @@
     }
 
     public FullyQualifiedJavaType getPrimaryKeyType() {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append(getJavaModelPackage());
         sb.append('.');
         sb.append(fullyQualifiedTable.getDomainObjectName());
@@ -177,7 +177,7 @@
     }
 
     public FullyQualifiedJavaType getBaseRecordType() {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append(getJavaModelPackage());
         sb.append('.');
         sb.append(fullyQualifiedTable.getDomainObjectName());
@@ -188,7 +188,7 @@
     }
 
     public FullyQualifiedJavaType getRecordWithBLOBsType() {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append(getJavaModelPackage());
         sb.append('.');
         sb.append(fullyQualifiedTable.getDomainObjectName());
@@ -200,7 +200,7 @@
     }
 
     public FullyQualifiedJavaType getExampleType() {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append(getJavaModelPackage());
         sb.append('.');
         sb.append(fullyQualifiedTable.getDomainObjectName());
@@ -223,7 +223,7 @@
      * @return the name of the SqlMap file
      */
     public String getSqlMapFileName() {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append(fullyQualifiedTable.getSqlMapNamespace());
         sb.append("_SqlMap.xml"); //$NON-NLS-1$
 
@@ -238,7 +238,7 @@
     public String getSqlMapPackage() {
         SqlMapGeneratorConfiguration config = ibatorContext.getSqlMapGeneratorConfiguration();
         
-        StringBuffer sb = new StringBuffer(config.getTargetPackage());
+        StringBuilder sb = new StringBuilder(config.getTargetPackage());
         if (StringUtility.isTrue(config.getProperty(PropertyRegistry.ANY_ENABLE_SUB_PACKAGES))) {
             sb.append(fullyQualifiedTable.getSubPackage());
         }
@@ -247,7 +247,7 @@
     }
 
     public FullyQualifiedJavaType getDAOImplementationType() {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append(getDAOPackage());
         sb.append('.');
         sb.append(fullyQualifiedTable.getDomainObjectName());
@@ -259,7 +259,7 @@
     }
 
     public FullyQualifiedJavaType getDAOInterfaceType() {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append(getDAOPackage());
         sb.append('.');
         sb.append(fullyQualifiedTable.getDomainObjectName());
@@ -277,7 +277,7 @@
     protected String getDAOPackage() {
         DAOGeneratorConfiguration config = ibatorContext.getDaoGeneratorConfiguration();
         
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append(config.getTargetPackage());
         if (StringUtility.isTrue(config.getProperty(PropertyRegistry.ANY_ENABLE_SUB_PACKAGES))) {
             sb.append(fullyQualifiedTable.getSubPackage());
@@ -289,7 +289,7 @@
     protected String getJavaModelPackage() {
         JavaModelGeneratorConfiguration config = ibatorContext.getJavaModelGeneratorConfiguration();
 
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append(config.getTargetPackage());
         if (StringUtility.isTrue(config.getProperty(PropertyRegistry.ANY_ENABLE_SUB_PACKAGES))) {
             sb.append(fullyQualifiedTable.getSubPackage());

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/java/dao/BaseDAOGenerator.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/java/dao/BaseDAOGenerator.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/java/dao/BaseDAOGenerator.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/java/dao/BaseDAOGenerator.java Wed Jul 23 16:29:10 2008
@@ -238,6 +238,15 @@
             }
         }
 
+        if (rules.generateInsertSelective()) {
+            method = getInsertSelectiveMethod(introspectedTable, false, answer);
+            if (method != null) {
+                if (plugins.daoInsertSelectiveMethodGenerated(method, answer, introspectedTable)) {
+                    answer.addMethod(method);
+                }
+            }
+        }
+
         if (rules.generateUpdateByPrimaryKeyWithoutBLOBs()) {
             method = getUpdateByPrimaryKeyWithoutBLOBsMethod(introspectedTable, false, answer);
             if (method != null) {
@@ -395,6 +404,15 @@
             }
         }
 
+        if (rules.generateInsertSelective()) {
+            method = getInsertSelectiveMethod(introspectedTable, true, answer);
+            if (method != null) {
+                if (plugins.daoInsertSelectiveMethodGenerated(method, answer, introspectedTable)) {
+                    answer.addMethod(method);
+                }
+            }
+        }
+
         if (rules.generateUpdateByPrimaryKeyWithoutBLOBs()) {
             method = getUpdateByPrimaryKeyWithoutBLOBsMethod(introspectedTable, true, answer);
             if (method != null) {
@@ -551,7 +569,7 @@
         
         if (!interfaceMethod) {
             // generate the implementation method
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
 
             if (returnType != null) {
                 sb.append("Object newKey = "); //$NON-NLS-1$
@@ -592,6 +610,89 @@
         return method;
     }
 
+    protected Method getInsertSelectiveMethod(IntrospectedTable introspectedTable,
+            boolean interfaceMethod, CompilationUnit compilationUnit) {
+
+        FullyQualifiedTable table = introspectedTable.getFullyQualifiedTable();
+        Method method = new Method();
+
+        FullyQualifiedJavaType returnType;
+        if (introspectedTable.getGeneratedKey() != null) {
+            ColumnDefinition cd = introspectedTable.getColumn(
+                            introspectedTable.getGeneratedKey().getColumn());
+            if (cd == null) {
+                // the specified column doesn't exist, so don't do the generated
+                // key
+                // (the warning has already been reported)
+                returnType = null;
+            } else {
+                returnType = cd.getResolvedJavaType()
+                        .getFullyQualifiedJavaType();
+                compilationUnit.addImportedType(returnType);
+            }
+        } else {
+            returnType = null;
+        }
+        method.setReturnType(returnType);
+        method.setVisibility(JavaVisibility.PUBLIC);
+        method.setName(methodNameCalculator.getInsertSelectiveMethodName(introspectedTable));
+
+        FullyQualifiedJavaType parameterType =
+            introspectedTable.getRules().calculateAllFieldsClass();
+        
+        compilationUnit.addImportedType(parameterType);
+        method.addParameter(new Parameter(parameterType, "record")); //$NON-NLS-1$
+
+        for (FullyQualifiedJavaType fqjt : daoTemplate.getCheckedExceptions()) {
+            method.addException(fqjt);
+            compilationUnit.addImportedType(fqjt);
+        }
+
+        ibatorContext.getCommentGenerator().addGeneralMethodComment(method, table);
+        
+        if (!interfaceMethod) {
+            // generate the implementation method
+            StringBuilder sb = new StringBuilder();
+
+            if (returnType != null) {
+                sb.append("Object newKey = "); //$NON-NLS-1$
+            }
+
+            sb.append(daoTemplate.getInsertMethod(table.getSqlMapNamespace(), 
+                    XmlConstants.INSERT_SELECTIVE_STATEMENT_ID,
+                    "record")); //$NON-NLS-1$
+            method.addBodyLine(sb.toString());
+
+            if (returnType != null) {
+                if ("Object".equals(returnType.getShortName())) { //$NON-NLS-1$
+                    // no need to cast if the return type is Object
+                    method.addBodyLine("return newKey;"); //$NON-NLS-1$
+                } else {
+                    sb.setLength(0);
+
+                    if (returnType.isPrimitive()) {
+                        PrimitiveTypeWrapper ptw = returnType
+                                .getPrimitiveTypeWrapper();
+                        sb.append("return (("); //$NON-NLS-1$
+                        sb.append(ptw.getShortName());
+                        sb.append(") newKey"); //$NON-NLS-1$
+                        sb.append(")."); //$NON-NLS-1$
+                        sb.append(ptw.getToPrimitiveMethod());
+                        sb.append(';');
+                    } else {
+                        sb.append("return ("); //$NON-NLS-1$
+                        sb.append(returnType.getShortName());
+                        sb.append(") newKey;"); //$NON-NLS-1$
+                    }
+
+                    method.addBodyLine(sb.toString());
+                }
+            }
+        }
+
+        return method;
+    }
+
     protected Method getUpdateByPrimaryKeyWithoutBLOBsMethod(
             IntrospectedTable introspectedTable, boolean interfaceMethod,
             CompilationUnit compilationUnit) {
@@ -616,7 +717,7 @@
 
         if (!interfaceMethod) {
             // generate the implementation method
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
 
             sb.append("int rows = "); //$NON-NLS-1$
             sb.append(daoTemplate.getUpdateMethod(table.getSqlMapNamespace(),
@@ -660,7 +761,7 @@
         
         if (!interfaceMethod) {
             // generate the implementation method
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
 
             sb.append("int rows = "); //$NON-NLS-1$
             sb.append(daoTemplate.getUpdateMethod(table.getSqlMapNamespace(),
@@ -704,7 +805,7 @@
 
         if (!interfaceMethod) {
             // generate the implementation method
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
 
             sb.append("int rows = "); //$NON-NLS-1$
             sb.append(daoTemplate.getUpdateMethod(table.getSqlMapNamespace(),
@@ -770,7 +871,7 @@
                 method.addSuppressTypeWarningsAnnotation();
             }
             
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
             sb.append(returnType.getShortName());
             sb.append(" list = "); //$NON-NLS-1$
             sb.append(daoTemplate.getQueryForListMethod(table.getSqlMapNamespace(),
@@ -832,7 +933,7 @@
                 method.addSuppressTypeWarningsAnnotation();
             }
             
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
             sb.append(returnType.getShortName());
             sb.append(" list = "); //$NON-NLS-1$
             sb.append(daoTemplate.getQueryForListMethod(table.getSqlMapNamespace(),
@@ -882,7 +983,7 @@
 
         if (!interfaceMethod) {
             // generate the implementation method
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
 
             if (!introspectedTable.getRules().generatePrimaryKeyClass()) {
                 // no primary key class, but primary key is enabled.  Primary
@@ -950,7 +1051,7 @@
 
         if (!interfaceMethod) {
             // generate the implementation method
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
 
             sb.append("int rows = "); //$NON-NLS-1$
             sb.append(daoTemplate.getDeleteMethod(table.getSqlMapNamespace(),
@@ -995,7 +1096,7 @@
 
         if (!interfaceMethod) {
             // generate the implementation method
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
 
             if (!introspectedTable.getRules().generatePrimaryKeyClass()) {
                 // no primary key class, but primary key is enabled.  Primary
@@ -1060,7 +1161,7 @@
 
         if (!interfaceMethod) {
             // generate the implementation method
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
 
             sb.append("Integer count = (Integer)  "); //$NON-NLS-1$
             sb.append(daoTemplate.getQueryForObjectMethod(table.getSqlMapNamespace(),
@@ -1121,7 +1222,7 @@
             // generate the implementation method
             method.addBodyLine("UpdateByExampleParms parms = new UpdateByExampleParms(record, example);"); //$NON-NLS-1$
             
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
             
             sb.append("int rows = "); //$NON-NLS-1$
             
@@ -1214,7 +1315,7 @@
             // generate the implementation method
             method.addBodyLine("UpdateByExampleParms parms = new UpdateByExampleParms(record, example);"); //$NON-NLS-1$
             
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
 
             sb.append("int rows = "); //$NON-NLS-1$
             sb.append(daoTemplate.getUpdateMethod(table.getSqlMapNamespace(),
@@ -1264,7 +1365,7 @@
             // generate the implementation method
             method.addBodyLine("UpdateByExampleParms parms = new UpdateByExampleParms(record, example);"); //$NON-NLS-1$
             
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
 
             sb.append("int rows = "); //$NON-NLS-1$
             sb.append(daoTemplate.getUpdateMethod(table.getSqlMapNamespace(),

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/java/model/JavaModelGeneratorJava2Impl.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/java/model/JavaModelGeneratorJava2Impl.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/java/model/JavaModelGeneratorJava2Impl.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/java/model/JavaModelGeneratorJava2Impl.java Wed Jul 23 16:29:10 2008
@@ -124,7 +124,7 @@
         boolean trimStrings = StringUtility.isTrue(properties
                 .getProperty(PropertyRegistry.MODEL_GENERATOR_TRIM_STRINGS));
 
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         Field field;
         Method method;
 
@@ -397,7 +397,7 @@
         method.setVisibility(JavaVisibility.PUBLIC);
         method.addParameter(new Parameter(cd.getResolvedJavaType()
                 .getFullyQualifiedJavaType(), "value")); //$NON-NLS-1$
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append(cd.getJavaProperty());
         sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
         sb.insert(0, "and"); //$NON-NLS-1$
@@ -450,7 +450,7 @@
                 method.addSuppressTypeWarningsAnnotation();
             }
         }
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append(cd.getJavaProperty());
         sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
         sb.insert(0, "and"); //$NON-NLS-1$
@@ -483,7 +483,7 @@
         
         method.addParameter(new Parameter(type, "value1")); //$NON-NLS-1$
         method.addParameter(new Parameter(type, "value2")); //$NON-NLS-1$
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append(cd.getJavaProperty());
         sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
         sb.insert(0, "and"); //$NON-NLS-1$
@@ -717,7 +717,7 @@
         method.setVisibility(JavaVisibility.PUBLIC);
         method.setName("isValid"); //$NON-NLS-1$
         method.setReturnType(FullyQualifiedJavaType.getBooleanPrimitiveInstance());
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         Iterator<String> strIter = criteriaLists.iterator();
         sb.append("return "); //$NON-NLS-1$
         sb.append(strIter.next());
@@ -1070,7 +1070,7 @@
         FullyQualifiedJavaType type = FullyQualifiedJavaType
                 .getNewListInstance();
         method.addParameter(new Parameter(type, "values")); //$NON-NLS-1$
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append(cd.getJavaProperty());
         sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
         sb.insert(0, "and"); //$NON-NLS-1$
@@ -1123,7 +1123,7 @@
     private List<String> addtypeHandledObjectsAndMethods(ColumnDefinition cd,
             Method constructor, InnerClass innerClass) {
         List<String> answer = new ArrayList<String>();
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
 
         // add new private fields and public accessors in the class
         FullyQualifiedJavaType listOfMaps = FullyQualifiedJavaType

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/java/model/JavaModelGeneratorJava5Impl.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/java/model/JavaModelGeneratorJava5Impl.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/java/model/JavaModelGeneratorJava5Impl.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/java/model/JavaModelGeneratorJava5Impl.java Wed Jul 23 16:29:10 2008
@@ -224,7 +224,7 @@
         method.setName("isValid"); //$NON-NLS-1$
         method.setReturnType(FullyQualifiedJavaType.getBooleanPrimitiveInstance());
         Iterator<String> strIter = criteriaLists.iterator();
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append("return "); //$NON-NLS-1$
         sb.append(strIter.next());
         sb.append(".size() > 0"); //$NON-NLS-1$
@@ -579,7 +579,7 @@
                     .getFullyQualifiedJavaType());
         }
         method.addParameter(new Parameter(type, "values")); //$NON-NLS-1$
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append(cd.getJavaProperty());
         sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
         sb.insert(0, "and"); //$NON-NLS-1$
@@ -632,7 +632,7 @@
     private List<String> addtypeHandledObjectsAndMethods(ColumnDefinition cd,
             Method constructor, InnerClass innerClass) {
         List<String> answer = new ArrayList<String>();
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
 
         // add new private fields and public accessors in the class
         FullyQualifiedJavaType innerMapType = FullyQualifiedJavaType

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/rules/IbatorRules.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/rules/IbatorRules.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/rules/IbatorRules.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/rules/IbatorRules.java Wed Jul 23 16:29:10 2008
@@ -55,6 +55,17 @@
     }
 
     /**
+     * Implements the rule for generating the insert selective SQL Map element and DAO
+     * method. If the insert statement is allowed, then generate the element and
+     * method.
+     * 
+     * @return true if the element and method should be generated
+     */
+    public boolean generateInsertSelective() {
+        return tableConfiguration.isInsertStatementEnabled();
+    }
+    
+    /**
      * Calculates the class that contains all fields.  This class is used
      * as the insert statement parameter, as well as the returned value
      * from the select by primary key method.  The actual class depends

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/sqlmap/SqlMapGeneratorIterateImpl.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/sqlmap/SqlMapGeneratorIterateImpl.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/sqlmap/SqlMapGeneratorIterateImpl.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/sqlmap/SqlMapGeneratorIterateImpl.java Wed Jul 23 16:29:10 2008
@@ -213,6 +213,15 @@
             }
         }
 
+        if (rules.generateInsertSelective()) {
+            element = getInsertSelectiveElement(introspectedTable);
+            if (element != null) {
+                if (plugins.sqlMapInsertSelectiveElementGenerated(element, introspectedTable)) {
+                    answer.addElement(element);
+                }
+            }
+        }
+
         if (rules.generateUpdateByPrimaryKeyWithBLOBs()) {
             element = getUpdateByPrimaryKeyWithBLOBs(introspectedTable);
             if (element != null) {
@@ -368,7 +377,7 @@
         answer.addAttribute(new Attribute("class", //$NON-NLS-1$
                 returnType.getFullyQualifiedName()));
 
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append(table.getSqlMapNamespace());
         sb.append('.');
         sb.append(XmlConstants.BASE_RESULT_MAP_ID);
@@ -441,8 +450,8 @@
             }
         }
 
-        StringBuffer insertClause = new StringBuffer();
-        StringBuffer valuesClause = new StringBuffer();
+        StringBuilder insertClause = new StringBuilder();
+        StringBuilder valuesClause = new StringBuilder();
 
         insertClause.append("insert into "); //$NON-NLS-1$
         insertClause.append(table.getFullyQualifiedTableNameAtRuntime());
@@ -487,6 +496,91 @@
     }
 
     /**
+     * This method should return an XmlElement which is the insert 
+     * selective statement.
+     * 
+     * @param introspectedTable
+     * @return the insert element
+     */
+    protected XmlElement getInsertSelectiveElement(IntrospectedTable introspectedTable) {
+        
+        XmlElement answer = new XmlElement("insert"); //$NON-NLS-1$
+
+        FullyQualifiedTable table = introspectedTable.getFullyQualifiedTable();
+        answer.addAttribute(new Attribute("id", XmlConstants.INSERT_SELECTIVE_STATEMENT_ID)); //$NON-NLS-1$
+        
+        FullyQualifiedJavaType parameterType =
+            introspectedTable.getRules().calculateAllFieldsClass();
+        
+        answer.addAttribute(new Attribute("parameterClass", //$NON-NLS-1$
+                parameterType.getFullyQualifiedName()));
+
+        ibatorContext.getCommentGenerator().addComment(answer);
+
+        GeneratedKey gk = introspectedTable.getGeneratedKey();
+
+        if (gk != null && gk.isBeforeInsert()) {
+            ColumnDefinition cd = introspectedTable.getColumn(gk.getColumn());
+            // if the column is null, then it's a configuration error. The
+            // warning has already been reported
+            if (cd != null) {
+                // pre-generated key
+                answer.addElement(getSelectKey(cd, gk));
+            }
+        }
+        
+        StringBuilder sb = new StringBuilder();
+
+        sb.append("insert into "); //$NON-NLS-1$
+        sb.append(table.getFullyQualifiedTableNameAtRuntime());
+        answer.addElement(new TextElement(sb.toString()));
+        
+        XmlElement insertElement = new XmlElement("dynamic");
+        insertElement.addAttribute(new Attribute("prepend", "("));
+        answer.addElement(insertElement);
+        
+        answer.addElement(new TextElement("values"));
+
+        XmlElement valuesElement = new XmlElement("dynamic");
+        valuesElement.addAttribute(new Attribute("prepend", "("));
+        answer.addElement(valuesElement);
+        
+        for (ColumnDefinition cd : introspectedTable.getAllColumns()) {
+            if (cd.isIdentity()) {
+                // cannot set values on identity fields
+                continue;
+            }
+            
+            XmlElement insertNotNullElement = new XmlElement("isNotNull");
+            insertNotNullElement.addAttribute(new Attribute("prepend", ","));
+            insertNotNullElement.addAttribute(new Attribute("property", cd.getJavaProperty()));
+            insertNotNullElement.addElement(new TextElement(cd.getEscapedColumnName()));
+            insertElement.addElement(insertNotNullElement);
+            
+            XmlElement valuesNotNullElement = new XmlElement("isNotNull");
+            valuesNotNullElement.addAttribute(new Attribute("prepend", ","));
+            valuesNotNullElement.addAttribute(new Attribute("property", cd.getJavaProperty()));
+            valuesNotNullElement.addElement(new TextElement(cd.getIbatisFormattedParameterClause()));
+            valuesElement.addElement(valuesNotNullElement);
+        }
+        
+        insertElement.addElement(new TextElement(")"));
+        valuesElement.addElement(new TextElement(")"));
+        
+        if (gk != null && !gk.isBeforeInsert()) {
+            ColumnDefinition cd = introspectedTable.getColumn(gk.getColumn());
+            // if the column is null, then it's a configuration error. The
+            // warning has already been reported
+            if (cd != null) {
+                // pre-generated key
+                answer.addElement(getSelectKey(cd, gk));
+            }
+        }
+
+        return answer;
+    }
+
+    /**
      * This method should return an XmlElement for the update by primary key
      * statement that updates all fields in the table (including BLOB fields).
      * 
@@ -514,7 +608,7 @@
 
         ibatorContext.getCommentGenerator().addComment(answer);
 
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
 
         sb.append("update "); //$NON-NLS-1$
         sb.append(table.getFullyQualifiedTableNameAtRuntime());
@@ -583,7 +677,7 @@
 
         ibatorContext.getCommentGenerator().addComment(answer);
 
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append("update "); //$NON-NLS-1$
         sb.append(table.getFullyQualifiedTableNameAtRuntime());
         answer.addElement(new TextElement(sb.toString()));
@@ -657,7 +751,7 @@
 
         ibatorContext.getCommentGenerator().addComment(answer);
 
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append("delete from "); //$NON-NLS-1$
         sb.append(table.getFullyQualifiedTableNameAtRuntime());
         answer.addElement(new TextElement(sb.toString()));
@@ -703,7 +797,7 @@
 
         ibatorContext.getCommentGenerator().addComment(answer);
 
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append("delete from "); //$NON-NLS-1$
         sb.append(table.getAliasedFullyQualifiedTableNameAtRuntime());
         answer.addElement(new TextElement(sb.toString()));
@@ -745,7 +839,7 @@
 
         ibatorContext.getCommentGenerator().addComment(answer);
 
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append("select count(*) from "); //$NON-NLS-1$
         sb.append(table.getAliasedFullyQualifiedTableNameAtRuntime());
         answer.addElement(new TextElement(sb.toString()));
@@ -800,7 +894,7 @@
 
         ibatorContext.getCommentGenerator().addComment(answer);
 
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append("select "); //$NON-NLS-1$
 
         boolean comma = false;
@@ -880,7 +974,7 @@
      * @return the name of the example where clause element
      */
     protected String getExampleWhereClauseId() {
-        StringBuffer sb = new StringBuffer(MergeConstants.NEW_XML_ELEMENT_PREFIX);
+        StringBuilder sb = new StringBuilder(MergeConstants.NEW_XML_ELEMENT_PREFIX);
         sb.append("Example_Where_Clause"); //$NON-NLS-1$
 
         return sb.toString();
@@ -974,8 +1068,8 @@
             if (StringUtility.stringHasValue(cd.getTypeHandler())) {
                 // name the property based on the column name, then
                 // add the type handler to the parameter declaration
-                StringBuffer sb1 = new StringBuffer();
-                StringBuffer sb2 = new StringBuffer();
+                StringBuilder sb1 = new StringBuilder();
+                StringBuilder sb2 = new StringBuilder();
                 innerIterateElement = new XmlElement("iterate"); //$NON-NLS-1$
                 innerIterateElement.addAttribute(new Attribute("prepend", "and")); //$NON-NLS-1$ //$NON-NLS-2$
                 
@@ -1108,7 +1202,7 @@
 
         ibatorContext.getCommentGenerator().addComment(answer);
 
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append("select "); //$NON-NLS-1$
 
         boolean comma = false;
@@ -1176,7 +1270,7 @@
 
         ibatorContext.getCommentGenerator().addComment(answer);
 
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append("select "); //$NON-NLS-1$
 
         boolean comma = false;
@@ -1261,7 +1355,7 @@
 
         ibatorContext.getCommentGenerator().addComment(answer);
 
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
 
         sb.append("update "); //$NON-NLS-1$
         sb.append(table.getFullyQualifiedTableNameAtRuntime());
@@ -1326,7 +1420,7 @@
 
         ibatorContext.getCommentGenerator().addComment(answer);
 
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
 
         sb.append("update "); //$NON-NLS-1$
         sb.append(table.getAliasedFullyQualifiedTableNameAtRuntime());
@@ -1371,7 +1465,7 @@
 
         ibatorContext.getCommentGenerator().addComment(answer);
 
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append("update "); //$NON-NLS-1$
         sb.append(table.getAliasedFullyQualifiedTableNameAtRuntime());
         answer.addElement(new TextElement(sb.toString()));
@@ -1422,7 +1516,7 @@
 
         ibatorContext.getCommentGenerator().addComment(answer);
 
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         sb.append("update "); //$NON-NLS-1$
         sb.append(table.getAliasedFullyQualifiedTableNameAtRuntime());
         answer.addElement(new TextElement(sb.toString()));

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/sqlmap/XmlConstants.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/sqlmap/XmlConstants.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/sqlmap/XmlConstants.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/sqlmap/XmlConstants.java Wed Jul 23 16:29:10 2008
@@ -30,7 +30,7 @@
     }
     
     static {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
 
         sb.append(MergeConstants.NEW_XML_ELEMENT_PREFIX);
         sb.append("countByExample"); //$NON-NLS-1$
@@ -53,6 +53,11 @@
         
         sb.setLength(0);
         sb.append(MergeConstants.NEW_XML_ELEMENT_PREFIX);
+        sb.append("insertSelective"); //$NON-NLS-1$
+        INSERT_SELECTIVE_STATEMENT_ID = sb.toString();
+        
+        sb.setLength(0);
+        sb.append(MergeConstants.NEW_XML_ELEMENT_PREFIX);
         sb.append("selectByExample"); //$NON-NLS-1$
         SELECT_BY_EXAMPLE_STATEMENT_ID = sb.toString();
 
@@ -127,6 +132,8 @@
     
     public static final String INSERT_STATEMENT_ID;
     
+    public static final String INSERT_SELECTIVE_STATEMENT_ID;
+    
     public static final String SELECT_BY_EXAMPLE_STATEMENT_ID;
     
     public static final String SELECT_BY_EXAMPLE_WITH_BLOBS_STATEMENT_ID;

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/util/JavaBeansUtil.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/util/JavaBeansUtil.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/util/JavaBeansUtil.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/util/JavaBeansUtil.java Wed Jul 23 16:29:10 2008
@@ -48,7 +48,7 @@
      * @return the getter method name
      */
 	public static String getGetterMethodName(String property, FullyQualifiedJavaType fullyQualifiedJavaType) {
-		StringBuffer sb = new StringBuffer();
+		StringBuilder sb = new StringBuilder();
 
 		sb.append(property);
 		if (Character.isLowerCase(sb.charAt(0))) {
@@ -83,7 +83,7 @@
      * @return the setter method name
      */
 	public static String getSetterMethodName(String property) {
-		StringBuffer sb = new StringBuffer();
+		StringBuilder sb = new StringBuilder();
 
 		sb.append(property);
 		if (Character.isLowerCase(sb.charAt(0))) {
@@ -99,7 +99,7 @@
 
 	public static String getCamelCaseString(String inputString,
 			boolean firstCharacterUppercase) {
-		StringBuffer sb = new StringBuffer();
+		StringBuilder sb = new StringBuilder();
 
 		boolean nextUpperCase = false;
 		for (int i = 0; i < inputString.length(); i++) {

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/util/StringUtility.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/util/StringUtility.java?rev=679231&r1=679230&r2=679231&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/util/StringUtility.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/util/StringUtility.java Wed Jul 23 16:29:10 2008
@@ -36,7 +36,7 @@
 
     public static String composeFullyQualifiedTableName(String catalog, String schema,
             String tableName, char separator) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
 
         if (stringHasValue(catalog)) {
             sb.append(catalog);
@@ -63,7 +63,7 @@
 
     public static String escapeStringForJava(String s) {
         StringTokenizer st = new StringTokenizer(s, "\"", true); //$NON-NLS-1$
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         while (st.hasMoreTokens()) {
             String token = st.nextToken();
             if ("\"".equals(token)) { //$NON-NLS-1$
@@ -78,7 +78,7 @@
 
     public static String escapeStringForXml(String s) {
         StringTokenizer st = new StringTokenizer(s, "\"", true); //$NON-NLS-1$
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         while (st.hasMoreTokens()) {
             String token = st.nextToken();
             if ("\"".equals(token)) { //$NON-NLS-1$