Author: jgbutler
Date: Sat Dec  6 20:56:51 2008
New Revision: 724075

URL: http://svn.apache.org/viewvc?rev=724075&view=rev
Log:
[ibator] improvements to progress reporting

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/htmldoc/migratingFromAbator.html
    ibatis/trunk/java/tools/ibator/core/htmldoc/reference/extending.html
    
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/ant/AntProgressCallback.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/IntrospectedTable.java
    
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/JavaTypeResolver.java
    
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/ProgressCallback.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/generator/ibatis2/IntrospectedTableIbatis2Java2Impl.java
    
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/dao/DAOGenerator.java
    
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/dao/templates/AbstractDAOTemplate.java
    
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/model/BaseRecordGenerator.java
    
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/model/ExampleGenerator.java
    
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/model/PrimaryKeyGenerator.java
    
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/model/RecordWithBLOBsGenerator.java
    
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/sqlmap/SqlMapGenerator.java
    
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/NullProgressCallback.java
    
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/util/messages/messages.properties

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=724075&r1=724074&r2=724075&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/build/build.xml (original)
+++ ibatis/trunk/java/tools/ibator/core/build/build.xml Sat Dec  6 20:56:51 2008
@@ -232,7 +232,7 @@
              classname="org.apache.ibatis.ibator.ant.IbatorAntTask"
              classpathref="emma.runtime.path"/>
        
-       <ibator 
configfile="${basedir}/../testJava2/ibatortest/java2/ibatorConfig.xml" >
+       <ibator 
configfile="${basedir}/../testJava2/ibatortest/java2/ibatorConfig.xml" 
verbose="true">
                <propertyset>
                        <propertyref name="generated.source.dir.java2"/>
                </propertyset>
@@ -261,7 +261,7 @@
        
     <echo message="Expect three warnings from ibator (BLOBSONLY, 
NonExistantTable, FRED)" />
     
-    <ibator configfile="${basedir}/../testJava5/ibatortest/ibatorConfig.xml" >
+    <ibator configfile="${basedir}/../testJava5/ibatortest/ibatorConfig.xml" 
verbose="true">
       <propertyset>
         <propertyref name="generated.source.dir.java5"/>
         <propertyref name="generated.bin.dir.java5"/>

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=724075&r1=724074&r2=724075&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/build/version.properties (original)
+++ ibatis/trunk/java/tools/ibator/core/build/version.properties Sat Dec  6 
20:56:51 2008
@@ -1,4 +1,4 @@
 #ibator build version info
-#Thu Nov 27 07:43:20 CST 2008
+#Sat Dec 06 16:47:44 CST 2008
 version=1.2.0
-buildNum=642
+buildNum=647

Modified: ibatis/trunk/java/tools/ibator/core/htmldoc/migratingFromAbator.html
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/migratingFromAbator.html?rev=724075&r1=724074&r2=724075&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/htmldoc/migratingFromAbator.html 
(original)
+++ ibatis/trunk/java/tools/ibator/core/htmldoc/migratingFromAbator.html Sat 
Dec  6 20:56:51 2008
@@ -63,7 +63,7 @@
     page for full details.</li>
   <li>The <code>JavaTypeResolver</code> interface has changed and is
     simplified.  If you specified a custom implementation on the
-    &lt;javaTypeResolver&gt; element, you must rework your implementation
+    <code>&lt;javaTypeResolver&gt;</code> element, you must rework your 
implementation
     class.</li>
   <li>The ibator classloading strategy has changed substantially, and we now 
recommend that
       you manage the runtime classpath external to ibator.  If you manage the 
classpath with
@@ -79,6 +79,8 @@
             element.</li>
       </ul>
   </li>
+  <li>The <cde>ProgressCallback</code> interface has changed significantly.  
If you implemented
+    this interface for some other execution environment, you will need to 
rework your implementation.</li>
 </ul>
 </body>
 </html>
\ No newline at end of file

Modified: ibatis/trunk/java/tools/ibator/core/htmldoc/reference/extending.html
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/reference/extending.html?rev=724075&r1=724074&r2=724075&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/htmldoc/reference/extending.html 
(original)
+++ ibatis/trunk/java/tools/ibator/core/htmldoc/reference/extending.html Sat 
Dec  6 20:56:51 2008
@@ -70,7 +70,7 @@
 to determine many of the rules for code generation.</p>
 <p>Ibator supplies two implementations of introspected table.  The 
implementation is chosen
 bases on the value of the <code>targetRuntime</code> attribute of the
-<code>&lt;ibatorContext&gt;</code> element.  In many cases it will be fer 
simpler
+<code>&lt;ibatorContext&gt;</code> element.  In many cases it will be far 
simpler
 to extend one of the built in implementations, rather than creating an 
implementation
 from scratch.  The following table shows the built in implementations:</p>
 <table cellspacing="0" cellpadding="5" border="1">

Modified: 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/ant/AntProgressCallback.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/ant/AntProgressCallback.java?rev=724075&r1=724074&r2=724075&view=diff
==============================================================================
--- 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/ant/AntProgressCallback.java
 (original)
+++ 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/ant/AntProgressCallback.java
 Sat Dec  6 20:56:51 2008
@@ -16,7 +16,7 @@
 
 package org.apache.ibatis.ibator.ant;
 
-import org.apache.ibatis.ibator.api.ProgressCallback;
+import org.apache.ibatis.ibator.internal.NullProgressCallback;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.Task;
 
@@ -26,7 +26,7 @@
  * @author Jeff Butler
  *
  */
-public class AntProgressCallback implements ProgressCallback {
+public class AntProgressCallback extends NullProgressCallback {
 
     private Task task;
     private boolean verbose;
@@ -40,30 +40,10 @@
         this.verbose = verbose;
     }
 
-    /* (non-Javadoc)
-     * @see 
org.apache.ibatis.ibator.api.ProgressCallback#setNumberOfSubTasks(int)
-     */
-    public void setNumberOfSubTasks(int totalSubTasks) {
-    }
-
-    /* (non-Javadoc)
-     * @see 
org.apache.ibatis.ibator.api.ProgressCallback#startSubTask(java.lang.String)
-     */
-    public void startSubTask(String subTaskName) {
+    @Override
+    public void startTask(String subTaskName) {
         if (verbose) {
             task.log(subTaskName, Project.MSG_VERBOSE);
         }
     }
-
-    /* (non-Javadoc)
-     * @see org.apache.ibatis.ibator.api.ProgressCallback#finished()
-     */
-    public void finished() {
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.ibatis.ibator.api.ProgressCallback#checkCancel()
-     */
-    public void checkCancel() throws InterruptedException {
-    }
 }

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=724075&r1=724074&r2=724075&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
 Sat Dec  6 20:56:51 2008
@@ -112,14 +112,14 @@
 
     /**
      * This is the main method for generating code.  This method is long 
running, but
-     * progress can be provided and the method can be cancelled through the 
ProgressCallback
+     * progress can be provided and the method can be canceled through the 
ProgressCallback
      * interface.  This version of the method runs all configured contexts.
      * 
      * @param callback an instance of the ProgressCallback interface, or 
<code>null</code>
      *   if you do not require progress information
      * @throws SQLException
      * @throws IOException
-     * @throws InterruptedException if the method is cancelled through the 
ProgressCallback
+     * @throws InterruptedException if the method is canceled through the 
ProgressCallback
      */
     public void generate(ProgressCallback callback)
             throws SQLException, IOException, InterruptedException {
@@ -128,7 +128,7 @@
     
     /**
      * This is the main method for generating code.  This method is long 
running, but
-     * progress can be provided and the method can be cancelled through the 
ProgressCallback
+     * progress can be provided and the method can be canceled through the 
ProgressCallback
      * interface.
      * 
      * @param callback an instance of the ProgressCallback interface, or 
<code>null</code>
@@ -139,7 +139,7 @@
      * @throws InvalidConfigurationException
      * @throws SQLException
      * @throws IOException
-     * @throws InterruptedException if the method is cancelled through the 
ProgressCallback
+     * @throws InterruptedException if the method is canceled through the 
ProgressCallback
      */
     public void generate(ProgressCallback callback, Set<String> contextIds)
             throws SQLException, IOException, InterruptedException {
@@ -165,7 +165,7 @@
      * @throws InvalidConfigurationException
      * @throws SQLException
      * @throws IOException
-     * @throws InterruptedException if the method is cancelled through the 
ProgressCallback
+     * @throws InterruptedException if the method is canceled through the 
ProgressCallback
      */
     public void generate(ProgressCallback callback, Set<String> contextIds, 
Set<String> fullyQualifiedTableNames)
             throws SQLException, IOException, InterruptedException {
@@ -190,15 +190,6 @@
             }
         }
 
-        int totalSteps = 0;
-
-        // TODO...
-//        for (IbatorContext ibatorContext : contextsToRun) {
-//            totalSteps += ibatorContext.getTotalSteps();
-//        }
-        
-        callback.setNumberOfSubTasks(totalSteps);
-        
         // setup custom classloader if required
         if (ibatorConfiguration.getClassPathEntries().size() > 0) {
             ClassLoader classLoader = 
@@ -206,12 +197,31 @@
             IbatorObjectFactory.setExternalClassLoader(classLoader);
         }
 
-        // now run the generates...
+        // now run the introspections...
+        int totalSteps = 0;
         for (IbatorContext ibatorContext : contextsToRun) {
-            ibatorContext.generateFiles(callback, generatedJavaFiles,
-                    generatedXmlFiles, warnings, fullyQualifiedTableNames);
+            totalSteps += ibatorContext.getIntrospectionSteps();
         }
-
+        callback.introspectionStarted(totalSteps);
+        
+        for (IbatorContext ibatorContext : contextsToRun) {
+            ibatorContext.introspectTables(callback, warnings, 
fullyQualifiedTableNames);
+        }
+        
+        // now run the generates
+        totalSteps = 0;
+        for (IbatorContext ibatorContext : contextsToRun) {
+            totalSteps += ibatorContext.getGenerationSteps();
+        }
+        callback.generationStarted(totalSteps);
+        
+        for (IbatorContext ibatorContext : contextsToRun) {
+            ibatorContext.generateFiles(callback, generatedJavaFiles, 
generatedXmlFiles, warnings);
+        }
+        
+        // now save the files
+        callback.saveStarted(generatedXmlFiles.size() + 
generatedJavaFiles.size());
+        
         for (GeneratedXmlFile gxf : generatedXmlFiles) {
             projects.add(gxf.getTargetProject());
 
@@ -237,6 +247,8 @@
                 continue;
             }
 
+            callback.checkCancel();
+            callback.startTask(Messages.getString("Progress.15", 
targetFile.getName())); //$NON-NLS-1$
             writeFile(targetFile, source);
         }
 
@@ -266,16 +278,20 @@
                 } else {
                     source = gjf.getFormattedContent();
                 }
-                
+
+                callback.checkCancel();
+                callback.startTask(Messages.getString("Progress.15", 
targetFile.getName())); //$NON-NLS-1$
                 writeFile(targetFile, source);
             } catch (ShellException e) {
                 warnings.add(e.getMessage());
             }
         }
-
+        
         for (String project : projects) {
             shellCallback.refreshProject(project);
         }
+
+        callback.done();
     }
 
     /**

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=724075&r1=724074&r2=724075&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
 Sat Dec  6 20:56:51 2008
@@ -483,4 +483,12 @@
      * @return true if the generated code makes use of Java5 features
      */
     public abstract boolean isJava5Targeted();
+    
+    /**
+     * This method should return the number of progress messages that
+     * will be send during the generation phase.
+     * 
+     * @return the number of progress messages
+     */
+    public abstract int getGenerationSteps();
 }

Modified: 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/JavaTypeResolver.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/JavaTypeResolver.java?rev=724075&r1=724074&r2=724075&view=diff
==============================================================================
--- 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/JavaTypeResolver.java
 (original)
+++ 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/JavaTypeResolver.java
 Sat Dec  6 20:56:51 2008
@@ -68,8 +68,9 @@
         * 
         * @param introspectedColumn the column whose Java type needs to be
         *        calculated
-     * @return true the calculated type, or null if an unsupported data type.  
If null,
-     *   the column should be set to Object type and a warning will be issued.
+     * @return true the calculated type, or null if an unsupported data type.  
If null
+     * is returned, ibator will set the type to Object and issue a warning
+     * unless the column is ignored or otherwise overridden
         */
     FullyQualifiedJavaType calculateJavaType(IntrospectedColumn 
introspectedColumn);
 }

Modified: 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/ProgressCallback.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/ProgressCallback.java?rev=724075&r1=724074&r2=724075&view=diff
==============================================================================
--- 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/ProgressCallback.java
 (original)
+++ 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/ProgressCallback.java
 Sat Dec  6 20:56:51 2008
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2005 The Apache Software Foundation
+ *  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.
@@ -17,47 +17,80 @@
 
 /**
  * This interface can be implemented to return progress information from the 
file generation
- * process.  This interface is loosely based on the standard Eclipse 
IProgressMonitor interface,
- * but does not implement all its methods.
+ * process.
  * 
- * During the execution of a long running method, ibator will call the 
- * <code>setNumberOfSubTasks</code> method first, and then repeatedly call 
<code>startSubTask</code.
- * When the long running method is complete, ibator will call 
<code>finished</code>.
- * Periodically, ibator will call <code>checkCancel</code> to see if the 
method should
+ * During the execution of code generation, there are three main operations:
+ * database introspection, code generation based on the results of
+ * introspection, and then merging/saving generated files.
+ * Ibator will call methods in this interface accordingly and in this order:
+ * <ol>
+ *   <li>introspectionStarted(int)</li>
+ *   <li>(Repeatedly) startTask(String)</li>
+ *   <li>generationStarted(int)</li>
+ *   <li>(Repeatedly) startTask(String)</li>
+ *   <li>saveStarted(int)</li>
+ *   <li>(Repeatedly) startTask(String)</li>
+ *   <li>done()</li>
+ * </ol>
+ * <p>
+ * Periodically, ibator will call <code>checkCancel()</code> to see if the 
method should
  * be canceled.
+ * <p>
+ * For planning purposes, the most common use case will have a ratio
+ * of 20% instrospection tasks, 40% generation tasks, and 40% save tasks.
  * 
  * @author Jeff Butler
  */
 public interface ProgressCallback {
     /**
-     * Called to designate the maximum number of startSubTask messages that 
will be sent.
-     * It is not guaranteed that this number startSubTask messages will be 
sent.  The
-     * actual number of messages depends on the objects generated from each 
table.
+     * Called to note the start of the introspection phase, and to note the
+     * maximum number of startTask messages that will be sent for the 
introspection
+     * phase.
      * 
-     * @param totalSubTasks
+     * @param totalTasks the maximum number of times startTask will be called 
for
+     *   the introspection phase. 
      */
+    void introspectionStarted(int totalTasks);
     
-    void setNumberOfSubTasks(int totalSubTasks);
+    /**
+     * Called to note the start of the generation phase, and to note the
+     * maximum number of startTask messages that will be sent for the 
generation
+     * phase.
+     * 
+     * @param totalTasks the maximum number of times startTask will be called 
for
+     *   the generation phase. 
+     */
+    void generationStarted(int totalTasks);
     
     /**
-     * Called to denote the beginning of another task
+     * Called to note the start of the file saving phase, and to note the
+     * maximum number of startTask messages that will be sent for the
+     * file saving phase phase.
      * 
-     * @param subTaskName a descriptive name of the current work step
+     * @param totalTasks the maximum number of times startTask will be called 
for
+     *   the file saving phase. 
      */
-    void startSubTask(String subTaskName);
+    void saveStarted(int totalTasks);
     
     /**
-     * ibator calls this method when all subtasks are finished
+     * Called to denote the beginning of a save task
+     * 
+     * @param taskName a descriptive name of the current work step
      */
-    void finished();
-
+    void startTask(String taskName);
+    
+    /**
+     * ibator calls this method when all generated files have been saved
+     */
+    void done();
+    
     /**
      * ibator will call this method periodically during a long running method.
-     * If the the implementation throws InterruptedException, then the method
+     * If the the implementation throws <code>InterruptedException</code> then 
the method
      * will be canceled.  Any files that have already been saved will remain on
      * the file system.
      * 
-     * @throws InterruptedException if the main task should finish
+     * @throws InterruptedException if the operation should be halted
      */
     void checkCancel() throws InterruptedException;
 }

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=724075&r1=724074&r2=724075&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
 Sat Dec  6 20:56:51 2008
@@ -18,7 +18,6 @@
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
 import java.util.Set;
 
@@ -33,7 +32,6 @@
 import org.apache.ibatis.ibator.api.dom.xml.XmlElement;
 import org.apache.ibatis.ibator.internal.IbatorObjectFactory;
 import org.apache.ibatis.ibator.internal.IbatorPluginAggregator;
-import org.apache.ibatis.ibator.internal.NullProgressCallback;
 import org.apache.ibatis.ibator.internal.db.ConnectionFactory;
 import org.apache.ibatis.ibator.internal.db.DatabaseIntrospector;
 import org.apache.ibatis.ibator.internal.util.StringUtility;
@@ -335,19 +333,59 @@
         return pluginAggregator;
     }
 
+    public String getTargetRuntime() {
+        return targetRuntime;
+    }
+
+    public void setTargetRuntime(String targetRuntime) {
+        this.targetRuntime = targetRuntime;
+    }
+
+    public String getIntrospectedColumnImpl() {
+        return introspectedColumnImpl;
+    }
+
+    public void setIntrospectedColumnImpl(String introspectedColumnImpl) {
+        this.introspectedColumnImpl = introspectedColumnImpl;
+    }
+
+    public boolean getSuppressTypeWarnings(IntrospectedTable 
introspectedTable) {
+        return suppressTypeWarnings && !introspectedTable.isJava5Targeted();
+    }
+
+    // methods related to code generation.
+    //
+    // Methods should be called in this order:
+    //
+    // 1. getIntrospectionSteps()
+    // 2. introspectTables()
+    // 3. getGenerationSteps()
+    // 4. generateFiles()
+    //
+    
+    private List<IntrospectedTable> introspectedTables;
+    
+    public int getIntrospectionSteps() {
+        int steps = 0;
+
+        steps++; // connect to database
+
+        // for each table:
+        //
+        // 1. Create introspected table implementation
+
+        steps += tableConfigurations.size() * 1;
+
+        return steps;
+    }
+
     /**
-     * Generate iBATIS artifacts based on the configuration specified in the
+     * Introspect tables based on the configuration specified in the
      * constructor. This method is long running.
      * 
      * @param callback
      *            a progress callback if progress information is desired, or
      *            <code>null</code>
-     * @param generatedJavaFiles
-     *            any Java file generated from this method will be added to
-     *            the List The objects will be of type GeneratedJavaFile.
-     * @param generatedXmlFiles
-     *            any XML file generated from this method will be added to
-     *            the List. The objects will be of type GeneratedXMLFile.
      * @param warnings
      *            any warning generated from this method will be added to
      *            the List. Warnings are always Strings.
@@ -362,166 +400,133 @@
      * @throws SQLException
      *             if some error arises while introspecting the specified
      *             database tables.
-     * 
      * @throws InterruptedException
      *             if the progress callback reports a cancel
      */
-    public void generateFiles(ProgressCallback callback,
-            List<GeneratedJavaFile> generatedJavaFiles,
-            List<GeneratedXmlFile> generatedXmlFiles,
+    public void introspectTables(ProgressCallback callback,
             List<String> warnings, Set<String> fullyQualifiedTableNames)
-            throws SQLException, InterruptedException {
-        IbatorEngine ibatorEngine = new IbatorEngine();
-        ibatorEngine.generateFiles(callback, generatedJavaFiles, 
generatedXmlFiles, warnings, fullyQualifiedTableNames);
-    }
-    
-    private class IbatorEngine {
-        public void generateFiles(ProgressCallback callback,
-                List<GeneratedJavaFile> generatedJavaFiles,
-                List<GeneratedXmlFile> generatedXmlFiles,
-                List<String> warnings, Set<String> fullyQualifiedTableNames)
-                throws SQLException, InterruptedException {
-
-            if (callback == null) {
-                callback = new NullProgressCallback();
-            }
-
-            JavaTypeResolver javaTypeResolver = IbatorObjectFactory
-                    .createJavaTypeResolver(IbatorContext.this, warnings);
-            pluginAggregator = new IbatorPluginAggregator();
-            for (IbatorPluginConfiguration ibatorPluginConfiguration : 
pluginConfigurations) {
-                IbatorPlugin plugin = IbatorObjectFactory.createIbatorPlugin(
-                        IbatorContext.this, ibatorPluginConfiguration);
-                if (plugin.validate(warnings)) {
-                    pluginAggregator.addPlugin(plugin);
-                } else {
-                    warnings.add(Messages.getString(
-                            "Warning.24", //$NON-NLS-1$
-                            ibatorPluginConfiguration.getConfigurationType(),
-                            id));
-                }
-            }
-
-            Connection connection = null;
+    throws SQLException, InterruptedException {
 
-            try {
-                callback.startSubTask(Messages.getString("Progress.0")); 
//$NON-NLS-1$
-                connection = getConnection();
-
-                DatabaseIntrospector databaseIntrospector = new 
DatabaseIntrospector(
-                        IbatorContext.this, connection.getMetaData(), 
javaTypeResolver,
-                        warnings);
-
-                for (TableConfiguration tc : tableConfigurations) {
-                    String tableName = StringUtility
-                            .composeFullyQualifiedTableName(tc.getCatalog(), tc
-                                    .getSchema(), tc.getTableName(), '.');
-
-                    if (fullyQualifiedTableNames != null
-                            && fullyQualifiedTableNames.size() > 0) {
-                        if (!fullyQualifiedTableNames.contains(tableName)) {
-                            continue;
-                        }
-                    }
-
-                    if (!tc.areAnyStatementsEnabled()) {
-                        warnings
-                                .add(Messages.getString("Warning.0", 
tableName)); //$NON-NLS-1$
+        introspectedTables = new ArrayList<IntrospectedTable>();
+        JavaTypeResolver javaTypeResolver = IbatorObjectFactory
+            .createJavaTypeResolver(IbatorContext.this, warnings);
+
+        Connection connection = null;
+
+        try {
+            callback.startTask(Messages.getString("Progress.0")); //$NON-NLS-1$
+            connection = getConnection();
+
+            DatabaseIntrospector databaseIntrospector = new 
DatabaseIntrospector(
+                    IbatorContext.this, connection.getMetaData(), 
javaTypeResolver,
+                    warnings);
+
+            for (TableConfiguration tc : tableConfigurations) {
+                String tableName = StringUtility
+                .composeFullyQualifiedTableName(tc.getCatalog(), tc
+                        .getSchema(), tc.getTableName(), '.');
+
+                if (fullyQualifiedTableNames != null
+                        && fullyQualifiedTableNames.size() > 0) {
+                    if (!fullyQualifiedTableNames.contains(tableName)) {
                         continue;
                     }
+                }
 
-                    Collection<? extends IntrospectedTable> introspectedTables;
-                    callback.startSubTask(Messages.getString(
-                            "Progress.1", tableName)); //$NON-NLS-1$
-                    introspectedTables = databaseIntrospector
-                            .introspectTables(tc);
-                    callback.checkCancel();
-
-                    if (introspectedTables != null) {
-                        for (IntrospectedTable introspectedTable : 
introspectedTables) {
-                            callback.checkCancel();
-                            
-                            introspectedTable.calculateGenerators(warnings, 
callback);
-                            
generatedJavaFiles.addAll(introspectedTable.getGeneratedJavaFiles());
-                            
generatedXmlFiles.addAll(introspectedTable.getGeneratedXmlFiles());
-
-                            generatedJavaFiles
-                                    .addAll(pluginAggregator
-                                            
.contextGenerateAdditionalJavaFiles(introspectedTable));
-                            generatedXmlFiles
-                                    .addAll(pluginAggregator
-                                            
.contextGenerateAdditionalXmlFiles(introspectedTable));
-                        }
-                    }
+                if (!tc.areAnyStatementsEnabled()) {
+                    warnings
+                    .add(Messages.getString("Warning.0", tableName)); 
//$NON-NLS-1$
+                    continue;
                 }
 
-                generatedJavaFiles.addAll(pluginAggregator
-                        .contextGenerateAdditionalJavaFiles());
-                generatedXmlFiles.addAll(pluginAggregator
-                        .contextGenerateAdditionalXmlFiles());
-            } finally {
-                closeConnection(connection);
-                callback.finished();
+                callback.startTask(Messages.getString(
+                        "Progress.1", tableName)); //$NON-NLS-1$
+                List<IntrospectedTable> tables = 
databaseIntrospector.introspectTables(tc);
+
+                if (tables != null) {
+                    introspectedTables.addAll(tables);
+                }
+                
+                callback.checkCancel();
             }
+        } finally {
+            closeConnection(connection);
         }
+        
+        for (IntrospectedTable introspectedTable : introspectedTables) {
+            introspectedTable.calculateGenerators(warnings, callback);
+        }
+    }
 
-        public int getTotalSteps() {
-            int steps = 0;
-
-            steps++; // connect to database
-
-            // for each table:
-            //
-            // 1. Introspect
-            // 2. Generate Example
-            // 3. Generate Primary Key
-            // 4. Generate Record
-            // 5. Generate Record with BLOBs
-            // 6. Generate SQL Map
-            // 7. Generate DAO Interface
-            // 8. Generate DAO Implementation
+    public int getGenerationSteps() {
+        int steps = 0;
 
-            steps += tableConfigurations.size() * 8;
+        if (introspectedTables != null) {
+            for (IntrospectedTable introspectedTable : introspectedTables) {
+                steps += introspectedTable.getGenerationSteps();
+            }
+        }
+        
+        return steps;
+    }
+    
+    public void generateFiles(ProgressCallback callback,
+            List<GeneratedJavaFile> generatedJavaFiles,
+            List<GeneratedXmlFile> generatedXmlFiles,
+            List<String> warnings)
+    throws InterruptedException {
 
-            return steps;
+        pluginAggregator = new IbatorPluginAggregator();
+        for (IbatorPluginConfiguration ibatorPluginConfiguration : 
pluginConfigurations) {
+            IbatorPlugin plugin = IbatorObjectFactory.createIbatorPlugin(
+                    IbatorContext.this, ibatorPluginConfiguration);
+            if (plugin.validate(warnings)) {
+                pluginAggregator.addPlugin(plugin);
+            } else {
+                warnings.add(Messages.getString(
+                        "Warning.24", //$NON-NLS-1$
+                        ibatorPluginConfiguration.getConfigurationType(),
+                        id));
+            }
         }
 
-        private Connection getConnection() throws SQLException {
-            Connection connection = ConnectionFactory.getInstance()
-                    .getConnection(jdbcConnectionConfiguration);
+        if (introspectedTables != null) {
+            for (IntrospectedTable introspectedTable : introspectedTables) {
+                callback.checkCancel();
 
-            return connection;
-        }
+                
generatedJavaFiles.addAll(introspectedTable.getGeneratedJavaFiles());
+                
generatedXmlFiles.addAll(introspectedTable.getGeneratedXmlFiles());
 
-        private void closeConnection(Connection connection) {
-            if (connection != null) {
-                try {
-                    connection.close();
-                } catch (SQLException e) {
-                    // ignore
-                    ;
-                }
+                generatedJavaFiles
+                    .addAll(pluginAggregator
+                                
.contextGenerateAdditionalJavaFiles(introspectedTable));
+                generatedXmlFiles
+                    .addAll(pluginAggregator
+                            
.contextGenerateAdditionalXmlFiles(introspectedTable));
             }
         }
-    }
 
-    public String getTargetRuntime() {
-        return targetRuntime;
+        generatedJavaFiles.addAll(pluginAggregator
+                .contextGenerateAdditionalJavaFiles());
+        generatedXmlFiles.addAll(pluginAggregator
+                .contextGenerateAdditionalXmlFiles());
     }
 
-    public void setTargetRuntime(String targetRuntime) {
-        this.targetRuntime = targetRuntime;
-    }
+    private Connection getConnection() throws SQLException {
+        Connection connection = ConnectionFactory.getInstance()
+        .getConnection(jdbcConnectionConfiguration);
 
-    public String getIntrospectedColumnImpl() {
-        return introspectedColumnImpl;
+        return connection;
     }
 
-    public void setIntrospectedColumnImpl(String introspectedColumnImpl) {
-        this.introspectedColumnImpl = introspectedColumnImpl;
-    }
-
-    public boolean getSuppressTypeWarnings(IntrospectedTable 
introspectedTable) {
-        return suppressTypeWarnings && !introspectedTable.isJava5Targeted();
+    private void closeConnection(Connection connection) {
+        if (connection != null) {
+            try {
+                connection.close();
+            } catch (SQLException e) {
+                // ignore
+                ;
+            }
+        }
     }
 }

Modified: 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/IntrospectedTableIbatis2Java2Impl.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/IntrospectedTableIbatis2Java2Impl.java?rev=724075&r1=724074&r2=724075&view=diff
==============================================================================
--- 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/IntrospectedTableIbatis2Java2Impl.java
 (original)
+++ 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/IntrospectedTableIbatis2Java2Impl.java
 Sat Dec  6 20:56:51 2008
@@ -170,4 +170,11 @@
     public boolean isJava5Targeted() {
         return false;
     }
+
+    @Override
+    public int getGenerationSteps() {
+        return javaModelGenerators.size()
+            + daoGenerators.size()
+            + 1;  // 1 for the sqlMapGenerator
+    }
 }

Modified: 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/dao/DAOGenerator.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/dao/DAOGenerator.java?rev=724075&r1=724074&r2=724075&view=diff
==============================================================================
--- 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/dao/DAOGenerator.java
 (original)
+++ 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/dao/DAOGenerator.java
 Sat Dec  6 20:56:51 2008
@@ -69,7 +69,7 @@
     
     public List<CompilationUnit> getCompilationUnits() {
         FullyQualifiedTable table = introspectedTable.getFullyQualifiedTable();
-        progressCallback.startSubTask(Messages.getString("Progress.14", 
table.toString()));
+        progressCallback.startGenerationTask(Messages.getString("Progress.14", 
table.toString()));
         TopLevelClass topLevelClass = getTopLevelClassShell();
         Interface interfaze = getInterfaceShell();
         

Modified: 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/dao/templates/AbstractDAOTemplate.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/dao/templates/AbstractDAOTemplate.java?rev=724075&r1=724074&r2=724075&view=diff
==============================================================================
--- 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/dao/templates/AbstractDAOTemplate.java
 (original)
+++ 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/dao/templates/AbstractDAOTemplate.java
 Sat Dec  6 20:56:51 2008
@@ -27,6 +27,10 @@
 import org.apache.ibatis.ibator.api.dom.java.Parameter;
 
 /**
+ * Base class for DAO templates.  Subclasses should override
+ * any of the configureXXX methods to specify the unique properties
+ * of the desired DAO objects.
+ * 
  * @author Jeff Butler
  */
 public abstract class AbstractDAOTemplate {
@@ -281,24 +285,180 @@
         }
     }
     
-    // TODO - fully document each of these methods
-    protected void configureCheckedExceptions() {
-    }
-    protected void configureFields() {
-    }
-    protected void configureImplementationImports() {
-    }
-    protected void configureInterfaceImports() {
-    }
-    protected void configureMethods() {
-    }
-    protected void configureSuperClass() {
-    }
+    /**
+     * Override this method to add checked exceptions to the
+     * throws clause of any generated DAO method.  When overriding
+     * this method, call 
<code>addCheckedException(FullyQualifiedJavaType)</code>
+     * one or more times to add checked exception(s) to all generated
+     * DAO methods.
+     */
+    protected void configureCheckedExceptions() { }
+    
+    /**
+     * Override this method to add fields to any
+     * generated DAO implementation class.  When overriding
+     * this method, call <code>addField(Field)</code> one
+     * or more times to add field(s) to the generated
+     * DAO implementation class.
+     */
+    protected void configureFields() {}
+    
+    /**
+     * Override this method to add imports to 
+     * generated DAO implementation classes.  When overriding
+     * this method, call
+     * <code>addImplementationImport(FullyQualifiedJavaType)</code> one
+     * or more times to add import(s) to generated
+     * DAO implementation classes.
+     */
+    protected void configureImplementationImports() {}
+    
+    /**
+     * Override this method to add imports to
+     * generated DAO interface classes.  When overriding
+     * this method, call
+     * <code>addInterfaceImport(FullyQualifiedJavaType)</code> one
+     * or more times to add import(s) to generated
+     * DAO interface classes.
+     */
+    protected void configureInterfaceImports() {}
 
+    /**
+     * Override this method to add methods to
+     * generated DAO implementation classes.  When overriding
+     * this method, call
+     * <code>addMethod(Method)</code> one
+     * or more times to add method(s) to generated
+     * DAO implementation classes.
+     */
+    protected void configureMethods() {}
+    
+    /**
+     * Override this method to set the superclass for any
+     * generated DAO implementation class.  When overriding this
+     * method call <code>setSuperClass(FullyQualifiedJavaType)</code>
+     * to set the superclass for generated DAO implementation classes.
+     */
+    protected void configureSuperClass() {}
+    
+    /**
+     * Override this method to configure a constructor for generated
+     * DAO implementation classes.  During code generation, ibator will
+     * build a new constructor using the visibility, parameters, body lines,
+     * and exceptions set on the constructor template.  When overriding this
+     * method, call <code>setConstructorTemplate(Method)</code> to
+     * set the constructor template.
+     */
+    protected abstract void configureConstructorTemplate();
+    
+    /**
+     * Override this method to configure an insert method template.
+     * A method template is a string with three substitution
+     * markers that ibator will fill in when generating code.  The
+     * substitution markers will be:
+     * <ul>
+     *   <li>{0} - The SqlMap namespace</li>
+     *   <li>{1} - The SqlMap statement id</li>
+     *   <li>{2} - The parameter object</li>
+     * </ul>
+     * 
+     * For example, when calling methods in the SqlMapClient interface,
+     * the template would be:
+     * 
+     * sqlMapClient.insert(\"{0}.{1}\", {2});
+     * 
+     * Overriding methods should call the
+     * <code>setInsertMethodTemplate(String)</code method to set the
+     * template.
+     *    
+     */
     protected abstract void configureInsertMethodTemplate();
+    
+    /**
+     * Override this method to configure a queryForList method template.
+     * A method template is a string with three substitution
+     * markers that ibator will fill in when generating code.  The
+     * substitution markers will be:
+     * <ul>
+     *   <li>{0} - The SqlMap namespace</li>
+     *   <li>{1} - The SqlMap statement id</li>
+     *   <li>{2} - The parameter object</li>
+     * </ul>
+     * 
+     * For example, when calling methods in the SqlMapClient interface,
+     * the template would be:
+     * 
+     * sqlMapClient.queryForList(\"{0}.{1}\", {2});
+     *    
+     * Overriding methods should call the
+     * <code>setQueryForListMethodTemplate(String)</code method to set the
+     * template.
+     */
     protected abstract void configureQueryForListMethodTemplate();
+    
+    /**
+     * Override this method to configure a queryForObject method template.
+     * A method template is a string with three substitution
+     * markers that ibator will fill in when generating code.  The
+     * substitution markers will be:
+     * <ul>
+     *   <li>{0} - The SqlMap namespace</li>
+     *   <li>{1} - The SqlMap statement id</li>
+     *   <li>{2} - The parameter object</li>
+     * </ul>
+     * 
+     * For example, when calling methods in the SqlMapClient interface,
+     * the template would be:
+     * 
+     * sqlMapClient.queryForObject(\"{0}.{1}\", {2});
+     *    
+     * Overriding methods should call the
+     * <code>setQueryForObjectMethodTemplate(String)</code method to set the
+     * template.
+     */
     protected abstract void configureQueryForObjectMethodTemplate();
+    
+    /**
+     * Override this method to configure an update method template.
+     * A method template is a string with three substitution
+     * markers that ibator will fill in when generating code.  The
+     * substitution markers will be:
+     * <ul>
+     *   <li>{0} - The SqlMap namespace</li>
+     *   <li>{1} - The SqlMap statement id</li>
+     *   <li>{2} - The parameter object</li>
+     * </ul>
+     * 
+     * For example, when calling methods in the SqlMapClient interface,
+     * the template would be:
+     * 
+     * sqlMapClient.update(\"{0}.{1}\", {2});
+     *    
+     * Overriding methods should call the
+     * <code>setUpdateMethodTemplate(String)</code method to set the
+     * template.
+     */
     protected abstract void configureUpdateMethodTemplate();
-    protected abstract void configureConstructorTemplate();
+    
+    /**
+     * Override this method to configure a delete method template.
+     * A method template is a string with three substitution
+     * markers that ibator will fill in when generating code.  The
+     * substitution markers will be:
+     * <ul>
+     *   <li>{0} - The SqlMap namespace</li>
+     *   <li>{1} - The SqlMap statement id</li>
+     *   <li>{2} - The parameter object</li>
+     * </ul>
+     * 
+     * For example, when calling methods in the SqlMapClient interface,
+     * the template would be:
+     * 
+     * sqlMapClient.delete(\"{0}.{1}\", {2});
+     *    
+     * Overriding methods should call the
+     * <code>setDeleteMethodTemplate(String)</code method to set the
+     * template.
+     */
     protected abstract void configureDeleteMethodTemplate();
 }

Modified: 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/model/BaseRecordGenerator.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/model/BaseRecordGenerator.java?rev=724075&r1=724074&r2=724075&view=diff
==============================================================================
--- 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/model/BaseRecordGenerator.java
 (original)
+++ 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/model/BaseRecordGenerator.java
 Sat Dec  6 20:56:51 2008
@@ -44,7 +44,7 @@
 
     public List<CompilationUnit> getCompilationUnits() {
         FullyQualifiedTable table = introspectedTable.getFullyQualifiedTable();
-        progressCallback.startSubTask(Messages.getString("Progress.8", 
table.toString()));
+        progressCallback.startGenerationTask(Messages.getString("Progress.8", 
table.toString()));
         IbatorPlugin plugins = ibatorContext.getPlugins();
         CommentGenerator commentGenerator = 
ibatorContext.getCommentGenerator();
 

Modified: 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/model/ExampleGenerator.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/model/ExampleGenerator.java?rev=724075&r1=724074&r2=724075&view=diff
==============================================================================
--- 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/model/ExampleGenerator.java
 (original)
+++ 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/model/ExampleGenerator.java
 Sat Dec  6 20:56:51 2008
@@ -55,7 +55,7 @@
 
     public List<CompilationUnit> getCompilationUnits() {
         FullyQualifiedTable table = introspectedTable.getFullyQualifiedTable();
-        progressCallback.startSubTask(Messages.getString("Progress.6", 
table.toString()));
+        progressCallback.startGenerationTask(Messages.getString("Progress.6", 
table.toString()));
         CommentGenerator commentGenerator = 
ibatorContext.getCommentGenerator();
 
         FullyQualifiedJavaType type = introspectedTable.getExampleType();

Modified: 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/model/PrimaryKeyGenerator.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/model/PrimaryKeyGenerator.java?rev=724075&r1=724074&r2=724075&view=diff
==============================================================================
--- 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/model/PrimaryKeyGenerator.java
 (original)
+++ 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/model/PrimaryKeyGenerator.java
 Sat Dec  6 20:56:51 2008
@@ -47,7 +47,7 @@
      */
     public List<CompilationUnit> getCompilationUnits() {
         FullyQualifiedTable table = introspectedTable.getFullyQualifiedTable();
-        progressCallback.startSubTask(Messages.getString("Progress.7", 
table.toString()));
+        progressCallback.startGenerationTask(Messages.getString("Progress.7", 
table.toString()));
         IbatorPlugin plugins = ibatorContext.getPlugins();
         CommentGenerator commentGenerator = 
ibatorContext.getCommentGenerator();
         

Modified: 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/model/RecordWithBLOBsGenerator.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/model/RecordWithBLOBsGenerator.java?rev=724075&r1=724074&r2=724075&view=diff
==============================================================================
--- 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/model/RecordWithBLOBsGenerator.java
 (original)
+++ 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/model/RecordWithBLOBsGenerator.java
 Sat Dec  6 20:56:51 2008
@@ -47,7 +47,7 @@
      */
     public List<CompilationUnit> getCompilationUnits() {
         FullyQualifiedTable table = introspectedTable.getFullyQualifiedTable();
-        progressCallback.startSubTask(Messages.getString("Progress.9", 
table.toString()));
+        progressCallback.startGenerationTask(Messages.getString("Progress.9", 
table.toString()));
         IbatorPlugin plugins = ibatorContext.getPlugins();
         CommentGenerator commentGenerator = 
ibatorContext.getCommentGenerator();
         

Modified: 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/sqlmap/SqlMapGenerator.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/sqlmap/SqlMapGenerator.java?rev=724075&r1=724074&r2=724075&view=diff
==============================================================================
--- 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/sqlmap/SqlMapGenerator.java
 (original)
+++ 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/sqlmap/SqlMapGenerator.java
 Sat Dec  6 20:56:51 2008
@@ -55,7 +55,7 @@
 
     protected XmlElement getSqlMapElement() {
         FullyQualifiedTable table = introspectedTable.getFullyQualifiedTable();
-        progressCallback.startSubTask(Messages.getString("Progress.12", 
table.toString()));
+        progressCallback.startGenerationTask(Messages.getString("Progress.12", 
table.toString()));
         XmlElement answer = new XmlElement("sqlMap"); //$NON-NLS-1$
         answer.addAttribute(new Attribute("namespace", //$NON-NLS-1$
                 table.getSqlMapNamespace()));

Modified: 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/NullProgressCallback.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/NullProgressCallback.java?rev=724075&r1=724074&r2=724075&view=diff
==============================================================================
--- 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/NullProgressCallback.java
 (original)
+++ 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/NullProgressCallback.java
 Sat Dec  6 20:56:51 2008
@@ -32,29 +32,15 @@
         super();
     }
 
-    /*
-     *  (non-Javadoc)
-     * @see org.apache.ibatis.ibator.api.ProgressCallback#finished()
-     */
-    public void finished() {
-    }
+    public void generationStarted(int totalTasks) { }
 
-    /*
-     *  (non-Javadoc)
-     * @see org.apache.ibatis.ibator.api.ProgressCallback#checkCancel()
-     */
-    public void checkCancel() throws InterruptedException {
-    }
-    
-    /* (non-Javadoc)
-     * @see 
org.apache.ibatis.ibator.api.ProgressCallback#setNumberOfSubTasks(int)
-     */
-    public void setNumberOfSubTasks(int totalSubTasks) {
-    }
+    public void introspectionStarted(int totalTasks) { }
+
+    public void saveStarted(int totalTasks) { }
+
+    public void startTask(String taskName) { }
     
-    /* (non-Javadoc)
-     * @see 
org.apache.ibatis.ibator.api.ProgressCallback#startSubTask(java.lang.String)
-     */
-    public void startSubTask(String subTaskName) {
-    }
+    public void checkCancel() throws InterruptedException { }
+
+    public void done() { }
 }

Modified: 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/util/messages/messages.properties
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/util/messages/messages.properties?rev=724075&r1=724074&r2=724075&view=diff
==============================================================================
--- 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/util/messages/messages.properties
 (original)
+++ 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/util/messages/messages.properties
 Sat Dec  6 20:56:51 2008
@@ -81,6 +81,7 @@
 Progress.12=Generating SQL Map for table {0}
 Progress.13=Found SQL Statement: {0}
 Progress.14=Generating DAO Interface and Implementation for table {0}
+Progress.15=Saving file {0}
 
 Usage.Lines=19
 Usage.0=Apache iBATIS ibator - a code generator for iBATIS.  Usage:


Reply via email to