Author: jgbutler
Date: Tue Dec 16 08:35:50 2008
New Revision: 727079
URL: http://svn.apache.org/viewvc?rev=727079&view=rev
Log:
[ibator] lots of documentation updates, and fix for the classloader
Modified:
ibatis/trunk/java/tools/ibator/core/build/version.properties
ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/columnOverride.html
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/commentGenerator.html
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/daoGenerator.html
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/ibatorContext.html
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/table.html
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/xmlconfig.html
ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/exampleClassUsage.html
ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/extendingExampleClass.html
ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/javadao.html
ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/javamodel.html
ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/results.html
ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/sqlmap.html
ibatis/trunk/java/tools/ibator/core/htmldoc/migratingFromAbator.html
ibatis/trunk/java/tools/ibator/core/htmldoc/reference/building.html
ibatis/trunk/java/tools/ibator/core/htmldoc/running.html
ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IbatorPlugin.java
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IbatorPluginAdapter.java
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IntrospectedTable.java
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/generator/ibatis2/model/BaseRecordGenerator.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/internal/IbatorObjectFactory.java
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/IbatorPluginAggregator.java
ibatis/trunk/java/tools/ibator/core/test/README.txt
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=727079&r1=727078&r2=727079&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/build/version.properties (original)
+++ ibatis/trunk/java/tools/ibator/core/build/version.properties Tue Dec 16
08:35:50 2008
@@ -1,4 +1,4 @@
#ibator build version info
-#Thu Dec 11 14:08:45 CST 2008
-version=1.2.0
-buildNum=665
+#Tue Dec 16 09:32:54 CST 2008
+version=1.2.1
+buildNum=667
Modified: ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt?rev=727079&r1=727078&r2=727079&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt (original)
+++ ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt Tue Dec 16
08:35:50 2008
@@ -1,4 +1,16 @@
-------------------------------------------------------------------------------
+Version 1.2.1:
+
+Bugs:
+1. Fixed IbatorObjectFactory so that it will find internal classes on the
+ context classloader.
+
+Enhancements:
+1. Modified plugin methods for model fields, getters, and setters so that
+ the plugin will know which type of class (Primary Key, Base Record, or
+ Record with BLOBs) is being generated.
+
+-------------------------------------------------------------------------------
Version 1.2.0: Renamed to Ibator
Bugs:
Modified:
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/columnOverride.html
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/columnOverride.html?rev=727079&r1=727078&r2=727079&view=diff
==============================================================================
---
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/columnOverride.html
(original)
+++
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/columnOverride.html
Tue Dec 16 08:35:50 2008
@@ -42,8 +42,8 @@
<td valign="top">property</td>
<td>The name of a Java property to be used. If not specified,
Ibator will generate properties based on the column name.
- For example, if a table has a column named STRT_DTE, Ibator
- will generate the property name as either STRT_DTE or strtDte
+ For example, if a table has a column named "STRT_DTE" then Ibator
+ will generate the property name as either "STRT_DTE" or "strtDte"
based on the value of the "useActualColumnNames" property (see the
description of the <a href="table.html"><table></a> element for
more information).
This property could be used to rename the column "startDate"</td>
@@ -81,7 +81,7 @@
<td valign="top">delimitedColumnName</td>
<td>Specifies whether the column name should be delimited in the generated
SQL.
Ibator will automatically delimit the column name if the name contains
a space,
- so this override is only necessary when the column name is forces to a
certain
+ so this override is only necessary when the column name must be forced
to a certain
case, or when the column name is a reserved word in the database.
<p>When "true", the <code>column</code> attribute for the override
must exactly match the case of the column name returned from the
database.</p>
Modified:
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/commentGenerator.html
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/commentGenerator.html?rev=727079&r1=727078&r2=727079&view=diff
==============================================================================
---
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/commentGenerator.html
(original)
+++
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/commentGenerator.html
Tue Dec 16 08:35:50 2008
@@ -42,7 +42,7 @@
<tr>
<td valign="top">type</td>
<td>This may be used to specify the type of the user provided Comment
Generator.
- The class must implement the interface
org.apache.ibatis.ibator.api.CommentGenerator,
+ The class must implement the interface
<code>org.apache.ibatis.ibator.api.CommentGenerator</code>
and must have a public default constructor. The attribute also accepts
the special value DEFAULT in which case the default implementation will
be used (this has the same effect as not specifying the type).</td>
Modified:
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/daoGenerator.html
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/daoGenerator.html?rev=727079&r1=727078&r2=727079&view=diff
==============================================================================
---
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/daoGenerator.html
(original)
+++
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/daoGenerator.html
Tue Dec 16 08:35:50 2008
@@ -74,7 +74,7 @@
Ibator will create folders as required for the generated
packages.
<p><b>Note:</b> the package for DAO implementation classes may
- be overridden by specifying the optional
<code>implamentationPackage</code>
+ be overridden by specifying the optional
<code>implementationPackage</code>
attribute as shown below.</p></td>
</tr>
<tr>
Modified:
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/ibatorContext.html
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/ibatorContext.html?rev=727079&r1=727078&r2=727079&view=diff
==============================================================================
---
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/ibatorContext.html
(original)
+++
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/ibatorContext.html
Tue Dec 16 08:35:50 2008
@@ -151,11 +151,11 @@
<td valign="top">suppressTypeWarnings</td>
<td>If true, then Ibator will add an annotation to any method
that uses a non-parameterized type to suppress compiler type warnings.
- This is useful if you are using the Java2 targetJRE, but are
+ This is useful if you are using the Ibatis2Java2 targetRuntime, but are
compiling the generated objects with a JSE 5.0 compiler. In that
situation,
the Ibator generated code would generate many compiler warnings if the
annotation is not allowed. This property is not needed and will have
- no effect when using the Java5 targetJRE.</p>
+ no effect when using the Ibatis2Java5 targetRuntime.</p>
<p><i>The default value is false.</i></p></td>
</tr>
<tr>
Modified: ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/table.html
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/table.html?rev=727079&r1=727078&r2=727079&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/table.html
(original)
+++ ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/table.html Tue
Dec 16 08:35:50 2008
@@ -32,9 +32,7 @@
This class will extend one of the two previous classes depending on
the
configuration of the table.</li>
<li>A class that is used to generate dynamic where clauses in the
- different "by example" methods (selectByExample, deleteByExample).
- This class may, or may not, extend one of the other model classes
- depending on the current generator set and the structure of the
table.</li>
+ different "by example" methods (selectByExample,
deleteByExample).</li>
</ul>
</li>
<li>(Optionally) A DAO interface and class</li>
Modified:
ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/xmlconfig.html
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/xmlconfig.html?rev=727079&r1=727078&r2=727079&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/xmlconfig.html
(original)
+++ ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/xmlconfig.html
Tue Dec 16 08:35:50 2008
@@ -109,7 +109,7 @@
that conform to the Spring framework.
</li>
<li>The file specifies only one table will be introspected, but many more
could be specified.
- Important note about that table are as follows:
+ Important notes about the specified table include:
<ul>
<li>The generated objects will be based on the name Customer
(<code>CustomerKey</code>,
<code>Customer</code>,
Modified:
ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/exampleClassUsage.html
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/exampleClassUsage.html?rev=727079&r1=727078&r2=727079&view=diff
==============================================================================
---
ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/exampleClassUsage.html
(original)
+++
ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/exampleClassUsage.html
Tue Dec 16 08:35:50 2008
@@ -17,21 +17,21 @@
<h1>Example Class Usage Notes</h1>
<p>The example class specifies how to build a dynamic where clause. Each
non-BLOB column in the
-can optionally be included in the where clause. Examples are the best way
+table can optionally be included in the where clause. Examples are the best
way
to demonstrate the usage of this class.</p>
<p>The example class can be used to generate a virtually
unlimited where clauses.</p>
<p>The example classes contain
an inner static class called <code>Criteria</code>
-that holds a list of conditions that will be <b>anded</b> together in the
where clause. The
+that holds a list of conditions that will be <code>anded</code> together in
the where clause. The
outer class holds a list of <code>Criteria</code> objects and all the clauses
-from the inner classes will be <b>ored</b> together. Using different sets of
+from the inner classes will be <code>ored</code> together. Using different
sets of
<code>Criteria</code> classes allows you to generate virtually unlimited
types of where clauses.</p>
<p><code>Criteria</code> objects must be created with the
<code>createCriteria</code> method
in the example class. When the first <code>Criteria</code> object is created
it is automatically
added to the list of <code>Criteria</code> objects - this makes it easy to
write
-a simple where clause if you don't need to or several other clauses
together.</p>
+a simple where clause if you don't need to <code>or</code> several other
clauses together.</p>
<p>This example shows how to generate a simple WHERE clause using the generated
example class:</p>
@@ -82,7 +82,7 @@
</pre>
<p>Returned records will meet these criteria.</p>
<p>The <code>Criteria</code> inner class includes <code>andXXX</code> methods
for each field,
-and each possible SQL predicate including:</p>
+and each standard SQL predicate including:</p>
<ul>
<li>IS NULL - meaning the related column must be NULL</li>
<li>IS NOT NULL - meaning the related column must not be NULL</li>
Modified:
ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/extendingExampleClass.html
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/extendingExampleClass.html?rev=727079&r1=727078&r2=727079&view=diff
==============================================================================
---
ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/extendingExampleClass.html
(original)
+++
ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/extendingExampleClass.html
Tue Dec 16 08:35:50 2008
@@ -25,9 +25,7 @@
<h2>General Principles</h2>
<p>Ibator generates an "example" class for each table, unless instructed
otherwise
in the configuration. The "example" class is used to generate a dynamic where
-clause for use in the
-<code>selectByExample</code>, <code>deleteByExample</code>,
-<code>updateByExample</code>, and <code>countByExample</code> statements.
+clause for use in the <code>xxxByExample</code> statements.
The standard "example" class includes functionality for all standard SQL
predicates.
In some cases, it may be desirable to add additional predicates for the
specific needs of your application. This may include adding support for
non-standard
@@ -123,7 +121,7 @@
the problems of formatting different datatypes properly (most notably
dates, times, and timestamps). Also, there is a chance of SQL
injection issues with this method if you expose a too generic method.
-If at all possible, we suggest using one of the other methods listed below.</p>
+If possible, we suggest using one of the other methods listed below.</p>
<h3>2. Single Parameter Predicates</h3>
<p>This type of predicate is used when there is a single property
Modified:
ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/javadao.html
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/javadao.html?rev=727079&r1=727078&r2=727079&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/javadao.html
(original)
+++ ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/javadao.html
Tue Dec 16 08:35:50 2008
@@ -48,6 +48,7 @@
<li>deleteByPrimaryKey</li>
<li>deleteByExample</li>
<li>insert</li>
+ <li>insertSelective</li>
<li>selectByPrimaryKey</li>
<li>selectByExample</li>
<li>selectByExampleWithBLOBs</li>
@@ -64,14 +65,15 @@
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).
+<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 is useful
if you
-are not already using something like Spring or PicoContainer to manage
dependencies.</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,
Modified:
ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/javamodel.html
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/javamodel.html?rev=727079&r1=727078&r2=727079&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/javamodel.html
(original)
+++ ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/javamodel.html
Tue Dec 16 08:35:50 2008
@@ -23,9 +23,9 @@
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 as an 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
+<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>
@@ -66,7 +66,7 @@
<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 a primary key.
+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><columnOverride></code> configuration element.</p>
@@ -83,8 +83,8 @@
<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 are other non-BLOB and
non-Primary Key
-columns in the table, else it will extend the primary key (note that Ibator
does not support
+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
@@ -113,20 +113,15 @@
<li><code>updateByExample</code></li>
</ul>
-<p>This class may or may not extend one of the other generated domain classes
based on the
-table configuration, and the value of the <code>generatorSet</code>
-attribute of the <a
href="../configreference/ibatorContext.html"><ibatorContext></a>
-configuration element.</p>
+<p>This class does not extend any of the other model classes.</p>
<p>The name of the class will be <code>«TableName»Example</code>
by default, or
<code>«domainObjectName»Example</code> if the
<code>domainObjectName</code>
attribute is specified on the <code><table></code> configuration
element.</p>
<p>This class will be generated if any of the <code>*ByExample</code>
-methods are enabled. Note that the configuration elements produced by these
options can grow quite large.
-With the "Java2" or "Java5" generator sets
-the example class itself can grow quite large, but the DAO methods are small
as is the generated XML
-fragment.
+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>
Modified:
ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/results.html
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/results.html?rev=727079&r1=727078&r2=727079&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/results.html
(original)
+++ ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/results.html
Tue Dec 16 08:35:50 2008
@@ -16,15 +16,20 @@
</div>
<h1>Using the Ibator Generated Objects</h1>
-<p>Ibator generates three types of objects:</p>
+<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. Also see the
-<a href="exampleClassUsage.html">Example Class Usage</a> page
-for information on using the example classes.</p>
+<p>The individual pages describe these objects, and their usage.</p>
</body>
</html>
Modified:
ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/sqlmap.html
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/sqlmap.html?rev=727079&r1=727078&r2=727079&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/sqlmap.html
(original)
+++ ibatis/trunk/java/tools/ibator/core/htmldoc/generatedobjects/sqlmap.html
Tue Dec 16 08:35:50 2008
@@ -20,7 +20,8 @@
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.</p>
+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
@@ -45,7 +46,11 @@
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.</p>
+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"><table></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>
@@ -62,15 +67,19 @@
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.</p>
+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"><table></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 conforms to the "by
example" methods. The
+<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 either the select by example, or delete
by example statements
+<p>This element will be generated if any of the "by example" statements
are enabled.</p>
<h2>Select By Primary Key</h2>
@@ -107,6 +116,20 @@
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><ignoreColumn></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><generatedKey></code> configuration element is specified, then
Ibator will generate
+an appropriate <code><selectKey></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>
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=727079&r1=727078&r2=727079&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/htmldoc/migratingFromAbator.html
(original)
+++ ibatis/trunk/java/tools/ibator/core/htmldoc/migratingFromAbator.html Tue
Dec 16 08:35:50 2008
@@ -47,7 +47,7 @@
<li>The <code>generatorSet</code> attribute is removed from the
<code><ibatorContext></code> element and replaced with the
<code>targetRuntime</code> attribute. Valid values for this
- attribute are <code>IbatisJava2</code> or <code>Ibatis2Java5</code>.
+ 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>
Modified: ibatis/trunk/java/tools/ibator/core/htmldoc/reference/building.html
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/reference/building.html?rev=727079&r1=727078&r2=727079&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/htmldoc/reference/building.html
(original)
+++ ibatis/trunk/java/tools/ibator/core/htmldoc/reference/building.html Tue Dec
16 08:35:50 2008
@@ -20,8 +20,9 @@
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>If you would like to build Ibator from the very latest version of the
source code
+<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
Modified: ibatis/trunk/java/tools/ibator/core/htmldoc/running.html
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/running.html?rev=727079&r1=727078&r2=727079&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/htmldoc/running.html (original)
+++ ibatis/trunk/java/tools/ibator/core/htmldoc/running.html Tue Dec 16
08:35:50 2008
@@ -195,7 +195,7 @@
show exception handling, but that should be obvious from the compiler
errors :)</p>
<pre>
- List warnings = new ArrayList(); // Ibator will add Strings to this list
+ List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
File configFile = new File("ibatorConfig.xml");
IbatorConfigurationParser cp = new IbatorConfigurationParser(warnings);
@@ -225,7 +225,7 @@
not show exception handling, but that should be obvious from the compiler
errors :)</p>
<pre>
- List warnings = new ArrayList(); // Ibator will add Strings to this list
+ List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
IbatorConfiguration config = new IbatorConfiguration();
Modified: ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html?rev=727079&r1=727078&r2=727079&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html (original)
+++ ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html Tue Dec 16
08:35:50 2008
@@ -16,6 +16,19 @@
</div>
<h1>What's New in Ibator</h1>
+<h2>Version 1.2.1</h2>
+<h3>Bugs Fixed</h3>
+<ul>
+ <li>Fixed the IbatorObjectFactory so it will find internal classes from the
context classloader.</li>
+</ul>
+
+<h3>Enhancements</h3>
+<ul>
+ <li>Modified plugin methods for model fields, getters, and setters so that
+ the plugin will know which type of class (Primary Key, Base Record, or
+ Record with BLOBs) is being generated.</li>
+</ul>
+
<h2>Version 1.2.0</h2>
<h3>Announcements</h3>
<ul>
@@ -33,7 +46,7 @@
<li>Fixed IBATIS-542 - upgrade the build to Ant version 1.7.1</li>
</ul>
-<h3>Enhacements</h3>
+<h3>Enhancements</h3>
<ul>
<li>Ibator now includes a plugin mechanism. This mechanism can be used to
add to or modify the code generated by Ibator. If you have previously
Modified:
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IbatorPlugin.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IbatorPlugin.java?rev=727079&r1=727078&r2=727079&view=diff
==============================================================================
---
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IbatorPlugin.java
(original)
+++
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IbatorPlugin.java
Tue Dec 16 08:35:50 2008
@@ -66,6 +66,12 @@
*
*/
public interface IbatorPlugin {
+ public enum ModelClassType {
+ PRIMARY_KEY,
+ BASE_RECORD,
+ RECORD_WITH_BLOBS
+ }
+
/**
* Set the context under which this plugin is running
*
@@ -660,12 +666,14 @@
* the database
* @param introspectedTable ibator's class containing information
* about the table as introspected from the database
+ * @param modelClassType the type of class that the field is generated
+ * for
* @return true if the field should be generated, false
* if the generated field should be ignored. In the case
* of multiple plugins, the first plugin returning false
* will disable the calling of further plugins.
*/
- boolean modelFieldGenerated(Field field, TopLevelClass topLevelClass,
IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable);
+ boolean modelFieldGenerated(Field field, TopLevelClass topLevelClass,
IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable,
ModelClassType modelClassType);
/**
* This method is called after the getter, or accessor, method
@@ -681,12 +689,14 @@
* the database
* @param introspectedTable ibator's class containing information
* about the table as introspected from the database
+ * @param modelClassType the type of class that the field is generated
+ * for
* @return true if the method should be generated, false
* if the generated method should be ignored. In the case
* of multiple plugins, the first plugin returning false
* will disable the calling of further plugins.
*/
- boolean modelGetterMethodGenerated(Method method, TopLevelClass
topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable
introspectedTable);
+ boolean modelGetterMethodGenerated(Method method, TopLevelClass
topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable
introspectedTable, ModelClassType modelClassType);
/**
* This method is called after the setter, or mutator, method
@@ -702,12 +712,14 @@
* the database
* @param introspectedTable ibator's class containing information
* about the table as introspected from the database
+ * @param modelClassType the type of class that the field is generated
+ * for
* @return true if the method should be generated, false
* if the generated method should be ignored. In the case
* of multiple plugins, the first plugin returning false
* will disable the calling of further plugins.
*/
- boolean modelSetterMethodGenerated(Method method, TopLevelClass
topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable
introspectedTable);
+ boolean modelSetterMethodGenerated(Method method, TopLevelClass
topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable
introspectedTable, ModelClassType modelClassType);
/**
* This method is called after the primary key class is generated by
Modified:
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IbatorPluginAdapter.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IbatorPluginAdapter.java?rev=727079&r1=727078&r2=727079&view=diff
==============================================================================
---
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IbatorPluginAdapter.java
(original)
+++
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/IbatorPluginAdapter.java
Tue Dec 16 08:35:50 2008
@@ -197,11 +197,13 @@
return true;
}
- public boolean modelFieldGenerated(Field field, TopLevelClass
topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable
introspectedTable) {
+ public boolean modelFieldGenerated(Field field, TopLevelClass
topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable
introspectedTable,
+ IbatorPlugin.ModelClassType modelClassType) {
return true;
}
- public boolean modelGetterMethodGenerated(Method method, TopLevelClass
topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable
introspectedTable) {
+ public boolean modelGetterMethodGenerated(Method method, TopLevelClass
topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable
introspectedTable,
+ IbatorPlugin.ModelClassType modelClassType) {
return true;
}
@@ -213,7 +215,8 @@
return true;
}
- public boolean modelSetterMethodGenerated(Method method, TopLevelClass
topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable
introspectedTable) {
+ public boolean modelSetterMethodGenerated(Method method, TopLevelClass
topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable
introspectedTable,
+ IbatorPlugin.ModelClassType modelClassType) {
return true;
}
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=727079&r1=727078&r2=727079&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
Tue Dec 16 08:35:50 2008
@@ -363,7 +363,7 @@
|| blobColumns.size() > 0;
}
- protected String getDAOInterfacePackage() {
+ public String getDAOInterfacePackage() {
DAOGeneratorConfiguration config =
ibatorContext.getDaoGeneratorConfiguration();
StringBuilder sb = new StringBuilder();
@@ -375,7 +375,7 @@
return sb.toString();
}
- protected String getDAOImplementationPackage() {
+ public String getDAOImplementationPackage() {
DAOGeneratorConfiguration config =
ibatorContext.getDaoGeneratorConfiguration();
StringBuilder sb = new StringBuilder();
@@ -391,7 +391,7 @@
return sb.toString();
}
- protected String getJavaModelPackage() {
+ public String getJavaModelPackage() {
JavaModelGeneratorConfiguration config =
ibatorContext.getJavaModelGeneratorConfiguration();
StringBuilder sb = new StringBuilder();
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=727079&r1=727078&r2=727079&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
Tue Dec 16 08:35:50 2008
@@ -83,20 +83,20 @@
Field field = getJavaBeansField(introspectedColumn);
if (plugins.modelFieldGenerated(field, topLevelClass,
introspectedColumn,
- introspectedTable)) {
+ introspectedTable,
IbatorPlugin.ModelClassType.BASE_RECORD)) {
topLevelClass.addField(field);
topLevelClass.addImportedType(field.getType());
}
Method method = getJavaBeansGetter(introspectedColumn);
if (plugins.modelGetterMethodGenerated(method, topLevelClass,
- introspectedColumn, introspectedTable)) {
+ introspectedColumn, introspectedTable,
IbatorPlugin.ModelClassType.BASE_RECORD)) {
topLevelClass.addMethod(method);
}
method = getJavaBeansSetter(introspectedColumn);
if (plugins.modelSetterMethodGenerated(method, topLevelClass,
- introspectedColumn, introspectedTable)) {
+ introspectedColumn, introspectedTable,
IbatorPlugin.ModelClassType.BASE_RECORD)) {
topLevelClass.addMethod(method);
}
}
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=727079&r1=727078&r2=727079&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
Tue Dec 16 08:35:50 2008
@@ -70,18 +70,21 @@
}
Field field = getJavaBeansField(introspectedColumn);
- if (plugins.modelFieldGenerated(field, topLevelClass,
introspectedColumn, introspectedTable)) {
+ if (plugins.modelFieldGenerated(field, topLevelClass,
introspectedColumn,
+ introspectedTable,
IbatorPlugin.ModelClassType.PRIMARY_KEY)) {
topLevelClass.addField(field);
topLevelClass.addImportedType(field.getType());
}
Method method = getJavaBeansGetter(introspectedColumn);
- if (plugins.modelGetterMethodGenerated(method, topLevelClass,
introspectedColumn, introspectedTable)) {
+ if (plugins.modelGetterMethodGenerated(method, topLevelClass,
introspectedColumn,
+ introspectedTable,
IbatorPlugin.ModelClassType.PRIMARY_KEY)) {
topLevelClass.addMethod(method);
}
method = getJavaBeansSetter(introspectedColumn);
- if (plugins.modelSetterMethodGenerated(method, topLevelClass,
introspectedColumn, introspectedTable)) {
+ if (plugins.modelSetterMethodGenerated(method, topLevelClass,
introspectedColumn,
+ introspectedTable,
IbatorPlugin.ModelClassType.PRIMARY_KEY)) {
topLevelClass.addMethod(method);
}
}
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=727079&r1=727078&r2=727079&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
Tue Dec 16 08:35:50 2008
@@ -71,18 +71,21 @@
}
Field field = getJavaBeansField(introspectedColumn);
- if (plugins.modelFieldGenerated(field, topLevelClass,
introspectedColumn, introspectedTable)) {
+ if (plugins.modelFieldGenerated(field, topLevelClass,
introspectedColumn,
+ introspectedTable,
IbatorPlugin.ModelClassType.RECORD_WITH_BLOBS)) {
topLevelClass.addField(field);
topLevelClass.addImportedType(field.getType());
}
Method method = getJavaBeansGetter(introspectedColumn);
- if (plugins.modelGetterMethodGenerated(method, topLevelClass,
introspectedColumn, introspectedTable)) {
+ if (plugins.modelGetterMethodGenerated(method, topLevelClass,
introspectedColumn,
+ introspectedTable,
IbatorPlugin.ModelClassType.RECORD_WITH_BLOBS)) {
topLevelClass.addMethod(method);
}
method = getJavaBeansSetter(introspectedColumn);
- if (plugins.modelSetterMethodGenerated(method, topLevelClass,
introspectedColumn, introspectedTable)) {
+ if (plugins.modelSetterMethodGenerated(method, topLevelClass,
introspectedColumn,
+ introspectedTable,
IbatorPlugin.ModelClassType.RECORD_WITH_BLOBS)) {
topLevelClass.addMethod(method);
}
}
Modified:
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/IbatorObjectFactory.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/IbatorObjectFactory.java?rev=727079&r1=727078&r2=727079&view=diff
==============================================================================
---
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/IbatorObjectFactory.java
(original)
+++
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/IbatorObjectFactory.java
Tue Dec 16 08:35:50 2008
@@ -106,15 +106,27 @@
}
public static Object createInternalObject(String type) {
+ Class<?> clazz = null;
+
+ try {
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ clazz = cl.loadClass(type);
+ } catch (Exception e) {
+ // ignore - failsafe below
+ }
+
Object answer;
try {
- Class<?> clazz = Class.forName(type);
-
+ if (clazz == null) {
+ clazz = Class.forName(type);
+ }
+
answer = clazz.newInstance();
} catch (Exception e) {
throw new RuntimeException(
Messages.getString("RuntimeError.6", type), e); //$NON-NLS-1$
+
}
return answer;
Modified:
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/IbatorPluginAggregator.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/IbatorPluginAggregator.java?rev=727079&r1=727078&r2=727079&view=diff
==============================================================================
---
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/IbatorPluginAggregator.java
(original)
+++
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/IbatorPluginAggregator.java
Tue Dec 16 08:35:50 2008
@@ -861,11 +861,12 @@
return rc;
}
- public boolean modelFieldGenerated(Field field, TopLevelClass
topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable
introspectedTable) {
+ public boolean modelFieldGenerated(Field field, TopLevelClass
topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable
introspectedTable,
+ IbatorPlugin.ModelClassType modelClassType) {
boolean rc = true;
for (IbatorPlugin plugin : plugins) {
- if (!plugin.modelFieldGenerated(field, topLevelClass,
introspectedColumn, introspectedTable)) {
+ if (!plugin.modelFieldGenerated(field, topLevelClass,
introspectedColumn, introspectedTable, modelClassType)) {
rc = false;
break;
}
@@ -874,11 +875,12 @@
return rc;
}
- public boolean modelGetterMethodGenerated(Method method, TopLevelClass
topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable
introspectedTable) {
+ public boolean modelGetterMethodGenerated(Method method, TopLevelClass
topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable
introspectedTable,
+ IbatorPlugin.ModelClassType modelClassType) {
boolean rc = true;
for (IbatorPlugin plugin : plugins) {
- if (!plugin.modelGetterMethodGenerated(method, topLevelClass,
introspectedColumn, introspectedTable)) {
+ if (!plugin.modelGetterMethodGenerated(method, topLevelClass,
introspectedColumn, introspectedTable, modelClassType)) {
rc = false;
break;
}
@@ -887,11 +889,12 @@
return rc;
}
- public boolean modelSetterMethodGenerated(Method method, TopLevelClass
topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable
introspectedTable) {
+ public boolean modelSetterMethodGenerated(Method method, TopLevelClass
topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable
introspectedTable,
+ IbatorPlugin.ModelClassType modelClassType) {
boolean rc = true;
for (IbatorPlugin plugin : plugins) {
- if (!plugin.modelSetterMethodGenerated(method, topLevelClass,
introspectedColumn, introspectedTable)) {
+ if (!plugin.modelSetterMethodGenerated(method, topLevelClass,
introspectedColumn, introspectedTable, modelClassType)) {
rc = false;
break;
}
Modified: ibatis/trunk/java/tools/ibator/core/test/README.txt
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/test/README.txt?rev=727079&r1=727078&r2=727079&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/test/README.txt (original)
+++ ibatis/trunk/java/tools/ibator/core/test/README.txt Tue Dec 16 08:35:50 2008
@@ -1,2 +1,3 @@
-The files in this source tree are used to test iBATOR itself - not
-the generated code from iBATOR.
+The files in this source tree are used to test Ibator itself - not
+the generated code from Ibator. Most of Ibator is tested by ensuring
+that code generated by Ibator compiles and executes properly.