Author: jgbutler Date: Sun Nov 30 05:49:27 2008 New Revision: 721812 URL: http://svn.apache.org/viewvc?rev=721812&view=rev Log: [ibator] Some API changes to aid the Eclipse plugin
Modified: ibatis/trunk/java/tools/ibator/core/build/version.properties ibatis/trunk/java/tools/ibator/core/htmldoc/reference/extending.html ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/GeneratedJavaFile.java ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/Ibator.java ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/ProgressCallback.java ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/ShellCallback.java ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/DefaultShellCallback.java 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=721812&r1=721811&r2=721812&view=diff ============================================================================== --- ibatis/trunk/java/tools/ibator/core/build/version.properties (original) +++ ibatis/trunk/java/tools/ibator/core/build/version.properties Sun Nov 30 05:49:27 2008 @@ -1,4 +1,4 @@ #ibator build version info -#Wed Nov 12 13:18:01 CST 2008 +#Thu Nov 27 07:43:20 CST 2008 version=1.2.0 -buildNum=639 +buildNum=642 Modified: ibatis/trunk/java/tools/ibator/core/htmldoc/reference/extending.html URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/reference/extending.html?rev=721812&r1=721811&r2=721812&view=diff ============================================================================== --- ibatis/trunk/java/tools/ibator/core/htmldoc/reference/extending.html (original) +++ ibatis/trunk/java/tools/ibator/core/htmldoc/reference/extending.html Sun Nov 30 05:49:27 2008 @@ -68,6 +68,26 @@ 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><ibatorContext></code> element. In many cases it will be fer 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><ibatorContext></code> element.</p> Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/GeneratedJavaFile.java URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/GeneratedJavaFile.java?rev=721812&r1=721811&r2=721812&view=diff ============================================================================== --- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/GeneratedJavaFile.java (original) +++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/GeneratedJavaFile.java Sun Nov 30 05:49:27 2008 @@ -66,14 +66,14 @@ * Java merge function, you may return null from this method. * * @return the CompilationUnit associated with this file, or - * null if the file is not mergable. + * null if the file is not mergeable. */ public CompilationUnit getCompilationUnit() { return compilationUnit; } /** - * A Java file is mergable if the getCompilationUnit() method + * A Java file is mergeable if the getCompilationUnit() method * returns a valid compilation unit. * */ Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/Ibator.java URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/Ibator.java?rev=721812&r1=721811&r2=721812&view=diff ============================================================================== --- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/Ibator.java (original) +++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/Ibator.java Sun Nov 30 05:49:27 2008 @@ -219,7 +219,7 @@ String source; try { File directory = shellCallback.getDirectory(gxf - .getTargetProject(), gxf.getTargetPackage(), warnings); + .getTargetProject(), gxf.getTargetPackage()); targetFile = new File(directory, gxf.getFileName()); if (targetFile.exists()) { if (gxf.isMergeable()) { @@ -247,13 +247,17 @@ String source; try { File directory = shellCallback.getDirectory(gjf - .getTargetProject(), gjf.getTargetPackage(), warnings); + .getTargetProject(), gjf.getTargetPackage()); targetFile = new File(directory, gjf.getFileName()); if (targetFile.exists()) { - if (shellCallback.mergeSupported() && gjf.isMergeable()) { - source = shellCallback.mergeJavaFile(gjf, - MergeConstants.OLD_JAVA_ELEMENT_TAGS, - warnings); + if (shellCallback.isMergeSupported()) { + source = shellCallback.mergeJavaFile(gjf.getFormattedContent(), + targetFile.getAbsolutePath(), + MergeConstants.OLD_JAVA_ELEMENT_TAGS); + } else if (shellCallback.isOverwriteEnabled()) { + source = gjf.getFormattedContent(); + warnings.add(Messages.getString("Warning.11", //$NON-NLS-1$ + targetFile.getAbsolutePath())); } else { source = gjf.getFormattedContent(); targetFile = getUniqueFileName(directory, gjf.getFileName()); Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/ProgressCallback.java URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/ProgressCallback.java?rev=721812&r1=721811&r2=721812&view=diff ============================================================================== --- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/ProgressCallback.java (original) +++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/ProgressCallback.java Sun Nov 30 05:49:27 2008 @@ -24,7 +24,7 @@ * <code>setNumberOfSubTasks</code> method first, and then repeatedly call <code>startSubTask</code. * When the long running method is complete, ibator will call <code>finished</code>. * Periodically, ibator will call <code>checkCancel</code> to see if the method should - * be cancelled. + * be canceled. * * @author Jeff Butler */ @@ -54,7 +54,7 @@ /** * ibator will call this method periodically during a long running method. * If the the implementation throws InterruptedException, then the method - * will be cancelled. Any files that have already been saved will remain on + * will be canceled. Any files that have already been saved will remain on * the file system. * * @throws InterruptedException if the main task should finish Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/ShellCallback.java URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/ShellCallback.java?rev=721812&r1=721811&r2=721812&view=diff ============================================================================== --- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/ShellCallback.java (original) +++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/api/ShellCallback.java Sun Nov 30 05:49:27 2008 @@ -16,7 +16,6 @@ package org.apache.ibatis.ibator.api; import java.io.File; -import java.util.List; import org.apache.ibatis.ibator.exception.ShellException; @@ -50,14 +49,13 @@ * * @param targetProject * @param targetPackage - * @param warnings * @return the directory (must exist) * @throws ShellException if the project/package cannot be resolved into * a directory on the file system. In this case, ibator will not save the * file it is currently working on. ibator * will add the exception message to the list of warnings automatically. */ - File getDirectory(String targetProject, String targetPackage, List<String> warnings) throws ShellException; + File getDirectory(String targetProject, String targetPackage) throws ShellException; /** * ibator will call this method if a newly generated Java file would overwrite an existing @@ -75,18 +73,15 @@ * <li>Add all methods and fields from the new file into the existing file</li> * <li>Format the resulting source string</li> * </ol> + * + * Ibator will only call this method if you return <code>true</code> + * from <code>isMergeSupported()</code>. * - * If you do not want to support merging in your shell, simply return - * <code>newFile.getFormattedContent()</code>. - * However, this will overwrite any modifications to the generated files. - * - * @param newFile the newly generated Java file + * @param newFileSource the source of the newly generated Java file + * @param existingFileFullPath the fully qualified path name of the existing Java file * @param javadocTags the JavaDoc tags that denotes which methods and fields in the * old file to delete (if the Java element has any of these tags, the * element is eligible for merge) - * @param warninigs Any warning strings during the merge can be added to this list. - * Adding a warning will not stop ibator from saving the resulting - * source. * @return the merged source, properly formatted. ibator will save the source * exactly as returned from this method. * @throws ShellException if the file cannot be merged for some reason. If this @@ -94,13 +89,12 @@ * the existing file will remain undisturbed. ibator * will add the exception message to the list of warnings automatically. */ - String mergeJavaFile(GeneratedJavaFile newFile, String[] javadocTags, List<String> warninigs) - throws ShellException; + String mergeJavaFile(String newFileSource, String existingFileFullPath, String[] javadocTags) throws ShellException; /** * After all files are saved to the file system, ibator will call this method * once for each unique project that was affected by the generation run. - * This method is usefull if your IDE needs to be informed that file system objects + * This method is useful if your IDE needs to be informed that file system objects * have been created or updated. If you are using ibator outside of an IDE, * your implementation need not do anything in this method. * @@ -110,10 +104,22 @@ /** * Return true if the callback supports Java merging, otherwise false. - * ibator will only call the <code>mergeJavaFile</code> method if this method - * returns true; + * ibator will only call the <code>mergeJavaFile()</code> method if this + * method returns <code>true</code>. * * @return a boolean specifying whether Java merge is supported or not */ - boolean mergeSupported(); + boolean isMergeSupported(); + + /** + * Return true if ibator should overwrite an existing file if one + * exists. Ibator will only call this method if + * <code>isMergeSupported()</code> returns <code>false</code> + * and a file exists that would be overwritten by a generated + * file. If you return <code>true</code>, then ibator will log + * a warning specifying what file was overwritten. + * + * @return true if you want ibator to overwrite existing files + */ + boolean isOverwriteEnabled(); } Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/DefaultShellCallback.java URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/DefaultShellCallback.java?rev=721812&r1=721811&r2=721812&view=diff ============================================================================== --- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/DefaultShellCallback.java (original) +++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/DefaultShellCallback.java Sun Nov 30 05:49:27 2008 @@ -16,10 +16,8 @@ package org.apache.ibatis.ibator.internal; import java.io.File; -import java.util.List; import java.util.StringTokenizer; -import org.apache.ibatis.ibator.api.GeneratedJavaFile; import org.apache.ibatis.ibator.api.ShellCallback; import org.apache.ibatis.ibator.exception.ShellException; import org.apache.ibatis.ibator.internal.util.messages.Messages; @@ -40,10 +38,9 @@ /* * (non-Javadoc) - * @see org.apache.ibatis.ibator.api.ShellCallback#getDirectory(java.lang.String, java.lang.String, java.util.List) + * @see org.apache.ibatis.ibator.api.ShellCallback#getDirectory(java.lang.String, java.lang.String) */ - public File getDirectory(String targetProject, String targetPackage, - List<String> warnings) throws ShellException { + public File getDirectory(String targetProject, String targetPackage) throws ShellException { // targetProject is interpreted as a directory that must exist // // targetPackage is interpreted as a sub directory, but in package @@ -77,24 +74,6 @@ /* * (non-Javadoc) - * @see org.apache.ibatis.ibator.api.ShellCallback#mergeJavaFile(org.apache.ibatis.ibator.api.GeneratedJavaFile, java.lang.String, java.util.List) - */ - public String mergeJavaFile(GeneratedJavaFile newFile, String[] javadocTags, - List<String> warnings) throws ShellException { - if (overwrite) { - File directory = getDirectory(newFile.getTargetProject(), newFile.getTargetPackage(), warnings); - File file = new File(directory, newFile.getFileName()); - warnings.add(Messages.getString("Warning.11", //$NON-NLS-1$ - file.getAbsolutePath())); - - return newFile.getFormattedContent(); - } else { - return null; - } - } - - /* - * (non-Javadoc) * @see org.apache.ibatis.ibator.api.ShellCallback#refreshProject(java.lang.String) */ public void refreshProject(String project) { @@ -102,9 +81,23 @@ } /* (non-Javadoc) - * @see org.apache.ibatis.ibator.api.ShellCallback#mergeSupported() + * @see org.apache.ibatis.ibator.api.ShellCallback#isMergeSupported() */ - public boolean mergeSupported() { + public boolean isMergeSupported() { + return false; + } + + public boolean isOverwriteEnabled() { return overwrite; } + + /* + * (non-Javadoc) + * @see org.apache.ibatis.ibator.api.ShellCallback#mergeJavaFile(java.lang.String, java.lang.String, java.lang.String[]) + */ + public String mergeJavaFile(String newFileSource, + String existingFileFullPath, String[] javadocTags) + throws ShellException { + throw new UnsupportedOperationException(); + } }