ibatis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jgbut...@apache.org
Subject svn commit: r833772 [3/25] - in /ibatis/java/ibator/trunk/core: ./ ibator-core/doc/ ibator-core/doc/html/ ibator-core/doc/html/configreference/ ibator-core/doc/html/generatedobjects/ ibator-core/doc/html/reference/ ibator-core/doc/html/usage/ ibator-ma...
Date Sat, 07 Nov 2009 22:59:05 GMT
Added: ibatis/java/ibator/trunk/core/ibator-core/doc/html/generatedobjects/javadao.html
URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/doc/html/generatedobjects/javadao.html?rev=833772&view=auto
==============================================================================
--- ibatis/java/ibator/trunk/core/ibator-core/doc/html/generatedobjects/javadao.html (added)
+++ ibatis/java/ibator/trunk/core/ibator-core/doc/html/generatedobjects/javadao.html Sat Nov  7 22:59:00 2009
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Ibator Generated Java DAO Classes</title>
+  <link type="text/css" rel="stylesheet" href="../ibator.css"/>
+</head>
+<body>
+
+<div class="menuNav">
+  <p>
+    <a href="../index.html" target="_top">Show Menu</a>
+    <a href="javadao.html" target="_top">Hide Menu</a>
+  </p>
+</div>
+
+<h1>Ibator Generated Java DAO Classes</h1>
+<p>Ibator generates DAO classes of several types.  For each table in the configuration, Ibator
+generates a Java Interface that describes DAO methods, and a Java Class that implements the
+generated interface.  Generating DAO objects is optional, and is controlled by the
+<code>&lt;daoGenerator&gt;</code> configuration element.  Ibator can generate DAOs of the following
+types:
+</p>
+<ul>
+  <li>IBATIS - for use with the iBATIS DAO Framework</li>
+  <li>SPRING - for use with the Spring Framework</li>
+  <li>GENERIC-CI - with no dependencies beyond the iBATIS Data Mapper</li>
+  <li>GENERIC-SI - also with no dependencies beyond the iBATIS Data Mapper</li>
+</ul>
+
+<p>Every field and method generated by Ibator includes the non-standard JavaDoc tag
+<code>@ibatorgenerated</code>.  When run from the Eclipse plugin,
+on subsequent runs of Ibator every field and method that
+includes this JavaDoc tag will be deleted and replaced.  Any other field or method in the
+class will be untouched by Ibator.
+With this in mind, you can add other fields and methods to the classes without fear of losing them in
+subsequent runs of Ibator - simply DO NOT include the <code>@ibatorgenerated</code>
+JavaDoc tag on anything that you add to the class.</p>
+
+<p>Outside of the Eclipse plugin, Java files need to be merged by hand, but you can use the
+<code>@ibatorgenerated</code> JavaDoc tag to know what is safe to delete from a prior
+version of a file.</p>
+
+<p>Note: in the following descriptions, the term "BLOB" is used to refer to any column
+with a data type of BLOB, CLOB, LONGVARCHAR, or LONGVARBINARY.</p>
+
+<h2>Methods Common to All DAO Types</h2>
+<p>Depending on the specifics of the table, and the configuration options, the DAO generator
+will generate these methods:</p>
+<ul>
+  <li>countByExample</li>
+  <li>deleteByPrimaryKey</li>
+  <li>deleteByExample</li>
+  <li>insert</li>
+  <li>insertSelective</li>
+  <li>selectByPrimaryKey</li>
+  <li>selectByExample</li>
+  <li>selectByExampleWithBLOBs</li>
+  <li>updateByPrimaryKey (with an override to specify whether or not to update BLOB columns)</li>
+  <li>updateByPrimaryKeySelective (will only update non-null fields in the parameter class)</li>
+  <li>updateByExample (with an override to specify whether or not to update BLOB columns)</li>
+  <li>updateByExampleSelective (will only update non-null fields in the parameter class)</li>
+</ul>
+<p>Ibator attempts to make it easier to deal with tables that contain BLOBs by generating
+different objects and methods so that you can use the BLOB fields, or ignore them, depending
+on the situation.</p>
+<p>See the
+<a href="exampleClassUsage.html">Example Class Usage</a>
+page for an example of using the <code>selectByExample</code> method.</p>
+
+<h2>IBATIS DAOs</h2>
+<p>iBATIS DAOs depend on the iBATIS DAO framework (an optional part of iBATIS - now deprecated).
+They extend the SqlMapDaoTemplate class and are
+constructed with an instance of the DAOManager object, and call methods in their super class
+to execute the different statements.</p>
+<p>Ibator does not update the "dao.xml" file for you - you must add the appropriate entries
+manually.</p>
+<p>The iBATIS DAO framework is a very elementary IoC container and can be useful if you
+are not already using something like Spring or PicoContainer to manage dependencies.
+However, the framework is now deprecated and we suggest that you move to Spring.</p>
+
+<h2>SPRING DAOs</h2>
+<p>SPRING DAOs depend on the Spring framework.  They extend Spring's SqlMapClientDaoSupport class,
+and are constructed by the Spring container.</p>
+
+<h2>GENERIC-CI DAOs</h2>
+<p>GENERIC-CI DAOs call methods in iBATIS' SqlMapClient interface directly.  An instance of the
+interface is supplied through constructor injection.</p>
+
+<h2>GENERIC-SI DAOs</h2>
+<p>GENERIC-SI DAOs call methods in iBATIS' SqlMapClient interface directly.  An instance of the
+interface is supplied through setter injection.</p>
+
+</body>
+</html>

Added: ibatis/java/ibator/trunk/core/ibator-core/doc/html/generatedobjects/javamodel.html
URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/doc/html/generatedobjects/javamodel.html?rev=833772&view=auto
==============================================================================
--- ibatis/java/ibator/trunk/core/ibator-core/doc/html/generatedobjects/javamodel.html (added)
+++ ibatis/java/ibator/trunk/core/ibator-core/doc/html/generatedobjects/javamodel.html Sat Nov  7 22:59:00 2009
@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Ibator Generated Java Model Classes</title>
+  <link type="text/css" rel="stylesheet" href="../ibator.css"/>
+</head>
+<body>
+
+<div class="menuNav">
+  <p>
+    <a href="../index.html" target="_top">Show Menu</a>
+    <a href="javamodel.html" target="_top">Hide Menu</a>
+  </p>
+</div>
+
+<h1>Ibator Generated Java Model Classes</h1>
+<p>Ibator generates Java classes that correspond to the fields in a database table.
+The generated classes are a type of domain object, but should in no way be confused
+with a rich domain model (see the <a href="../philosophy.html">Philosophy</a> page
+for more on this subject).  Ibator generates different types of "domain" objects based on
+the characteristics of the table and configuration options.</p>
+
+<p>Every field and method generated by Ibator includes the non-standard JavaDoc tag
+<code>@ibatorgenerated</code>.  When run from the Eclipse plugin,
+on subsequent runs of Ibator every Java element that
+includes this JavaDoc tag will be deleted and replaced.  Any other Java element in the
+class will be untouched by Ibator.
+With this in mind, you can add other fields and methods to the classes without fear of losing them in
+subsequent runs of Ibator - simply DO NOT include the <code>@ibatorgenerated</code>
+JavaDoc tag on anything that you add to the class.</p>
+<p>Outside of the Eclipse plugin, Java files need to be merged by hand, but you can use the
+<code>@ibatorgenerated</code> JavaDoc tag to know what is safe to delete from a prior
+version of a file.</p>
+<p>The following sections describe the different types of "domain" classes that will be
+generated by Ibator.  Ibator will generate different types of domain classes depending
+on the value of the <code>defaultModelType</code> attribute of the
+<a href="../configreference/ibatorContext.html">&lt;ibatorContext&gt;</a>
+configuration element and the <code>modelType</code> attribute of the
+<a href="../configreference/table.html">&lt;table&gt;</a>
+configuration element.</p>
+
+<p>Any column ignored by an
+<a href="../configreference/ignoreColumn.html">&lt;ignoreColumn&gt;</a>
+configuration element will
+by ignored and not added to any generated Java class.</p>
+
+<p>Note: in the following descriptions, the term "BLOB" is used to refer to any column
+with a data type of BLOB, CLOB, LONGVARCHAR, or LONGVARBINARY.</p>
+
+<h2>Primary Key Class</h2>
+<p>This class will contain properties for each field in the primary key of a table.
+The property names will be generated automatically by Ibator, and based on the column name
+in the table.  The Ibator generated property names can be overridden with a
+<code>&lt;columnOverride&gt;</code> configuration element.
+</p>
+<p>The name of the class will be <code>&laquo;TableName&raquo;Key</code> by default, or
+<code>&laquo;domainObjectName&raquo;Key</code> if the <code>domainObjectName</code>
+attribute is specified on the <code>&lt;table&gt;</code> configuration element.</p>
+
+<p>This class will be generated in the hierarchical model if the table has a primary key.
+This class will be generated in the conditional model if the table has more
+then one column in the primary key.  This class will not be generated in the flat
+model.</p>
+
+<h2>Record Class</h2>
+<p>This class will contain properties for each non-BLOB and non-primary key column in the table.
+The class will extend the primary key class if there is one.
+The property names will be generated automatically by Ibator, and based on the column name
+in the table.  The Ibator generated property names can be overridden with a
+<code>&lt;columnOverride&gt;</code> configuration element.</p>
+
+<p>The name of the class will be <code>&laquo;TableName&raquo;</code> by default, or
+<code>&laquo;domainObjectName&raquo;</code> if the <code>domainObjectName</code>
+attribute is specified on the <code>&lt;table&gt;</code> configuration element.</p>
+
+<p>This class will be generated in the hierarchical model if the table has non-BLOB
+and non-primary key columns.  This class will be generated in the conditional model
+if the table has non-BLOB and non-primary key columns, or if there is only
+one primary key column or one BLOB column.  This class is always generated in the
+flat model.</p>
+
+<h2>Record With BLOBs Class</h2>
+<p>This class will contain properties for each BLOB column in the table.
+The class will extend the record class, if there is one,
+or it will extend the primary key class (note that Ibator does not support
+tables that only contain BLOB columns).
+The property names will be generated automatically by Ibator, and based on the column name
+in the table.  The Ibator generated property names can be overridden with a
+<code>&lt;columnOverride&gt;</code> configuration element.</p>
+
+<p>This class will be the return value from the <code>selectByPrimaryKey</code> method,
+or the <code>selectByExampleWithBLOBs</code> method.</p>
+
+<p>The name of the class will be <code>&laquo;TableName&raquo;WithBLOBs</code> by default, or
+<code>&laquo;domainObjectName&raquo;WithBLOBs</code> if the <code>domainObjectName</code>
+attribute is specified on the <code>&lt;table&gt;</code> configuration element.</p>
+
+<p>This class will be generated in the hierarchical model if the table has any BLOB columns.
+This class will be generated in the conditional model if the table has more than one
+BLOB column.  This class will not be generated in the flat model.</p>
+
+<h2>Example Class</h2>
+<p>This class is used to work with Ibator's dynamic select capability.
+The class holds a set of criteria that are used to generate a dynamic WHERE clause at runtime
+for the following methods:</p>
+<ul>
+  <li><code>selectByExample</code></li>
+  <li><code>selectByExampleWithBLOBs</code></li>
+  <li><code>deleteByExample</code></li>
+  <li><code>countByExample</code></li>
+  <li><code>updateByExample</code></li>
+</ul>
+
+<p>This class does not extend any of the other model classes.</p>
+
+<p>The name of the class will be <code>&laquo;TableName&raquo;Example</code> by default, or
+<code>&laquo;domainObjectName&raquo;Example</code> if the <code>domainObjectName</code>
+attribute is specified on the <code>&lt;table&gt;</code> configuration element.</p>
+
+<p>This class will be generated if any of the <code>*ByExample</code>
+methods are enabled.  Note that this class can grow quite large if there are many fields in a table,
+but the DAO methods are small as is the generated XML fragment.
+If you do not plan to use the dynamic WHERE clause features of Ibator, you may prefer to
+disable the generation of these methods.</p>
+
+<p>See the <a href="exampleClassUsage.html">Example Class Usage</a>
+page for details on using the example class.</p>
+
+</body>
+</html>

Added: ibatis/java/ibator/trunk/core/ibator-core/doc/html/generatedobjects/results.html
URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/doc/html/generatedobjects/results.html?rev=833772&view=auto
==============================================================================
--- ibatis/java/ibator/trunk/core/ibator-core/doc/html/generatedobjects/results.html (added)
+++ ibatis/java/ibator/trunk/core/ibator-core/doc/html/generatedobjects/results.html Sat Nov  7 22:59:00 2009
@@ -0,0 +1,35 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Using the Ibator Generated Objects</title>
+  <link type="text/css" rel="stylesheet" href="../ibator.css"/>
+</head>
+<body>
+
+<div class="menuNav">
+  <p>
+    <a href="../index.html" target="_top">Show Menu</a>
+    <a href="results.html" target="_top">Hide Menu</a>
+  </p>
+</div>
+
+<h1>Using the Ibator Generated Objects</h1>
+<p>Ibator generates these types of objects:</p>
+<ol>
+  <li><a href="javamodel.html">Java Model Classes</a></li>
+  <li><a href="sqlmap.html">SQL Map Files</a></li>
+  <li><a href="javadao.html">Java DAO Classes (optional)</a></li>
+  <li>A class for use in the xxxByExample methods.  See the following pages for
+      information about that class:
+    <ul>
+      <li><a href="exampleClassUsage.html">Example Class Usage Notes</a></li>
+      <li><a href="extendingExampleClass.html">Extending the Example Classes</a></li>
+    </ul>
+  </li>
+</ol>
+
+<p>The individual pages describe these objects, and their usage.</p>
+</body>
+</html>

Added: ibatis/java/ibator/trunk/core/ibator-core/doc/html/generatedobjects/sqlmap.html
URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/doc/html/generatedobjects/sqlmap.html?rev=833772&view=auto
==============================================================================
--- ibatis/java/ibator/trunk/core/ibator-core/doc/html/generatedobjects/sqlmap.html (added)
+++ ibatis/java/ibator/trunk/core/ibator-core/doc/html/generatedobjects/sqlmap.html Sat Nov  7 22:59:00 2009
@@ -0,0 +1,216 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Ibator Generated SQL Map Files</title>
+  <link type="text/css" rel="stylesheet" href="../ibator.css"/>
+</head>
+<body>
+
+<div class="menuNav">
+  <p>
+    <a href="../index.html" target="_top">Show Menu</a>
+    <a href="sqlmap.html" target="_top">Hide Menu</a>
+  </p>
+</div>
+
+<h1>Ibator Generated SQL Map Files</h1>
+<p>Ibator generates SQL Map files that conform to iBATIS' SQL Map DTD.  The files contain many different
+elements based on the characteristics of the table, and on the configuration options you specify.
+Ibator generates a different SQL Map file for every table you specify.  The name space of the
+SQL Map is the name of the table (qualified by schema and catalog if present).  Ibator does not
+add the SQL Map entries to the iBATIS SQLMapConfig file - you must do that manually (or you may use
+a plugin to cause Ibator to generate a skeleton SQLMapConfig file if you wish).</p>
+
+<p>Every element generated by Ibator has an id that is prefixed with the string <code>"ibatorgenerated_"
+</code>.  On subsequent runs of Ibator, every element with an id whose prefix is
+<code>"ibatorgenerated_"</code>
+will be deleted and replaced.  Any other element in the SQL Map will be untouched by Ibator.
+With this in mind, you can add other elements to the file without fear of losing them in
+subsequent runs of Ibator - simply give your custom elements an id that DOES NOT start with
+<code>"ibatorgenerated_"</code>.</p>
+<p>The following sections describe the elements that will be generated by Ibator.</p>
+
+<p>Note: in the following descriptions, the term "BLOB" is used to refer to any column
+with a data type of BLOB, CLOB, LONGVARCHAR, or LONGVARBINARY.</p>
+
+<h2>Result Map</h2>
+<p>This element is used to map table columns to properties of the generated Java model object.
+The result map (and corresponding select statements) will not contain:</p>
+<ul>
+  <li>Any field that has been ignored by the <code>&lt;ignoreColumn&gt;</code> configuration element</li>
+  <li>Any BLOB field from the table (see the result map with BLOBs element)</li>
+</ul>
+<p>The columns will be mapped according the configuration element <code>&lt;columnOverride&gt;</code> if it exists
+for the specific column.  If the override does not exist, then a default property name and JDBC type
+will be used.</p>
+<p>It is acceptable to extend this result map if you code any
+custom join queries in the SQL map.  This is a common use case and is expected.
+If you plan to reuse this result map with other join queries, you may wish to have
+Ibator generate a prefix for the fields in the result map.  See the
+<a href="../configreference/table.html">&lt;table&gt;</a> reference page for information about generating
+a prefix.</p>
+<p>This element will be generated if either the select by example, or select by primary key statements
+are enabled.</p>
+
+<h2>Result Map With BLOBs</h2>
+<p>The element extends the base result map, and adds any BLOB fields that exist in the table.
+We do this because we offer different versions of the select by example statement depending on
+whether or not you want to return the BLOB fields in those queries.</p>
+
+<p>The result map (and corresponding select statements) will not contain:</p>
+<ul>
+  <li>Any field that has been ignored by the <code>&lt;ignoreColumn&gt;</code> configuration element</li>
+</ul>
+<p>The columns will be mapped according the configuration element <code>&lt;columnOverride&gt;</code> if it exists
+for the specific column.  If the override does not exist, then a default property name and JDBC type
+will be used.</p>
+<p>It is acceptable to extend this result map if you code any
+custom join queries in the SQL map.  This is a common use case and is expected.
+If you plan to reuse this result map with other join queries, you may wish to have
+Ibator generate a prefix for the fields in the result map.  See the
+<a href="../configreference/table.html">&lt;table&gt;</a> reference page for information about generating
+a prefix.</p>
+<p>This element will be generated if that table contains BLOB fields, and either the select by example,
+or select by primary key statements are enabled.</p>
+
+<h2>SQL Where Clause</h2>
+<p>This element contains a reusable where clause that is used by the "by example" methods. The
+where clause will not include any BLOB fields if they exist in the table.  Most databases do not
+support BLOB fields in the WHERE clause.</p>
+<p>This element will be generated if any of the "by example" statements
+are enabled.</p>
+
+<h2>Select By Primary Key</h2>
+<p>This element contains a select statement that will return one row - designated by the primary key.
+The returned row will include BLOB fields if they exist in the table.</p>
+<p>This element will be generated if the table has a primary key and the select by primary key statement
+is enabled.</p>
+
+<h2>Select by Example</h2>
+<p>This element contains a select statement with rows that match the example object.
+This implements a simple "query by example" functionality that can be used to generate many
+different database queries.  The returned rows will not include any BLOB fields that exist in the table
+(see the select by example with BLOBs statement below).</p>
+<p><b>Important:</b> If the example class is null, or no criteria have been set,
+then <b>all</b> rows in the table will be selected.</p>
+<p>This element will be generated if the select by example statement is enabled.</p>
+
+<h2>Select by Example With BLOBs</h2>
+<p>This element contains a select statement with rows that match the example object.
+This implements a simple "query by example" functionality that can be used to generate many
+different database queries.  The returned rows will include any BLOB fields that exist in the table.</p>
+<p><b>Important:</b> If the example class is null, or no criteria have been set,
+then <b>all</b> rows in the table will be selected.</p>
+<p>This element will be generated if the table contains BLOB fields, and the select by example
+ statement is enabled.</p>
+
+<h2>Insert</h2>
+<p>This element is an insert statement that includes all fields in the table (including BLOBs),
+unless the field is specifically ignored with the <code>&lt;ignoreColumn&gt;</code> configuration
+element.</p>
+<p>If the table has an auto generated key (an identity column or from a sequence), and the
+<code>&lt;generatedKey&gt;</code> configuration element is specified, then Ibator will generate
+an appropriate <code>&lt;selectKey&gt;</code> element and will return the value of the
+generated key.</p>
+<p>This element will be generated if the insert statement is enabled.</p>
+
+<h2>Insert Selective</h2>
+<p>This element is an insert statement that includes all fields in the table (including BLOBs),
+unless the field is specifically ignored with the <code>&lt;ignoreColumn&gt;</code> configuration
+element.  However, this statement will not include fields that are <code>null</code> in the
+parameter object.  This allows you to use database defaults for columns, if they exist.
+This element will not allow the insert of <code>null</code> into any field - for that
+you must use the regular insert statement.  <b>Important:</b> any field mapped to a Java primitive
+is always inserted by this method.</p>
+<p>If the table has an auto generated key (an identity column or from a sequence), and the
+<code>&lt;generatedKey&gt;</code> configuration element is specified, then Ibator will generate
+an appropriate <code>&lt;selectKey&gt;</code> element and will return the value of the
+generated key.</p>
+<p>This element will be generated if the insert statement is enabled.</p>
+
+<h2>Update By Primary Key</h2>
+<p>This element is an update statement that will update one row - designated by the primary
+key.  The update statement will update all fields in the table unless:</p>
+<ul>
+  <li>The field has been ignored by the <code>&lt;ignoreColumn&gt;</code> configuration element</li>
+  <li>The field is a BLOB field (see the update by primary key with BLOBs element)</li>
+</ul>
+<p>This element will be generated if the table has a primary key, and the update by primary
+key statement is enabled.</p>
+
+<h2>Update By Primary Key With BLOBs</h2>
+<p>This element is an update statement that will update one row - designated by the primary
+key.  The update statement will update all fields in the table (including BLOB fields) unless:</p>
+<ul>
+  <li>The field has been ignored by the <code>&lt;ignoreColumn&gt;</code> configuration element</li>
+</ul>
+<p>This element will be generated if the table has a primary key, the table has BLOB columns,
+ and the update by primary key statement is enabled.</p>
+
+<h2>Update By Primary Key Selective</h2>
+<p>This element is an update statement that will update one row - designated by the primary
+key.  The update statement will update only the fields in the table whose corresponding
+property in the parameter object is non-null.  This statement can be used to update
+certain columns in a record without affecting all columns in the record.  <b>Important:</b>
+if the column has been mapped to a primitive type, then the column will always be
+updated.</p>
+<p>This element will be generated if the table has a primary key, and the update by primary
+key statement is enabled.</p>
+
+<h2>Delete By Primary Key</h2>
+<p>This element is a delete statement that will delete one row in the table - designated by the
+primary key.</p>
+<p>This element will be generated if the table has a primary key, and the delete by primary key
+ statement is enabled.</p>
+
+<h2>Delete By Example</h2>
+<p>This element is a delete statement that will delete one or more rows in the table - designated by
+the example object.</p>
+<p><b>Important:</b> If the example class is null, or no criteria have been set,
+then <b>all</b> rows in the table will be deleted.</p>
+<p>This element will be generated if the delete by example statement is enabled.</p>
+
+<h2>Count By Example</h2>
+<p>This element is a select count(*) statement that will return the number of rows in the table
+that match the specified example object.</p>
+<p><b>Important:</b> If the example class is null, or no criteria have been set,
+then the select will return the number of rows in the entire table.</p>
+<p>This element will be generated if the count by example statement is enabled.</p>
+
+<h2>Update By Example</h2>
+<p>This element is an update statement that will update all rows in a table that match
+the specified example.  The update statement will update all fields in the table unless:</p>
+<ul>
+  <li>The field has been ignored by the <code>&lt;ignoreColumn&gt;</code> configuration element</li>
+  <li>The field is a BLOB field (see the update by example with BLOBs element)</li>
+</ul>
+<p><b>Important:</b> If the example class is null, or no criteria have been set,
+then <b>all</b> rows in the table will be updated.</p>
+<p>This element will be generated if the update by example statement is enabled.</p>
+
+<h2>Update By Example With BLOBs</h2>
+<p>This element is an update statement that will update all rows in a table that match
+the specified example.  The update statement will update all fields in the table (including BLOB fields)
+unless:</p>
+<ul>
+  <li>The field has been ignored by the <code>&lt;ignoreColumn&gt;</code> configuration element</li>
+</ul>
+<p><b>Important:</b> If the example class is null, or no criteria have been set,
+then <b>all</b> rows in the table will be updated.</p>
+<p>This element will be generated if the table contains BLOB columns, and the update by
+example statement is enabled.</p>
+
+<h2>Update By Example Selective</h2>
+<p>This element is an update statement that will update all rows in a table that match the
+specified example.  The update statement will update only the fields in the table whose corresponding
+property in the parameter object is non-null.  This statement can be used to update
+certain columns in certain records without affecting all columns in the records.  <b>Important:</b>
+if the column has been mapped to a primitive type, then the column will always be
+updated.</p>
+<p><b>Important:</b> If the example class is null, or no criteria have been set,
+then <b>all</b> rows in the table will be updated.</p>
+<p>This element will be generated if the update by example statement is enabled.</p>
+</body>
+</html>

Added: ibatis/java/ibator/trunk/core/ibator-core/doc/html/ibator.css
URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/doc/html/ibator.css?rev=833772&view=auto
==============================================================================
--- ibatis/java/ibator/trunk/core/ibator-core/doc/html/ibator.css (added)
+++ ibatis/java/ibator/trunk/core/ibator-core/doc/html/ibator.css Sat Nov  7 22:59:00 2009
@@ -0,0 +1,130 @@
+p, table, td, th {  font-family: arial, helvetica, geneva, sans-serif; font-size: 10pt}
+pre {  font-family: "Courier New", Courier, mono, serif; font-size: 10pt}
+h2 { font-family: arial, helvetica, geneva, sans-serif; font-size: 18pt; font-weight: bold; margin-top: 30px}
+code {  font-family: "Courier New", Courier, mono, serif; font-size: 10pt}
+sup {  font-family: arial,helvetica,geneva, sans-serif; font-size: 10px}
+h3 {  font-family: arial, helvetica, geneva, sans-serif; font-size: 14pt; font-weight: bold}
+li {  font-family: arial, helvetica, geneva, sans-serif; font-size: 10pt}
+h1 {  font-family: arial, helvetica, geneva, sans-serif; font-size: 28px; font-weight: bold}
+body {  font-family: arial, helvetica, geneva, sans-serif; font-size: 10pt; margin-top: 5mm; margin-left: 3mm}
+.indextop { font-size: x-large;; font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold}
+.indexsub { font-size: xx-small;; font-family: Arial, Helvetica, sans-serif; color: #8080FF}
+
+pre {
+    padding: 0px;
+    margin-top: 0px;
+    margin-left: 0px;
+    margin-bottom: 0px;
+    margin-right: 0px;
+    text-align: left;
+}
+
+.code {
+ 	border: 1px dashed #3c78b5;
+    font-size: 11px;
+	font-family: Courier;
+    margin: 10px;
+	line-height: 13px;
+    text-align: left;
+    color: #000000;
+    background-color: #f0f0f0;
+    padding: 10px;
+}
+
+.code-xml {
+  color: #000000;
+}
+
+.schema-type
+{
+  color: #009100;
+  background-color: inherit;
+}
+
+.schema-type-link a:link
+{
+  color: #009100;
+  text-decoration: none
+}
+
+.schema-type-link a:visited
+{
+  color: #009100;
+  text-decoration: none
+}
+
+.schema-control {
+  color: #009100;
+  font-style: italic;
+  background-color: inherit;
+}
+
+.code-text {
+  color: #009100;
+  background-color: inherit;
+}
+
+.context-code {
+  color: #767676;
+  background-color: inherit;
+}
+
+.xml-text
+{
+  color: #009100;
+}
+
+.java-code 
+{
+  color: #000000;
+}
+
+.java-comment 
+{
+  color: #009100;
+}
+
+.java-javadoc-keyword
+{
+  font-weight: bold;
+}
+
+.java-keyword
+{
+  color: #7f0055;
+  font-weight: bold;
+}
+
+.java-literal
+{
+  color: #009100;
+}
+
+.java-context
+{
+  color: #767676;
+}	
+
+.java-context-keyword
+{
+  font-weight: bold;
+}	
+
+.screen-shot 
+{
+    margin: 10px;
+}
+
+.block-indent 
+{
+    margin: 10px;
+}
+
+.menuNav p
+{
+    /* this should be uncommented for the eclipse stylesheet
+    display: none;
+    */
+    font-size: x-small;
+    text-align: right;
+}

Added: ibatis/java/ibator/trunk/core/ibator-core/doc/html/index.html
URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/doc/html/index.html?rev=833772&view=auto
==============================================================================
--- ibatis/java/ibator/trunk/core/ibator-core/doc/html/index.html (added)
+++ ibatis/java/ibator/trunk/core/ibator-core/doc/html/index.html Sat Nov  7 22:59:00 2009
@@ -0,0 +1,17 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+ "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<title>Apache iBATIS Ibator User Manual</title>
+  <link type="text/css" rel="stylesheet" href="ibator.css"/>
+</head>
+
+<frameset cols="30%,*">
+
+  <frame src="menu.html" name="menuFrame"/>
+  <frame src="intro.html" name="mainFrame"/>
+
+</frameset>
+
+</html>
\ No newline at end of file

Added: ibatis/java/ibator/trunk/core/ibator-core/doc/html/intro.html
URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/doc/html/intro.html?rev=833772&view=auto
==============================================================================
--- ibatis/java/ibator/trunk/core/ibator-core/doc/html/intro.html (added)
+++ ibatis/java/ibator/trunk/core/ibator-core/doc/html/intro.html Sat Nov  7 22:59:00 2009
@@ -0,0 +1,146 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Introduction to Ibator</title>
+  <link type="text/css" rel="stylesheet" href="ibator.css"/>
+</head>
+<body>
+
+<div class="menuNav">
+  <p>
+    <a href="index.html" target="_top">Show Menu</a>
+    <a href="intro.html" target="_top">Hide Menu</a>
+  </p>
+</div>
+
+<h1>Introduction to Ibator</h1>
+<p>Ibator is a code generator for <a target="_blank" href="http://ibatis.apache.org">iBATIS</a>.
+ Ibator will introspect a database
+ table (or many tables) and will generate iBATIS artifacts that can be used to
+ access the table(s).  This lessens the initial nuisance of setting up objects and configuration
+ files to interact with database tables.  Ibator seeks to make a major impact on the large
+percentage of database operations that are simple CRUD (Create, Retrieve, Update, Delete).  You will
+ still need to hand code SQL and objects for join queries, or stored procedures.
+</p>
+<p>Ibator will generate:</p>
+<ul>
+  <li>Java POJOs that match the table structure.  This may include:
+    <ul>
+      <li>a class to match the primary key of the table (if there is a primary key)</li>
+      <li>a class to match the non-primary key fields of the table (except BLOB fields)</li>
+      <li>a class to include the BLOB fields of a table (if the table has BLOB fields)</li>
+      <li>a class to enable dynamic selects, updates, and deletes</li>
+    </ul>
+    <p>There is an inheritance relationship between these classes as appropriate.
+       Note that Ibator may be configured to generate different types of POJO hierarchies -
+       for example, you may choose to tell
+       Ibator to generate a single domain object for each table if you so
+       desire.</p>
+  </li>
+  <li>iBATIS Compatible SQL Map XML Files.  Ibator generates SQL for simple
+   CRUD functions on each table in a configuration.  The generated SQL
+   statements include:
+    <ul>
+      <li>insert</li>
+      <li>update by primary key</li>
+      <li>update by example (using a dynamic where clause)</li>
+      <li>delete by primary key</li>
+      <li>delete by example (using a dynamic where clause)</li>
+      <li>select by primary key</li>
+      <li>select by example (using a dynamic where clause)</li>
+      <li>count by example</li>
+    </ul>
+   <p>There are different variations of these statements depending on the
+   structure of the table (for example, if the table doesn't have a primary key,
+   then Ibator will not generate an update by primary key function).</p>
+  </li>
+  <li>DAO interface and implementation classes that make appropriate use of the
+    above objects.  The generation of DAO classes is optional.  Ibator will
+    generate DAOs of the following types:
+    <ul>
+      <li>DAOs that conform to the
+          <a target="_blank" href="http://www.springframework.org">Spring</a> framework</li>
+      <li>DAOs that only use the iBATIS SQL mapping API.  These DAOs can be
+          generated in two varieties: supplying the <code>SqlMapClient</code> through
+          either constructor or setter injection.</li>
+      <li>DAOs that conform to the iBATIS DAO Framework (an optional part of iBATIS, this
+          framework is now deprecated and we suggest that you use the Spring framework
+          instead)</li>
+    </ul>
+  </li>
+</ul>
+
+<p>Ibator is designed to run well in an iterative development environment, and
+  Ibator can even be included as an Ant task in a continuous build environment.
+  Important things to note when running Ibator iteratively include:</p>
+
+<ol>
+  <li>Ibator will automatically merge XML files if there is an existing file
+      with the same name as the newly generated XML file.  Ibator will not overwrite
+      any custom changes you make to the XML files it generates.
+      You can run it over and over again without fear of losing custom changes to you XML.
+      Ibator will replace any XML elements that were generated in a previous run.
+      </li>
+  <li>Ibator will <b>not</b> merge Java files, it can either overwrite existing files
+      or save newly generated files with a different unique name.  If you make changes
+      to the generated Java files and run Ibator iteratively you will have to
+      merge the changes by hand.  When run as an
+      <a target="_blank" href="http://www.eclipse.org">Eclipse</a>
+      plugin, then Ibator can automatically merge Java files.</li>
+</ol>
+
+<h2>Dependencies</h2>
+<p>Ibator has no dependencies beyond the JRE.  Ibator does require JRE 5.0 or
+above.  Ibator also requires that the JDBC driver implements the
+DatabaseMetaData interface, especially the <code>getColumns</code> and
+<code>getPrimaryKeys</code> methods.</p>
+
+<h2>About the Name</h2>
+<p>"Ibator" is an iBATIS styled version of the noun abator.  "Abator" means "one who
+abates a nuisance".  This describes the purpose of Ibator - it abates some of the nuisance
+of creating objects and configuration files for iBATIS.</p>
+<p>Ibator was originally named "Abator", but the name was changed as the result of
+a federal trade registration dispute.</p>
+
+<h2>Support</h2>
+<p>Support for Ibator is provided through the iBATIS user mailing list.
+You may subscribe to the mailing list by sending a note to:</p>
+
+<blockquote>
+  <p>
+  <a href="mailto:user-java-subscribe@ibatis.apache.org">user-java-subscribe@ibatis.apache.org</a>
+  </p>
+</blockquote>
+
+<p>Once you have subscribed, you can mail questions or bug reports to:</p>
+<blockquote>
+  <p>
+  <a href="mailto:user-java@ibatis.apache.org">user-java@ibatis.apache.org</a>
+  </p>
+</blockquote>
+
+<p>If you want to unsubscribe from the mailing list, send a note to:</p>
+<blockquote>
+  <p>
+  <a href="mailto:user-java-unsubscribe@ibatis.apache.org">user-java-unsubscribe@ibatis.apache.org</a>
+  </p>
+</blockquote>
+
+<p>If you think you have found a bug, please ask a question about it on the user list first,
+before creating a JIRA issue.  If you find a bug, or have a new feature request,
+you may open a JIRA issue for Ibator at</p>
+
+<blockquote>
+  <p>
+  <a target="_blank" href="http://issues.apache.org/jira/browse/IBATIS">
+    http://issues.apache.org/jira/browse/IBATIS
+  </a>
+  </p>
+</blockquote>
+
+<p>Please select the "Tools" component when creating any JIRA issues for Ibator.</p>
+
+</body>
+</html>
\ No newline at end of file

Added: ibatis/java/ibator/trunk/core/ibator-core/doc/html/license.html
URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/doc/html/license.html?rev=833772&view=auto
==============================================================================
--- ibatis/java/ibator/trunk/core/ibator-core/doc/html/license.html (added)
+++ ibatis/java/ibator/trunk/core/ibator-core/doc/html/license.html Sat Nov  7 22:59:00 2009
@@ -0,0 +1,40 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Ibator Licensing Information</title>
+  <link type="text/css" rel="stylesheet" href="ibator.css"/>
+</head>
+<body>
+
+<div class="menuNav">
+  <p>
+    <a href="index.html" target="_top">Show Menu</a>
+    <a href="license.html" target="_top">Hide Menu</a>
+  </p>
+</div>
+
+<h1>Ibator Licensing Information</h1>
+<p>Copyright 2006, 2007, 2008 The Apache Software Foundation</p>
+<p>Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this product except in compliance with the License.
+   You may obtain a copy of the License at
+</p>
+<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.apache.org/licenses/LICENSE-2.0">
+http://www.apache.org/licenses/LICENSE-2.0</a></p>
+<p>
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+</p>
+
+<p>This product includes software developed by the Apache Software
+Foundation <a target="_blank" href="http://www.apache.org">(http://www.apache.org/)</a>.</p>
+
+<p>This product includes the <code>EqualsUtil</code> and <code>HashCodeUtil</code> classes
+from <a target="_blank" href="http://www.javapractices.com">http://www.javapractices.com</a>.</p>
+</body>
+</html>

Added: ibatis/java/ibator/trunk/core/ibator-core/doc/html/menu.html
URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/doc/html/menu.html?rev=833772&view=auto
==============================================================================
--- ibatis/java/ibator/trunk/core/ibator-core/doc/html/menu.html (added)
+++ ibatis/java/ibator/trunk/core/ibator-core/doc/html/menu.html Sat Nov  7 22:59:00 2009
@@ -0,0 +1,61 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Table of Contents</title>
+  <link type="text/css" rel="stylesheet" href="ibator.css"/>
+</head>
+<body>
+<h1>Table of Contents</h1>
+<p>
+  <a href="intro.html" target="mainFrame">Introduction</a><br/>
+  <a href="whatsNew.html" target="mainFrame">What's New?</a><br/>
+  <a href="quickstart.html" target="mainFrame">Quick Start Guide</a><br/>
+  <a href="running.html" target="mainFrame">Running Ibator</a><br/>
+  <a href="afterRunning.html" target="mainFrame">Tasks After Running Ibator</a><br/>
+  <a href="migratingFromAbator.html" target="mainFrame">Migrating from Abator</a><br/>
+
+  <a href="configreference/xmlconfig.html" target="mainFrame">XML Configuration File Reference</a><br/>
+  &nbsp;&nbsp;<a href="configreference/classPathEntry.html" target="mainFrame">&lt;classPathEntry&gt;</a><br/>
+  &nbsp;&nbsp;<a href="configreference/columnOverride.html" target="mainFrame">&lt;columnOverride&gt;</a><br/>
+  &nbsp;&nbsp;<a href="configreference/columnRenamingRule.html" target="mainFrame">&lt;columnRenamingRule&gt;</a><br/>
+  &nbsp;&nbsp;<a href="configreference/commentGenerator.html" target="mainFrame">&lt;commentGenerator&gt;</a><br/>
+  &nbsp;&nbsp;<a href="configreference/daoGenerator.html" target="mainFrame">&lt;daoGenerator&gt;</a><br/>
+  &nbsp;&nbsp;<a href="configreference/generatedKey.html" target="mainFrame">&lt;generatedKey&gt;</a><br/>
+  &nbsp;&nbsp;<a href="configreference/ibatorConfiguration.html" target="mainFrame">&lt;ibatorConfiguration&gt;</a><br/>
+  &nbsp;&nbsp;<a href="configreference/ibatorContext.html" target="mainFrame">&lt;ibatorContext&gt;</a><br/>
+  &nbsp;&nbsp;<a href="configreference/ibatorPlugin.html" target="mainFrame">&lt;ibatorPlugin&gt;</a><br/>
+  &nbsp;&nbsp;<a href="configreference/ignoreColumn.html" target="mainFrame">&lt;ignoreColumn&gt;</a><br/>
+  &nbsp;&nbsp;<a href="configreference/javaTypeResolver.html" target="mainFrame">&lt;javaTypeResolver&gt;</a><br/>
+  &nbsp;&nbsp;<a href="configreference/javaModelGenerator.html" target="mainFrame">&lt;javaModelGenerator&gt;</a><br/>
+  &nbsp;&nbsp;<a href="configreference/jdbcConnection.html" target="mainFrame">&lt;jdbcConnection&gt;</a><br/>
+  &nbsp;&nbsp;<a href="configreference/properties.html" target="mainFrame">&lt;properties&gt;</a><br/>
+  &nbsp;&nbsp;<a href="configreference/property.html" target="mainFrame">&lt;property&gt;</a><br/>
+  &nbsp;&nbsp;<a href="configreference/sqlMapGenerator.html" target="mainFrame">&lt;sqlMapGenerator&gt;</a><br/>
+  &nbsp;&nbsp;<a href="configreference/table.html" target="mainFrame">&lt;table&gt;</a><br/>
+
+  <a href="generatedobjects/results.html" target="mainFrame">Using the Generated Objects</a><br/>
+  &nbsp;&nbsp;<a href="generatedobjects/javamodel.html" target="mainFrame">Java Model Objects</a><br/>
+  &nbsp;&nbsp;<a href="generatedobjects/sqlmap.html" target="mainFrame">SQL Map Files</a><br/>
+  &nbsp;&nbsp;<a href="generatedobjects/javadao.html" target="mainFrame">DAO Interfaces and Classes</a><br/>
+  &nbsp;&nbsp;<a href="generatedobjects/exampleClassUsage.html" target="mainFrame">Example Class Usage Notes</a><br/>
+  &nbsp;&nbsp;<a href="generatedobjects/extendingExampleClass.html" target="mainFrame">Extending the Example Classes</a><br/>
+
+  <a href="usage/intro.html" target="mainFrame">Database Specific Information</a><br/>
+  &nbsp;&nbsp;<a href="usage/db2.html" target="mainFrame">DB2</a><br/>
+  &nbsp;&nbsp;<a href="usage/mysql.html" target="mainFrame">MySql</a><br/>
+  &nbsp;&nbsp;<a href="usage/oracle.html" target="mainFrame">Oracle</a><br/>
+  &nbsp;&nbsp;<a href="usage/postgresql.html" target="mainFrame">PostgreSQL</a><br/>
+
+  <a href="reference/intro.html" target="mainFrame">Other Reference Information</a><br/>
+  &nbsp;&nbsp;<a href="reference/building.html" target="mainFrame">Building Ibator from Source</a><br/>
+  &nbsp;&nbsp;<a href="reference/extending.html" target="mainFrame">Extending Ibator</a><br/>
+  &nbsp;&nbsp;<a href="reference/pluggingIn.html" target="mainFrame">Implementing Ibator Plugins</a><br/>
+  &nbsp;&nbsp;<a href="reference/attributes.html" target="mainFrame">Introspected Table Attributes</a><br/>
+  &nbsp;&nbsp;<a href="reference/logging.html" target="mainFrame">Logging Information</a><br/>
+  <a href="philosophy.html" target="mainFrame">Design Philosophy</a><br/>
+  <a href="license.html" target="mainFrame">Licensing Information</a><br/>
+</p>
+</body>
+</html>

Added: ibatis/java/ibator/trunk/core/ibator-core/doc/html/migratingFromAbator.html
URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/doc/html/migratingFromAbator.html?rev=833772&view=auto
==============================================================================
--- ibatis/java/ibator/trunk/core/ibator-core/doc/html/migratingFromAbator.html (added)
+++ ibatis/java/ibator/trunk/core/ibator-core/doc/html/migratingFromAbator.html Sat Nov  7 22:59:00 2009
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Migrating from Abator</title>
+  <link type="text/css" rel="stylesheet" href="ibator.css"/>
+</head>
+<body>
+
+<div class="menuNav">
+  <p>
+    <a href="index.html" target="_top">Show Menu</a>
+    <a href="migratingFromAbator.html" target="_top">Hide Menu</a>
+  </p>
+</div>
+
+<h1>Migrating from Abator</h1>
+<p>This page details changes between
+Ibator and Abator.  For most users, the changes should be simple.
+If you extended any of Abator's classes to supply custom implementations
+of code generators or the Java type resolver, you will need to rework
+those custom classes.</p>
+<p>The changes are listed in three categories: from required
+configuration changes to less common changes.  Note that most changes
+are described assuming you are using XML configuration for Ibator.  If you
+are using Java based configuration, then the changes are still required
+and should be easy to deduce from the description of the XML changes.</p>
+<h2>Required for All Users</h2>
+<ul>
+  <li>The DTD has changed.  The new DOCTYPE should be
+      <pre>
+
+&lt;!DOCTYPE ibatorConfiguration
+  PUBLIC &quot;-//Apache Software Foundation//DTD Apache iBATIS Ibator Configuration 1.0//EN&quot;
+  &quot;http://ibatis.apache.org/dtd/ibator-config_1_0.dtd&quot;&gt;
+    </pre>
+  </li>
+  <li>The <code>&lt;abatorConfiguration&gt;</code> element is renamed to
+   <code>&lt;ibatorConfiguration&gt;</code></li>
+  <li>The <code>&lt;abatorContext&gt;</code> element is renamed to
+   <code>&lt;ibatorContext&gt;</code></li>
+</ul>
+<h2>Required for Many Users</h2>
+<ul>
+  <li><code>&lt;ibatorContext&gt;</code> elements now require an ID</li>
+  <li>The <code>generatorSet</code> attribute is removed from the
+    <code>&lt;ibatorContext&gt;</code> element and replaced with the
+    <code>targetRuntime</code> attribute.  Valid values for this
+    attribute are <code>Ibatis2Java2</code> or <code>Ibatis2Java5</code>.
+    Ibator does not include the legacy generator set from
+    Abator - so iBATIS version 2.2.0 or higher is required for
+    the code generated by Ibator.</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
+      configuration entries, you must make the
+      following changes from Abator:
+      <ul>
+        <li>Class path entries are specified at the configuration file level
+            with the <a href="configreference/classPathEntry.html">&lt;classPathEntry&gt;</a>
+            element - now a child element of <code>&lt;ibatorConfiguration&gt;</code> only.</li>
+        <li>A <code>&lt;classPathEntry&gt;</code> element is not longer allowed as a child
+            of <code>&lt;jdbcConnection&gt;</code></li>
+        <li>The "rootClasspath" property is no longer valid for the <code>&lt;javaModelGenerator&gt;</code>
+            element.</li>
+      </ul>
+  </li>
+</ul>
+<h2>Rarely Required Changes</h2>
+<ul>
+  <li>The <code>type</code> attribute is removed from both the
+    <code>&lt;javaModelGenerator&gt;</code> and
+    <code>&lt;sqlMapGenerator&gt;</code> elements.  Ibator has an entirely
+    different method of supplying custom code generators than Abator.
+    See the <a href="reference/extending.html">Extending Ibator</a>
+    page for full details.</li>
+  <li>The <code>type</code> attribute on the
+    <code>&lt;daoGenerator&gt;</code> element has a different meaning from the
+    attribute in Abator.  The special values remain the same, the difference manifests
+    if you used this attribute the specify a custom DAO generator for Abator.  With Ibator,
+    the type specifies the type of a custom DAO template rather than an implementation of a
+    custom DAO generator.  Again, no changes are required unless you used this attribute
+    to specify a custom DAO generator in Abator.
+    Ibator has an entirely
+    different method of supplying custom code generators than Abator.
+    See the <a href="reference/extending.html">Extending Ibator</a>
+    page for full details.</li>
+  <li>The <code>JavaTypeResolver</code> interface has changed and is
+    simplified.  If you specified a custom implementation on the
+    <code>&lt;javaTypeResolver&gt;</code> element, you must rework your implementation
+    class.</li>
+  <li>The <code>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

Added: ibatis/java/ibator/trunk/core/ibator-core/doc/html/philosophy.html
URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/doc/html/philosophy.html?rev=833772&view=auto
==============================================================================
--- ibatis/java/ibator/trunk/core/ibator-core/doc/html/philosophy.html (added)
+++ ibatis/java/ibator/trunk/core/ibator-core/doc/html/philosophy.html Sat Nov  7 22:59:00 2009
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Ibator Philosophy and Apology</title>
+  <link type="text/css" rel="stylesheet" href="ibator.css"/>
+</head>
+<body>
+
+<div class="menuNav">
+  <p>
+    <a href="index.html" target="_top">Show Menu</a>
+    <a href="philosophy.html" target="_top">Hide Menu</a>
+  </p>
+</div>
+
+<h1>Ibator Philosophy and Apology</h1>
+<p>Some philosophical questions might be raised by this tool because the
+ tool is more focused on database tables than on the domain model.
+ We will take a few paragraphs to talk about this approach.</p>
+
+<p>First of all, this tool does what it does.  We are not making any kind of statement
+about how projects should, or should not, be structured.  In general we are strong proponents
+of rich domain models - but creating a rich domain model is quite a different thing from
+answering the question of how that model should be persisted.</p>
+
+<p>If your particular design philosophy  is that the domain model drives all decisions, and
+ that the database design is subservient to the domain model, then this tool - and iBATIS
+ itself - may not be the proper fit for your application.  In that case, we would suggest
+ taking a serious look at <a target="_blank" href="http://www.hibernate.org">Hibernate</a>
+ - it may fit
+ more closely with your application design and philosophy.</p>
+
+<p>But not all projects fit that paradigm.  Very few truly enterprise
+ class applications do.  iBATIS and Ibator can be of great help in projects where
+ database design is seen as a co-equal to domain object design.
+iBATIS is not an object relational mapper, and does not attempt to transparently
+persist objects.  So it falls on application developers to write SQL to interact with
+database tables.</p>
+
+<p>In large or enterprise class projects, many of these factors are quite common:</p>
+<ul>
+  <li>Database design is often a separate function (with separate management) from OO domain
+      design
+  </li>
+  <li>Database designers do not have OO tools (like inheritance), so they don't think
+      in OO terms</li>
+  <li>Application designers do not have complete control over the final form of database tables.
+    For example, the data that seems to fit in one object for the application, may be split
+    into several tables in the database.</li>
+  <li>The database design often ends up quite different from the OO design, leading to
+   a significant mismatch between tables and objects.</li>
+</ul>
+<p>
+These factors are primary indicators that iBATIS is a good candidate tool for your
+application, and this is the type of project where Ibator can make a significant impact.
+So how should iBATIS and Ibator be used in this case?</p>
+
+<p>The Data Access Object(DAO) pattern is still the primary pattern.  Ibator can generate a basic
+set of DAOs that match each individual table.  Ibator's DAOs are transaction neutral.  This means
+that it is easy to extend the DAOs to add transaction attributes if more than one table is involved in
+a transaction.  Or, you could create another DAO (or service method) that more closely matches the
+persistence needs of a domain object
+and make use of one or more Ibator DAOs in a single transaction.</p>
+
+<p>As an example, consider a typical <code>Order</code> object - the typical header/detail problem.
+In some environments such an object would be persisted into at least 4 tables -
+two key tables, a "header" table, and a "detail" table (again, we are not making any kind of
+statement about whether this is "correct" design, just stating a fact).
+Your application should still interact with interact with the <code>Order</code> object, and
+there might
+be a <code>saveOrder(Order order)</code> method
+somewhere (in an OrderDAO, or a service object).  That method
+would interact with the Ibator created DAOs for each of the 4 tables involved.</p>
+
+<p>What has Ibator bought us in this case?  Several things:</p>
+<ul>
+  <li>Reuse - it is likely that some tables will need to be accessed from multiple different DAOs
+  or service methods.  Creating a DAO for each table promotes reuse and consistency within the
+  application.</li>
+  <li>Database abstraction - a service layer typically defines persistence in your application.  Those
+    methods can be stabilized fairly quickly.  As database design evolves:
+    <ol>
+      <li>Ibator can quickly regenerate the DAOs as the tables change</li>
+      <li>The service methods can be modified as necessary</li>
+      <li>Higher layers in the application remain unchanged</li>
+    </ol>
+  </li>
+  <li>Developer productivity - generating table based DAOs is quick and repeatable and error free.
+    Developers can concentrate on Object persistence, and on complex join queries if needed.</li>
+  <li>Fewer defects - because the most tedious and error prone part of any application (getting the
+   SQL to match the objects) is automated.</li>
+</ul>
+</body>
+</html>

Added: ibatis/java/ibator/trunk/core/ibator-core/doc/html/quickstart.html
URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/doc/html/quickstart.html?rev=833772&view=auto
==============================================================================
--- ibatis/java/ibator/trunk/core/ibator-core/doc/html/quickstart.html (added)
+++ ibatis/java/ibator/trunk/core/ibator-core/doc/html/quickstart.html Sat Nov  7 22:59:00 2009
@@ -0,0 +1,58 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Ibator Quick Start Guide</title>
+  <link type="text/css" rel="stylesheet" href="ibator.css"/>
+</head>
+<body>
+
+<div class="menuNav">
+  <p>
+    <a href="index.html" target="_top">Show Menu</a>
+    <a href="quickstart.html" target="_top">Hide Menu</a>
+  </p>
+</div>
+
+<h1>Ibator Quick Start Guide</h1>
+<p>To get up and running quickly with Ibator, follow these steps:</p>
+<ol>
+  <li>Create and fill out a configuration file appropriately.
+      At a minimum, you must specify:
+    <ol type="a">
+      <li>A <code>&lt;jdbcConnection&gt;</code> element to specify how to connect to
+          the target database</li>
+      <li>A <code>&lt;javaModelGenerator&gt;</code> element to specify target package
+          and target project for generated Java model objects</li>
+      <li>A <code>&lt;sqlMapGenerator&gt;</code> element to specify target package
+          and target project for generated SQL map files</li>
+      <li>(Optionally) A <code>&lt;daoGenerator&gt;</code> element to specify target package
+           and target project for generated DAO interfaces and classes (you may
+          omit the <code>&lt;daoGenerator&gt;</code> element if you don't wish to generate DAOs)</li>
+      <li>At least one database <code>&lt;table&gt;</code> element</li>
+    </ol>
+    <p>See the <a href="configreference/xmlconfig.html">XML Configuration File Reference</a>
+       page for an example of an Ibator configuration file.</p>
+  </li>
+  <li>Save the file in some convenient location (like \temp\ibatorConfig.xml)</li>
+  <li>Run Ibator from the command line with a command like this:
+    <pre>
+
+      java -jar ibator.jar -configfile \temp\ibatorConfig.xml -overwrite
+    </pre>
+    <p>This will tell Ibator to run using your configuration file.  It will also tell Ibator
+    to overwrite any existing Java files with the same name.  If you want to save any existing
+    Java files, then omit the <code>-overwrite</code> parameter.  If there is a conflict, Ibator
+    will save the newly generated file with a unique name (e.g. MyClass.java.1).</p>
+  </li>
+  <li>After running Ibator, you will need to create or modify the standard iBATIS
+      configuration files to make use of your newly generated code.  See the
+      <a href="afterRunning.html">Tasks After Running Ibator</a> page for more
+      information.</li>
+</ol>
+<p><b>Important:</b> Ibator generated code requires that statement namespaces are enabled
+  in your iBATIS configuration.  See the <a href="afterRunning.html">Tasks After Running Ibator</a>
+  page for more information.</p>
+</body>
+</html>

Added: ibatis/java/ibator/trunk/core/ibator-core/doc/html/reference/attributes.html
URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/doc/html/reference/attributes.html?rev=833772&view=auto
==============================================================================
--- ibatis/java/ibator/trunk/core/ibator-core/doc/html/reference/attributes.html (added)
+++ ibatis/java/ibator/trunk/core/ibator-core/doc/html/reference/attributes.html Sat Nov  7 22:59:00 2009
@@ -0,0 +1,60 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Introspected Table Attributes</title>
+  <link type="text/css" rel="stylesheet" href="../ibator.css"/>
+</head>
+<body>
+
+<div class="menuNav">
+  <p>
+    <a href="../index.html" target="_top">Show Menu</a>
+    <a href="attributes.html" target="_top">Hide Menu</a>
+  </p>
+</div>
+
+<h1>Introspected Table Attributes</h1>
+<p>After the database introspection step, and before code generation begins,
+   Ibator calculates many attributes that are used by the actual code generators.
+   Plugins can override any of these attributes before code generation by
+   implementing the <code>initialized</code> method.</p>
+
+<table cellspacing="0" cellpadding="5" border="1">
+  <tr>
+    <th>Attribute</th>
+    <th>Details</th>
+  </tr>
+  <tr>
+    <td valign="top">ATTR_BASE_RECORD_TYPE</td>
+    <td>
+      <table border="0">
+        <tr>
+          <th align="right">Data Type:</th>
+          <td><code>org.apache.ibatis.ibator.api.dom.java.FullyQualifiedJavaType</code></td>
+        </tr>
+        <tr>
+          <th align="right">Setter:</th>
+          <td><code>setBaseRecordType</code></td>
+        </tr>
+        <tr>
+          <th align="right">Getter:</th>
+          <td><code>getBaseRecordType</code></td>
+        </tr>
+        <tr>
+          <th align="right" valign="top">Description:</th>
+          <td>The fully qualified type of the base record.
+              By default, this will be the
+              <code>targetPackage</code> specified in the
+              <code>&lt;javaModelGenerator&gt;</code>
+              configuration, plus the sub-package if sub-packages are enabled,
+              plus the calculated domain object name.</td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+
+</body>
+</html>

Added: ibatis/java/ibator/trunk/core/ibator-core/doc/html/reference/building.html
URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/doc/html/reference/building.html?rev=833772&view=auto
==============================================================================
--- ibatis/java/ibator/trunk/core/ibator-core/doc/html/reference/building.html (added)
+++ ibatis/java/ibator/trunk/core/ibator-core/doc/html/reference/building.html Sat Nov  7 22:59:00 2009
@@ -0,0 +1,44 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Building Ibator from Source</title>
+  <link type="text/css" rel="stylesheet" href="../ibator.css"/>
+</head>
+<body>
+
+<div class="menuNav">
+  <p>
+    <a href="../index.html" target="_top">Show Menu</a>
+    <a href="building.html" target="_top">Hide Menu</a>
+  </p>
+</div>
+
+<h1>Building Ibator from Source</h1>
+<p>All Ibator distributions include source code.  The only compile time dependency Ibator
+has is on <code>ant.jar</code> - for successful compilation of the included Ant task.
+It is straight forward to compile Ibator from source - simply unzip the source in
+an Ibator distribution and compile it with your favorite tool.</p>
+<p>The Ibator distribution does not contain the tests that are run during the build,
+or other classes that are a necessary part of the build.  If you would like to
+inspect those classes, or build Ibator from the very latest version of the source code
+at Apache then follow these steps:</p>
+<ol>
+  <li>Do a SubVersion checkout of the Ibator source tree from the location
+    <a target="_blank" href="http://svn.apache.org/repos/asf/ibatis/trunk/java/tools/ibator/core/">
+    http://svn.apache.org/repos/asf/ibatis/trunk/java/tools/ibator/core/</a>
+    (You may use any SubVersion client you prefer.  We recommend
+    <a target="_blank" href="http://tortoisesvn.tigris.org/">TortoiseSVN</a>.)
+  </li>
+  <li>The build file only requires that the JAVA_HOME environment variable be defined.
+      If it is not already defined on your system, then
+      modify the file <code>../build/setupCmdLine.bat</code> to specify
+      the proper values on your machine.</li>
+  <li>Run the Ant build script by running the batch file <code>../build/build.bat</code>
+    from the checked out directory.</li>
+</ol>
+
+
+</body>
+</html>

Added: ibatis/java/ibator/trunk/core/ibator-core/doc/html/reference/extending.html
URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/doc/html/reference/extending.html?rev=833772&view=auto
==============================================================================
--- ibatis/java/ibator/trunk/core/ibator-core/doc/html/reference/extending.html (added)
+++ ibatis/java/ibator/trunk/core/ibator-core/doc/html/reference/extending.html Sat Nov  7 22:59:00 2009
@@ -0,0 +1,168 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Extending Ibator</title>
+  <link type="text/css" rel="stylesheet" href="../ibator.css"/>
+</head>
+<body>
+
+<div class="menuNav">
+  <p>
+    <a href="../index.html" target="_top">Show Menu</a>
+    <a href="extending.html" target="_top">Hide Menu</a>
+  </p>
+</div>
+
+<h1>Extending Ibator</h1>
+<p>Ibator is designed for extensibility.  All code generation is performed using a
+simple DOM representation of Java and XML elements that is included with Ibator.</p>
+<p>The Java DOM is included in the package <code>org.apache.ibatis.ibator.api.dom.java</code></p>
+<p>The XML DOM is included in the package <code>org.apache.ibatis.ibator.api.dom.xml</code></p>
+<p>These classes are not sufficient for every conceivable code generation possibility, but they are quite
+useful for generating simple to moderately complex Java and XML code.</p>
+
+<p>Using options in the Ibator configuration file, you can provide your own implementations
+of many of Ibator's key interfaces.  You can also subclass any of the provided implementations
+to provide customized behaviors.  This page will describe the public APIs available in
+Ibator and provide pointers to the source code for further investigation.  If you have
+any difficulty understanding how to extend Ibator, feel free to send a note to the
+support mailing list at
+<a href="mailto:user-java@ibatis.apache.org">user-java@ibatis.apache.org</a>.</p>
+
+<h2>Extending Versus Plugging In</h2>
+<p>Although there are a number of different extension points for Ibator, as shown on this
+page, in most cases it will be far easier to extend Ibator through the use of a plugin.  See the
+<a href="pluggingIn.html">Implementing Ibator Plugins</a> reference page for more information.</p>
+<p>The primary extension point for code generation is
+<code>org.apache.ibatis.ibator.api.IntrospectedTable</code>.  Implementing a code generator
+is a non-trivial task and should only be contemplated when you want to completely replace
+the code generation activities of Ibator.  In the years since the original release of Abator,
+very few enhancement requests have appeared that could not be handled by a plugin.</p>
+
+<h2>Extension Points</h2>
+<p>Ibator includes a number of different extension points.  The following sections
+list the different methods of extending Ibator, and describes the types of
+activities that can be accomplished with the different extensions.  If you
+need some help understanding the different options, feel free to ask a question
+on the iBATIS user mailing list.</p>
+<h3>org.apache.ibatis.ibator.generator.ibatis2.dao.templates.AbstractDAOTemplate</h3>
+<p>Use this extension point if you need to generate DAO objects that are different from
+one of Ibator's built-in options.  Classes that extend <code>AbstractDAOTemplate</code>
+have the opportunity to override and implement a variety of different methods that
+define how the DAO objects should be constructed, and how the DOAs interact with iBATIS.</p>
+<p>If you implement this extension point, then you should specify the fully qualified
+name of the implementing class on the <code>type</code> attribute of the
+<code>&lt;daoGenerator&gt;</code> configuration element.</p>
+
+<h3>org.apache.ibatis.ibator.api.IntrospectedTable</h3>
+<p><code>IntrospectedTable</code> is an abstract class that can be extended to supply
+different code generators than the versions supplied with Ibator.  A good example of
+such an implementation would be a FreeMarker or Velocity template based
+implementation of Ibator.  In most other instances, coding a plugin is the better way to go.</p>
+<p>If you choose to extend this class, you must supply code to generate Java model classes,
+DAO classes, and SQL Map XML files.  You may choose to generated those generators with the
+technology of your choice.  You should also ensure that you follow all the Ibator rules for
+code generation (for example, do not generate a primary key class if the table doesn't have
+a primary key).  The base <code>IntrospectedTable</code> class holds an instance
+of <code>org.apache.ibatis.ibator.internal.rules.IbatorRules</code> that can be queried
+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 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">
+  <tr>
+    <th>TargetRuntime</th>
+    <th>Implementation</th>
+  </tr>
+  <tr>
+    <td>Ibatis2Java2 (default)</td>
+    <td><code>org.apache.ibatis.ibator.generator.ibatis2.IntrospectedTableIbatis2Java2Impl</code></td>
+  </tr>
+  <tr>
+    <td>Ibatis2Java5</td>
+    <td><code>org.apache.ibatis.ibator.generator.ibatis2.IntrospectedTableIbatis2Java5Impl</code></td>
+  </tr>
+</table>
+
+<p>If you choose to implement this extension point, specify the fully qualified
+class name of your implementation with the <code>targetRuntime</code>
+attribute of the <code>&lt;ibatorContext&gt;</code> element.</p>
+
+<h3>org.apache.ibatis.ibator.api.IntrospectedColumn</h3>
+<p><code>IntrospectedColumn</code> is a class that holds information about a
+column as it is returned from database metadata, as well as methods used
+during code generation to generate specific phrases for iBATIS.  In some rare
+circumstances it might be desirable to override this class to provide
+your own implementation - especially if you create a new set of code
+generators for Ibator.</p>
+<p>If you choose to implement this extension point, specify the fully qualified
+class name of your implementation with the <code>introspectedColumnImpl</code>
+attribute of the <code>&lt;ibatorContext&gt;</code> element.</p>
+
+<h3>org.apache.ibatis.ibator.api.JavaTypeResolver</h3>
+<p>Ibator calls methods in this interface to map JDBC types to Java types
+   during database introspection.  The default implementation of this
+   interface is <code>org.apache.ibatis.ibator.internal.types.JavaTypeResolverDefaultImpl</code>.
+   You can provide your own implementation, and the default implementation has
+   been designed for extensibility.</p>
+
+<p>To provide your own implementation, specify the fully qualified class name
+   in the XML configuration like this:</p>
+<pre>
+    &lt;javaTypeResolver type="mypackage.MyImplementation"&gt;
+      ...
+    &lt;/javaTypeResolver&gt;
+</pre>
+
+<h3>org.apache.ibatis.ibator.api.ShellCallback</h3>
+<p>Ibator calls methods in this interface to perform functions that it cannot
+   do on its own.  The most important of these functions are:</p>
+<ul>
+  <li>Translating project/package into a directory structure</li>
+   <li>Merging Java source files in the event that an existing Java file of
+     the same name/package exists.</li>
+</ul>
+
+<p>The default implementation of this interface is
+   <code>org.apache.ibatis.ibator.internal.DefaultShellCallback</code>.  The default
+   implementation simply concatenates project and package together and creates
+   the necessary package directories if needed.  The default implementation does not
+   support merging of Java files, and will either overwrite or ignore files.</p>
+
+<p>You can provide your own implementation.  This would be the most important
+   class to write if you want to integrate Ibator into some other environment.
+   For example, the Eclipse plugin provides an implementation of this interface that
+   supports Java file merging when running in the Eclipse environment.</p>
+
+<p>To provide your own implementation, supply an instance of the interface
+   on the constructor to the <code>org.apache.ibatis.ibator.api.Ibator</code>
+   object.  This cannot be configured through XML.  If you are providing
+   your own implementation of this interface then we assume that you are
+   also providing some collateral code (like a new Ant task) to run
+   your implementation.</p>
+
+<h3>org.apache.ibatis.ibator.api.ProgressCallback</h3>
+<p>Ibator calls methods in this interface to report progress during the
+   generation of files (a long running process).  The default implementation
+   of this interface is
+   <code>org.apache.ibatis.ibator.internal.NullProgressCallback</code>
+   which simply ignores all progress messages.  You can provide an
+   implementation of this interface to support progress notifications and
+   cancellation of file generation.</p>
+
+<p>Implementing this interface would be important when integrating Ibator
+   into other IDE environments.  The Eclipse plugin provides an implementation
+   of this interface that hooks into Eclipse's progress notification system.</p>
+
+<p>To provide your own implementation, supply an instance of the interface
+   in the <code>org.apache.ibatis.ibator.api.Ibator.generate()</code> method call.
+   This cannot be configured through XML.  Again, we assume that if you are providing
+   your own implementation of this interface then you are
+   also providing some collateral code (like a new Ant task or an IDE integration) to run
+   your implementation.</p>
+</body>
+</html>

Added: ibatis/java/ibator/trunk/core/ibator-core/doc/html/reference/intro.html
URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/doc/html/reference/intro.html?rev=833772&view=auto
==============================================================================
--- ibatis/java/ibator/trunk/core/ibator-core/doc/html/reference/intro.html (added)
+++ ibatis/java/ibator/trunk/core/ibator-core/doc/html/reference/intro.html Sat Nov  7 22:59:00 2009
@@ -0,0 +1,30 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Ibator Reference Information</title>
+  <link type="text/css" rel="stylesheet" href="../ibator.css"/>
+</head>
+<body>
+
+<div class="menuNav">
+  <p>
+    <a href="../index.html" target="_top">Show Menu</a>
+    <a href="intro.html" target="_top">Hide Menu</a>
+  </p>
+</div>
+
+<h1>Ibator Reference Information</h1>
+<p>This section collects useful information related to technical topics
+with Ibator.</p>
+
+<ul>
+  <li><a href="building.html">Building Ibator from Source</a></li>
+  <li><a href="extending.html">Extending Ibator</a></li>
+  <li><a href="pluggingIn.html">Implementing Ibator Plugins</a></li>
+  <li><a href="attributes.html">Introspected Table Attributes</a></li>
+  <li><a href="logging.html">Logging Information</a></li>
+</ul>
+</body>
+</html>

Added: ibatis/java/ibator/trunk/core/ibator-core/doc/html/reference/logging.html
URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/doc/html/reference/logging.html?rev=833772&view=auto
==============================================================================
--- ibatis/java/ibator/trunk/core/ibator-core/doc/html/reference/logging.html (added)
+++ ibatis/java/ibator/trunk/core/ibator-core/doc/html/reference/logging.html Sat Nov  7 22:59:00 2009
@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Logging Information</title>
+  <link type="text/css" rel="stylesheet" href="../ibator.css"/>
+</head>
+<body>
+
+<div class="menuNav">
+  <p>
+    <a href="../index.html" target="_top">Show Menu</a>
+    <a href="logging.html" target="_top">Hide Menu</a>
+  </p>
+</div>
+
+<h1>Logging Information</h1>
+<p>Ibator reports logging information in several different ways:</p>
+<ul>
+  <li>Ibator may generate and display warning messages every time it is run.  These
+      messages are meant to inform the user of significant events that may, or may not,
+      require attention.  Examples are files being overwritten, non-fatal configuration errors, etc.
+      Warnings are always displayed - regardless of configuration or command line options.</li>
+  <li>Ibator generates and may, or may not, display progress messages every time it is run.
+      These messages are meant to inform to user of progress in code generation.  These messages
+      are not displayed by default, but may be enabled by specifying the <code>-verbose</code>
+      command line argument.  Or, if you are running Ibator with the built in Ant task, these
+      messages may be enabled by setting the <code>verbose</code> attribute to <code>true</code>,
+      and then running Ant in verbose mode.</li>
+  <li>Lastly, Ibator will generate tracing (logging) messages for detailed debugging.
+      This page explains how to enable these statements.</li>
+</ul>
+
+<p>In general, Ibator will not repeat messages.  So if Ibator generates a warning,
+that warning is typically not also logged.  In some situations it may be useful
+to enable logging as well as asking Ibator to be verbose with progress messages.
+This may generate a substantial output, but it will also give a very complete
+picture of what's happening internally during the Ibator run.</p>
+
+<p>Ibator will use Apache Log4J logging if Log4J is in the runtime classpath.
+See <a href="http://logging.apache.org/log4j/">http://logging.apache.org/log4j/</a>
+for more information about Log4J.  If Log4J is not in the runtime classpath,
+Ibator will use standard Java logging.</p>
+<p>If for any reason you prefer to force the use of standard Java logging, even
+if Log4J is in the runtime classpath, you may specify the <code>-forceJavaLogging</code>
+command line argument, or specify the following line of code when running
+Ibator from Java:</p>
+<p><code>org.apache.ibatis.ibator.logging.LogFactory.forceJavaLogging();</code></p>
+<p><b>Important:</b> You should specify the above line of code <i>before</i> any other Ibator code.</p>
+
+<h2>Supplying an Alternate Implementation</h2>
+<p>If you prefer to use a different logging implementation than Log4J or
+standard Java logging, you may supply an alternate implementation of the key logging
+interfaces as follows:</p>
+<ol>
+  <li>Create an implementation of the <code>org.apache.ibatis.ibator.logging.Log</code>
+      interface that implements the key logging methods for you logging implementation
+      of choice.</li>
+  <li>Create an implementation of the <code>org.apache.ibatis.ibator.logging.AbstractLogFactory</code>
+      interface that will return instances of your <code>Log</code> implementation.</li>
+  <li>Configure Ibator to use your new LogFactory by calling the method
+      <code>org.apache.ibatis.ibator.logging.LogFactory.setLogFactory(AbstractLogFactory)</code>
+      and supplying an instance of your <code>AbstractLogFactory</code> implementation.</li>
+</ol>
+
+<h2>Configuring Log4J Logging</h2>
+<p>The following is a sample Log4J configuration file:</p>
+<pre>
+# Set root logger
+log4j.rootLogger=INFO, A1
+
+# A1 is set to be a ConsoleAppender.
+log4j.appender.A1=org.apache.log4j.ConsoleAppender
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %c - %m%n
+
+# Ibator logging configuration...
+log4j.logger.org.apache.ibatis.ibator=DEBUG
+</pre>
+<p>This file will instruct Log4J to write all Ibator debug messages
+to the console.  To use this file:</p>
+<ol>
+  <li>Create a file called <code>log4j.properties</code> in the
+      root of your runtime classpath</li>
+  <li>Copy the above entries into the new file</li>
+  <li>Run Ibator with the Log4J JAR file also in the runtime
+      classpath.</li>
+</ol>
+<p>You should see many log messages in the console.</p>
+<p>You may also configure Log4J in any of the other supported
+methods if you prefer.</p>
+
+<h2>Configuring Java Logging</h2>
+<p>The following is a sample Java logging configuration file:</p>
+<pre>
+# Specify the handlers to create in the root logger
+# (all loggers are children of the root logger)
+handlers = java.util.logging.ConsoleHandler
+
+# Set the default logging level for the root logger
+.level = INFO
+
+# Set the default logging level for new ConsoleHandler instances
+java.util.logging.ConsoleHandler.level = ALL
+
+# Set the default formatter for new ConsoleHandler instances
+java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
+
+# Set the default logging level for the logger named org.apache.ibatis.ibator
+org.apache.ibatis.ibator.level = FINE
+</pre>
+<p>This file will instruct Java to write all Ibator debug messages
+to the console.  To use this file:</p>
+<ol>
+  <li>Create a file called <code>logging.properties</code> (or any
+     file name you prefer).  The file can exist anywhere in
+     the file system (for example, in a <code>\temp</code> directory).</li>
+  <li>Copy the above entries into the new file</li>
+  <li>Run Ibator with this VM argument:<br/>
+    <code>-Djava.util.logging.config.file=\temp\logging.properties</code>
+    (specify whatever actual file name and directory you used)
+  </li>
+</ol>
+<p>You should see many log messages in the console.</p>
+<p>You may also configure Java logging in any of the other supported
+methods if you prefer.</p>
+
+</body>
+</html>



Mime
View raw message