Author: jgbutler Date: Wed Mar 10 22:08:34 2010 New Revision: 921590 URL: http://svn.apache.org/viewvc?rev=921590&view=rev Log: [ibator] further improvements to the example class for extensibility
Modified: ibatis/java/ibator/trunk/core/ibator-core/doc/html/configreference/properties.html ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/api/dom/java/FullyQualifiedJavaType.java ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/api/dom/java/InnerClass.java ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/generator/ibatis2/model/ExampleGenerator.java ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/generator/ibatis3/model/ExampleGenerator.java ibatis/java/ibator/trunk/core/ibator-core/src/test/java/org/apache/ibatis/ibator/IbatisGenerationTest.java Modified: ibatis/java/ibator/trunk/core/ibator-core/doc/html/configreference/properties.html URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/doc/html/configreference/properties.html?rev=921590&r1=921589&r2=921590&view=diff ============================================================================== --- ibatis/java/ibator/trunk/core/ibator-core/doc/html/configreference/properties.html (original) +++ ibatis/java/ibator/trunk/core/ibator-core/doc/html/configreference/properties.html Wed Mar 10 22:08:34 2010 @@ -46,7 +46,7 @@ element.</p> <td valign="top">url</td> <td>A URL value to use for the property file. This can be used to specify a property file in a specific place on the file system when used in a form like - <code>file://C:/myfolder/ibatorConfig.properties</code>.</td> + <code>file:///C:/myfolder/ibatorConfig.properties</code>.</td> </tr> </table> Modified: ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/api/dom/java/FullyQualifiedJavaType.java URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/api/dom/java/FullyQualifiedJavaType.java?rev=921590&r1=921589&r2=921590&view=diff ============================================================================== --- ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/api/dom/java/FullyQualifiedJavaType.java (original) +++ ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/api/dom/java/FullyQualifiedJavaType.java Wed Mar 10 22:08:34 2010 @@ -32,6 +32,7 @@ public class FullyQualifiedJavaType impl private static FullyQualifiedJavaType objectInstance = null; private static FullyQualifiedJavaType dateInstance = null; private static FullyQualifiedJavaType criteriaInstance = null; + private static FullyQualifiedJavaType generatedCriteriaInstance = null; /** * The short name without any generic arguments @@ -307,6 +308,14 @@ public class FullyQualifiedJavaType impl return criteriaInstance; } + public static final FullyQualifiedJavaType getGeneratedCriteriaInstance() { + if (generatedCriteriaInstance == null) { + generatedCriteriaInstance = new FullyQualifiedJavaType("GeneratedCriteria"); //$NON-NLS-1$ + } + + return generatedCriteriaInstance; + } + /* (non-Javadoc) * @see java.lang.Comparable#compareTo(java.lang.Object) */ Modified: ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/api/dom/java/InnerClass.java URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/api/dom/java/InnerClass.java?rev=921590&r1=921589&r2=921590&view=diff ============================================================================== --- ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/api/dom/java/InnerClass.java (original) +++ ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/api/dom/java/InnerClass.java Wed Mar 10 22:08:34 2010 @@ -44,6 +44,8 @@ public class InnerClass extends JavaElem private List<Method> methods; + private boolean isAbstract; + /** * */ @@ -118,6 +120,10 @@ public class InnerClass extends JavaElem OutputUtilities.javaIndent(sb, indentLevel); sb.append(getVisibility().getValue()); + if (isAbstract()) { + sb.append("abstract "); //$NON-NLS-1$ + } + if (isStatic()) { sb.append("static "); //$NON-NLS-1$ } @@ -239,4 +245,12 @@ public class InnerClass extends JavaElem public FullyQualifiedJavaType getType() { return type; } + + public boolean isAbstract() { + return isAbstract; + } + + public void setAbstract(boolean isAbtract) { + this.isAbstract = isAbtract; + } } Modified: ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/generator/ibatis2/model/ExampleGenerator.java URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/generator/ibatis2/model/ExampleGenerator.java?rev=921590&r1=921589&r2=921590&view=diff ============================================================================== --- ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/generator/ibatis2/model/ExampleGenerator.java (original) +++ ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/generator/ibatis2/model/ExampleGenerator.java Wed Mar 10 22:08:34 2010 @@ -239,8 +239,10 @@ public class ExampleGenerator extends Ab topLevelClass.addMethod(method); // now generate the inner class that holds the AND conditions - topLevelClass.addInnerClass(getCriteriaInnerClass(topLevelClass)); + topLevelClass.addInnerClass(getGeneratedCriteriaInnerClass(topLevelClass)); + topLevelClass.addInnerClass(getCriteriaInnerClass(topLevelClass)); + List<CompilationUnit> answer = new ArrayList<CompilationUnit>(); if (ibatorContext.getPlugins().modelExampleClassGenerated(topLevelClass, introspectedTable)) { answer.add(topLevelClass); @@ -249,23 +251,52 @@ public class ExampleGenerator extends Ab } private InnerClass getCriteriaInnerClass(TopLevelClass topLevelClass) { - Field field; Method method; InnerClass answer = new InnerClass(FullyQualifiedJavaType .getCriteriaInstance()); + answer.setVisibility(JavaVisibility.PUBLIC); + answer.setStatic(true); + answer.setSuperClass(FullyQualifiedJavaType.getGeneratedCriteriaInstance()); + + answer.addJavaDocLine("/**"); //$NON-NLS-1$ + answer.addJavaDocLine(" * This class was generated by Apache iBATIS Ibator."); //$NON-NLS-1$ + answer.addJavaDocLine(" * This class exists to make extending the example classes easier."); //$NON-NLS-1$ + answer.addJavaDocLine(" * You may add any custom where clause method to this class, and"); //$NON-NLS-1$ + answer.addJavaDocLine(" * the method will survive a Java merge (Ibator will never delete"); //$NON-NLS-1$ + answer.addJavaDocLine(" * this class)."); //$NON-NLS-1$ + answer.addJavaDocLine(" */"); //$NON-NLS-1$ + + method = new Method(); + method.setVisibility(JavaVisibility.PROTECTED); + method.setName("Criteria"); //$NON-NLS-1$ + method.setConstructor(true); + method.addBodyLine("super();"); //$NON-NLS-1$ + answer.addMethod(method); + + return answer; + } + + private InnerClass getGeneratedCriteriaInnerClass(TopLevelClass topLevelClass) { + Field field; + Method method; + + InnerClass answer = new InnerClass(FullyQualifiedJavaType + .getGeneratedCriteriaInstance()); + if (ibatorContext.getSuppressTypeWarnings(introspectedTable)) { answer.addSuppressTypeWarningsAnnotation(); } - answer.setVisibility(JavaVisibility.PUBLIC); + answer.setVisibility(JavaVisibility.PROTECTED); answer.setStatic(true); + answer.setAbstract(true); ibatorContext.getCommentGenerator().addClassComment(answer, introspectedTable); method = new Method(); method.setVisibility(JavaVisibility.PROTECTED); - method.setName("Criteria"); //$NON-NLS-1$ + method.setName("GeneratedCriteria"); //$NON-NLS-1$ method.setConstructor(true); method.addBodyLine("super();"); //$NON-NLS-1$ if (generateForJava5) { @@ -999,7 +1030,7 @@ public class ExampleGenerator extends Ab sb.append(introspectedColumn.getJavaProperty()); sb.append("\");"); //$NON-NLS-1$ method.addBodyLine(sb.toString()); - method.addBodyLine("return this;"); //$NON-NLS-1$ + method.addBodyLine("return (Criteria) this;"); //$NON-NLS-1$ return method; } @@ -1070,7 +1101,7 @@ public class ExampleGenerator extends Ab sb.append(introspectedColumn.getJavaProperty()); sb.append("\");"); //$NON-NLS-1$ method.addBodyLine(sb.toString()); - method.addBodyLine("return this;"); //$NON-NLS-1$ + method.addBodyLine("return (Criteria) this;"); //$NON-NLS-1$ return method; } @@ -1135,7 +1166,7 @@ public class ExampleGenerator extends Ab sb.append(introspectedColumn.getJavaProperty()); sb.append("\");"); //$NON-NLS-1$ method.addBodyLine(sb.toString()); - method.addBodyLine("return this;"); //$NON-NLS-1$ + method.addBodyLine("return (Criteria) this;"); //$NON-NLS-1$ return method; } @@ -1158,7 +1189,7 @@ public class ExampleGenerator extends Ab sb.append(operator); sb.append("\");"); //$NON-NLS-1$ method.addBodyLine(sb.toString()); - method.addBodyLine("return this;"); //$NON-NLS-1$ + method.addBodyLine("return (Criteria) this;"); //$NON-NLS-1$ return method; } Modified: ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/generator/ibatis3/model/ExampleGenerator.java URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/generator/ibatis3/model/ExampleGenerator.java?rev=921590&r1=921589&r2=921590&view=diff ============================================================================== --- ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/generator/ibatis3/model/ExampleGenerator.java (original) +++ ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/generator/ibatis3/model/ExampleGenerator.java Wed Mar 10 22:08:34 2010 @@ -188,8 +188,10 @@ public class ExampleGenerator extends Ab topLevelClass.addMethod(method); // now generate the inner class that holds the AND conditions - topLevelClass.addInnerClass(getCriteriaInnerClass(topLevelClass)); + topLevelClass.addInnerClass(getGeneratedCriteriaInnerClass(topLevelClass)); + topLevelClass.addInnerClass(getCriteriaInnerClass(topLevelClass)); + topLevelClass.addInnerClass(getCriterionInnerClass(topLevelClass)); List<CompilationUnit> answer = new ArrayList<CompilationUnit>(); @@ -300,9 +302,8 @@ public class ExampleGenerator extends Ab return answer; } - + private InnerClass getCriteriaInnerClass(TopLevelClass topLevelClass) { - Field field; Method method; InnerClass answer = new InnerClass(FullyQualifiedJavaType @@ -310,12 +311,42 @@ public class ExampleGenerator extends Ab answer.setVisibility(JavaVisibility.PUBLIC); answer.setStatic(true); + answer.setSuperClass(FullyQualifiedJavaType.getGeneratedCriteriaInstance()); + + answer.addJavaDocLine("/**"); //$NON-NLS-1$ + answer.addJavaDocLine(" * This class was generated by Apache iBATIS Ibator."); //$NON-NLS-1$ + answer.addJavaDocLine(" * This class exists to make extending the example classes easier."); //$NON-NLS-1$ + answer.addJavaDocLine(" * You may add any custom where clause method to this class, and"); //$NON-NLS-1$ + answer.addJavaDocLine(" * the method will survive a Java merge (Ibator will never delete"); //$NON-NLS-1$ + answer.addJavaDocLine(" * this class)."); //$NON-NLS-1$ + answer.addJavaDocLine(" */"); //$NON-NLS-1$ + + method = new Method(); + method.setVisibility(JavaVisibility.PROTECTED); + method.setName("Criteria"); //$NON-NLS-1$ + method.setConstructor(true); + method.addBodyLine("super();"); //$NON-NLS-1$ + answer.addMethod(method); + + return answer; + } + + private InnerClass getGeneratedCriteriaInnerClass(TopLevelClass topLevelClass) { + Field field; + Method method; + + InnerClass answer = new InnerClass(FullyQualifiedJavaType + .getGeneratedCriteriaInstance()); + + answer.setVisibility(JavaVisibility.PROTECTED); + answer.setStatic(true); + answer.setAbstract(true); ibatorContext.getCommentGenerator().addClassComment(answer, introspectedTable); method = new Method(); method.setVisibility(JavaVisibility.PROTECTED); - method.setName("Criteria"); //$NON-NLS-1$ + method.setName("GeneratedCriteria"); //$NON-NLS-1$ method.setConstructor(true); method.addBodyLine("super();"); //$NON-NLS-1$ method.addBodyLine("criteria = new ArrayList<Criterion>();"); //$NON-NLS-1$ @@ -669,7 +700,7 @@ public class ExampleGenerator extends Ab sb.append(introspectedColumn.getJavaProperty()); sb.append("\");"); //$NON-NLS-1$ method.addBodyLine(sb.toString()); - method.addBodyLine("return this;"); //$NON-NLS-1$ + method.addBodyLine("return (Criteria) this;"); //$NON-NLS-1$ return method; } @@ -740,7 +771,7 @@ public class ExampleGenerator extends Ab sb.append(introspectedColumn.getJavaProperty()); sb.append("\");"); //$NON-NLS-1$ method.addBodyLine(sb.toString()); - method.addBodyLine("return this;"); //$NON-NLS-1$ + method.addBodyLine("return (Criteria) this;"); //$NON-NLS-1$ return method; } @@ -803,7 +834,7 @@ public class ExampleGenerator extends Ab sb.append(introspectedColumn.getJavaProperty()); sb.append("\");"); //$NON-NLS-1$ method.addBodyLine(sb.toString()); - method.addBodyLine("return this;"); //$NON-NLS-1$ + method.addBodyLine("return (Criteria) this;"); //$NON-NLS-1$ return method; } @@ -826,7 +857,7 @@ public class ExampleGenerator extends Ab sb.append(operator); sb.append("\");"); //$NON-NLS-1$ method.addBodyLine(sb.toString()); - method.addBodyLine("return this;"); //$NON-NLS-1$ + method.addBodyLine("return (Criteria) this;"); //$NON-NLS-1$ return method; } Modified: ibatis/java/ibator/trunk/core/ibator-core/src/test/java/org/apache/ibatis/ibator/IbatisGenerationTest.java URL: http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/src/test/java/org/apache/ibatis/ibator/IbatisGenerationTest.java?rev=921590&r1=921589&r2=921590&view=diff ============================================================================== --- ibatis/java/ibator/trunk/core/ibator-core/src/test/java/org/apache/ibatis/ibator/IbatisGenerationTest.java (original) +++ ibatis/java/ibator/trunk/core/ibator-core/src/test/java/org/apache/ibatis/ibator/IbatisGenerationTest.java Wed Mar 10 22:08:34 2010 @@ -5,8 +5,6 @@ import java.util.ArrayList; import java.util.List; import org.apache.ibatis.ibator.api.Ibator; -import org.apache.ibatis.ibator.api.ProgressCallback; -import org.apache.ibatis.ibator.api.VerboseProgressCallback; import org.apache.ibatis.ibator.config.IbatorConfiguration; import org.apache.ibatis.ibator.config.xml.IbatorConfigurationParser; import org.apache.ibatis.ibator.internal.DefaultShellCallback; @@ -37,9 +35,7 @@ public class IbatisGenerationTest { Ibator ibator = new Ibator(config, shellCallback, warnings); - ProgressCallback progressCallback = new VerboseProgressCallback(); - - ibator.generate(progressCallback, null, null); + ibator.generate(null, null, null); } @Test @@ -65,9 +61,7 @@ public class IbatisGenerationTest { Ibator ibator = new Ibator(config, shellCallback, warnings); - ProgressCallback progressCallback = new VerboseProgressCallback(); - - ibator.generate(progressCallback, null, null); + ibator.generate(null, null, null); } @Test @@ -93,8 +87,6 @@ public class IbatisGenerationTest { Ibator ibator = new Ibator(config, shellCallback, warnings); - ProgressCallback progressCallback = new VerboseProgressCallback(); - - ibator.generate(progressCallback, null, null); + ibator.generate(null, null, null); } }