diff --git a/transformations/org.universaal.tools.transformationcommand/transformations/ontUML2JavaV2.m2t b/transformations/org.universaal.tools.transformationcommand/transformations/ontUML2JavaV2.m2t index 8cf59bc250bb5ad24c86633e61ef1dcd32f9af1a..88efa0dde53c6d9a92dcf2562b2034382f425d24 100644 --- a/transformations/org.universaal.tools.transformationcommand/transformations/ontUML2JavaV2.m2t +++ b/transformations/org.universaal.tools.transformationcommand/transformations/ontUML2JavaV2.m2t @@ -85,32 +85,42 @@ texttransformation OntologyUML2JavaV2 (in uml:"http://www.eclipse.org/uml2/3.0.0 StdOut.println("Handling main ontology class for :" + p.name) p.generateMainOntologyClass(ontologyClassList, ontologyEnumerationList) - StdOut.println("Handling factory for :" + p.name) + StdOut.println("Handling factory for :" + self.name) p.generateFactory(ontologyClassList) - - StdOut.println("Handling activator of :" + p.name) - p.generateActivator(ontologyClassList) + } - StdOut.println("Generating the POM file") - //create the POM file for the project - p.generatePOMFile() + StdOut.println("Handling activator of :" + self.name) + self.generateActivator() - - } + StdOut.println("Generating the POM file") + //create the POM file for the project + self.generatePOMFile() } - uml.Package::generateActivator(ontologyClassList:Hashtable) { - file( javaBasePath + "/" + self.name.replace("\\.", "/") + '/' + "Activator.java" ) + uml.Package::generateActivator() { + // First, find package name for activator + var mainPacakageName:String = " " + self.ownedMember -> forEach( p:uml.Package ) { + mainPacakageName = p.name.substring(0, p.name.lastIndexOf(".")) + //break + } + + file( javaBasePath + "/" + mainPacakageName.replace("\\.", "/") + '/' + "Activator.java" ) ' -package ' self.name '; +package ' mainPacakageName '; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.universAAL.middleware.owl.OntologyManagement; -import 'self.name'.owl.*; +' + self.ownedMember -> forEach( p:uml.Package ) { + 'import 'p.name'.*\n;' + } + +' public class Activator implements BundleActivator { @@ -132,10 +142,10 @@ public class Activator implements BundleActivator { uml.Package::generateMainOntologyClass(ontologyClassList:Hashtable, enumerationClassList:Hashtable) { - file( javaBasePath + "/" + self.name.replace("\\.", "/") + '/owl/' + ontologyName + "Ontology.java" ) + file( javaBasePath + "/" + self.name.replace("\\.", "/") + '/' + ontologyName + "Ontology.java" ) ' -package ' self.name '.owl; +package ' self.name '; import org.universAAL.middleware.owl.BoundingValueRestriction; import org.universAAL.middleware.owl.DataRepOntology; @@ -375,8 +385,8 @@ import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.universAAL.middleware.rdf.Resource; import org.universAAL.middleware.rdf.impl.ResourceFactoryImpl; -import 'self.name'.owl.*; - +' //import 'self.name'.owl.*; +' public class ' ontologyName 'Factory extends ResourceFactoryImpl { @@ -468,10 +478,10 @@ public class ' ontologyName 'Factory extends ResourceFactoryImpl { uml.Class::generateOntologyClass () { - file( javaBasePath + "/" + self.package.name.replace("\\.", "/") + '/owl/' + self.name + ".java" ) + file( javaBasePath + "/" + self.package.name.replace("\\.", "/") + '/' + self.name + ".java" ) //Start generating the code - 'package ' self.package.name '.owl;\n\n' + 'package ' self.package.name ';\n\n' self.genImports() self.genClassDeclaration() @@ -495,10 +505,10 @@ public class ' ontologyName 'Factory extends ResourceFactoryImpl { } uml.Enumeration::generateEnumerationClass () { - file( javaBasePath + "/" + self.package.name.replace("\\.", "/") + '/owl/' + self.name + ".java" ) + file( javaBasePath + "/" + self.package.name.replace("\\.", "/") + '/' + self.name + ".java" ) //Start generating the code - 'package ' self.package.name '.owl;\n\n' + 'package ' self.package.name ';\n\n' 'import org.universAAL.middleware.owl.ManagedIndividual;\n\n' @@ -717,17 +727,19 @@ public class ' ontologyName 'Factory extends ResourceFactoryImpl { } } if (classesReferredTo.isEmpty()) - classesReferredTo.put("universAAL.middleware.owl.ManagedIndividual", null) + classesReferredTo.put("universAAL.middleware.owl.ManagedIndividual", " ") // Next, find properties var props:Hashtable = propertyHashtable.get(self.name) props->forEach(prop : uml.Property) { if (prop.isDataType()) { + stdout.println("Prop " + prop.name + " type " + prop.datatype.name) // TODO: Handle datatypes } else { - if (!self.package.name.equals(prop.class.package.name)) { - var importName:String = prop.class.package.name + "." + prop.class.name + stdout.println("Prop " + prop.name + " type " + prop.type.name + " package " + prop.type.package) + if (!self.package.name.equals(prop.type.package.name)) { + var importName:String = prop.type.package.name + "." + prop.type.name classesReferredTo.put(importName,prop) } } @@ -918,12 +930,15 @@ public class ' ontologyName 'Factory extends ResourceFactoryImpl { else if (theTypeName == "Boolean") { self.genBooleanGetterAndSetter(methodName, propLongName) } - else if (theTypeName == "UnlimitedNatural") { + else if ((theTypeName == "UnlimitedNatural") || (theTypeName == "Long")) { self.genLongGetterAndSetter(methodName, propLongName) } else if (theTypeName == "Integer") { self.genIntGetterAndSetter(methodName, propLongName) } + else if (theTypeName == "Float") { + self.genFloatGetterAndSetter(methodName, propLongName) + } else { self.genObjectGetterAndSetter(methodName, propLongName, theTypeName) } @@ -1027,6 +1042,23 @@ public class ' ontologyName 'Factory extends ResourceFactoryImpl { ' } +/** + * + */ + uml.Class::genFloatGetterAndSetter(methodName:String, propertyLongName:String) { +' + public float get' methodName '() { + Float f = (Float) getProperty('propertyLongName'); + return (f == null) ? 0 : f.floatValue(); + } + + public void set'methodName'(float newPropValue) { + setProperty('propertyLongName', new Float(newPropValue)); + } +' + } + + /** * */ @@ -1048,10 +1080,10 @@ public class ' ontologyName 'Factory extends ResourceFactoryImpl { //file( self.name.replace("\\.", "/") + '/' + "pom.xml" ) //set the projectInfo hashtable - projectInfo.put("name", self.owner.name.trim()) - projectInfo.put("artefactId", self.owner.name.trim()) - projectInfo.put("groupId", self.name.trim()) - projectInfo.put("versionInfo", self.owner.getValue("owlOntology", "versionInfo").trim()) + projectInfo.put("name", self.name.trim()) + projectInfo.put("artefactId", self.name.trim()) + projectInfo.put("groupId", self.name.trim()) //TODO: Find what this should be - was previously package name + projectInfo.put("versionInfo", self.getValue("owlOntology", "versionInfo").trim()) self.genPOMFileHeader() }