You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(6) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(178) |
Feb
(169) |
Mar
(286) |
Apr
(117) |
May
(98) |
Jun
(68) |
Jul
(63) |
Aug
(121) |
Sep
(88) |
Oct
(124) |
Nov
(2) |
Dec
(111) |
2007 |
Jan
(224) |
Feb
(69) |
Mar
(10) |
Apr
(72) |
May
(7) |
Jun
(21) |
Jul
(33) |
Aug
(35) |
Sep
(12) |
Oct
(22) |
Nov
(5) |
Dec
(6) |
2008 |
Jan
(2) |
Feb
(10) |
Mar
(39) |
Apr
(58) |
May
(34) |
Jun
(9) |
Jul
(27) |
Aug
(10) |
Sep
(3) |
Oct
|
Nov
|
Dec
|
From: Vance K. <va...@us...> - 2006-02-22 06:10:43
|
User: vancek Date: 06/02/21 22:10:41 Added: andromda-ejb3/src/main/resources/templates/ejb3 login-config.xml.vsl Log: initial revision Revision Changes Path 1.1 cartridges/andromda-ejb3/src/main/resources/templates/ejb3/login-config.xml.vsl Index: login-config.xml.vsl =================================================================== #foreach ($service in $services) #**##if ($service.securityEnabled && !$generatedFile) #* *##set ($securityRealm = "${service.securityRealm}") #* *##set ($generatedFile = "${securityRealm}-login-config.xml") #**##end #end <?xml version="1.0" encoding="${xmlEncoding}"?> <!DOCTYPE policy PUBLIC "-//JBoss//DTD JBOSS Security Config 3.0//EN" "http://www.jboss.org/j2ee/dtd/security_config.dtd"> <policy> <application-policy name="${securityRealm}"> <authentication> <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required"> <module-option name="debug">true</module-option> <module-option name="unauthenticatedIdentity">guest</module-option> <module-option name="dsJndiName">${entityManagerJTADataSource}</module-option> <module-option name="principalsQuery"> SELECT PASSWORD 'Password' FROM principal WHERE BINARY PRINCIPAL_ID =? </module-option> <module-option name="rolesQuery"> SELECT ROLE 'Roles', ROLE_GROUP 'RoleGroups' FROM role WHERE BINARY PRINCIPAL_ID =? </module-option> <module-option name="hashAlgorithm">MD5</module-option> <module-option name="hashEncoding">BASE64</module-option> </login-module> </authentication> </application-policy> </policy> |
From: Vance K. <va...@us...> - 2006-02-20 08:38:09
|
User: vancek Date: 06/02/20 00:38:00 Added: andromda-ejb3/src/site/xdoc howto7.xml Log: initial revision Revision Changes Path 1.1 cartridges/andromda-ejb3/src/site/xdoc/howto7.xml Index: howto7.xml =================================================================== <?xml version="1.0" encoding="iso-8859-1"?> <document> <properties> <author email="va...@us...">Vance Karimi</author> <title>AndroMDA - EJB3 - HowTo Exceptions</title> </properties> <body> <section name="Exceptions"> <p> The EJB3 cartridge provides an almost identical exception handling process for application as with the other persistence cartridges. </p> <p> Simply model a class and assign it the <![CDATA[<<ApplicationException>>]]> stereotype or the <![CDATA[<<UnexpectedException>>]]> stereotype (you will need to enable the Java cartridge for this to work). </p> <p> By default NO exceptions will be generated for any service, unless an entity has the <![CDATA[<<Manageable>>]]> stereotype. Please refer to <a href="howto16.html">Manageable Entities</a> for more information on manageable service exceptions. </p> <p class="highlight"> EJB3 entities no longer throw exceptions. Following the session facade pattern, all business logic should reside in the session bean, therefore, only the session bean should throw application specific exceptions. </p> <p> The next thing to do is draw a dependency from a <![CDATA[<<Service>>]]> to this exception, this will make all operations throw this exception. You may choose to have a single operation throw a specific exception by drawing the dependency from that operation to the exception. </p> <p> The following example builds on top of our tutorial example and adds the <code>RentalException</code> application exception which is thrown from all operations of the <code>RentalService</code> related classes. Notice how the bean class, bean implementation class, interface classes and delegate class throw this exception from all operations. </p> <p> <img src="images/org/andromda/test/7/a/uml.gif"/> </p> <p> <ul> <li class="gen">Auto-generated source that does not need manual editing</li> <li class="impl">Auto-generated source that should be edited manually</li> <li class="changed">File that is affected by the modifications applied in this section</li> </ul> </p> <p> <ul> <li class="gen"><a href="src/org/andromda/test/howto7/a/CarEmbeddable.java.txt"><code>CarEmbeddable.java</code></a></li> <li class="impl"><a href="src/org/andromda/test/howto7/a/Car.java.txt"><code>Car.java</code></a></li> <li class="gen"><a href="src/org/andromda/test/howto7/a/CarType.java.txt"><code>CarType.java</code></a></li> <li class="gen"><a href="src/org/andromda/test/howto7/a/PersonEmbeddable.java.txt"><code>PersonEmbeddable.java</code></a></li> <li class="impl"><a href="src/org/andromda/test/howto7/a/Person.java.txt"><code>Person.java</code></a></li> <li class="gen"><a href="src/org/andromda/test/ServiceLocator.java.txt"><code>ServiceLocator.java</code></a></li> <li class="gen"><a class="changed" href="src/org/andromda/test/howto7/a/RentalServiceBean.java.txt"><code>RentalServiceBean.java</code></a></li> <li class="gen"><a class="changed" href="src/org/andromda/test/howto7/a/RentalServiceRemote.java.txt"><code>RentalServiceRemote.java</code></a></li> <li class="gen"><a class="changed" href="src/org/andromda/test/howto7/a/RentalServiceDelegate.java.txt"><code>RentalServiceDelegate.java</code></a></li> <li class="impl"><a class="changed" href="src/org/andromda/test/howto7/a/RentalServiceBeanImpl.java.txt"><code>RentalServiceBeanImpl.java</code></a></li> <li class="gen"><a href="src/org/andromda/test/howto7/a/RentalServiceException.java.txt"><code>RentalServiceException.java</code></a></li> <li class="gen"><a class="changed" href="src/org/andromda/test/howto7/a/RentalException.java.txt"><code>RentalException.java</code></a></li> </ul> </p> </section> <section name="Next"> <p> The next section covers the declarative security handling with JBossSX, click <a href="howto8.html">here</a> to go to that section. </p> </section> </body> </document> |
From: Vance K. <va...@us...> - 2006-02-20 08:37:41
|
User: vancek Date: 06/02/20 00:37:40 Modified: andromda-ejb3/src/site/xdoc howto5.xml Log: added info about enumeration type tagged value Revision Changes Path 1.2 +20 -2 cartridges/andromda-ejb3/src/site/xdoc/howto5.xml Index: howto5.xml =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/site/xdoc/howto5.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -w -r1.1 -r1.2 --- howto5.xml 8 Feb 2006 10:20:00 -0000 1.1 +++ howto5.xml 20 Feb 2006 08:37:40 -0000 1.2 @@ -54,11 +54,13 @@ <li class="gen"><a href="src/org/andromda/test/howto5/a/RentalServiceException.java.txt"><code>RentalServiceException.java</code></a></li> </ul> </p> + <a name="Literals"/> <subsection name="Literals"> <p> Note that in this example the enumeration attributes have been specified using regular variables - in Java notation, the <em>initial value</em> has been specified using capitals - (actually you would do this only when you want to have the value different from the attribute name): + in Java notation, the <em>initial value</em> has been specified using capitals. + Using the EJB3 cartridge, enum types ignore the attribute name. Therefore, in the EJB3 cartridge + you CANNOT have a value that differs from the attribute name. This option is not available. <source><![CDATA[ sedan : String = SEDAN liftback : String = LIFTBACK @@ -79,6 +81,22 @@ it is very easy in use too. </p> </subsection> + <a name="Enumeration_Types"/> + <subsection name="Enumeration Types"> + <p> + In the above diagram, the tagged value <code>@andromda.persistence.enumeration.type</code> + specifies the enumeration type for the <code>type</code> attribute of the <code>Car</code> + entity as <code>STRING</code> type. If your type-safe enumeration has attributes of + type String and you wish to use these literal names, then you must specify the + <code>@andromda.persistence.enumeration.type</code> tagged value on the entity attribute. + </p> + <p> + To use the ordinal values relating to the literals of the type-safe enumeration class, + you do not need to do model the <code>@andromda.persistence.enumeration.type</code> + tagged value. By default, if an entity attribute has an enumeration type, the ordinal + values of the enumeration literals are used. + </p> + </subsection> </section> <section name="Next"> <p> |
From: Vance K. <va...@us...> - 2006-02-20 08:36:52
|
User: vancek Date: 06/02/20 00:36:51 Added: andromda-ejb3/src/site/resources/images/org/andromda/test/7/a uml.gif Log: initial revision Revision Changes Path 1.1 cartridges/andromda-ejb3/src/site/resources/images/org/andromda/test/7/a/uml.gif <<Binary file>> |
From: Vance K. <va...@us...> - 2006-02-20 08:36:48
|
User: vancek Date: 06/02/20 00:36:43 cartridges/andromda-ejb3/src/site/resources/images/org/andromda/test/7 - New directory |
From: Vance K. <va...@us...> - 2006-02-20 08:36:44
|
User: vancek Date: 06/02/20 00:36:43 cartridges/andromda-ejb3/src/site/resources/images/org/andromda/test/7/a - New directory |
From: Vance K. <va...@us...> - 2006-02-20 08:36:32
|
User: vancek Date: 06/02/20 00:36:28 Modified: andromda-ejb3/src/site/resources/images/org/andromda/test/5/a uml.gif Log: added enumeration type tag Revision Changes Path 1.2 +88 -78 cartridges/andromda-ejb3/src/site/resources/images/org/andromda/test/5/a/uml.gif <<Binary file>> |
From: Vance K. <va...@us...> - 2006-02-20 05:23:19
|
User: vancek Date: 06/02/19 21:23:17 Modified: andromda-ejb3/src/main/uml EJB3MetafacadeModel.xml.zip Log: added labelName, getterLabelName and setterLabelName attributes to EJB3ManageableEntityAssociationFacade and to EJB3EntityAssociationFacade. added manageable, manageableDisplayAttribute and identifier attributes to EJB3EntityFacade. Revision Changes Path 1.19 +170 -145 cartridges/andromda-ejb3/src/main/uml/EJB3MetafacadeModel.xml.zip <<Binary file>> |
From: Vance K. <va...@us...> - 2006-02-20 05:21:18
|
User: vancek Date: 06/02/19 21:21:16 Modified: andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades EJB3ManageableEntityAssociationEndFacadeLogicImpl.java Log: implemented getLabelName, getGetterLabelName and getSetterLabelName Revision Changes Path 1.2 +37 -1 cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3ManageableEntityAssociationEndFacadeLogicImpl.java Index: EJB3ManageableEntityAssociationEndFacadeLogicImpl.java =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3ManageableEntityAssociationEndFacadeLogicImpl.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -w -r1.1 -r1.2 --- EJB3ManageableEntityAssociationEndFacadeLogicImpl.java 13 Feb 2006 15:55:31 -0000 1.1 +++ EJB3ManageableEntityAssociationEndFacadeLogicImpl.java 20 Feb 2006 05:21:15 -0000 1.2 @@ -1,5 +1,11 @@ package org.andromda.cartridges.ejb3.metafacades; +import java.text.MessageFormat; + +import org.andromda.cartridges.ejb3.EJB3Globals; +import org.andromda.metafacades.uml.UMLMetafacadeUtils; +import org.apache.commons.lang.StringUtils; + /** * MetafacadeLogic implementation for org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityAssociationEndFacade. @@ -14,4 +20,34 @@ { super (metaObject, context); } + + /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityAssociationEndFacadeLogic#handleGetLabelName() + */ + protected String handleGetLabelName() + { + String labelNamePattern = (this.isMany() ? + (String)this.getConfiguredProperty(EJB3Globals.LABEL_COLLECTION_NAME_PATTERN) : + (String)this.getConfiguredProperty(EJB3Globals.LABEL_SINGLE_NAME_PATTERN)); + + return MessageFormat.format( + labelNamePattern, + new Object[] {StringUtils.trimToEmpty(this.getName())}); + } + + /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityAssociationEndFacadeLogic#handleGetGetterLabelName() + */ + protected String handleGetGetterLabelName() + { + return UMLMetafacadeUtils.getGetterPrefix(this.getType()) + StringUtils.capitalize(this.getLabelName()); + } + + /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityAssociationEndFacadeLogic#handleGetSetterLabelName() + */ + protected String handleGetSetterLabelName() + { + return "set" + StringUtils.capitalize(this.getLabelName()); + } } \ No newline at end of file |
From: Vance K. <va...@us...> - 2006-02-20 05:20:26
|
User: vancek Date: 06/02/19 21:20:22 Modified: andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades EJB3EntityFacadeLogicImpl.java Log: implemented isManageable, getManageableDisplayAttribute and getIdentifier Revision Changes Path 1.14 +57 -1 cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3EntityFacadeLogicImpl.java Index: EJB3EntityFacadeLogicImpl.java =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3EntityFacadeLogicImpl.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -w -r1.13 -r1.14 --- EJB3EntityFacadeLogicImpl.java 8 Feb 2006 10:16:20 -0000 1.13 +++ EJB3EntityFacadeLogicImpl.java 20 Feb 2006 05:20:22 -0000 1.14 @@ -15,11 +15,12 @@ import org.andromda.metafacades.uml.AttributeFacade; import org.andromda.metafacades.uml.ClassifierFacade; import org.andromda.metafacades.uml.DependencyFacade; +import org.andromda.metafacades.uml.EntityAttribute; import org.andromda.metafacades.uml.MetafacadeUtils; import org.andromda.metafacades.uml.OperationFacade; -import org.andromda.metafacades.uml.ParameterFacade; import org.andromda.metafacades.uml.TypeMappings; import org.andromda.metafacades.uml.UMLMetafacadeProperties; +import org.andromda.metafacades.uml.UMLProfile; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.Predicate; import org.apache.commons.lang.BooleanUtils; @@ -985,4 +986,59 @@ } return finderExists; } + + /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3EntityFacadeLogic#handleIsManageable() + */ + protected boolean handleIsManageable() + { + return this.hasStereotype(EJB3Profile.STEREOTYPE_MANAGEABLE); + } + + /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3EntityFacadeLogic#handleGetManageableDisplayAttribute() + */ + protected Object handleGetManageableDisplayAttribute() + { + AttributeFacade displayAttribute = null; + + final Object taggedValueObject = this.findTaggedValue(UMLProfile.TAGGEDVALUE_MANAGEABLE_DISPLAY_NAME); + if (taggedValueObject != null) + { + displayAttribute = this.findAttribute(StringUtils.trimToEmpty(taggedValueObject.toString())); + } + + final Collection attributes = this.getAttributes(true); + for (final Iterator attributeIterator = attributes.iterator(); + attributeIterator.hasNext() && displayAttribute == null;) + { + final EntityAttribute attribute = (EntityAttribute)attributeIterator.next(); + if (attribute.isUnique()) + { + displayAttribute = attribute; + } + } + + if (displayAttribute == null) + { + if (!getIdentifiers().isEmpty()) + { + displayAttribute = (EntityAttribute)this.getIdentifiers().iterator().next(); + } + else if (!attributes.isEmpty()) + { + displayAttribute = (EntityAttribute)attributes.iterator().next(); + } + } + + return displayAttribute; + } + + /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3EntityFacadeLogic#handleGetIdentifer() + */ + protected Object handleGetIdentifer() + { + return (EJB3EntityAttributeFacade)this.getIdentifiers().iterator().next(); + } } \ No newline at end of file |
From: Vance K. <va...@us...> - 2006-02-20 05:19:08
|
User: vancek Date: 06/02/19 21:19:02 Modified: andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades EJB3AssociationEndFacadeLogicImpl.java Log: implemented getLabelName, getGetterLabelName and getSetterLabelName Revision Changes Path 1.7 +32 -0 cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3AssociationEndFacadeLogicImpl.java Index: EJB3AssociationEndFacadeLogicImpl.java =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3AssociationEndFacadeLogicImpl.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -w -r1.6 -r1.7 --- EJB3AssociationEndFacadeLogicImpl.java 1 Feb 2006 08:41:04 -0000 1.6 +++ EJB3AssociationEndFacadeLogicImpl.java 20 Feb 2006 05:19:01 -0000 1.7 @@ -1,5 +1,6 @@ package org.andromda.cartridges.ejb3.metafacades; +import java.text.MessageFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Hashtable; @@ -11,6 +12,7 @@ import org.andromda.metafacades.uml.TaggedValueFacade; import org.andromda.metafacades.uml.TypeMappings; import org.andromda.metafacades.uml.UMLMetafacadeProperties; +import org.andromda.metafacades.uml.UMLMetafacadeUtils; import org.andromda.metafacades.uml.UMLProfile; import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.StringUtils; @@ -586,4 +588,34 @@ } return isSet; } + + /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3AssociationEndFacadeLogic#handleGetLabelName() + */ + protected String handleGetLabelName() + { + String labelNamePattern = (this.isMany() ? + (String)this.getConfiguredProperty(EJB3Globals.LABEL_COLLECTION_NAME_PATTERN) : + (String)this.getConfiguredProperty(EJB3Globals.LABEL_SINGLE_NAME_PATTERN)); + + return MessageFormat.format( + labelNamePattern, + new Object[] {StringUtils.trimToEmpty(this.getName())}); + } + + /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3AssociationEndFacadeLogic#handleGetGetterLabelName() + */ + protected String handleGetGetterLabelName() + { + return UMLMetafacadeUtils.getGetterPrefix(this.getType()) + StringUtils.capitalize(this.getLabelName()); + } + + /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3AssociationEndFacadeLogic#handleGetSetterLabelName() + */ + protected String handleGetSetterLabelName() + { + return "set" + StringUtils.capitalize(this.getLabelName()); + } } \ No newline at end of file |
From: Vance K. <va...@us...> - 2006-02-20 05:18:11
|
User: vancek Date: 06/02/19 21:18:09 Modified: andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3 EJB3Globals.java Log: defined LABEL_COLLECTION_NAME_PATTERN and LABEL_SINGLE_NAME_PATTERN statics Revision Changes Path 1.7 +12 -0 cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/EJB3Globals.java Index: EJB3Globals.java =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/EJB3Globals.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -w -r1.6 -r1.7 --- EJB3Globals.java 17 Feb 2006 02:36:29 -0000 1.6 +++ EJB3Globals.java 20 Feb 2006 05:18:09 -0000 1.7 @@ -18,6 +18,18 @@ */ public static final String JNDI_NAME_PREFIX = "jndiNamePrefix"; + /** + * The property which stores the pattern defining the display attribute + * label name when it's of type Collection. + */ + public static final String LABEL_COLLECTION_NAME_PATTERN = "labelCollectionNamePattern"; + + /** + * The property which stores the pattern defining the display attribute + * label name when it's not of type Collection. + */ + public static final String LABEL_SINGLE_NAME_PATTERN = "labelSingleNamePattern"; + // --------------- Constants --------------------- /** |
From: Vance K. <va...@us...> - 2006-02-20 05:17:18
|
User: vancek Date: 06/02/19 21:17:16 Modified: andromda-ejb3/src/main/resources/META-INF/andromda profile.xml Log: removed MANAGEABLE stereotype element declaration Revision Changes Path 1.17 +0 -8 cartridges/andromda-ejb3/src/main/resources/META-INF/andromda/profile.xml Index: profile.xml =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/resources/META-INF/andromda/profile.xml,v retrieving revision 1.16 retrieving revision 1.17 diff -u -w -r1.16 -r1.17 --- profile.xml 13 Feb 2006 15:54:42 -0000 1.16 +++ profile.xml 20 Feb 2006 05:17:16 -0000 1.17 @@ -266,14 +266,6 @@ Entity Finder Method Parameter </appliedOnElement> </element> - <element name="MANAGEABLE"> - <documentation> - Produces a Manageable Session EJB facade for the - POJO EJB entity. - </documentation> - <value>Manageable</value> - <appliedOnElement>class</appliedOnElement> - </element> </elementGroup> <elementGroup name="Tagged Values"> <element name="ATTRIBUTE_PERSISTENCE_OPTIONAL"> |
From: Vance K. <va...@us...> - 2006-02-20 05:16:09
|
User: vancek Date: 06/02/19 21:16:07 Modified: andromda-ejb3/src/main/resources/META-INF/andromda namespace.xml Log: added labelCollectionNamePattern and labelSingleNamePattern properties to name pattern propery group Revision Changes Path 1.15 +15 -0 cartridges/andromda-ejb3/src/main/resources/META-INF/andromda/namespace.xml Index: namespace.xml =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/resources/META-INF/andromda/namespace.xml,v retrieving revision 1.14 retrieving revision 1.15 diff -u -w -r1.14 -r1.15 --- namespace.xml 17 Feb 2006 02:35:51 -0000 1.14 +++ namespace.xml 20 Feb 2006 05:16:06 -0000 1.15 @@ -388,6 +388,21 @@ manageable application exception name. </documentation> </property> + <property name="labelCollectionNamePattern"> + <default>{0}Labels</default> + <documentation> + The pattern to use when defining the display + attribute label name when it's of type Collection. + </documentation> + </property> + <property name="labelSingleNamePattern"> + <default>{0}Label</default> + <documentation> + The pattern to use when defining the display + attribute label name when it's NOT of type + Collection. + </documentation> + </property> </propertyGroup> <propertyGroup name="MDB Properties"> <property name="messageDrivenDestinationType"> |
From: Vance K. <va...@us...> - 2006-02-20 05:15:17
|
User: vancek Date: 06/02/19 21:15:13 Modified: andromda-ejb3/src/main/resources/META-INF/andromda metafacades.xml Log: added labelCollectionNamePattern and labelSingleNamePattern property references to root level Revision Changes Path 1.14 +2 -0 cartridges/andromda-ejb3/src/main/resources/META-INF/andromda/metafacades.xml Index: metafacades.xml =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/resources/META-INF/andromda/metafacades.xml,v retrieving revision 1.13 retrieving revision 1.14 diff -u -w -r1.13 -r1.14 --- metafacades.xml 17 Feb 2006 02:33:50 -0000 1.13 +++ metafacades.xml 20 Feb 2006 05:15:11 -0000 1.14 @@ -7,6 +7,8 @@ <property reference="entityNamePattern"/> <property reference="entityImplementationNamePattern"/> <property reference="entityCompositePrimaryKeyNamePattern"/> + <property reference="labelCollectionNamePattern"/> + <property reference="labelSingleNamePattern"/> <property reference="entityDefaultCascade"/> <property reference="entityInheritanceStrategy"/> <property reference="entityDiscriminatorType"/> |
From: Vance K. <va...@us...> - 2006-02-20 05:14:17
|
User: vancek Date: 06/02/19 21:14:15 Modified: andromda-ejb3/src/main/resources/templates/ejb3/crud ManageableServiceBase.vsl Log: if a display attribute is specified, transform the result collection to specify the display attribute transient value in the pojo. Revision Changes Path 1.3 +28 -1 cartridges/andromda-ejb3/src/main/resources/templates/ejb3/crud/ManageableServiceBase.vsl Index: ManageableServiceBase.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/resources/templates/ejb3/crud/ManageableServiceBase.vsl,v retrieving revision 1.2 retrieving revision 1.3 diff -u -w -r1.2 -r1.3 --- ManageableServiceBase.vsl 17 Feb 2006 02:32:44 -0000 1.2 +++ ManageableServiceBase.vsl 20 Feb 2006 05:14:14 -0000 1.3 @@ -316,7 +316,34 @@ #if ($manageable.maximumListSize > 0) query.setMaxResults($manageable.maximumListSize); #end - return query.getResultList(); + java.util.List<${manageable.fullyQualifiedEntityName}> entities = query.getResultList(); +#foreach ($member in $manageable.manageableAssociationEnds) +#**##if ($member.type.displayAttributeWorkaround.name != $member.type.manageableIdentifierWorkaround.name) + org.apache.commons.collections.CollectionUtils.transform(entities, new org.apache.commons.collections.Transformer() + { + public Object transform(final Object object) + { + ${manageable.fullyQualifiedEntityName} result = (${manageable.fullyQualifiedEntityName})object; +#* *##if ($member.many) + java.util.Collection<${member.type.displayAttributeWorkaround.type.fullyQualifiedName}> $member.labelName = java.util.Collections.synchronizedCollection(new java.util.ArrayList<${member.type.displayAttributeWorkaround.type.fullyQualifiedName}>()); + for (final java.util.Iterator<${member.type.fullyQualifiedEntityName}> iterator = result.${member.getterName}().iterator(); iterator.hasNext();) + { + ${member.type.fullyQualifiedEntityName} entity = iterator.next(); + synchronized (${member.labelName}) + { + ${member.labelName}.add(entity.${member.type.displayAttributeWorkaround.getterName}()); + } + } + result.${member.setterLabelName}(${member.labelName}); +#* *##else + result.${member.setterName}#if ($member.many)Labels#else#**#Label#end(result.${member.getterName}().${member.type.displayAttributeWorkaround.getterName}()); +#* *##end + return result; + } + }); +#**##end +#end + return entities; } catch (Exception ex) { |
From: Vance K. <va...@us...> - 2006-02-20 05:12:18
|
User: vancek Date: 06/02/19 21:12:16 Modified: andromda-ejb3/src/main/resources/templates/ejb3 EntityEmbeddable.vsl Log: delcare manageable entity display attribute if specified also define the getter/setter methods on this attribute Revision Changes Path 1.16 +62 -0 cartridges/andromda-ejb3/src/main/resources/templates/ejb3/EntityEmbeddable.vsl Index: EntityEmbeddable.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/resources/templates/ejb3/EntityEmbeddable.vsl,v retrieving revision 1.15 retrieving revision 1.16 diff -u -w -r1.15 -r1.16 --- EntityEmbeddable.vsl 9 Feb 2006 07:05:10 -0000 1.15 +++ EntityEmbeddable.vsl 20 Feb 2006 05:12:16 -0000 1.16 @@ -120,7 +120,30 @@ #* *##end #**##end #end +#if (!$entityRelations.empty) + // ---- Manageable Display Attributes (Transient) ----- + +## +## For manageable entities where the display attribute differs from identifier +## we need to specify a labels attribute which is transient (specified by annotation) +## on getter. A display attribute differs from the identifier if modelled by +## the Unique stereotype. +## +#**##foreach ($associationEnd in $entityRelations) +#* *##set ($target = $associationEnd.otherEnd) +#* *##if ($target.navigable) +#* *##if ($target.type.manageable && $target.type.manageableDisplayAttribute.name != $target.type.identifer.name) +#* *##if ($target.many) + private java.util.Collection<${target.type.manageableDisplayAttribute.type.fullyQualifiedName}> ${target.labelName}; // Manageable display attribute +#* *##else + private $target.type.manageableDisplayAttribute.type.fullyQualifiedName ${target.labelName}; // Manageable display attribute +#* *##end +#* *##end +#* *##end +#**##end + +#end // --------------- Constructors ----------------- /** @@ -535,6 +558,45 @@ #* *##end #**##end #end +#foreach ($associationEnd in $entity.allEntityRelations) +#**##set ($target = $associationEnd.otherEnd) +#**##if($target.navigable) +## +## For manageable entities where the display attribute differs from identifier +## we need to specify a labels attribute which is transient (specified by annotation) +## on getter. A display attribute differs from the identifier if modelled by +## the Unique stereotype. +## +#* *##if ($target.type.manageable && $target.type.manageableDisplayAttribute.name != $target.type.identifer.name) +#* *##if ($velocityCount == 1) + // -------- Manageable Attribute Display ----------- + +#* *##end + /** + * Get the ${target.labelName} + * + * @return #if ($target.many)java.util.Collection<${target.type.manageableDisplayAttribute.type.fullyQualifiedName}>#else${target.type.manageableDisplayAttribute.type.fullyQualifiedName}#end + + */ + @javax.persistence.Transient + public #if ($target.many)java.util.Collection<${target.type.manageableDisplayAttribute.type.fullyQualifiedName}>#else${target.type.manageableDisplayAttribute.type.fullyQualifiedName}#end ${target.getterLabelName}() + { + return this.${target.labelName}; + } + + /** + * Set the ${target.labelName} + * + * @param ${target.labelName} + */ + public void ${target.setterLabelName} (#if ($target.many)java.util.Collection<${target.type.manageableDisplayAttribute.type.fullyQualifiedName}>#else${target.type.manageableDisplayAttribute.type.fullyQualifiedName}#end ${target.labelName}) + { + this.${target.labelName} = ${target.labelName}; + } + +#* *##end +#**##end +#end #if ($entity.genericFinders) // ----------- Generic Finder Methods -------------- |
From: Vance K. <va...@us...> - 2006-02-17 02:42:17
|
User: vancek Date: 06/02/16 18:42:16 Modified: andromda-ejb3/src/main/uml EJB3MetafacadeModel.xml.zip Log: added workaround attributes to EJB3ManageableEntityFacade added temporalType attribute to EJB3ManageableEntityAttributeFacade (not being used yet) Revision Changes Path 1.18 +141 -144 cartridges/andromda-ejb3/src/main/uml/EJB3MetafacadeModel.xml.zip <<Binary file>> |
From: Vance K. <va...@us...> - 2006-02-17 02:40:54
|
User: vancek Date: 06/02/16 18:40:52 Modified: andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades EJB3ManageableEntityFacadeLogicImpl.java Log: overridden isDelete with isDeleteWorkaround isUpdate with isUpdateWorkaround getManageableIdentifier with getManageableIdentiferWorkaround getDisplayAttribute with getDisplayAttributeWorkaround Revision Changes Path 1.2 +64 -4 cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3ManageableEntityFacadeLogicImpl.java Index: EJB3ManageableEntityFacadeLogicImpl.java =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3ManageableEntityFacadeLogicImpl.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -w -r1.1 -r1.2 --- EJB3ManageableEntityFacadeLogicImpl.java 13 Feb 2006 15:55:31 -0000 1.1 +++ EJB3ManageableEntityFacadeLogicImpl.java 17 Feb 2006 02:40:51 -0000 1.2 @@ -1,8 +1,14 @@ package org.andromda.cartridges.ejb3.metafacades; import java.text.MessageFormat; +import java.util.Collection; +import java.util.Iterator; import org.andromda.cartridges.ejb3.EJB3Profile; +import org.andromda.metafacades.uml.AttributeFacade; +import org.andromda.metafacades.uml.EntityAttribute; +import org.andromda.metafacades.uml.ManageableEntityAttribute; +import org.andromda.metafacades.uml.UMLProfile; import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.StringUtils; @@ -51,6 +57,12 @@ */ public static final String MANAGEABLE_SERVICE_BASE_NAME_PATTERN = "manageableServiceBaseNamePattern"; + /** + * Constructor + * + * @param metaObject + * @param context + */ public EJB3ManageableEntityFacadeLogicImpl (Object metaObject, String context) { super (metaObject, context); @@ -209,19 +221,67 @@ } /** - * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityFacadeLogic#isDelete() + * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityFacadeLogic#isDeleteWorkaround() */ - public boolean isDelete() + protected boolean handleIsDeleteWorkaround() { return (this.getIdentifiers(true).iterator().next() != null ? true : false); } /** - * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityFacadeLogic#isUpdate() + * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityFacadeLogic#isUpdateWorkaround() */ - public boolean isUpdate() + protected boolean handleIsUpdateWorkaround() { return (this.getIdentifiers(true).iterator().next() != null ? true : false); } + /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityFacadeLogic#getManageableIdentifierWorkaround() + */ + protected EntityAttribute handleGetManageableIdentifierWorkaround() + { + return (EntityAttribute)this.getIdentifiers(true).iterator().next(); + } + + /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityFacadeLogic#handleGetDisplayAttributeWorkaround() + */ + protected AttributeFacade handleGetDisplayAttributeWorkaround() + { + AttributeFacade displayAttribute = null; + + final Object taggedValueObject = findTaggedValue(UMLProfile.TAGGEDVALUE_MANAGEABLE_DISPLAY_NAME); + if (taggedValueObject != null) + { + displayAttribute = findAttribute(StringUtils.trimToEmpty(taggedValueObject.toString())); + } + + final Collection attributes = getAttributes(true); + for (final Iterator attributeIterator = attributes.iterator(); + attributeIterator.hasNext() && displayAttribute == null;) + { + final EntityAttribute attribute = (EntityAttribute)attributeIterator.next(); + if (attribute.isUnique()) + { + displayAttribute = attribute; + } + } + + if (displayAttribute == null) + { + if (!getIdentifiers().isEmpty()) + { + displayAttribute = (EntityAttribute)getIdentifiers().iterator().next(); + } + else if (!attributes.isEmpty()) + { + displayAttribute = (EntityAttribute)attributes.iterator().next(); + } + } + + return displayAttribute; + } + + } \ No newline at end of file |
From: Vance K. <va...@us...> - 2006-02-17 02:38:25
|
User: vancek Date: 06/02/16 18:38:22 Modified: andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades EJB3ManageableEntityAttributeFacadeLogicImpl.java Log: added getTemporalType - metafacade engine currently uses EJB3EntityAttributeFacade rather than EJB3ManageableEntityAttributeFacade Revision Changes Path 1.2 +22 -1 cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3ManageableEntityAttributeFacadeLogicImpl.java Index: EJB3ManageableEntityAttributeFacadeLogicImpl.java =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3ManageableEntityAttributeFacadeLogicImpl.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -w -r1.1 -r1.2 --- EJB3ManageableEntityAttributeFacadeLogicImpl.java 13 Feb 2006 15:55:31 -0000 1.1 +++ EJB3ManageableEntityAttributeFacadeLogicImpl.java 17 Feb 2006 02:38:22 -0000 1.2 @@ -1,5 +1,9 @@ package org.andromda.cartridges.ejb3.metafacades; +import org.andromda.cartridges.ejb3.EJB3Globals; +import org.andromda.cartridges.ejb3.EJB3Profile; +import org.apache.commons.lang.StringUtils; + /** * MetafacadeLogic implementation for org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityAttributeFacade. @@ -9,9 +13,26 @@ public class EJB3ManageableEntityAttributeFacadeLogicImpl extends EJB3ManageableEntityAttributeFacadeLogic { + /** + * The property that stores the defuult temporal type for date based attributes + */ + public static final String ENTITY_DEFAULT_TEMPORAL_TYPE = "entityDefaultTemporalType"; public EJB3ManageableEntityAttributeFacadeLogicImpl (Object metaObject, String context) { super (metaObject, context); } + + /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityAttributeFacadeLogic#handleGetTemporalType() + */ + protected String handleGetTemporalType() + { + String temporalType = (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_PERSISTENCE_TEMPORAL_TYPE); + if (StringUtils.isBlank(temporalType)) + { + temporalType = String.valueOf(this.getConfiguredProperty(ENTITY_DEFAULT_TEMPORAL_TYPE)); + } + return temporalType; + } } \ No newline at end of file |
From: Vance K. <va...@us...> - 2006-02-17 02:36:31
|
User: vancek Date: 06/02/16 18:36:29 Modified: andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3 EJB3Globals.java Log: added comment Revision Changes Path 1.6 +2 -0 cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/EJB3Globals.java Index: EJB3Globals.java =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/EJB3Globals.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -w -r1.5 -r1.6 --- EJB3Globals.java 25 Jan 2006 02:56:14 -0000 1.5 +++ EJB3Globals.java 17 Feb 2006 02:36:29 -0000 1.6 @@ -18,6 +18,8 @@ */ public static final String JNDI_NAME_PREFIX = "jndiNamePrefix"; + // --------------- Constants --------------------- + /** * Represents the eager fetch type */ |
From: Vance K. <va...@us...> - 2006-02-17 02:35:52
|
User: vancek Date: 06/02/16 18:35:51 Modified: andromda-ejb3/src/main/resources/META-INF/andromda namespace.xml Log: added entityDefaultTemporalType property defining the default value Revision Changes Path 1.14 +16 -0 cartridges/andromda-ejb3/src/main/resources/META-INF/andromda/namespace.xml Index: namespace.xml =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/resources/META-INF/andromda/namespace.xml,v retrieving revision 1.13 retrieving revision 1.14 diff -u -w -r1.13 -r1.14 --- namespace.xml 13 Feb 2006 15:54:02 -0000 1.13 +++ namespace.xml 17 Feb 2006 02:35:51 -0000 1.14 @@ -568,6 +568,22 @@ storage of a string based enumeration literal. </documentation> </property> + <property name="entityDefaultTemporalType"> + <default>TIMESTAMP</default> + <documentation> + Specifies that the persistence property should + be persisted as a temporal type. + This is only specified on fields of type + <code>java.util.Date</code> or + <code>java.util.Calendar</code>. + Possible values are: + <ul> + <li>DATE</li> + <li>TIME</li> + <li>TIMESTAMP</li> + </ul> + </documentation> + </property> </propertyGroup> <propertyGroup name="Service Properties"> <property name="serviceViewType"> |
From: Vance K. <va...@us...> - 2006-02-17 02:33:51
|
User: vancek Date: 06/02/16 18:33:50 Modified: andromda-ejb3/src/main/resources/META-INF/andromda metafacades.xml Log: added entityDefaultTemporalType property reference Revision Changes Path 1.13 +1 -0 cartridges/andromda-ejb3/src/main/resources/META-INF/andromda/metafacades.xml Index: metafacades.xml =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/resources/META-INF/andromda/metafacades.xml,v retrieving revision 1.12 retrieving revision 1.13 diff -u -w -r1.12 -r1.13 --- metafacades.xml 13 Feb 2006 15:52:42 -0000 1.12 +++ metafacades.xml 17 Feb 2006 02:33:50 -0000 1.13 @@ -12,6 +12,7 @@ <property reference="entityDiscriminatorType"/> <property reference="entityDiscriminatorColumnName"/> <property reference="entityDefaultEnumLiteralColumnLength"/> + <property reference="entityDefaultTemporalType"/> <property reference="serviceViewType"/> <property reference="entityGenericFinders"/> <property reference="persistenceContainerName"/> |
From: Vance K. <va...@us...> - 2006-02-17 02:33:09
|
User: vancek Date: 06/02/16 18:33:08 Modified: andromda-ejb3/src/main/resources/templates/ejb3/crud ManageableServiceUpdateException.vsl Log: fixed constructor name Revision Changes Path 1.2 +1 -1 cartridges/andromda-ejb3/src/main/resources/templates/ejb3/crud/ManageableServiceUpdateException.vsl Index: ManageableServiceUpdateException.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/resources/templates/ejb3/crud/ManageableServiceUpdateException.vsl,v retrieving revision 1.1 retrieving revision 1.2 diff -u -w -r1.1 -r1.2 --- ManageableServiceUpdateException.vsl 13 Feb 2006 15:47:17 -0000 1.1 +++ ManageableServiceUpdateException.vsl 17 Feb 2006 02:33:08 -0000 1.2 @@ -19,7 +19,7 @@ /** * The default constructor. */ - public ${manageable.manageableUpdateExceptionName}() + public ${manageable.manageableServiceUpdateExceptionName}() {} /** |
From: Vance K. <va...@us...> - 2006-02-17 02:32:47
|
User: vancek Date: 06/02/16 18:32:44 Modified: andromda-ejb3/src/main/resources/templates/ejb3/crud ManageableServiceRemote.vsl ManageableServiceBase.vsl Log: fixed create, update, delete and read operations one side of relationship lazy loading collection from the many side is NOT working Revision Changes Path 1.2 +12 -5 cartridges/andromda-ejb3/src/main/resources/templates/ejb3/crud/ManageableServiceRemote.vsl Index: ManageableServiceRemote.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/resources/templates/ejb3/crud/ManageableServiceRemote.vsl,v retrieving revision 1.1 retrieving revision 1.2 diff -u -w -r1.1 -r1.2 --- ManageableServiceRemote.vsl 13 Feb 2006 15:47:17 -0000 1.1 +++ ManageableServiceRemote.vsl 17 Feb 2006 02:32:44 -0000 1.2 @@ -3,14 +3,21 @@ #set ($generatedFile = "${manageable.manageableServiceFullPath}.java") #set ($memberList = $manageable.listManageableMembers(true)) #if (!$manageable.identifiers.empty) -#**##set ($identifier = $manageable.manageableIdentifier) +#**##set ($identifier = $manageable.manageableIdentifierWorkaround) #end package $manageable.manageablePackageName; +/** + * Manageable service bean remote interface + * + * NOTE: This is currently using the workaround to get the manageable entity identifer + * Once the metafacade engine is fixed, search for all calls with suffix "Workaround" + * and remove this suffix. + */ public interface $manageable.manageableServiceName { #if ($manageable.create) - public $manageable.fullyQualifiedEntityName create($memberList) + public $manageable.fullyQualifiedName create($memberList) throws ${manageable.fullyQualifiedManageableServiceCreateExceptionName}; #end @@ -34,12 +41,12 @@ #**##end #end -#if ($manageable.update) - public $manageable.fullyQualifiedEntityImplementationName update($memberList) +#if ($manageable.updateWorkaround) + public $manageable.fullyQualifiedName update($memberList) throws ${manageable.fullyQualifiedManageableServiceUpdateExceptionName}; #end -#if ($manageable.delete) +#if ($manageable.deleteWorkaround) public void delete(${identifier.type.fullyQualifiedName}[] ids) throws ${manageable.fullyQualifiedManageableServiceDeleteExceptionName}; 1.2 +293 -111 cartridges/andromda-ejb3/src/main/resources/templates/ejb3/crud/ManageableServiceBase.vsl Index: ManageableServiceBase.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/resources/templates/ejb3/crud/ManageableServiceBase.vsl,v retrieving revision 1.1 retrieving revision 1.2 diff -u -w -r1.1 -r1.2 --- ManageableServiceBase.vsl 13 Feb 2006 15:47:17 -0000 1.1 +++ ManageableServiceBase.vsl 17 Feb 2006 02:32:44 -0000 1.2 @@ -4,22 +4,16 @@ #set ($memberList = $manageable.listManageableMembers(true)) #set ($memberListArguments = $manageable.listManageableMembers(false)) #if (!$manageable.identifiers.empty) -#**##set ($identifier = $manageable.manageableIdentifier) +#**##set ($identifier = $manageable.manageableIdentifierWorkaround) #end package $manageable.manageablePackageName; -$manageable.identifiers.empty -identifier = $identifier -name = $identifier.name -type = $identifier.type -$manageable.manageableIdentifier - -THE IDENTIFIER IS $manageable.getIdentifiers(true).iterator().next() -$manageable.getIdentifiers(true).iterator().next().name - /** * Autogenerated EJB manageable session bean class ${manageable.manageableServiceName}. * + * NOTE: This is currently using the workaround to get the manageable entity identifer + * Once the metafacade engine is fixed, search for all calls with suffix "Workaround" + * and remove this suffix. */ /** * Do not specify the javax.ejb.${service.type} annotation @@ -45,6 +39,29 @@ @javax.persistence.PersistenceContext#if ($service.persistenceContextUnitName)(unitName = "${manageable.defaultPersistenceContextUnitName}")#end protected javax.persistence.EntityManager emanager; +#set ($associatedClasses = $manageable.allAssociatedClasses) +#if (!$associatedClasses.empty) + + // ------------ Private Operations ---------- + +#**##foreach ($associatedClass in $associatedClasses) + private java.util.List<${associatedClass.fullyQualifiedEntityName}> find${associatedClass.name}ByIds(${associatedClass.manageableIdentifierWorkaround.type.fullyQualifiedName}[] ids) + throws ${manageable.fullyQualifiedManageableServiceReadExceptionName} + { + try + { + javax.persistence.Query query = emanager.createQuery("from ${associatedClass.entityName} as entity where entity.${associatedClass.manageableIdentifierWorkaround.name} in (:${associatedClass.manageableIdentifierWorkaround.name})"); + query.setParameter("${associatedClass.manageableIdentifierWorkaround.name}", java.util.Arrays.asList(ids)); + return query.getResultList(); + } + catch (Exception ex) + { + throw new ${manageable.fullyQualifiedManageableServiceReadExceptionName}(ex); + } + } + +#**##end +#end // ------------ CRUD Operations ------------- @@ -52,10 +69,10 @@ /** * Create operations * - * @return $manageable.fullyQualifiedEntityName + * @return $manageable.fullyQualifiedName * @throws $manageable.fullyQualifiedManageableServiceCreateExceptionName */ - public $manageable.fullyQualifiedEntityName create($memberList) + public $manageable.fullyQualifiedName create($memberList) throws ${manageable.fullyQualifiedManageableServiceCreateExceptionName} { #**##foreach ($member in $manageable.manageableMembers) @@ -68,36 +85,35 @@ #* *##end #**##end - final ${manageable.fullyQualifiedEntityName} entity = new ${manageable.fullyQualifiedEntityName}(); + final ${manageable.fullyQualifiedName} entity = new ${manageable.fullyQualifiedName}(); #**##foreach ($member in $manageable.manageableAttributes) entity.${member.setterName}($member.name); #**##end + + try + { #**##foreach ($member in $manageable.manageableAssociationEnds) #* *##if ($member.many) #* *##set ($memberEntityName = "${member.name}Entities") + final java.util.List<${member.type.fullyQualifiedName}> $memberEntityName = ($member.name != null && ${member.name}.length > 0) + ? this.find${member.type.name}ByIds($member.name) + : java.util.Collections.EMPTY_LIST; - java.util.Set $memberEntityName = null; - if ($member.name != null && ${member.name}.length > 0) - { - $memberEntityName = this.find${member.type.name}ByIds($member.name); - } #* *##else #* *##set ($memberEntityName = "${member.name}Entity") - $member.type.fullyQualifiedName $memberEntityName = null; if ($member.name != null) { - $memberEntityName = ($member.type.fullyQualifiedName)emanager.getReference(${member.type.fullyQualifiedName}.class, #if ($member.type.primitive)new ${member.type.wrapperName}($member.name)#else${member.name}#end); + $memberEntityName = ($member.type.fullyQualifiedName)emanager.find(${member.type.fullyQualifiedName}.class, #if ($member.type.primitive)new ${member.type.wrapperName}($member.name)#else${member.name}#end); } #* *##end -#* *##if ($member.required) - entity.${member.setterName}($memberEntityName); -#* *##else + if ($memberEntityName != null) { entity.${member.setterName}($memberEntityName); -#* *##if ($member.many) +#* *##if ($member.many2Many) #* *##if ($member.otherEnd.navigable) + // set the other ends of the many2many association too for (final java.util.Iterator iterator = ${memberEntityName}.iterator(); iterator.hasNext();) { @@ -113,12 +129,16 @@ #* *##end } #* *##end -#**##end emanager.persist(entity); - emanager.refresh(entity); + emanager.flush(); return entity; } + catch (Exception ex) + { + throw new ${manageable.fullyQualifiedManageableServiceCreateExceptionName}(ex); + } + } #end #if ($manageable.read) @@ -128,10 +148,157 @@ * @return java.util.List * @throws $manageable.fullyQualifiedManageableServiceReadExceptionName */ - public java.util.List read($memberList) + public java.util.List<${manageable.fullyQualifiedEntityName}> read($memberList) throws ${manageable.fullyQualifiedManageableServiceReadExceptionName} { - return toValueObjects(dao.read($memberListArguments)); + String logicalOperator = ""; + StringBuffer buf = new StringBuffer("from ${manageable.entityName} as entity"); +#**##foreach ($member in $manageable.manageableAssociationEnds) +#* *##if ($member.many) + buf.append(" join entity.${member.name} as ${member.type.name} "); +#* *##end +#**##end + buf.append(" where "); +#**##foreach ($member in $manageable.manageableAttributes) +#* *##if ($member.type.primitive) + buf.append(logicalOperator); +#* *##if ($member.type.fullyQualifiedName == 'boolean') + if ($member.name) + { + buf.append("entity.${member.name} is true"); + } + else + { + buf.append("entity.${member.name} is not true"); + } +#* *##else + buf.append("entity.${member.name} = :${member.name}"); +#* *##end + logicalOperator = " and "; +#* *##else + if ($member.name != null) + { + buf.append(logicalOperator); +#* *##if ($member.type.fullyQualifiedName == 'java.lang.Boolean') + if (${member.name}.booleanValue()) + { + buf.append("entity.${member.name} is true"); + } + else + { + buf.append("entity.${member.name} is not true"); + } +#* *##elseif ($member.type.dateType) + final java.util.Calendar calendar = new java.util.GregorianCalendar(); + calendar.setTime($member.name); + if (calendar.get(java.util.Calendar.HOUR) != 0 + || calendar.get(java.util.Calendar.MINUTE) != 0 + || calendar.get(java.util.Calendar.SECOND) != 0 + || calendar.get(java.util.Calendar.MILLISECOND) != 0) + { + buf.append("entity.${member.name} = :${member.name}"); + } + else + { + buf.append("entity.${member.name} between = :${member.name}Start and :${member.name}End"); + } +#* *##elseif ($member.type.stringType) + buf.append("entity.${member.name} like :${member.name}"); +#* *##else + buf.append("entity.${member.name} = :${member.name}"); +#* *##end + logicalOperator = " and "; + } +#* *##end +#**##end +#**##foreach ($member in $manageable.manageableAssociationEnds) +#* *##if ($member.many) + if ($member.name != null && ${member.name}.length > 0) + { + buf.append(logicalOperator); + buf.append("${member.type.name} IN (:${member.name})"); + logicalOperator = " and "; + } +#* *##else + if ($member.name != null) + { + buf.append(logicalOperator); + buf.append("entity.${member.name} = :${member.name}"); + logicalOperator = " and "; + } +#* *##end +#**##end + + try + { + final javax.persistence.Query query = emanager.createQuery(buf.toString()); + +#**##foreach ($member in $manageable.manageableAttributes) +#* *##if ($member.type.primitive) +#* *##if ($member.type.fullyQualifiedName != 'boolean') + query.setParameter("$member.name", new ${member.type.wrapperName}($member.name)); +#* *##end +#* *##else +#* *##if ($member.type.fullyQualifiedName != 'java.lang.Boolean') + if ($member.name != null) + { +#* *##if ($member.type.dateType) + // we check whether or not the user supplied time information within this particular date argument + // if he/she didn't we assume he/she wishes to search in the scope of the entire day + final java.util.Calendar calendar = new java.util.GregorianCalendar(); + calendar.setTime($member.name); + if ( calendar.get(java.util.Calendar.HOUR) != 0 + || calendar.get(java.util.Calendar.MINUTE) != 0 + || calendar.get(java.util.Calendar.SECOND) != 0 + || calendar.get(java.util.Calendar.MILLISECOND) != 0 ) + { +## +## Need to fix the temporal type once the metafacde engine is fixed to detect the EJB3ManageableEntityAttributeFacade +## + query.setParameter("$member.name", ${member.name}, javax.persistence.TemporalType.#if ($stringUtils.isBlank(${member.temporalType}))TIMESTAMP#else${member.temporalType}#end); + } + else + { +## +## Need to fix the temporal type once the metafacde engine is fixed to detect the EJB3ManageableEntityAttributeFacade +## + calendar.add(java.util.Calendar.DATE, 1); + query.setParameter("${member.name}Start", $member.name, javax.persistence.TemporalType.#if ($stringUtils.isBlank(${member.temporalType}))TIMESTAMP#else${member.temporalType}#end); + query.setParameter("${member.name}End", calendar.getTime(), javax.persistence.TemporalType.#if ($stringUtils.isBlank(${member.temporalType}))TIMESTAMP#else${member.temporalType}#end); + } +#* *##else + query.setParameter("$member.name", $member.name); +#* *##end + } +#* *##end +#* *##end +#**##end +#**##foreach ($member in $manageable.manageableAssociationEnds) +#* *##if ($member.many) + if ($member.name != null && ${member.name}.length > 0) + { + query.setParameter("$member.name", java.util.Arrays.asList($member.name)); + } +#* *##else +#* *##if ($member.type.primitive) + query.setParameter("$member.name", new ${member.manageableIdentifier.type.wrapperName}($member.name)); +#* *##else + if ($member.name != null) + { + query.setParameter("$member.name", $member.name); + } +#* *##end +#* *##end +#**##end +#**##if ($manageable.maximumListSize > 0) + query.setMaxResults($manageable.maximumListSize); +#**##end + return query.getResultList(); + } + catch (Exception ex) + { + throw new ${manageable.fullyQualifiedManageableServiceReadExceptionName}(ex); + } } /** @@ -140,10 +307,21 @@ * @return java.util.List * @throws $manageable.fullyQualifiedManageableServiceReadExceptionName */ - public java.util.List readAll() + public java.util.List<${manageable.fullyQualifiedEntityName}> readAll() throws ${manageable.fullyQualifiedManageableServiceReadExceptionName} { - return toValueObjects(dao.readAll()); + try + { + javax.persistence.Query query = emanager.createQuery("from ${manageable.entityName} as entity"); +#if ($manageable.maximumListSize > 0) + query.setMaxResults($manageable.maximumListSize); +#end + return query.getResultList(); + } + catch (Exception ex) + { + throw new ${manageable.fullyQualifiedManageableServiceReadExceptionName}(ex); + } } #**##foreach ($member in $manageable.manageableAttributes) @@ -167,25 +345,17 @@ #* *##end try { - $member.type.fullyQualifiedName value = $member.type.javaNullString; - - final javax.persistence.Query queryObject = emanager.createNativeQuery("SELECT entity.${member.name} FROM $manageable.entityName AS entity where entity.${identifier.name} = :$identifier.name"); + final javax.persistence.Query query = emanager.createNativeQuery("select entity.${member.name} from $manageable.entityName as entity where entity.${identifier.name} = :$identifier.name"); #* *##if ($identifier.type.primitive) - queryObject.setParameter("$identifier.name", new ${identifier.type.wrapperName}($identifier.name)); + query.setParameter("$identifier.name", new ${identifier.type.wrapperName}($identifier.name)); #* *##else - queryObject.setParameter("$identifier.name", $identifier.name); + query.setParameter("$identifier.name", $identifier.name); #* *##end - final java.util.Iterator iterator = queryObject.iterate(); - if (iterator.hasNext()) - { - value = ($member.type.fullyQualifiedName)iterator.next(); - } - - return value; + return query.getSingleResult(); } - catch (${hibernateUtils.basePackage}.HibernateException ex) + catch (Exception ex) { - throw super.convertHibernateAccessException(ex); + throw new ${manageable.fullyQualifiedManageableServiceReadExceptionName}(ex); } } @@ -201,19 +371,31 @@ public java.util.Map readBackingLists() throws ${manageable.fullyQualifiedManageableServiceReadExceptionName} { - return getDao().readBackingLists(); + final java.util.Map lists = new java.util.HashMap(); + + try + { +#* *##foreach ($member in $manageable.manageableAssociationEnds) + lists.put("${member.name}", emanager.createQuery("select item.${member.type.manageableIdentifierWorkaround.name}, item.${member.type.displayAttributeWorkaround.name} from ${member.type.entityName} as item order by item.${member.type.displayAttributeWorkaround.name}").getResultList()); +#* *##end + } + catch (Exception ex) + { + throw new ${manageable.fullyQualifiedManageableServiceReadExceptionName}(ex); + } + return lists; } #**##end #end -#if ($manageable.update) +#if ($manageable.updateWorkaround) /** * Update Operation * - * @return $manageable.fullyQualifiedEntityName + * @return $manageable.fullyQualifiedName * @throws $manageable.fullyQualifiedManageableServiceUpdateExceptionName */ - public $manageable.fullyQualifiedEntityName update($memberList) + public $manageable.fullyQualifiedName update($memberList) throws ${manageable.fullyQualifiedManageableServiceUpdateExceptionName} { #**##foreach ($member in $manageable.manageableMembers) @@ -226,39 +408,35 @@ #* *##end #**##end -#**##set ($identifier = $manageable.manageableIdentifier) - final $manageable.fullyQualifiedEntityName entity = (${manageable.fullyQualifiedEntityName})emanager.getReference(${manageable.fullyQualifiedEntityName}.class, #if ($identifier.type.primitive)new ${identifier.type.wrapperName}($identifier.name)#else${identifier.name}#end); - + final $manageable.fullyQualifiedName entity = (${manageable.fullyQualifiedName})emanager.find(${manageable.fullyQualifiedName}.class, #if ($identifier.type.primitive)new ${identifier.type.wrapperName}($identifier.name)#else${identifier.name}#end); #**##foreach ($member in $manageable.manageableAttributes) #* *##if (!$member.identifier)## the identifier is already present since we loaded the entity entity.${member.setterName}(${member.name}); #* *##end #**##end + + try + { #**##foreach ($member in $manageable.manageableAssociationEnds) #* *##if ($member.many) #* *##set ($memberEntityName = "${member.name}Entities") + final java.util.List<${member.type.fullyQualifiedName}> $memberEntityName = ($member.name != null && ${member.name}.length > 0) + ? this.find${member.type.name}ByIds($member.name) + : java.util.Collections.EMPTY_LIST; - java.util.Set $memberEntityName = null; - if ($member.name != null && ${member.name}.length > 0) - { - $memberEntityName = this.find${member.type.name}ByIds($member.name); - } #* *##else #* *##set ($memberEntityName = "${member.name}Entity") - $member.type.fullyQualifiedName $memberEntityName = null; if ($member.name != null) { - $memberEntityName = (${member.type.fullyQualifiedName})emanager.getReference(${member.type.fullyQualifiedName}.class, #if ($memeber.type.primitive)new ${member.type.wrapperName}($member.name)#else${member.name}#end); + $memberEntityName = (${member.type.fullyQualifiedName})emanager.find(${member.type.fullyQualifiedName}.class, #if ($memeber.type.primitive)new ${member.type.wrapperName}($member.name)#else${member.name}#end); } #* *##end -#* *##if ($member.required) - entity.${member.setterName}($memberEntityName); -#* *##else + if ($memberEntityName != null) { entity.${member.setterName}($memberEntityName); -#* *##if ($member.many) +#* *##if ($member.many2Many) #* *##if ($member.otherEnd.navigable) // set the other ends of the many2many association too for (final java.util.Iterator iterator = ${memberEntityName}.iterator(); iterator.hasNext();) @@ -275,14 +453,19 @@ #* *##end } #* *##end -#**##end emanager.merge(entity); + emanager.flush(); return entity; } + catch (Exception ex) + { + throw new ${manageable.fullyQualifiedManageableServiceUpdateExceptionName}(ex); + } + } #end -#if ($manageable.delete) +#if ($manageable.deleteWorkaround) /** * Delete operation * @@ -299,9 +482,8 @@ try { - final javax.persistence.Query queryObject = - emanager.createQuery("DELETE FROM $manageable.name WHERE $identifier.name in (:ids)"); - queryObject.setParameter("ids", ids); + final javax.persistence.Query queryObject = emanager.createQuery("delete from $manageable.name where $identifier.name in (:ids)"); + queryObject.setParameter("ids", java.util.Arrays.asList(ids)); queryObject.executeUpdate(); } catch (Exception ex) |