You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by Jeff Butler <je...@gmail.com> on 2009/03/20 12:57:25 UTC
Re: iBator CommentGenerator: Java Model Class with database column
comment
Interesting idea.
Ibator does not currently capture database field comments from the
metadata, so there's no simple way to do this now.
It's a relatively simple change to add it. I'd need to change the
CommentGenerator interface to expose it - hopefully that won't cause
too much trouble for people. I'll look into it.
Jeff Butler
On Thu, Mar 19, 2009 at 4:30 PM, Benjamin-Klatt <be...@bar54.de> wrote:
>
> Hi all,
>
> I am trying to use the comment I modeled in my database to be automatically
> used in javadoc comment of the data fields within the java data model source
> code.
>
> I started to implement my own commentGenerator, but the method
> addFieldComment(Field field, FullyQualifiedTable, String columnName)
> does not provide the required information. There is no element that provides
> access to the comment of the appropriate column in the database.
>
> Does someone has implement a solution for this or at least does know this
> information could be accessed?
>
> Thanks in advance
> Benjamin
> --
> View this message in context: http://www.nabble.com/iBator-CommentGenerator%3A-Java-Model-Class-with-database-column-comment-tp22608433p22608433.html
> Sent from the iBATIS - User - Java mailing list archive at Nabble.com.
>
>
Re: iBator CommentGenerator: Java Model Class with database column
comment
Posted by Nicholoz Koka Kiknadze <ki...@gmail.com>.
Wow, took less than 24 hours ;).
On Fri, Mar 20, 2009 at 5:23 PM, Jeff Butler <je...@gmail.com> wrote:
> Support for this is now available in SVN.
>
> Jeff Butler
>
> On Fri, Mar 20, 2009 at 6:57 AM, Jeff Butler <je...@gmail.com>
> wrote:
> > Interesting idea.
> >
> > Ibator does not currently capture database field comments from the
> > metadata, so there's no simple way to do this now.
> >
> > It's a relatively simple change to add it. I'd need to change the
> > CommentGenerator interface to expose it - hopefully that won't cause
> > too much trouble for people. I'll look into it.
> >
> > Jeff Butler
> >
> >
> > On Thu, Mar 19, 2009 at 4:30 PM, Benjamin-Klatt <be...@bar54.de>
> wrote:
> >>
> >> Hi all,
> >>
> >> I am trying to use the comment I modeled in my database to be
> automatically
> >> used in javadoc comment of the data fields within the java data model
> source
> >> code.
> >>
> >> I started to implement my own commentGenerator, but the method
> >> addFieldComment(Field field, FullyQualifiedTable, String columnName)
> >> does not provide the required information. There is no element that
> provides
> >> access to the comment of the appropriate column in the database.
> >>
> >> Does someone has implement a solution for this or at least does know
> this
> >> information could be accessed?
> >>
> >> Thanks in advance
> >> Benjamin
> >> --
> >> View this message in context:
> http://www.nabble.com/iBator-CommentGenerator%3A-Java-Model-Class-with-database-column-comment-tp22608433p22608433.html
> >> Sent from the iBATIS - User - Java mailing list archive at Nabble.com.
> >>
> >>
> >
>
AW: iBator CommentGenerator: Java Model Class with database column comment
Posted by Benjamin Klatt <be...@bar54.de>.
Impressive. That's a real fast response.
And it works perfect.
I implemented an accoring comment generator.
Maybe someone who's reading this thread later on will find this useful so up
to now I paste this first version of a comment generator below.
Thank you Jeff!
Benjamin
-------------------------------------------------------------------
<commentGenerator type="de.bar54.ibator.JavaModelCommentGenerator">
<property name="suppressDate" value="true" />
</commentGenerator>
-------------------------------------------------------------------
package de.bar54.ibator;
import org.apache.ibatis.ibator.api.IntrospectedColumn;
import org.apache.ibatis.ibator.api.IntrospectedTable;
import org.apache.ibatis.ibator.api.dom.java.Field;
import org.apache.ibatis.ibator.api.dom.java.Method;
import org.apache.ibatis.ibator.api.dom.java.Parameter;
import org.apache.ibatis.ibator.internal.DefaultCommentGenerator;
import org.apache.ibatis.ibator.internal.util.JavaBeansUtil;
/**
* ibator comment generator to read the column comments from the database
and
* to write them into the java doc of the data model classes
*
* @author Benjamin Klatt
*
*/
public class JavaModelCommentGenerator extends DefaultCommentGenerator {
/**
* Enhanced field comment generation method to use the database
field remark to
* produce the java doc of the appropriate field
*
* if a remark is available this will be used
* if not, the default ibator comment is generated
*
* This method still adds the ibatorgenerated annotation to support
the eclipse merge tool
*
* @param field The java field to
work on
* @param introspectedTable The currently processed
table
* @param introspectedColumn The currently processed column
*
*/
public void addFieldComment(Field field,
IntrospectedTable introspectedTable,
IntrospectedColumn introspectedColumn) {
if(remarkExists(introspectedColumn)){
field.addJavaDocLine("/**"); //$NON-NLS-1$
field.addJavaDocLine(" * "+introspectedColumn.getRemarks());
//$NON-NLS-1$
addIbatorJavadocTag(field);
field.addJavaDocLine(" */"); //$NON-NLS-1$
} else {
StringBuilder sb = new StringBuilder();
field.addJavaDocLine("/**"); //$NON-NLS-1$
field.addJavaDocLine(" * This field was generated by Apache
iBATIS Ibator."); //$NON-NLS-1$
sb.append(" * This field corresponds to the database column ");
//$NON-NLS-1$
sb.append(introspectedTable.getFullyQualifiedTable());
sb.append('.');
sb.append(introspectedColumn.getActualColumnName());
field.addJavaDocLine(sb.toString());
addIbatorJavadocTag(field);
field.addJavaDocLine(" */"); //$NON-NLS-1$
}
}
public void addGetterComment(Method method,
IntrospectedTable introspectedTable,
IntrospectedColumn introspectedColumn) {
if(remarkExists(introspectedColumn)){
method.addJavaDocLine("/**"); //$NON-NLS-1$
method.addJavaDocLine(" * Get
"+introspectedColumn.getRemarks()); //$NON-NLS-1$
method.addJavaDocLine(" *"); //$NON-NLS-1$
StringBuilder sb = new StringBuilder();
sb.append(" * @return the value of "); //$NON-NLS-1$
sb.append(JavaBeansUtil.getCamelCaseString(introspectedColumn.getActualColum
nName(), false));
if(introspectedColumn.isNullable()){
sb.append(" (can be null)");
}
method.addJavaDocLine(sb.toString());
addIbatorJavadocTag(method);
method.addJavaDocLine(" */"); //$NON-NLS-1$
} else {
StringBuilder sb = new StringBuilder();
method.addJavaDocLine("/**"); //$NON-NLS-1$
method.addJavaDocLine(" * This method was generated
by Apache iBATIS Ibator."); //$NON-NLS-1$
sb.append(" * This method returns the value of the
database column "); //$NON-NLS-1$
sb.append(introspectedTable.getFullyQualifiedTable());
sb.append('.');
sb.append(introspectedColumn.getActualColumnName());
method.addJavaDocLine(sb.toString());
method.addJavaDocLine(" *"); //$NON-NLS-1$
sb.setLength(0);
sb.append(" * @return the value of "); //$NON-NLS-1$
sb.append(introspectedTable.getFullyQualifiedTable());
sb.append('.');
sb.append(introspectedColumn.getActualColumnName());
method.addJavaDocLine(sb.toString());
addIbatorJavadocTag(method);
method.addJavaDocLine(" */"); //$NON-NLS-1$
}
}
public void addSetterComment(Method method,
IntrospectedTable introspectedTable,
IntrospectedColumn introspectedColumn) {
if(remarkExists(introspectedColumn)){
method.addJavaDocLine("/**"); //$NON-NLS-1$
method.addJavaDocLine(" * Set
"+introspectedColumn.getRemarks()); //$NON-NLS-1$
method.addJavaDocLine(" *"); //$NON-NLS-1$
StringBuilder sb = new StringBuilder();
Parameter parm = method.getParameters().get(0);
sb.setLength(0);
sb.append(" * @param "); //$NON-NLS-1$
sb.append(parm.getName());
sb.append(" the value for "); //$NON-NLS-1$
sb.append(JavaBeansUtil.getCamelCaseString(introspectedColumn.getActualColum
nName(), false)); //$NON-NLS-1$
method.addJavaDocLine(sb.toString());
addIbatorJavadocTag(method);
method.addJavaDocLine(" */"); //$NON-NLS-1$
} else {
StringBuilder sb = new StringBuilder();
method.addJavaDocLine("/**"); //$NON-NLS-1$
method.addJavaDocLine(" * This method was generated by
Apache iBATIS Ibator."); //$NON-NLS-1$
sb.append(" * This method sets the value of the database
column "); //$NON-NLS-1$
sb.append(introspectedTable.getFullyQualifiedTable());
sb.append('.');
sb.append(introspectedColumn.getActualColumnName());
method.addJavaDocLine(sb.toString());
method.addJavaDocLine(" *"); //$NON-NLS-1$
Parameter parm = method.getParameters().get(0);
sb.setLength(0);
sb.append(" * @param "); //$NON-NLS-1$
sb.append(parm.getName());
sb.append(" the value for "); //$NON-NLS-1$
sb.append(introspectedTable.getFullyQualifiedTable());
sb.append('.');
sb.append(introspectedColumn.getActualColumnName());
method.addJavaDocLine(sb.toString());
addIbatorJavadocTag(method);
method.addJavaDocLine(" */"); //$NON-NLS-1$
}
}
/**
* Utility method to check if a column remark is available
* @param introspectedColumn The column to check for a remark
*
* @return true if a non empty remark is available
*/
private boolean remarkExists(IntrospectedColumn introspectedColumn){
return introspectedColumn.getRemarks() != null &&
!"".equals(introspectedColumn.getRemarks());
}
}
-------------------------------------------------------------------
-----Ursprüngliche Nachricht-----
Von: Jeff Butler [mailto:jeffgbutler@gmail.com]
Gesendet: Freitag, 20. März 2009 23:23
An: user-java@ibatis.apache.org
Betreff: Re: iBator CommentGenerator: Java Model Class with database column
comment
Support for this is now available in SVN.
Jeff Butler
On Fri, Mar 20, 2009 at 6:57 AM, Jeff Butler <je...@gmail.com> wrote:
> Interesting idea.
>
> Ibator does not currently capture database field comments from the
> metadata, so there's no simple way to do this now.
>
> It's a relatively simple change to add it. I'd need to change the
> CommentGenerator interface to expose it - hopefully that won't cause
> too much trouble for people. I'll look into it.
>
> Jeff Butler
>
>
> On Thu, Mar 19, 2009 at 4:30 PM, Benjamin-Klatt <be...@bar54.de> wrote:
>>
>> Hi all,
>>
>> I am trying to use the comment I modeled in my database to be
automatically
>> used in javadoc comment of the data fields within the java data model
source
>> code.
>>
>> I started to implement my own commentGenerator, but the method
>> addFieldComment(Field field, FullyQualifiedTable, String columnName)
>> does not provide the required information. There is no element that
provides
>> access to the comment of the appropriate column in the database.
>>
>> Does someone has implement a solution for this or at least does know this
>> information could be accessed?
>>
>> Thanks in advance
>> Benjamin
>> --
>> View this message in context:
http://www.nabble.com/iBator-CommentGenerator%3A-Java-Model-Class-with-datab
ase-column-comment-tp22608433p22608433.html
>> Sent from the iBATIS - User - Java mailing list archive at Nabble.com.
>>
>>
>
Re: iBator CommentGenerator: Java Model Class with database column
comment
Posted by Jeff Butler <je...@gmail.com>.
Support for this is now available in SVN.
Jeff Butler
On Fri, Mar 20, 2009 at 6:57 AM, Jeff Butler <je...@gmail.com> wrote:
> Interesting idea.
>
> Ibator does not currently capture database field comments from the
> metadata, so there's no simple way to do this now.
>
> It's a relatively simple change to add it. I'd need to change the
> CommentGenerator interface to expose it - hopefully that won't cause
> too much trouble for people. I'll look into it.
>
> Jeff Butler
>
>
> On Thu, Mar 19, 2009 at 4:30 PM, Benjamin-Klatt <be...@bar54.de> wrote:
>>
>> Hi all,
>>
>> I am trying to use the comment I modeled in my database to be automatically
>> used in javadoc comment of the data fields within the java data model source
>> code.
>>
>> I started to implement my own commentGenerator, but the method
>> addFieldComment(Field field, FullyQualifiedTable, String columnName)
>> does not provide the required information. There is no element that provides
>> access to the comment of the appropriate column in the database.
>>
>> Does someone has implement a solution for this or at least does know this
>> information could be accessed?
>>
>> Thanks in advance
>> Benjamin
>> --
>> View this message in context: http://www.nabble.com/iBator-CommentGenerator%3A-Java-Model-Class-with-database-column-comment-tp22608433p22608433.html
>> Sent from the iBATIS - User - Java mailing list archive at Nabble.com.
>>
>>
>