From: <ma...@us...> - 2007-04-30 10:50:57
|
Author: mattes3 Date: 2007-04-30 12:50:55 +0200 (Mon, 30 Apr 2007) New Revision: 382 Modified: andromda4/trunk/framework/cartridges/enterprise-app/src/main/transformations/UML2EnterpriseApp.atl andromda4/trunk/framework/cartridges/spring-hibernate/src/main/transformations/EnterpriseApp2Spring.atl andromda4/trunk/framework/cartridges/spring-hibernate/src/main/transformations/Spring2OOP.atl Log: Now, entity classes with properties are generated, too. Modified: andromda4/trunk/framework/cartridges/enterprise-app/src/main/transformations/UML2EnterpriseApp.atl =================================================================== --- andromda4/trunk/framework/cartridges/enterprise-app/src/main/transformations/UML2EnterpriseApp.atl 2007-04-26 11:16:01 UTC (rev 381) +++ andromda4/trunk/framework/cartridges/enterprise-app/src/main/transformations/UML2EnterpriseApp.atl 2007-04-30 10:50:55 UTC (rev 382) @@ -17,14 +17,11 @@ rule UMLServiceToEnterpriseAppService { from class : UML2!Class (class.oclIsTypeOf(UML2!Class) and class.hasStereotype('Service')) to out : EnterpriseApp!Service ( - name <- class.name->debug('UMLServiceToEnterpriseAppService'), - methods <- class.ownedOperation->debug('UMLServiceToEnterpriseAppService'), - sourceReferences <- class.clientDependency->debug('UMLServiceToEnterpriseAppService'), + name <- class.name, + methods <- class.ownedOperation, + sourceReferences <- class.clientDependency, model <- thisModule.modelRoot ) - do { - thisModule.links->debug('TransientLinkSet'); - } } -- Transform UML2 classes that have the stereotype "Entity" @@ -32,14 +29,11 @@ rule UMLEntityToEnterpriseAppEntity { from class : UML2!Class (class.oclIsTypeOf(UML2!Class) and class.hasStereotype('Entity')) to out : EnterpriseApp!Entity ( - name <- class.name->debug('UMLEntityToEnterpriseAppEntity'), - methods <- class.ownedOperation->debug('UMLEntityToEnterpriseAppEntity'), - properties <- class.ownedAttribute->debug('UMLEntityToEnterpriseAppEntity'), + name <- class.name, + methods <- class.ownedOperation, + properties <- class.ownedAttribute, model <- thisModule.modelRoot ) - do { - thisModule.links->debug('TransientLinkSet'); - } } -- Transform UML dependencies to EnterpriseApp references @@ -75,18 +69,20 @@ rule UMLDataTypeToOOPDatatype { from type : UML2!DataType to out : EnterpriseApp!Type ( - name <- type.name->debug('UMLDataTypeToOOPDatatype') + name <- type.name ) } -- Transform UML2 property to OOP property +-- Do not transform association ends, here, so only take those properties +-- which do not have an attached association! rule UMLPropertyToOOPProperty { - from attr : UML2!Property (attr.featuringClassifier->first().hasStereotype('Service') or attr.featuringClassifier->first().hasStereotype('Entity')) + from attr : UML2!Property ( attr.association.oclIsUndefined() + and attr.featuringClassifier->first().hasStereotype('Entity') + ) to out : EnterpriseApp!Property ( - name <- attr.name->debug('UMLPropertyToOOPProperty'), - type <- attr.type->debug('UMLPropertyToOOPProperty') + name <- attr.name, + type <- attr.type, + visibility <- 'public' -- TODO: get real UML visibility here! ) - do { - thisModule.links->debug('TransientLinkSet'); - } } Modified: andromda4/trunk/framework/cartridges/spring-hibernate/src/main/transformations/EnterpriseApp2Spring.atl =================================================================== --- andromda4/trunk/framework/cartridges/spring-hibernate/src/main/transformations/EnterpriseApp2Spring.atl 2007-04-26 11:16:01 UTC (rev 381) +++ andromda4/trunk/framework/cartridges/spring-hibernate/src/main/transformations/EnterpriseApp2Spring.atl 2007-04-30 10:50:55 UTC (rev 382) @@ -22,7 +22,7 @@ } -- Transform EnterpriseApp entities to Spring beans (to get DAOs). -rule EnterpriseAppEntityToDao { +rule EnterpriseAppEntityToDaoAndHibernateEntity { from entity : EnterpriseApp!Entity to dao : Spring!SpringBean ( name <- entity.name + 'Dao' @@ -32,7 +32,8 @@ ) ,plainVanillaType : Spring!Entity ( name <- entity.name - -- ,methods <- entity.methods->select (m | m.instanceScope) + ,properties <- entity.properties + ,methods <- entity.methods->select (m | m.instanceScope) ,model <- thisModule.modelRoot ) } @@ -45,8 +46,18 @@ ) } +-- Transform EnterpriseApp property to Hibernate entity property +rule PropertyToProperty { + from prop : EnterpriseApp!Property + to out : Spring!Property ( + name <- prop.name + ,type <- prop.type + ,visibility <- prop.visibility + ) +} + -- Transform EnterpriseApp methods to Spring methods. -rule EnterpriseAppMethodToSpringMethod { +rule MethodToMethod { from method : EnterpriseApp!Method to out : Spring!Method ( name <- method.name @@ -58,7 +69,7 @@ -- Transform EnterpriseApp parameters to Spring parameters. -rule EnterpriseAppParameterToSpringParameter { +rule ParameterToParameter { from param : EnterpriseApp!Parameter to out : Spring!Parameter ( name <- param.name @@ -67,7 +78,7 @@ } -- Transform EnterpriseApp type to EnterpriseApp type. -rule EnterpriseAppTypeToSpringType { +rule TypeToType { from type : EnterpriseApp!Type to plainVanillaType : Spring!Type ( name <- type.name Modified: andromda4/trunk/framework/cartridges/spring-hibernate/src/main/transformations/Spring2OOP.atl =================================================================== --- andromda4/trunk/framework/cartridges/spring-hibernate/src/main/transformations/Spring2OOP.atl 2007-04-26 11:16:01 UTC (rev 381) +++ andromda4/trunk/framework/cartridges/spring-hibernate/src/main/transformations/Spring2OOP.atl 2007-04-30 10:50:55 UTC (rev 382) @@ -46,11 +46,14 @@ to baseClass : OOP!Class ( name <- entity.name ,model <- thisModule.modelRoot - ) + ,properties <- entity.properties + ,methods <- entity.methods -- still need to mark them as abstract + ) , implementationClass : OOP!Class ( name <- entity.name + 'Impl' ,model <- thisModule.modelRoot - ) + ,methods <- entity.methods + ) } rule MethodToMethod { @@ -65,11 +68,20 @@ rule ParameterToParameter { from param : Spring!Parameter to out : OOP!Parameter ( - name <- param.name + name <- param.name ,type <- param.type ) } +rule PropertyToProperty { + from prop : Spring!Property + to out : OOP!Property ( + name <- prop.name + ,type <- prop.type + ,visibility <- prop.visibility + ) +} + rule TypeToType { from type : Spring!Type to out : OOP!Type ( |