Hi Geeks

I am tired of writing all the abstract getter/setter
methods for the CMP Entity Beans in XDoclet
but on the other hand I like that the Entity Bean
source is the base and therefore you can add
code as you like (opposite to other generation
tools).

To solve that problem I came up with this
solution:
1) The Entity Bean inherite from a class which
    is generated which in turn can extends any
    other class.
2) adding a new tag:
@jboss:data-field
    name="<Name of the Attribute(s)>"
    description="<Description of these attribute(s)>"
    type="R|W|RW"
    class="<full qualified data type>"
    column-name="<name of table attribute(s)>"
    is-pk="true|false"

More descriptions:
NAME can contain a list of attributes which shares the
same settings for description, type, class and is-pk.
DESCRIPTION is optional
TYPE default is RW. The meaning is that R generates
only a getter method, W generates only a setter emthod
and RW both.
CLASS is the full qualified data type class name which
can also be a basic data type (int, float etc.)
COLUMN-NAME contains a list of table attribute names
which must match the NAME list and can be omitted which
means that is contains the same names as in NAME
IS-PK default is false. If set to true the attribute(s) are
part of the PK.

The only thing the coder must be aware is that he has to
extends its Entity Bean from the "to be generated class".

An Entity Bean would look like this:

/**
 * @ejb:bean name="test/Manager"
 *           display-name="Manager working on projects to support clients"
 *           type="CMP"
 *           jndi-name="ejb/test/Manager"
 *
 * @jboss:data-field name="Id"
 *                             class="int"
 *                             is-pk="true"
 *

 * @jboss:data-field name="FirstName,LastName,Address,City"
 *                             class="java.lang.String"
 *
column-name="First_Name,Last_Name,Address,City"
 *

 * @jboss:data-field name="CreationDate"
 *                             type="R"
 *                             class="java.sql.Date"
 *                             column-name="Creation_Date"
 *
 * @ejb:transaction type="Required"
 *
 * @jboss:table-name table-name="Manager"
 *
 * @jboss:create-table create="true"
 *
 * @jboss:remove-table remove="true"
 **/
public abstract class ManagerBean
   implements ManagerBaseBean
{

Now the ManagerBaseBean will contain the setter/getter method for
attribute Id, FirstName,LastName,Address,Citty and the getter method
for CreationDate and the protected member variables.

This makes the creation of CMP Entity Beans pretty easy and also
easy to change because you don't have to go over many lines of code
to figure out what attributes you have.

What do you think ?

Have fun

xxxxxxxxxxxxxxxxx
Andreas Schaefer
Senior Consultant
JBoss Group, LLC
xxxxxxxxxxxxxxxxx



_______________________________________________
Xdoclet-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-devel

Reply via email to