Eugene-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
October 2009
- 5 participants
- 40 discussions
Author: fdesbois
Date: 2009-10-30 18:51:50 +0100 (Fri, 30 Oct 2009)
New Revision: 674
Modified:
branches/1.1.0-Javabuilder/eugene-test/
Log:
- Add exhaustive JUnit test for JavaBuilder
Property changes on: branches/1.1.0-Javabuilder/eugene-test
___________________________________________________________________
Modified: svn:ignore
- target
+ target
eugene-test.iml
1
0
r673 - in branches/1.1.0-Javabuilder: eugene eugene/src/test/java/org/nuiton/eugene eugene/src/test/java/org/nuiton/eugene/java eugene-test/src/test/java/org/nuiton/eugene/java
by fdesbois@users.nuiton.org 30 Oct '09
by fdesbois@users.nuiton.org 30 Oct '09
30 Oct '09
Author: fdesbois
Date: 2009-10-30 18:51:08 +0100 (Fri, 30 Oct 2009)
New Revision: 673
Added:
branches/1.1.0-Javabuilder/eugene/src/test/java/org/nuiton/eugene/java/
branches/1.1.0-Javabuilder/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java
Removed:
branches/1.1.0-Javabuilder/eugene-test/src/test/java/org/nuiton/eugene/java/JavaBuilderHelperTest.java
Modified:
branches/1.1.0-Javabuilder/eugene/
Log:
- Add exhaustive JUnit test for JavaBuilder
Property changes on: branches/1.1.0-Javabuilder/eugene
___________________________________________________________________
Modified: svn:ignore
- maven.log
target
velocity.log
.eclipse
lutingenerator.ipr
.classpath
.project
.settings
+ eugene (1) (org.nuiton.eugene).iml
velocity.log
.classpath
.project
.eclipse
target
lutingenerator.ipr
maven.log
eugene (1).iml
.settings
Added: branches/1.1.0-Javabuilder/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java (rev 0)
+++ branches/1.1.0-Javabuilder/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java 2009-10-30 17:51:08 UTC (rev 673)
@@ -0,0 +1,420 @@
+
+package org.nuiton.eugene.java;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.nuiton.eugene.ImportsManager;
+import org.nuiton.eugene.models.object.ObjectModelAttribute;
+import org.nuiton.eugene.models.object.ObjectModelClass;
+import org.nuiton.eugene.models.object.ObjectModelClassifier;
+import org.nuiton.eugene.models.object.ObjectModelOperation;
+import org.nuiton.eugene.models.object.ObjectModelParameter;
+import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl;
+
+/**
+ *
+ * @author fdesbois
+ */
+public class JavaBuilderTest {
+
+ public JavaBuilderTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception {
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception {
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ /**
+ * Test of getModel.
+ * Prerequisite : instanciation of JavaBuilder.
+ * - ObjectModel created in JavaBuilder constructor. ObjectModel name will be set.
+ */
+ @Test
+ public void testGetModel() {
+ System.out.println("getModel");
+
+ JavaBuilder builder = new JavaBuilder("TestModel");
+ assertNotNull(builder.getModel());
+ assertEquals(builder.getModel().getName(), "TestModel");
+ }
+
+ /**
+ * Test of getImportsManager.
+ * Prerequisite : existing classifier in model.
+ * - The manager is associated to a classifier. The manager will be created in the model
+ * linked to the builder. The manager is empty, no imports is added yet.
+ */
+ @Test
+ public void testGetImportsManager() {
+ System.out.println("getImportsManager");
+ JavaBuilder builder = new JavaBuilder("TestModel");
+
+ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
+
+ ImportsManager result = builder.getImportsManager(classifier);
+ assertNotNull(result);
+ List<String> imports = result.getImports("org.chorem.bonzoms");
+ assertNotNull(imports);
+ assertEquals(imports.size(), 0);
+ }
+
+ /**
+ * Test of addImport method, of class JavaBuilder.
+ * Prerequisite : existing classifier in model.
+ * - Add a simple type to import.
+ * - Add a type to import with generic (List of Category) : two imports are added.
+ * NOTE : Use of ImportsManager addImport() method and GeneratorUtil getTypesList() method.
+ * @see org.nuiton.eugene.ImportsManagerTest#testAddImport()
+ * @see org.nuiton.eugene.GeneratorUtilTest#testGetTypesList()
+ */
+ @Test
+ public void testAddImport() {
+ System.out.println("addImport");
+ JavaBuilder builder = new JavaBuilder("TestModel");
+
+ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
+ String imports = "java.beans.PropertyChangeListener";
+ builder.addImport(classifier, imports);
+
+ ImportsManager manager = builder.getImportsManager(classifier);
+
+ String type = "java.util.List<org.chorem.cash.Category>"; // type add : 2 imports added
+ builder.addImport(classifier, type);
+ assertEquals(manager.getImports("org.chorem.bonzoms").size(), 3);
+ }
+
+ /**
+ * Test of createClass method, of class JavaBuilder.
+ * Prerequisite : none.
+ * - Create a class with name and packageName. Qualified name of the class = name + packageName.
+ */
+ @Test
+ public void testCreateClass() {
+ System.out.println("createClass");
+
+ JavaBuilder builder = new JavaBuilder("TestModel");
+
+ ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms");
+
+ assertNotNull(clazz);
+ assertEquals(clazz.getName(), "Person");
+ assertEquals(clazz.getPackageName(), "org.chorem.bonzoms");
+ assertEquals(clazz.getQualifiedName(), "org.chorem.bonzoms.Person");
+ }
+
+ /**
+ * Test of createAbstractClass method, of class JavaBuilder.
+ * Prerequisite : none.
+ * - Create an abstract class.
+ */
+ @Test
+ public void testCreateAbstractClass() {
+ System.out.println("createAbstractClass");
+ JavaBuilder builder = new JavaBuilder("TestModel");
+
+ ObjectModelClass clazz = builder.createAbstractClass("Person", "org.chorem.bonzoms");
+ assertTrue(clazz.isAbstract());
+ }
+
+// /**
+// * Test of setSuperClass method, of class JavaBuilder.
+// */
+// @Test
+// public void testSetSuperClass() {
+// System.out.println("setSuperClass");
+// JavaBuilder builder = new JavaBuilder("TestModel");
+//
+// ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms");
+//
+// String superclassQualifiedName = "org.chorem.bonzoms.Party";
+//
+// //builder.setSuperClass(clazz, superclassQualifiedName);
+// //assertNotNull(clazz.getSuperclasses());
+// //assertEquals(clazz.getSuperclasses().size(), 1);
+// }
+//
+ /**
+ * Test of addInterface method, of class JavaBuilder.
+ * Prerequisite : existing classifier in model.
+ * - Add an interface not included in the model to a classifier.
+ * - TODO : Add an existing interface in the model to a classfier.
+ */
+ @Test
+ public void testAddInterface() {
+ System.out.println("addInterface");
+ JavaBuilder builder = new JavaBuilder("TestModel");
+
+ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
+
+ String interfaceQualifiedName = "java.io.Serializable";
+ builder.addInterface(classifier, interfaceQualifiedName);
+
+ assertNotNull(classifier.getInterfaces());
+ assertEquals(classifier.getInterfaces().size(), 1);
+ }
+
+ /**
+ * Test of addAttribute(ObjectModelClassifier, String) method, of class JavaBuilder.
+ * Prerequisite : existing classifier in model.
+ * - Add attribute simple attribute (visibility, type, name)
+ * - Add attribute with defaultValue
+ * - Add attribute with defaultValue as new instance of object
+ * - Add attribute with defaultValue which contains a '.' (double)
+ */
+ @Test
+ public void testAddAttributeObjectModelClassifierString() {
+ System.out.println("addAttribute");
+ JavaBuilder builder = new JavaBuilder("modelName");
+
+ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
+
+ String parse = "public java.lang.String bilou";
+ ObjectModelAttribute result = builder.addAttribute(classifier, parse);
+ assertNotNull(result);
+ assertEquals(result.getName(), "bilou");
+ assertEquals(result.getType(), "java.lang.String");
+ assertEquals(result.getVisibility(), "public");
+
+ parse = "public static final long uid = 12534sdf78ef9";
+ result = builder.addAttribute(classifier, parse);
+ assertNotNull(result);
+ assertTrue(result.isFinal());
+ assertTrue(result.isStatic());
+ assertEquals(result.getName(), "uid");
+ assertEquals(result.getType(), "long");
+ assertEquals(result.getVisibility(), "public");
+ assertEquals(result.getDefaultValue(), "12534sdf78ef9");
+
+ parse = "private java.util.Date publicDate = new java.util.Date()";
+ result = builder.addAttribute(classifier, parse);
+ assertNotNull(result);
+ assertEquals(result.getName(), "publicDate");
+ assertEquals(result.getType(), "java.util.Date");
+ assertEquals(result.getVisibility(), "private");
+ assertEquals(result.getDefaultValue(), "new java.util.Date()");
+
+ parse = "private double age = 2.0";
+ result = builder.addAttribute(classifier, parse);
+ assertNotNull(result);
+ assertEquals(result.getName(), "age");
+ assertEquals(result.getType(), "double");
+ assertEquals(result.getVisibility(), "private");
+ assertEquals(result.getDefaultValue(), "2.0");
+ }
+
+ /**
+ * Test of addAttribute method, of class JavaBuilder.
+ * Prerequisite : existing classifier in model.
+ * - Add an attribute from an existing one
+ */
+ @Test
+ public void testAddAttributeObjectModelClassifierObjectModelAttribute() {
+ System.out.println("addAttribute");
+ JavaBuilder builder = new JavaBuilder("modelName");
+
+ ObjectModelAttributeImpl attribute = new ObjectModelAttributeImpl();
+ attribute.setName("name");
+ attribute.setType("java.lang.String");
+ attribute.setVisibility("public");
+ attribute.setStatic(false);
+ attribute.setFinal(true);
+ attribute.setDefaultValue("\"\"");
+
+ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
+
+ ObjectModelAttribute result = builder.addAttribute(classifier, attribute);
+ assertNotNull(result);
+ assertEquals(result.getName(), "name");
+ assertEquals(result.getType(), "java.lang.String");
+ assertEquals(result.getVisibility(), "public");
+ assertEquals(result.getDefaultValue(), "\"\"");
+ assertTrue(result.isFinal());
+ assertFalse(result.isStatic());
+ }
+
+ /**
+ * Test of addConstructor method, of class JavaBuilder.
+ * Prerequisite : existing class in model.
+ * - Add a constructor to an existing class.
+ * NOTE : operation.getReturnType doesn't get the good type (ie. "void")
+ */
+ @Test
+ public void testAddConstructor() {
+ System.out.println("addConstructor");
+ JavaBuilder builder = new JavaBuilder("modelName");
+
+ ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms");
+
+ ObjectModelOperation operation = builder.addConstructor(clazz, "public");
+ assertNotNull(operation);
+ assertEquals(operation.getName(), "Person");
+ assertNull(operation.getReturnParameter());
+ assertFalse(operation.isAbstract());
+ }
+
+ /**
+ * Test of addOperation method, of class JavaBuilder.
+ * Prerequisite : existing classifier in model.
+ * - Add simple method without parameters
+ * - Add method with one parameter
+ * NOTE : unsupported generic and exceptions
+ */
+ @Test
+ public void testAddOperationObjectModelClassifierString() {
+ System.out.println("addOperation");
+ JavaBuilder builder = new JavaBuilder("modelName");
+
+ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
+
+ String parse = "public abstract java.util.List<java.lang.String> methodName";
+ ObjectModelOperation result = builder.addOperation(classifier, parse);
+ assertNotNull(result);
+ assertTrue(result.isAbstract());
+ assertEquals(result.getName(), "methodName");
+ assertEquals(result.getReturnType(), "java.util.List<java.lang.String>");
+ assertEquals(result.getVisibility(), "public");
+
+ /*parse = "public <T extends blob> T myMethod"; // UNSUPPORTED*/
+
+ parse = "public void addPropertyChangeListener(java.lang.String propertyName)";
+ result = builder.addOperation(classifier, parse);
+ assertNotNull(result);
+ assertEquals(result.getName(), "addPropertyChangeListener");
+ assertEquals(result.getReturnType(), "void");
+ assertEquals(result.getVisibility(), "public");
+ assertEquals(result.getParameters().size(), 1);
+
+ List<ObjectModelParameter> listParams = (List<ObjectModelParameter>)result.getParameters();
+ ObjectModelParameter param1 = listParams.get(0);
+ assertEquals(param1.getName(), "propertyName");
+ assertEquals(param1.getType(), "java.lang.String");
+ }
+
+ /**
+ * Test of addOperation method, of class JavaBuilder.
+ * Prerequisite : existing classifier in model.
+ * - Add simple method without parameters
+ * - Add method with one parameter
+ */
+ @Test
+ public void testAddOperation5args() {
+ System.out.println("addOperation");
+
+ JavaBuilder builder = new JavaBuilder("modelName");
+
+ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
+
+ ObjectModelOperation result = builder.addOperation(classifier,
+ "public", "java.util.List<java.lang.String>", "methodName");
+ assertNotNull(result);
+ assertEquals(result.getName(), "methodName");
+ assertEquals(result.getReturnType(), "java.util.List<java.lang.String>");
+ assertEquals(result.getVisibility(), "public");
+
+ result = builder.addOperation(classifier, "public", "void", "addPropertyChangeListener",
+ "java.lang.String", "propertyName");
+ assertNotNull(result);
+ assertEquals(result.getName(), "addPropertyChangeListener");
+ assertEquals(result.getReturnType(), "void");
+ assertEquals(result.getVisibility(), "public");
+ assertEquals(result.getParameters().size(), 1);
+
+ List<ObjectModelParameter> listParams = (List<ObjectModelParameter>)result.getParameters();
+ ObjectModelParameter param1 = listParams.get(0);
+ assertEquals(param1.getName(), "propertyName");
+ assertEquals(param1.getType(), "java.lang.String");
+ }
+
+ /**
+ * Test of addParameter method, of class JavaBuilder.
+ * Prerequisite : existing classifier in model and operation associated to this classifier.
+ * - Add a parameter to an existing operation in a classifier
+ */
+ @Test
+ public void testAddParameter() {
+ System.out.println("addParameter");
+
+ JavaBuilder builder = new JavaBuilder("modelName");
+
+ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
+
+ ObjectModelOperation operation = builder.addOperation(classifier,
+ "public java.lang.String setName");
+
+ ObjectModelParameter param = builder.addParameter(operation, "java.lang.String", "name");
+ assertNotNull(param);
+ assertEquals(param.getName(), "name");
+ assertEquals(param.getType(), "java.lang.String");
+
+ List<ObjectModelParameter> listParams = (List<ObjectModelParameter>)operation.getParameters();
+ ObjectModelParameter param1 = listParams.get(0);
+ assertEquals(param1, param);
+ }
+
+ /**
+ * Test of addException method, of class JavaBuilder.
+ * Prerequisite : existing classifier in model and operation associated to this classifier.
+ * - Add an exception to an existing operation in a classifier
+ */
+ @Test
+ public void testAddException() {
+ System.out.println("addException");
+
+ JavaBuilder builder = new JavaBuilder("modelName");
+
+ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
+
+ ObjectModelOperation operation = builder.addOperation(classifier,
+ "public java.lang.String setName");
+
+ builder.addException(operation, "java.lang.IllegalArgumentException");
+ Set<String> exceptions = operation.getExceptions();
+ assertNotNull(exceptions);
+ assertEquals(exceptions.size(), 1);
+ Iterator<String> it = exceptions.iterator();
+ assertNotNull(it.hasNext());
+ assertEquals(it.next(), "java.lang.IllegalArgumentException");
+ }
+
+ /**
+ * Test of setOperationBody method, of class JavaBuilder.
+ * Prerequisite : existing classifier in model and operation associated to this classifier.
+ * - Add a body to an existing operation in a classifier
+ * NOTE : No complex test for adding body to an operation (no use of processor)
+ */
+ @Test
+ public void testSetOperationBody() {
+ System.out.println("setOperationBody");
+
+ JavaBuilder builder = new JavaBuilder("modelName");
+
+ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
+
+ ObjectModelOperation operation = builder.addOperation(classifier,
+ "public java.lang.String setName");
+
+ builder.setOperationBody(operation, "this.name = name");
+ assertNotNull(operation.getBodyCode());
+ assertEquals(operation.getBodyCode(), "this.name = name");
+ }
+
+}
\ No newline at end of file
Deleted: branches/1.1.0-Javabuilder/eugene-test/src/test/java/org/nuiton/eugene/java/JavaBuilderHelperTest.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/test/java/org/nuiton/eugene/java/JavaBuilderHelperTest.java 2009-10-29 19:02:32 UTC (rev 672)
+++ branches/1.1.0-Javabuilder/eugene-test/src/test/java/org/nuiton/eugene/java/JavaBuilderHelperTest.java 2009-10-30 17:51:08 UTC (rev 673)
@@ -1,124 +0,0 @@
-
-package org.nuiton.eugene.java;
-
-import java.util.List;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import static org.junit.Assert.*;
-import org.nuiton.eugene.models.object.ObjectModelAttribute;
-import org.nuiton.eugene.models.object.ObjectModelClassifier;
-import org.nuiton.eugene.models.object.ObjectModelOperation;
-import org.nuiton.eugene.models.object.ObjectModelParameter;
-import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl;
-
-/**
- *
- * @author fdesbois
- */
-public class JavaBuilderHelperTest {
-
- public JavaBuilderHelperTest() {
- }
-
- @BeforeClass
- public static void setUpClass() throws Exception {
- }
-
- @AfterClass
- public static void tearDownClass() throws Exception {
- }
-
- @Before
- public void setUp() {
- }
-
- @After
- public void tearDown() {
- }
-
- /**
- * Test of addAttribute method, of class JavaBuilderHelper.
- */
- @Test
- public void testAddAttribute() {
- System.out.println("addAttribute");
- JavaBuilder instance = new JavaBuilder("modelName");
-
- ObjectModelClassifier classifier = new ObjectModelClassImpl();
-
- String parse = "public java.lang.String bilou";
- ObjectModelAttribute result = instance.addAttribute(classifier, parse);
- assertNotNull(result);
- assertEquals(result.getName(), "bilou");
- assertEquals(result.getType(), "java.lang.String");
- assertEquals(result.getVisibility(), "public");
-
- parse = "public static final long uid = 12534sdf78ef9";
- result = instance.addAttribute(classifier, parse);
- assertNotNull(result);
- assertTrue(result.isFinal());
- assertTrue(result.isStatic());
- assertEquals(result.getName(), "uid");
- assertEquals(result.getType(), "long");
- assertEquals(result.getVisibility(), "public");
- assertEquals(result.getDefaultValue(), "12534sdf78ef9");
-
- parse = "private java.util.Date publicDate = new java.util.Date()";
- result = instance.addAttribute(classifier, parse);
- assertNotNull(result);
- assertEquals(result.getName(), "publicDate");
- assertEquals(result.getType(), "java.util.Date");
- assertEquals(result.getVisibility(), "private");
- assertEquals(result.getDefaultValue(), "new java.util.Date()");
-
- parse = "private double age = 2.0";
- result = instance.addAttribute(classifier, parse);
- assertNotNull(result);
- assertEquals(result.getName(), "age");
- assertEquals(result.getType(), "double");
- assertEquals(result.getVisibility(), "private");
- assertEquals(result.getDefaultValue(), "2.0");
-
- }
-
- @Test
- public void testAddOperation() {
- System.out.println("addOperation");
-
- JavaBuilder instance = new JavaBuilder("modelName");
-
- ObjectModelClassifier classifier = new ObjectModelClassImpl();
-
- String parse = "public abstract java.util.List<java.lang.String> methodName";
- ObjectModelOperation result = instance.addOperation(classifier, parse);
- assertNotNull(result);
- assertTrue(result.isAbstract());
- assertEquals(result.getName(), "methodName");
- assertEquals(result.getReturnType(), "java.util.List<java.lang.String>");
- assertEquals(result.getVisibility(), "public");
-
- /*parse = "public <T extends blob> T myMethod"; // UNSUPPORTED
- result = instance.addOperation(classifier, parse);
- assertNotNull(result);
- assertEquals(result.getName(), "myMethod");
- assertEquals(result.getReturnType(), "<T extends blob> T");
- assertEquals(result.getVisibility(), "public");*/
-
- parse = "public void addPropertyChangeListener(java.lang.String propertyName)";
- result = instance.addOperation(classifier, parse);
- assertNotNull(result);
- assertEquals(result.getName(), "addPropertyChangeListener");
- assertEquals(result.getReturnType(), "void");
- assertEquals(result.getVisibility(), "public");
- assertEquals(result.getParameters().size(), 1);
-
- List<ObjectModelParameter> listParams = (List<ObjectModelParameter>)result.getParameters();
- ObjectModelParameter param1 = listParams.get(0);
- assertEquals(param1.getName(), "propertyName");
- assertEquals(param1.getType(), "java.lang.String");
- }
-
-}
\ No newline at end of file
1
0
r672 - in branches/1.1.0-Javabuilder: eugene/src/main/java/org/nuiton/eugene eugene/src/main/java/org/nuiton/eugene/models/object/builder eugene/src/main/java/org/nuiton/eugene/models/object/xml eugene-test/src/main/java/org/nuiton/eugene/test/generator
by fdesbois@users.nuiton.org 29 Oct '09
by fdesbois@users.nuiton.org 29 Oct '09
29 Oct '09
Author: fdesbois
Date: 2009-10-29 20:02:32 +0100 (Thu, 29 Oct 2009)
New Revision: 672
Removed:
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaBuilder.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaClassFile.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaFile.java
Modified:
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestReader.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/AbstractGenerator.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/Generator.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelGenerator.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelReader.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelTransformer.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/StateModelReader.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/Transformer.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderHelper.java
Log:
- Clean imports
- Add svn:keywords
- Delete old version of JavaBuilder
Property changes on: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/AbstractGenerator.java
___________________________________________________________________
Added: svn:keywords
+ Author Revision Date
Modified: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/Generator.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/Generator.java 2009-10-29 18:53:26 UTC (rev 671)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/Generator.java 2009-10-29 19:02:32 UTC (rev 672)
@@ -19,10 +19,6 @@
package org.nuiton.eugene;
import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
import java.util.List;
import java.util.Properties;
Modified: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelGenerator.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelGenerator.java 2009-10-29 18:53:26 UTC (rev 671)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelGenerator.java 2009-10-29 19:02:32 UTC (rev 672)
@@ -25,7 +25,6 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.eugene.models.Model;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelClass;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
Modified: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelReader.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelReader.java 2009-10-29 18:53:26 UTC (rev 671)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelReader.java 2009-10-29 19:02:32 UTC (rev 672)
@@ -12,7 +12,6 @@
import org.apache.commons.digester.Digester;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.eugene.models.Model;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelClass;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
Property changes on: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelReader.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Revision
Property changes on: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelTransformer.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Revision
Property changes on: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/StateModelReader.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Revision
Modified: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/Transformer.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/Transformer.java 2009-10-29 18:53:26 UTC (rev 671)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/Transformer.java 2009-10-29 19:02:32 UTC (rev 672)
@@ -1,7 +1,6 @@
package org.nuiton.eugene;
-import org.nuiton.eugene.*;
import java.io.File;
import java.util.List;
import java.util.Properties;
Property changes on: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/Transformer.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Revision
Deleted: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaBuilder.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaBuilder.java 2009-10-29 18:53:26 UTC (rev 671)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaBuilder.java 2009-10-29 19:02:32 UTC (rev 672)
@@ -1,111 +0,0 @@
-
-package org.nuiton.eugene.models.object.builder;
-
-import org.nuiton.eugene.*;
-import java.util.Collection;
-import java.util.Iterator;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.eugene.models.object.ObjectModel;
-import org.nuiton.eugene.models.object.ObjectModelAttribute;
-import org.nuiton.eugene.models.object.xml.ObjectModelBuilderHelper;
-import org.nuiton.eugene.models.object.ObjectModelClass;
-import org.nuiton.eugene.models.object.ObjectModelClassifier;
-import org.nuiton.eugene.models.object.ObjectModelElement;
-import org.nuiton.eugene.models.object.ObjectModelEnumeration;
-import org.nuiton.eugene.models.object.ObjectModelInterface;
-import org.nuiton.eugene.models.object.ObjectModelOperation;
-import org.nuiton.eugene.models.object.ObjectModelParameter;
-import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl;
-import org.nuiton.eugene.models.object.xml.ObjectModelImpl;
-
-/**
- *
- * @author fdesbois
- * @deprecated use org.nuiton.eugene.java.JavaBuilder
- */
-@Deprecated
-public abstract class JavaBuilder {
-
- private static final Log log = LogFactory.getLog(JavaBuilder.class);
-
- protected ObjectModelImpl objectModel;
-
- private static ObjectModelBuilderHelper helper = new ObjectModelBuilderHelper();
-
- public JavaBuilder(String modelName) {
- this.objectModel = new ObjectModelImpl();
- this.objectModel.setName(modelName);
- }
-
- public ObjectModel getModel() {
- return objectModel;
- }
-
- public ObjectModelBuilderHelper getHelper() {
- return helper;
- }
-
- protected ImportsManager getImportsManager(ObjectModelClassifier classifier) {
- ImportsManager manager = objectModel.getExtension(classifier.getQualifiedName(), ImportsManager.class);
- if (manager == null) {
- manager = new ImportsManager();
- objectModel.addExtension(classifier.getQualifiedName(), manager);
- }
- return manager;
- }
-
- public void addImportForClassifier(ObjectModelClassifier classifier, String imports) {
- ImportsManager manager = getImportsManager(classifier);
- manager.addImport(imports);
- }
-
- public void addImportForClassifier(ObjectModelClassifier classifier, Class<?> imports) {
- ImportsManager manager = getImportsManager(classifier);
- manager.addImport(imports);
- }
-
- public void addClassToModel(ObjectModelClass clazz) {
- objectModel.addClass((ObjectModelClassImpl)clazz);
- ImportsManager manager = setImports(clazz);
-
- // extension for superclass
- Iterator<ObjectModelClass> it = clazz.getSuperclasses().iterator();
- if (it.hasNext()) {
- ObjectModelClass superclass = it.next();
- manager.addImport(superclass.getQualifiedName());
- }
- }
-
- private ImportsManager setImports(ObjectModelClassifier classifier) {
- ImportsManager manager = getImportsManager(classifier);
- // attributes
- for (ObjectModelAttribute attribute : classifier.getAttributes()) {
- if (log.isInfoEnabled()) {
- log.info("attribute add import for : " + attribute.getType());
- }
- setImportsForType(manager, attribute.getType());
- setImportsForType(manager, attribute.getDefaultValue());
- }
- // implemented interfaces
- for (ObjectModelInterface interfacez : classifier.getInterfaces()) {
- manager.addImport(interfacez.getQualifiedName());
- }
- // operations
- for (ObjectModelOperation operation : classifier.getOperations()) {
- setImportsForType(manager, operation.getReturnType());
- for (ObjectModelParameter parameter : operation.getParameters()) {
- setImportsForType(manager, parameter.getType());
- }
- }
- return manager;
- }
-
- private void setImportsForType(ImportsManager manager, String type) {
- for (String oneType : GeneratorUtil.getTypesList(type)) {
- manager.addImport(oneType);
- }
- }
-
- public abstract void build();
-}
Deleted: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaClassFile.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaClassFile.java 2009-10-29 18:53:26 UTC (rev 671)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaClassFile.java 2009-10-29 19:02:32 UTC (rev 672)
@@ -1,21 +0,0 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-
-package org.nuiton.eugene.models.object.builder;
-
-import org.nuiton.eugene.models.object.ObjectModelClass;
-import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl;
-
-/**
- *
- * @author fdesbois
- */
-public class JavaClassFile extends JavaFile<ObjectModelClassImpl, ObjectModelClass> {
-
- public JavaClassFile(ObjectModelClass clazz) {
- super(clazz);
- }
-
-}
Deleted: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaFile.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaFile.java 2009-10-29 18:53:26 UTC (rev 671)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaFile.java 2009-10-29 19:02:32 UTC (rev 672)
@@ -1,40 +0,0 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-
-package org.nuiton.eugene.models.object.builder;
-
-import java.io.File;
-import org.nuiton.eugene.ImportsManager;
-import org.nuiton.eugene.models.object.ObjectModelClassifier;
-import org.nuiton.eugene.models.object.xml.ObjectModelClassifierImpl;
-
-/**
- *
- * @author fdesbois
- */
-public abstract class JavaFile<O extends ObjectModelClassifierImpl, I extends ObjectModelClassifier> {
-
- protected O classifier;
-
- protected ImportsManager importsManager;
-
- public JavaFile(I classifier) {
- this.classifier = (O) classifier;
- this.importsManager = new ImportsManager();
- }
-
- public I getClassifier() {
- return (I) this.classifier;
- }
-
- public void addImport(String imports) {
- importsManager.addImport(imports);
- }
-
- public void addImport(Class<?> imports) {
- importsManager.addImport(imports);
- }
-
-}
Modified: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderHelper.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderHelper.java 2009-10-29 18:53:26 UTC (rev 671)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderHelper.java 2009-10-29 19:02:32 UTC (rev 672)
@@ -21,13 +21,6 @@
import org.nuiton.eugene.models.object.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl;
-import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl;
-import org.nuiton.eugene.models.object.xml.ObjectModelClassifierImpl;
-import org.nuiton.eugene.models.object.xml.ObjectModelImplRef;
-import org.nuiton.eugene.models.object.xml.ObjectModelInterfaceImpl;
-import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl;
-import org.nuiton.eugene.models.object.xml.ObjectModelParameterImpl;
/**
* class that help to build java class or interface object.
Property changes on: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderHelper.java
___________________________________________________________________
Added: svn:keywords
+ Author Revision Date
Property changes on: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Revision
Modified: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java 2009-10-29 18:53:26 UTC (rev 671)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java 2009-10-29 19:02:32 UTC (rev 672)
@@ -8,8 +8,15 @@
/*{generator option: parentheses = false}*/
/*{generator option: writeString = +}*/
/**
+ * TestBuilder
*
+ * Created: 25 oct. 2009
+ *
* @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
*/
public class TestBuilder extends JavaBuilder {
Property changes on: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java
___________________________________________________________________
Added: svn:keywords
+ Author Revision Date
Modified: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestReader.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestReader.java 2009-10-29 18:53:26 UTC (rev 671)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestReader.java 2009-10-29 19:02:32 UTC (rev 672)
@@ -2,7 +2,6 @@
package org.nuiton.eugene.test.generator;
import java.io.File;
-import org.nuiton.eugene.models.object.builder.JavaBuilder;
import org.nuiton.eugene.ModelReader;
import org.nuiton.eugene.models.object.ObjectModel;
Property changes on: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestReader.java
___________________________________________________________________
Added: svn:keywords
+ Author Revision Date
1
0
r671 - in branches/1.1.0-Javabuilder: eugene eugene/src/main/java/org/nuiton/eugene eugene/src/main/java/org/nuiton/eugene/java eugene-test eugene-test/src/main/java/org/nuiton/eugene/test/generator
by fdesbois@users.nuiton.org 29 Oct '09
by fdesbois@users.nuiton.org 29 Oct '09
29 Oct '09
Author: fdesbois
Date: 2009-10-29 19:53:26 +0100 (Thu, 29 Oct 2009)
New Revision: 671
Added:
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/java/
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java
Modified:
branches/1.1.0-Javabuilder/eugene-test/pom.xml
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java
branches/1.1.0-Javabuilder/eugene/pom.xml
Log:
- Change position of classes specific for Java generation
- Add processor plugin to parse JavaGenerator template
Modified: branches/1.1.0-Javabuilder/eugene/pom.xml
===================================================================
--- branches/1.1.0-Javabuilder/eugene/pom.xml 2009-10-29 18:53:22 UTC (rev 670)
+++ branches/1.1.0-Javabuilder/eugene/pom.xml 2009-10-29 18:53:26 UTC (rev 671)
@@ -233,6 +233,26 @@
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.nuiton.processor</groupId>
+ <artifactId>maven-processor-plugin</artifactId>
+ <version>${processor.version}</version>
+ <executions>
+ <execution>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>process</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <includes>org/nuiton/eugene/java/JavaGenerator.java</includes>
+ <filters>
+ org.nuiton.processor.filters.GeneratorTemplatesFilter
+ </filters>
+ </configuration>
+ </plugin>
+
</plugins>
</build>
</profile>
Copied: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java (from rev 669, branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaBuilder.java)
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java (rev 0)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java 2009-10-29 18:53:26 UTC (rev 671)
@@ -0,0 +1,326 @@
+package org.nuiton.eugene.java;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.GeneratorUtil;
+import org.nuiton.eugene.ImportsManager;
+import org.nuiton.eugene.models.object.*;
+import org.nuiton.eugene.models.object.xml.*;
+
+/**
+ * JavaBuilder
+ * <p/>
+ * Created: 29 oct. 2009
+ *
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ * <p/>
+ */
+public class JavaBuilder {
+
+ private static final Log log = LogFactory.getLog(JavaBuilder.class);
+
+ protected ObjectModelImpl model;
+
+ public JavaBuilder(String modelName) {
+ this.model = new ObjectModelImpl();
+ this.model.setName(modelName);
+ }
+
+ public ObjectModel getModel() {
+ return this.model;
+ }
+
+ protected ImportsManager getImportsManager(ObjectModelClassifier classifier) {
+ ImportsManager manager = model.getExtension(classifier.getQualifiedName(), ImportsManager.class);
+ if (manager == null) {
+ manager = new ImportsManager();
+ model.addExtension(classifier.getQualifiedName(), manager);
+ if (log.isDebugEnabled()) {
+ log.debug("Add new importsManager for : " + classifier.getQualifiedName());
+ }
+ }
+ return manager;
+ }
+
+ /*protected void addImportForClassifier(ObjectModelClassifier classifier, String imports) {
+ ImportsManager manager = getImportsManager(classifier);
+ manager.addImport(imports);
+ }
+
+ protected void addImportForClassifier(ObjectModelClassifier classifier, Class<?> imports) {
+ ImportsManager manager = getImportsManager(classifier);
+ manager.addImport(imports);
+ }*/
+
+ public void addImport(ObjectModelClassifier classifier, String imports) {
+ ImportsManager manager = getImportsManager(classifier);
+ for (String oneType : GeneratorUtil.getTypesList(imports)) {
+ manager.addImport(oneType);
+ if (log.isDebugEnabled()) {
+ log.debug("Add import for : " + classifier.getQualifiedName() + " _ import: " + oneType);
+ }
+ }
+ }
+
+ public ObjectModelClass createClass(String name, String packageName) {
+ ObjectModelClassImpl clazz =
+ (ObjectModelClassImpl)ObjectModelBuilderHelper.createClass(name, packageName);
+ model.addClass(clazz);
+ return clazz;
+ }
+
+ public ObjectModelClass createAbstractClass(String name, String packageName) {
+ ObjectModelClassImpl clazz =
+ (ObjectModelClassImpl)ObjectModelBuilderHelper.createAbstractClass(name, packageName);
+ model.addClass(clazz);
+ return clazz;
+ }
+
+ public void setSuperClass(ObjectModelClass classifier, String superclassQualifiedName) {
+ ObjectModelClassImpl impl = (ObjectModelClassImpl) classifier;
+ impl.getSuperclasses().clear(); // suppress all existing superclass: only one can be set for java
+ ObjectModelBuilderHelper.addSuperclass(impl, superclassQualifiedName);
+ this.addImport(classifier, superclassQualifiedName);
+ }
+
+ public void addInterface(ObjectModelClassifier classifier, String interfaceQualifiedName) {
+ ObjectModelBuilderHelper.addInterface(classifier, interfaceQualifiedName);
+ this.addImport(classifier, interfaceQualifiedName);
+ }
+
+ /**
+ * Add attribute to a classifier with properties in parse string.
+ * Use java syntax to define properties of the attribute :
+ * ex : "public static final java.util.Date maDate = new java.util.Date()"
+ *
+ * @param classifier the classifier to add the attribute
+ * @param parse the properties of the attribute to parse
+ * @return a new ObjectModelAttribute corresponding to the new attribute added to the classifier
+ * @throws IllegalArgumentException
+ */
+ public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String parse)
+ throws IllegalArgumentException {
+ ObjectModelAttributeImpl attribute = new ObjectModelAttributeImpl();
+ String result = parse;
+ try {
+ // Visibility
+ if (parse.contains("public ")) {
+ attribute.setVisibility("public");
+ result = parse.replace("public ", "");
+ } else if (parse.contains("protected ")) {
+ attribute.setVisibility("protected");
+ result = parse.replace("protected ", "");
+ } else if (parse.contains("private ")) {
+ attribute.setVisibility("private");
+ result = parse.replace("private ", "");
+ } else {
+ attribute.setVisibility("");
+ }
+
+ // Static
+ if (result.contains("static ")) {
+ attribute.setStatic(true);
+ result = result.replace("static ", "");
+ }
+ // Final
+ if (result.contains("final ")) {
+ attribute.setFinal(true);
+ result = result.replace("final ", "");
+ }
+
+ // Type
+ int typeIndex = result.indexOf(" ");
+ String type = result.substring(0, typeIndex).trim();
+ attribute.setType(type);
+ result = result.substring(typeIndex + 1);
+
+ // Name
+ int nameIndex = result.indexOf("=");
+ String name = "";
+ if (nameIndex != -1) {
+ name = result.substring(0, nameIndex).trim();
+ result = result.substring(nameIndex);
+
+ // DefaultValue
+ int equalsIndex = result.indexOf("=");
+ String value = result.substring(equalsIndex + 1).trim();
+ attribute.setDefaultValue(value);
+
+ //if (value.contains("new ")) {
+ this.addImport(classifier, value);
+ //}
+
+ } else { // Il ne reste que le nom si pas de =
+ name = result;
+ }
+ attribute.setName(name);
+
+ ObjectModelClassifierImpl classifierImpl = (ObjectModelClassifierImpl) classifier;
+ classifierImpl.addAttribute(attribute);
+ this.addImport(classifier, attribute.getType());
+ } catch (StringIndexOutOfBoundsException eee) {
+ throw new IllegalArgumentException("Can't add Attribute : Illegal parse parameter : " +
+ "input = " + parse + " _ current = " + result, eee);
+ }
+ return attribute;
+ }
+
+ public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, ObjectModelAttribute attribute) {
+ this.addImport(classifier, attribute.getType());
+ return ObjectModelBuilderHelper.addAttribute(classifier, attribute.getName(), attribute.getType(),
+ attribute.getDefaultValue(), attribute.getVisibility(), attribute.isStatic(), attribute.isFinal());
+ }
+
+ public ObjectModelOperation addConstructor(ObjectModelClass clazz, String visibility) {
+ return ObjectModelBuilderHelper.addOperation(clazz, visibility, clazz.getName(), null);
+ }
+
+ /**
+ * Attention ne marche pas pour les constructeur !!!
+ * Attention ne marche pas pour les generic du type : <T extends Plop> T myMethod !!!
+ * @param classifier
+ * @param parse
+ * @return
+ * @throws IllegalArgumentException
+ */
+ public ObjectModelOperation addOperation(ObjectModelClassifier classifier, String parse)
+ throws IllegalArgumentException {
+ ObjectModelOperationImpl operation = new ObjectModelOperationImpl();
+ String result = "";
+
+ try {
+ // Visibility
+ if (parse.contains("public ")) {
+ operation.setVisibility("public");
+ result = parse.replace("public ", "");
+ } else if (parse.contains("protected ")) {
+ operation.setVisibility("protected");
+ result = parse.replace("protected ", "");
+ } else if (parse.contains("private ")) {
+ operation.setVisibility("private");
+ result = parse.replace("private ", "");
+ } else {
+ operation.setVisibility("");
+ }
+
+ // Static
+ if (result.contains("static ")) {
+ operation.setStatic(true);
+ result = result.replace("static ", "");
+ }
+ // Abstract
+ if (result.contains("abstract ")) {
+ operation.setAbstract(true);
+ result = result.replace("abstract ", "");
+ }
+
+ // Return Parameter
+ int typeIndex = result.indexOf(" ");
+ String type = result.substring(0, typeIndex).trim();
+ result = result.substring(typeIndex + 1);
+
+ // TROP COMPLEXE pour les generic du type <T extends Plop> T myMethod
+ /*if (log.isDebugEnabled()) {
+ log.debug ("type : " + type + " _ result= " + result);
+ }
+ if (type.contains("<")) { // Generic : <T extends Plop> T myMethod
+ int endGeneric = result.indexOf(">"); // index de fin du generic
+ type += result.substring(0, endGeneric).trim(); // type = <T extends Plop>
+ if (log.isDebugEnabled()) {
+ log.debug ("type : " + type + " _ result= " + result);
+ }
+ result = result.substring(endGeneric + 1).trim(); // result = T myMethod
+ if (log.isDebugEnabled()) {
+ log.debug ("type : " + type + " _ result= " + result);
+ }
+ typeIndex = result.indexOf(" ");
+ type += " " + result.substring(0, typeIndex).trim(); // type = <T extends Plop> T
+ if (log.isDebugEnabled()) {
+ log.debug ("type : " + type + " _ result= " + result);
+ }
+ result = result.substring(typeIndex + 1); // result = myMethod
+ if (log.isDebugEnabled()) {
+ log.debug ("type : " + type + " _ result= " + result);
+ }
+ }*/
+ ObjectModelParameterImpl returnParameter = new ObjectModelParameterImpl();
+ returnParameter.setType(type);
+ operation.setReturnParameter(returnParameter);
+
+ if (log.isDebugEnabled()) {
+ log.debug("parse before name : " + result);
+ }
+
+ int nameIndex = result.indexOf("(");
+ String methodName = "";
+ if (nameIndex != -1) {
+ methodName = result.substring(0, nameIndex).trim();
+ result = result.substring(nameIndex);
+
+ // Input parameters
+ if (result.contains("(")) {
+ int parentheseIndex = result.indexOf("(");
+ int parentheseEndIndex = result.indexOf(")");
+ result = result.substring(parentheseIndex + 1, parentheseEndIndex);
+
+ String paramName = "";
+ for (String param : result.split(",")) {
+ typeIndex = param.indexOf(" ");
+ type = param.substring(0, typeIndex).trim();
+ paramName = param.substring(typeIndex + 1).trim();
+
+ ObjectModelParameterImpl parameter = new ObjectModelParameterImpl();
+ parameter.setType(type);
+ parameter.setName(paramName);
+ operation.addParameter(parameter);
+ }
+ }
+
+ } else { // Il ne reste que le nom si pas de (
+ methodName = result;
+ }
+ operation.setName(methodName);
+
+ // Add operation to Classifier
+ ObjectModelClassifierImpl classifierImpl = (ObjectModelClassifierImpl) classifier;
+ classifierImpl.addOperation(operation);
+ // imports for returnType
+ this.addImport(classifier, operation.getReturnType());
+ // imports for inputParameters
+ for (ObjectModelParameter parameter : operation.getParameters()) {
+ this.addImport(classifier, parameter.getType());
+ }
+ } catch (StringIndexOutOfBoundsException eee) {
+ throw new IllegalArgumentException("Can't add Operation : Illegal parse parameter : " +
+ "input = " + parse + " _ current = " + result, eee);
+ }
+ return operation;
+ }
+
+ public ObjectModelOperation addOperation(ObjectModelClassifier classifier, String visibility,
+ String type, String name, String... inputParameters) {
+
+ return ObjectModelBuilderHelper.addOperation(classifier, visibility, name, type, inputParameters);
+ }
+
+ public ObjectModelParameter addParameter(ObjectModelOperation operation, String type, String name) {
+ ObjectModelParameter param = ObjectModelBuilderHelper.addParameter(operation, type, name);
+ this.addImport((ObjectModelClassifier) operation.getDeclaringElement(), type);
+ return param;
+ }
+
+ public void addException(ObjectModelOperation operation, String exception) {
+ ObjectModelBuilderHelper.addException(operation, exception);
+ this.addImport((ObjectModelClassifier) operation.getDeclaringElement(), exception);
+ }
+
+ public void setOperationBody(ObjectModelOperation operation, String body) {
+ ObjectModelBuilderHelper.setOperationBody(operation, body);
+ }
+
+
+}
Property changes on: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java
___________________________________________________________________
Added: svn:mergeinfo
+
Copied: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java (from rev 668, branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaGenerator.java)
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java (rev 0)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java 2009-10-29 18:53:26 UTC (rev 671)
@@ -0,0 +1,203 @@
+
+package org.nuiton.eugene.java;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.Writer;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Set;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.GeneratorUtil;
+import org.nuiton.eugene.ImportsManager;
+import org.nuiton.eugene.ObjectModelGenerator;
+import org.nuiton.eugene.models.object.ObjectModelAttribute;
+import org.nuiton.eugene.models.object.ObjectModelClass;
+import org.nuiton.eugene.models.object.ObjectModelClassifier;
+import org.nuiton.eugene.models.object.ObjectModelInterface;
+import org.nuiton.eugene.models.object.ObjectModelOperation;
+import org.nuiton.eugene.models.object.ObjectModelParameter;
+
+/**
+ * JavaGenerator
+ *
+ * Created: 22 oct. 2009
+ *
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+public class JavaGenerator extends ObjectModelGenerator {
+
+ private static final Log log = LogFactory.getLog(JavaGenerator.class);
+
+ @Override
+ public String getFilenameForClass(ObjectModelClass clazz) {
+ return clazz.getQualifiedName().replace('.', File.separatorChar) + ".java";//return clazz.getName() + ".java";
+ }
+
+ @Override
+ public void generateFromClass(Writer output, ObjectModelClass clazz) throws IOException {
+
+ if (log.isInfoEnabled()) {
+ log.info("generate : " + clazz.getName());
+ }
+
+ this.generateHeader(output, clazz); // Imports, package et documentation
+
+ String abstractStr = clazz.isAbstract() ? " abstract " : " ";
+ String className = clazz.getName();
+
+ String extend = "";
+ Iterator<ObjectModelClass> j = clazz.getSuperclasses().iterator();
+ if (j.hasNext()) {
+ ObjectModelClassifier p = j.next();
+ extend += GeneratorUtil.getSimpleName(p.getQualifiedName());
+ }
+
+ String implement = "";
+ for (Iterator<ObjectModelInterface> i = clazz.getInterfaces().iterator(); i.hasNext();) {
+ ObjectModelClassifier parentInterface = i.next();
+ implement += GeneratorUtil.getSimpleName(parentInterface.getQualifiedName());
+ if (i.hasNext()) {
+ implement += ", ";
+ }
+ }
+
+/*{
+public<%=abstractStr%>class <%=className%>}*/
+
+/*
+ * Définition de la super classe : il ne doit y avoir qu'une
+ */
+ if (extend.length() > 0) {
+/*{ extends <%=extend%>}*/
+ }
+
+ if (implement.length() > 0) {
+/*{ implements <%=implement%> {
+
+}*/
+ } else {
+ /*{ {
+
+}*/
+ }
+
+ this.generateAttributes(output, clazz.getAttributes());
+ this.generateOperations(output, clazz.getOperations());
+/*{
+} //<%=clazz.getName()%>
+}*/
+ }
+
+ protected void generateHeader(Writer output, ObjectModelClassifier classifier) throws IOException {
+
+ String packageName = classifier.getPackageName();
+/*{package <%=packageName%>;
+
+}*/
+ // potentiel crash si imports non defini
+ // dans ce cas, probleme de config utilisateur ! obligation de passer par un builder ?
+ ImportsManager manager = getModel().getExtension(classifier.getQualifiedName(), ImportsManager.class);
+ for (String imports : manager.getImports(classifier.getPackageName())) {
+/*{import <%=imports%>;
+ }*/
+ }
+
+ }
+
+ protected void generateAttributes(Writer output, Collection<ObjectModelAttribute> attributes) throws IOException {
+
+ for (ObjectModelAttribute attr : attributes) {
+
+ if (attr.getDocumentation() != null && !attr.getDocumentation().isEmpty()) {
+/*{ /**
+ * <%=attr.getDocumentation()%>
+ *)
+}*/
+ }
+
+// String annotation = attr.getTagValue(TAG_ANNOTATION);
+// if (annotation != null && annotation.length() > 0) {
+///* <%=annotation%>
+//*/
+// }
+
+ String attrName = attr.getName();
+ String attrVisibility = attr.getVisibility();
+ String attrType = GeneratorUtil.getSimpleName(attr.getType());
+ String attrStatic = attr.isStatic() ? " static" : "";
+ String attrFinal = attr.isFinal() ? " final" : "";
+ String attrValue = attr.getDefaultValue() != null && !attr.getDefaultValue().isEmpty() ?
+ " = " + GeneratorUtil.getSimpleName(attr.getDefaultValue()) : "";
+
+/*{ <%=attrVisibility%><%=attrStatic%><%=attrFinal%> <%=attrType%> <%=attrName%><%=attrValue%>;
+}*/
+ }
+ }
+
+ protected void generateOperations(Writer output, Collection<ObjectModelOperation> operations) throws IOException {
+ for (ObjectModelOperation op : operations) {
+ String opName = op.getName();
+/*{ /**
+}*/
+ if (op.getDocumentation() != null && !op.getDocumentation().isEmpty()) {
+ String opDocumentation = op.getDocumentation();
+/*{ * <%=opName%> : <%=opDocumentation%>
+}*/
+ }
+ Collection<ObjectModelParameter> params = op.getParameters();
+ for (ObjectModelParameter param : params) {
+ String paramName = param.getName();
+ String paramDocumentation = param.getDocumentation();
+/*{ * @param <%=paramName%> <%=paramDocumentation%>
+ }*/
+ }
+ String opVisibility = op.getVisibility();
+ String opStatic = op.isStatic() ? "static " : "";
+ String opAbstract = op.isAbstract() ? "abstract " : "";
+
+ ObjectModelParameter returnParam = op.getReturnParameter();
+ String opReturn = "";
+ if (returnParam != null) {
+ opReturn = GeneratorUtil.getSimpleName(returnParam.getType()) + " ";
+ if (!opReturn.equals("void")) {
+ String paramDocumentation = returnParam.getDocumentation();
+/*{ * @return <%=paramDocumentation%>
+ }*/
+ }
+ }
+/*{ *)
+ <%=opVisibility%> <%=opStatic%><%=opAbstract%><%=opReturn%><%=opName%>(}*/
+ String comma = "";
+ for (ObjectModelParameter param : params) {
+ String paramName = param.getName();
+ String paramType = GeneratorUtil.getSimpleName(param.getType());
+/*{<%=comma%><%=paramType%> <%=paramName%>}*/
+ comma = ", ";
+ }
+/*{)}*/
+ Set<String> exceptions = op.getExceptions();
+ comma = " throws ";
+ for (String exception : exceptions) {
+/*{<%=comma%><%=exception%>}*/
+ comma = ", ";
+ }
+
+ if (!op.getBodyCode().isEmpty()) {
+/*{ {<%=op.getBodyCode()%>}
+
+}*/
+ } else {
+/*{;
+
+}*/
+ }
+ }
+ }
+
+}
Copied: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java (from rev 669, branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/OM2JavaTransformer.java)
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java (rev 0)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java 2009-10-29 18:53:26 UTC (rev 671)
@@ -0,0 +1,111 @@
+package org.nuiton.eugene.java;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.ImportsManager;
+import org.nuiton.eugene.ObjectModelTransformer;
+import org.nuiton.eugene.models.object.*;
+
+/**
+ * OM2JavaTransformer
+ * <p/>
+ * Created: 28 oct. 2009
+ *
+ * @author fdesbois
+ * @version $Revision$
+ * <p/>
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+public abstract class ObjectModelTransformerToJava extends ObjectModelTransformer<ObjectModel> {
+
+ private static final Log log = LogFactory.getLog(ObjectModelTransformerToJava.class);
+
+ private JavaBuilder builder;
+
+ public ObjectModelTransformerToJava() {
+ super(new JavaGenerator());
+ }
+
+ @Override
+ protected ObjectModel initOutputModel() {
+ if (log.isInfoEnabled()) {
+ log.debug("inputModelName = " + getModel().getName());
+ }
+ this.builder = new JavaBuilder(getModel().getName());
+ this.outputModel = builder.getModel();
+ return this.outputModel;
+ }
+
+ @Override
+ protected void debugOutputModel() {
+ if (log.isDebugEnabled()) {
+ log.debug("classes : " + getOutputModel().getClasses().size());
+ for (ObjectModelClass clazz : getOutputModel().getClasses()) {
+ log.debug(" class : " + clazz.getQualifiedName());
+ ImportsManager manager = getOutputModel().getExtension(clazz.getQualifiedName(), ImportsManager.class);
+ for (String imports : manager.getImports(clazz.getPackageName())) {
+ log.debug(" import : " + imports);
+ }
+ for (ObjectModelAttribute attribute : clazz.getAttributes()) {
+ log.debug(" attribute : " + attribute.getType() + " " + attribute.getName());
+ }
+ for (ObjectModelOperation operation : clazz.getOperations()) {
+ log.debug(" operation : " + operation.getReturnType() + " " + operation.getName());
+ }
+ }
+ }
+ }
+
+ protected ObjectModelClass createClass(String name, String packageName) {
+ return builder.createClass(name, packageName);
+ }
+
+ protected ObjectModelClass createAbstractClass(String name, String packageName) {
+ return builder.createAbstractClass(name, packageName);
+ }
+
+ protected void setSuperClass(ObjectModelClass classifier, String superclassQualifiedName) {
+ builder.setSuperClass(classifier, superclassQualifiedName);
+ }
+
+ protected void addInterface(ObjectModelClassifier classifier, String interfaceQualifiedName) {
+ builder.addInterface(classifier, interfaceQualifiedName);
+ }
+
+ protected ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String parse)
+ throws IllegalArgumentException {
+ return builder.addAttribute(classifier, parse);
+ }
+
+ protected ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, ObjectModelAttribute attribute) {
+ return builder.addAttribute(classifier, attribute);
+ }
+
+ protected ObjectModelOperation addConstructor(ObjectModelClass clazz, String visibility) {
+ return builder.addConstructor(clazz, visibility);
+ }
+
+ protected ObjectModelOperation addOperation(ObjectModelClassifier classifier, String parse)
+ throws IllegalArgumentException {
+ return builder.addOperation(classifier, parse);
+ }
+
+ protected ObjectModelOperation addOperation(ObjectModelClassifier classifier, String visibility,
+ String type, String name, String... inputParameters) {
+ return builder.addOperation(classifier, visibility, type, name, inputParameters);
+ }
+
+ protected ObjectModelParameter addParameter(ObjectModelOperation operation, String type, String name) {
+ return builder.addParameter(operation, type, name);
+ }
+
+ protected void addException(ObjectModelOperation operation, String exception) {
+ builder.addException(operation, exception);
+ }
+
+ protected void setOperationBody(ObjectModelOperation operation, String body) {
+ builder.setOperationBody(operation, body);
+ }
+
+}
Property changes on: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java
___________________________________________________________________
Added: svn:mergeinfo
+
Modified: branches/1.1.0-Javabuilder/eugene-test/pom.xml
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/pom.xml 2009-10-29 18:53:22 UTC (rev 670)
+++ branches/1.1.0-Javabuilder/eugene-test/pom.xml 2009-10-29 18:53:26 UTC (rev 671)
@@ -82,8 +82,7 @@
<configuration>
<includes>**/*.java</includes>
<filters>
- org.nuiton.processor.filters.GeneratorTemplatesFilter,
- org.nuiton.processor.filters.ActiveLogsCodeFilter
+ org.nuiton.processor.filters.GeneratorTemplatesFilter
</filters>
</configuration>
</plugin>
Modified: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java 2009-10-29 18:53:22 UTC (rev 670)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java 2009-10-29 18:53:26 UTC (rev 671)
@@ -2,7 +2,7 @@
import org.apache.commons.lang.StringUtils;
import org.nuiton.eugene.GeneratorUtil;
-import org.nuiton.eugene.java.OM2JavaTransformer;
+import org.nuiton.eugene.java.ObjectModelTransformerToJava;
import org.nuiton.eugene.models.object.*;
import java.beans.PropertyChangeListener;
@@ -26,7 +26,7 @@
* Mise a jour: $Date$
* par : $Author$
*/
-public class BeanTransformer extends OM2JavaTransformer {
+public class BeanTransformer extends ObjectModelTransformerToJava {
public BeanTransformer() {
super();
1
0
r670 - branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene
by fdesbois@users.nuiton.org 29 Oct '09
by fdesbois@users.nuiton.org 29 Oct '09
29 Oct '09
Author: fdesbois
Date: 2009-10-29 19:53:22 +0100 (Thu, 29 Oct 2009)
New Revision: 670
Removed:
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/
Log:
- Change position of classes specific for Java generation
- Add processor plugin to parse JavaGenerator template
1
0
r669 - in branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene: java test/generator
by fdesbois@users.nuiton.org 29 Oct '09
by fdesbois@users.nuiton.org 29 Oct '09
29 Oct '09
Author: fdesbois
Date: 2009-10-29 19:42:55 +0100 (Thu, 29 Oct 2009)
New Revision: 669
Modified:
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaBuilder.java
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/OM2JavaTransformer.java
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java
Log:
Continue translation BeanGenerator to BeanTransformer
Modified: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaBuilder.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaBuilder.java 2009-10-29 17:47:57 UTC (rev 668)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaBuilder.java 2009-10-29 18:42:55 UTC (rev 669)
@@ -301,6 +301,12 @@
return operation;
}
+ public ObjectModelOperation addOperation(ObjectModelClassifier classifier, String visibility,
+ String type, String name, String... inputParameters) {
+
+ return ObjectModelBuilderHelper.addOperation(classifier, visibility, name, type, inputParameters);
+ }
+
public ObjectModelParameter addParameter(ObjectModelOperation operation, String type, String name) {
ObjectModelParameter param = ObjectModelBuilderHelper.addParameter(operation, type, name);
this.addImport((ObjectModelClassifier) operation.getDeclaringElement(), type);
Modified: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/OM2JavaTransformer.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/OM2JavaTransformer.java 2009-10-29 17:47:57 UTC (rev 668)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/OM2JavaTransformer.java 2009-10-29 18:42:55 UTC (rev 669)
@@ -2,12 +2,9 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.eugene.GeneratorUtil;
import org.nuiton.eugene.ImportsManager;
import org.nuiton.eugene.ObjectModelTransformer;
import org.nuiton.eugene.models.object.*;
-import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl;
-import org.nuiton.eugene.models.object.xml.ObjectModelImpl;
/**
* OM2JavaTransformer
@@ -94,6 +91,11 @@
return builder.addOperation(classifier, parse);
}
+ protected ObjectModelOperation addOperation(ObjectModelClassifier classifier, String visibility,
+ String type, String name, String... inputParameters) {
+ return builder.addOperation(classifier, visibility, type, name, inputParameters);
+ }
+
protected ObjectModelParameter addParameter(ObjectModelOperation operation, String type, String name) {
return builder.addParameter(operation, type, name);
}
Modified: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java 2009-10-29 17:47:57 UTC (rev 668)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java 2009-10-29 18:42:55 UTC (rev 669)
@@ -174,11 +174,49 @@
}
// Add helper methods
+ if (hasMultipleAttribute) {
+ ObjectModelOperation getChild = addOperation(resultClass, "protected", "<T> T", "getChild",
+ "java.util.Collection<T>", "childs", "int", "index"); // params
+ setOperationBody(getChild, ""
+ /*{
+ if (childs != null) {
+ int i = 0;
+ for (T o : childs) {
+ if (index == i) {
+ return o;
+ }
+ i++;
+ }
+ }
+ return null;
+ }*/
+ );
+ }
+ if (hasEntity) {
+ ObjectModelOperation getEntity = addOperation(resultClass, "protected",
+ "<T extends org.nuiton.topia.persistence.TopiaEntity> T", // returnType
+ "getEntity",
+ "java.util.Collection<T>", "childs", "java.lang.String", "topiaId"); // params
+ setOperationBody(getEntity, ""
+ /*{
+ if (childs != null) {
+ for (T o : childs) {
+ if (topiaId.equals(o.getTopiaId())) {
+ return o;
+ }
+ }
+ }
+ return null;
+ }*/
+ );
+ }
+
+
// Add operations
for (ObjectModelOperation op : clazz.getOperations()) {
- ObjectModelOperation resultOperation = this.addOperation(resultClass,
+ ObjectModelOperation resultOperation = addOperation(resultClass,
op.getVisibility() + " abstract " + op.getReturnType() + " " + op.getName());
for (ObjectModelParameter param : op.getParameters()) {
@@ -190,6 +228,8 @@
addException(resultOperation, exception);
}
}
+
+
}
private void createForDTO(ObjectModelClass resultClass, ObjectModelClass inputClass) {
1
0
29 Oct '09
Author: fdesbois
Date: 2009-10-29 18:47:57 +0100 (Thu, 29 Oct 2009)
New Revision: 668
Added:
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaBuilder.java
branches/1.1.0-Javabuilder/eugene-test/src/main/models/dtotest2.objectmodel
Removed:
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaBuilderHelper.java
Modified:
branches/1.1.0-Javabuilder/eugene-test/nbactions.xml
branches/1.1.0-Javabuilder/eugene-test/pom.xml
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaGenerator.java
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/OM2JavaTransformer.java
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestReader.java
branches/1.1.0-Javabuilder/eugene-test/src/test/java/org/nuiton/eugene/java/JavaBuilderHelperTest.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelTransformer.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaBuilder.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderHelper.java
branches/1.1.0-Javabuilder/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java
Log:
- Fusion JavaBuilderHelper / JavaBuilder / OM2JavaTransformer for ObjectModel manipulation (with imports) -> JavaBuilder
- Refactor TestBuilder
- Optimize GeneratorUtil for imports managment
- Continue translation BeanGenerator to BeanTransformer
- Improve JavaGenerator usage
- Clean ObjectModelTransformer
Modified: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2009-10-29 13:32:03 UTC (rev 667)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2009-10-29 17:47:57 UTC (rev 668)
@@ -333,19 +333,23 @@
/**
*
+ * @deprecated use StringUtils.capitalize instead
* @param word
* @return
*/
+ @Deprecated
public static String toUpperCaseFirstLetter(String word) {
return capitalize(word);
}
/**
* Capitalizes a String changing the first letter to title case.
- *
+ *
+ * @deprecated use StringUtils.capitalize instead
* @param word word to Capitalize
* @return Capitalized word
*/
+ @Deprecated
public static String capitalize(String word) {
return StringUtils.capitalize(word);
}
@@ -593,7 +597,11 @@
* @return the simple name associated to the str given
*/
public static String getSimpleName(String str) {
- return str.replaceAll("\\w+\\.","");
+ if (str.startsWith("\"") && str.endsWith("\"")) {
+ return str;
+ }
+ //return str.replaceAll("[a-zA-Z]\\w*\\.","");
+ return str.replaceAll("\\p{Alpha}\\w*\\.","");
}
public static Set<String> getTypesList(String str) {
Modified: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelTransformer.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelTransformer.java 2009-10-29 13:32:03 UTC (rev 667)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelTransformer.java 2009-10-29 17:47:57 UTC (rev 668)
@@ -27,51 +27,43 @@
protected abstract O initOutputModel();
/**
+ * Le model associé au transformer est le model d'entree. Le modele de sortie
+ * peut etre initialiser via la methode {@link #initOutputModel()}. Il est également
+ * possible de surcharger la methode {@link #debugOutputModel()} pour verifier le resultat
+ * de la transformation.
* Par defaut la methode appelle la methode
* {@link #transformFromModel(ObjectModel)} puis boucle sur chaque
- * class en appelant la m?thode
- * {@link #generateFromClass(Writer, ObjectModelClass)} puis boucle sur chaque
- * interface en appelant a méthode
- * {@link #generateFromInterface(Writer, ObjectModelInterface)} et enfin sur chaque
- * énumération en appelant la méthode
- * {@link #generateFromEnumeration(Writer, ObjectModelEnumeration)}
- * Le nom de fichier est récupérer pour chacun d'eux en appelant la méthode
- * getFilenameFor.... La methode generateFrom... n'utilise pas le Writer
- * alors le fichier n'est pas généré, si on l'utilise m?me pour ne rien
- * écrire alors le fichier sera généré.
+ * class en appelant la methode
+ * {@link #transformFromClass(ObjectModelClass)} puis boucle sur chaque
+ * interface en appelant a methode
+ * {@link #transformFromInterface(ObjectModelInterface)} et enfin sur chaque
+ * enumeration en appelant la methode
+ * {@link #transformFromEnumeration(ObjectModelEnumeration)}
*
- * @param model
- * @param destDir
+ * @param model inputModel to transform
+ * @param destDir destination folder for generation after transformation
*/
@Override
public void generate(ObjectModel model, File destDir) {
- // generateFromModel
this.model = model; // inputModel
+
initOutputModel();
- //try {
- //String filename = getFilenameForModel(model);
transformFromElement(model, ObjectModelType.OBJECT_MODEL);
- // generateFromClassifier
+ // transformFromClassifier
transformFromElements(model.getClassifiers(), ObjectModelType.OBJECT_MODEL_CLASSIFIER);
- // generateFromInterface
+ // transformFromInterface
transformFromElements(model.getInterfaces(), ObjectModelType.OBJECT_MODEL_INTERFACE);
- // generateFromClass
+ // transformFromClass
transformFromElements(model.getClasses(), ObjectModelType.OBJECT_MODEL_CLASS);
- // generateFromEnumeration
+ // transformFromEnumeration
transformFromElements(model.getEnumerations(), ObjectModelType.OBJECT_MODEL_ENUMERATION);
- /*} catch (IOException eee) {
- if (log.isWarnEnabled()) {
- log.warn("Unable to generate for file", eee);
- }
- }*/
-
debugOutputModel();
outputGenerator.generate(getOutputModel(), destDir);
@@ -80,14 +72,13 @@
protected abstract void debugOutputModel();
/**
- * Parcours une collection d'éléments pour la génération suivant un type d'éléments.
+ * Parcours une collection d'éléments pour la transformation suivant un type d'éléments.
* Types possibles : ObjectModelClassifier, ObjectModelClass, ObjectModelInterface et
* ObjectModelEnumeration.
- * Deux méthodes dépendent du type et peuvent être surchargées :
- * getFilenameForXXX et generateFromXXX (XXX étant un type prédéfini pour une méthode existante).
+ * Une méthode dépend du type et peut être surchargée :
+ * transformFromXXX (XXX étant un type prédéfini pour une méthode existante).
*
* @param elements Collection d'éléments d'un des types ci-dessus
- * @param destDir dossier de destination pour le fichier généré
* @param type type explicite d'ObjectModel
* @see ObjectModelType
*/
@@ -95,22 +86,6 @@
ObjectModelType type) {
for (ObjectModelElement element : elements) {
- String filename = "";
- // Filename depends on type of element (Classifier, Class, Interface or Enumeration)
- switch (type) {
- case OBJECT_MODEL_CLASSIFIER:
- filename = getFilenameForClassifier((ObjectModelClassifier) element);
- break;
- case OBJECT_MODEL_INTERFACE:
- filename = getFilenameForInterface((ObjectModelInterface) element);
- break;
- case OBJECT_MODEL_CLASS:
- filename = getFilenameForClass((ObjectModelClass) element);
- break;
- case OBJECT_MODEL_ENUMERATION:
- filename = getFilenameForEnumeration((ObjectModelEnumeration) element);
- }
-
transformFromElement(element, type);
}
}
@@ -119,11 +94,9 @@
* Génération pour un élément du modèle (ou le modèle lui-même).
* Types possibles : ObjectModel, ObjectModelClassifier, ObjectModelClass,
* ObjectModelInterface et ObjectModelEnumeration.
- * La méthode generateFromXXX dépend du type d'élément et peut être surchargée.
+ * La méthode transformFromXXX dépend du type d'élément et peut être surchargée.
*
* @param element element à généré
- * @param destDir dossier de destination
- * @param filename nom du fichier de sortie
* @param type type d'ObjectModel
* @see ObjectModelType
*/
@@ -148,67 +121,6 @@
}
}
- /**
- * Par defaut cette methode retourne le getName du model. Si l'on souhaite
- * utiliser la methode generateFromModel il vaut mieux surcharger cette
- * methode
- *
- * @param model
- * @return
- */
- public String getFilenameForModel(ObjectModel model) {
- return model.getName();
- }
-
- /**
- * Par defaut cette methode retourne le QualifiedName convertie en chemin
- * par exemple pour org.codelutin.Toto on aurait org/codelutin/Toto
- *
- * @param model
- * @param packageName
- * @return
- */
- public String getFilenameForPackage(ObjectModel model, String packageName) {
- return packageName.replace('.', File.separatorChar);
- }
-
- /**
- * Par defaut cette methode retourne le QualifiedName convertie en chemin
- * par exemple pour org.codelutin.Toto on aurait org/codelutin/Toto
- *
- * @param interfacez
- * @return
- */
- public String getFilenameForInterface(ObjectModelInterface interfacez) {
- return interfacez.getQualifiedName().replace('.', File.separatorChar);
- }
-
- /**
- * Par defaut cette methode retourne le QualifiedName convertie en chemin
- * par exemple pour org.codelutin.Toto on aurait org/codelutin/Toto
- *
- * @param clazz
- * @return
- */
- public String getFilenameForClass(ObjectModelClass clazz) {
- return clazz.getQualifiedName().replace('.', File.separatorChar);
- }
-
- /**
- * Par defaut cette methode retourne le QualifiedName convertie en chemin
- * par exemple pour org.codelutin.Toto on aurait org/codelutin/Toto
- *
- * @param clazz
- * @return
- */
- public String getFilenameForClassifier(ObjectModelClassifier clazz) {
- return clazz.getQualifiedName().replace('.', File.separatorChar);
- }
-
- public String getFilenameForEnumeration(ObjectModelEnumeration enumeration) {
- return enumeration.getQualifiedName().replace('.', File.separatorChar);
- }
-
public void transformFromModel(ObjectModel model) {
}
Modified: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaBuilder.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaBuilder.java 2009-10-29 13:32:03 UTC (rev 667)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaBuilder.java 2009-10-29 17:47:57 UTC (rev 668)
@@ -22,7 +22,9 @@
/**
*
* @author fdesbois
+ * @deprecated use org.nuiton.eugene.java.JavaBuilder
*/
+@Deprecated
public abstract class JavaBuilder {
private static final Log log = LogFactory.getLog(JavaBuilder.class);
Modified: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderHelper.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderHelper.java 2009-10-29 13:32:03 UTC (rev 667)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderHelper.java 2009-10-29 17:47:57 UTC (rev 668)
@@ -41,33 +41,30 @@
*/
public class ObjectModelBuilderHelper {
- public static final boolean PROP_SET_STATIC = true;
- public static final boolean PROP_SET_NO_STATIC = false;
-
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(ObjectModelBuilderHelper.class);
- public ObjectModelClass createClass(String name, String packageName) {
+ public static ObjectModelClass createClass(String name, String packageName) {
ObjectModelClassImpl result = new ObjectModelClassImpl();
result.setName(name);
result.setPackage(packageName);
return result;
}
- public ObjectModelClass createAbstractClass(String name, String packageName) {
+ public static ObjectModelClass createAbstractClass(String name, String packageName) {
ObjectModelClassImpl result = (ObjectModelClassImpl) createClass(name,packageName);
result.setAbstract(true);
return result;
}
- public ObjectModelInterface createInterface(String name, String packageName) {
+ public static ObjectModelInterface createInterface(String name, String packageName) {
ObjectModelInterfaceImpl result = new ObjectModelInterfaceImpl();
result.setName(name);
result.setPackage(packageName);
return result;
}
- public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type, String value,
+ public static ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type, String value,
String visibility, boolean isStatic, boolean isFinal) {
ObjectModelAttributeImpl attribute = new ObjectModelAttributeImpl();
attribute.setFinal(isFinal);
@@ -82,33 +79,32 @@
return attribute;
}
- public ObjectModelAttribute addConstant(ObjectModelClassifier classifier, String name, String type, String value, String visibility) {
+ public static ObjectModelAttribute addConstant(ObjectModelClassifier classifier, String name, String type, String value, String visibility) {
return addAttribute(classifier, name, type, value, visibility, true, true);
}
- public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type, String value) {
+ public static ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type, String value) {
return addAttribute(classifier, name, type, value, "protected", false, false);
}
- public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type) {
+ public static ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type) {
return addAttribute(classifier, name, type, "", "protected", false, false);
}
- public ObjectModelOperation addOperation(ObjectModelClassifier clazz,
- String name, String returnType, String... inputParameters) {
+ public static ObjectModelOperation addOperation(ObjectModelClassifier clazz,
+ String visibility, String name, String returnType, String... inputParameters) {
ObjectModelOperationImpl result = new ObjectModelOperationImpl();
result.setName(name);
result.setName(name);
result.setVisibility("public");
- ObjectModelParameterImpl returnParameter = new ObjectModelParameterImpl();
- if (returnType == null) {
- returnType = "void";
- }
- returnParameter.setType(returnType);
+
+ if (returnType != null) {
+ ObjectModelParameterImpl returnParameter = new ObjectModelParameterImpl();
+ returnParameter.setType(returnType);
+ result.setReturnParameter(returnParameter);
+ }
- result.setReturnParameter(returnParameter);
-
int nbParameters = inputParameters.length;
if (nbParameters %2 != 0) {
throw new IllegalArgumentException("Unccorect number of parameters (" + nbParameters + ") : " +
@@ -126,12 +122,12 @@
return result;
}
- public void setOperationBody(ObjectModelOperation operation, String body) {
+ public static void setOperationBody(ObjectModelOperation operation, String body) {
ObjectModelOperationImpl operationImpl = (ObjectModelOperationImpl) operation;
operationImpl.setBodyCode(body);
}
- public void addInterface(ObjectModelClassifier classifier, String interfaceQualifiedName) {
+ public static void addInterface(ObjectModelClassifier classifier, String interfaceQualifiedName) {
ObjectModelClassifierImpl impl = (ObjectModelClassifierImpl) classifier;
ObjectModelImplRef interfacez = new ObjectModelImplRef();
@@ -140,7 +136,7 @@
impl.addInterface(interfacez);
}
- public void addSuperclass(ObjectModelClass clazz, String superclassQualifiedName) {
+ public static void addSuperclass(ObjectModelClass clazz, String superclassQualifiedName) {
ObjectModelClassImpl impl = (ObjectModelClassImpl) clazz;
ObjectModelImplRef superclass = new ObjectModelImplRef();
@@ -149,7 +145,7 @@
impl.addSuperclass(superclass);
}
- public ObjectModelParameter addParameter(ObjectModelOperation operation, String type, String name) {
+ public static ObjectModelParameter addParameter(ObjectModelOperation operation, String type, String name) {
ObjectModelOperationImpl impl = (ObjectModelOperationImpl) operation;
ObjectModelParameterImpl param = new ObjectModelParameterImpl();
param.setType(type);
@@ -158,7 +154,7 @@
return param;
}
- public void addException(ObjectModelOperation operation, String exception) {
+ public static void addException(ObjectModelOperation operation, String exception) {
ObjectModelOperationImpl impl = (ObjectModelOperationImpl) operation;
ObjectModelParameterImpl param = new ObjectModelParameterImpl();
param.setType(exception);
Modified: branches/1.1.0-Javabuilder/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java 2009-10-29 13:32:03 UTC (rev 667)
+++ branches/1.1.0-Javabuilder/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java 2009-10-29 17:47:57 UTC (rev 668)
@@ -94,6 +94,18 @@
result = GeneratorUtil.getSimpleName(str);
log.info(str + " -> " + result);
assertEquals(expResult, result);
+
+ str = "2.0";
+ expResult = "2.0";
+ result = GeneratorUtil.getSimpleName(str);
+ log.info(str + " -> " + result);
+ assertEquals(expResult, result);
+
+ str = "\"eric.chatellier\"";
+ expResult = "\"eric.chatellier\"";
+ result = GeneratorUtil.getSimpleName(str);
+ log.info(str + " -> " + result);
+ assertEquals(expResult, result);
}
@Test
Modified: branches/1.1.0-Javabuilder/eugene-test/nbactions.xml
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/nbactions.xml 2009-10-29 13:32:03 UTC (rev 667)
+++ branches/1.1.0-Javabuilder/eugene-test/nbactions.xml 2009-10-29 17:47:57 UTC (rev 668)
@@ -7,6 +7,7 @@
<goal>clean</goal>
<goal>install</goal>
<goal>-e</goal>
+ <goal>-Dlog4j.configuration=file:src/test/resources/log4j.properties</goal>
</goals>
</action>
</actions>
Modified: branches/1.1.0-Javabuilder/eugene-test/pom.xml
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/pom.xml 2009-10-29 13:32:03 UTC (rev 667)
+++ branches/1.1.0-Javabuilder/eugene-test/pom.xml 2009-10-29 17:47:57 UTC (rev 668)
@@ -93,12 +93,12 @@
<artifactId>maven-eugene-plugin</artifactId>
<version>${project.version}</version>
<executions>
- <!--execution>
+ <execution>
<id>Test Regression Generator</id>
<phase>generate-test-sources</phase>
<configuration>
<reader>org.nuiton.eugene.ObjectModelReader</reader>
- <includes>**/*.objectmodel</includes>
+ <includes>dtotest.objectmodel</includes>
<templates>org.nuiton.eugene.test.generator.BeanGenerator</templates>
<defaultPackage>org.nuiton.eugene.test</defaultPackage>
<extraClassPathDirectory>target/classes</extraClassPathDirectory>
@@ -109,13 +109,12 @@
<goals>
<goal>generate</goal>
</goals>
- </execution-->
+ </execution>
<execution>
<id>Test Java Generator</id>
<phase>generate-test-sources</phase>
<configuration>
<reader>org.nuiton.eugene.test.generator.TestReader</reader>
- <includes>**/*.objectmodel</includes>
<templates>org.nuiton.eugene.java.JavaGenerator</templates>
<defaultPackage>org.nuiton.eugene.test</defaultPackage>
<extraClassPathDirectory>target/classes</extraClassPathDirectory>
@@ -132,7 +131,7 @@
<phase>generate-test-sources</phase>
<configuration>
<reader>org.nuiton.eugene.ObjectModelReader</reader>
- <includes>**/*.objectmodel</includes>
+ <includes>dtotest2.objectmodel</includes>
<templates>org.nuiton.eugene.test.generator.BeanTransformer</templates>
<defaultPackage>org.nuiton.eugene.test</defaultPackage>
<extraClassPathDirectory>target/classes</extraClassPathDirectory>
@@ -145,6 +144,13 @@
</goals>
</execution>
</executions>
+ <dependencies>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.14</version>
+ </dependency>
+ </dependencies>
</plugin>
<!--plugin>
Added: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaBuilder.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaBuilder.java (rev 0)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaBuilder.java 2009-10-29 17:47:57 UTC (rev 668)
@@ -0,0 +1,320 @@
+package org.nuiton.eugene.java;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.GeneratorUtil;
+import org.nuiton.eugene.ImportsManager;
+import org.nuiton.eugene.models.object.*;
+import org.nuiton.eugene.models.object.xml.*;
+
+/**
+ * JavaBuilder
+ * <p/>
+ * Created: 29 oct. 2009
+ *
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ * <p/>
+ */
+public class JavaBuilder {
+
+ private static final Log log = LogFactory.getLog(JavaBuilder.class);
+
+ protected ObjectModelImpl model;
+
+ public JavaBuilder(String modelName) {
+ this.model = new ObjectModelImpl();
+ this.model.setName(modelName);
+ }
+
+ public ObjectModel getModel() {
+ return this.model;
+ }
+
+ protected ImportsManager getImportsManager(ObjectModelClassifier classifier) {
+ ImportsManager manager = model.getExtension(classifier.getQualifiedName(), ImportsManager.class);
+ if (manager == null) {
+ manager = new ImportsManager();
+ model.addExtension(classifier.getQualifiedName(), manager);
+ if (log.isDebugEnabled()) {
+ log.debug("Add new importsManager for : " + classifier.getQualifiedName());
+ }
+ }
+ return manager;
+ }
+
+ /*protected void addImportForClassifier(ObjectModelClassifier classifier, String imports) {
+ ImportsManager manager = getImportsManager(classifier);
+ manager.addImport(imports);
+ }
+
+ protected void addImportForClassifier(ObjectModelClassifier classifier, Class<?> imports) {
+ ImportsManager manager = getImportsManager(classifier);
+ manager.addImport(imports);
+ }*/
+
+ public void addImport(ObjectModelClassifier classifier, String imports) {
+ ImportsManager manager = getImportsManager(classifier);
+ for (String oneType : GeneratorUtil.getTypesList(imports)) {
+ manager.addImport(oneType);
+ if (log.isDebugEnabled()) {
+ log.debug("Add import for : " + classifier.getQualifiedName() + " _ import: " + oneType);
+ }
+ }
+ }
+
+ public ObjectModelClass createClass(String name, String packageName) {
+ ObjectModelClassImpl clazz =
+ (ObjectModelClassImpl)ObjectModelBuilderHelper.createClass(name, packageName);
+ model.addClass(clazz);
+ return clazz;
+ }
+
+ public ObjectModelClass createAbstractClass(String name, String packageName) {
+ ObjectModelClassImpl clazz =
+ (ObjectModelClassImpl)ObjectModelBuilderHelper.createAbstractClass(name, packageName);
+ model.addClass(clazz);
+ return clazz;
+ }
+
+ public void setSuperClass(ObjectModelClass classifier, String superclassQualifiedName) {
+ ObjectModelClassImpl impl = (ObjectModelClassImpl) classifier;
+ impl.getSuperclasses().clear(); // suppress all existing superclass: only one can be set for java
+ ObjectModelBuilderHelper.addSuperclass(impl, superclassQualifiedName);
+ this.addImport(classifier, superclassQualifiedName);
+ }
+
+ public void addInterface(ObjectModelClassifier classifier, String interfaceQualifiedName) {
+ ObjectModelBuilderHelper.addInterface(classifier, interfaceQualifiedName);
+ this.addImport(classifier, interfaceQualifiedName);
+ }
+
+ /**
+ * Add attribute to a classifier with properties in parse string.
+ * Use java syntax to define properties of the attribute :
+ * ex : "public static final java.util.Date maDate = new java.util.Date()"
+ *
+ * @param classifier the classifier to add the attribute
+ * @param parse the properties of the attribute to parse
+ * @return a new ObjectModelAttribute corresponding to the new attribute added to the classifier
+ * @throws IllegalArgumentException
+ */
+ public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String parse)
+ throws IllegalArgumentException {
+ ObjectModelAttributeImpl attribute = new ObjectModelAttributeImpl();
+ String result = parse;
+ try {
+ // Visibility
+ if (parse.contains("public ")) {
+ attribute.setVisibility("public");
+ result = parse.replace("public ", "");
+ } else if (parse.contains("protected ")) {
+ attribute.setVisibility("protected");
+ result = parse.replace("protected ", "");
+ } else if (parse.contains("private ")) {
+ attribute.setVisibility("private");
+ result = parse.replace("private ", "");
+ } else {
+ attribute.setVisibility("");
+ }
+
+ // Static
+ if (result.contains("static ")) {
+ attribute.setStatic(true);
+ result = result.replace("static ", "");
+ }
+ // Final
+ if (result.contains("final ")) {
+ attribute.setFinal(true);
+ result = result.replace("final ", "");
+ }
+
+ // Type
+ int typeIndex = result.indexOf(" ");
+ String type = result.substring(0, typeIndex).trim();
+ attribute.setType(type);
+ result = result.substring(typeIndex + 1);
+
+ // Name
+ int nameIndex = result.indexOf("=");
+ String name = "";
+ if (nameIndex != -1) {
+ name = result.substring(0, nameIndex).trim();
+ result = result.substring(nameIndex);
+
+ // DefaultValue
+ int equalsIndex = result.indexOf("=");
+ String value = result.substring(equalsIndex + 1).trim();
+ attribute.setDefaultValue(value);
+
+ //if (value.contains("new ")) {
+ this.addImport(classifier, value);
+ //}
+
+ } else { // Il ne reste que le nom si pas de =
+ name = result;
+ }
+ attribute.setName(name);
+
+ ObjectModelClassifierImpl classifierImpl = (ObjectModelClassifierImpl) classifier;
+ classifierImpl.addAttribute(attribute);
+ this.addImport(classifier, attribute.getType());
+ } catch (StringIndexOutOfBoundsException eee) {
+ throw new IllegalArgumentException("Can't add Attribute : Illegal parse parameter : " +
+ "input = " + parse + " _ current = " + result, eee);
+ }
+ return attribute;
+ }
+
+ public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, ObjectModelAttribute attribute) {
+ this.addImport(classifier, attribute.getType());
+ return ObjectModelBuilderHelper.addAttribute(classifier, attribute.getName(), attribute.getType(),
+ attribute.getDefaultValue(), attribute.getVisibility(), attribute.isStatic(), attribute.isFinal());
+ }
+
+ public ObjectModelOperation addConstructor(ObjectModelClass clazz, String visibility) {
+ return ObjectModelBuilderHelper.addOperation(clazz, visibility, clazz.getName(), null);
+ }
+
+ /**
+ * Attention ne marche pas pour les constructeur !!!
+ * Attention ne marche pas pour les generic du type : <T extends Plop> T myMethod !!!
+ * @param classifier
+ * @param parse
+ * @return
+ * @throws IllegalArgumentException
+ */
+ public ObjectModelOperation addOperation(ObjectModelClassifier classifier, String parse)
+ throws IllegalArgumentException {
+ ObjectModelOperationImpl operation = new ObjectModelOperationImpl();
+ String result = "";
+
+ try {
+ // Visibility
+ if (parse.contains("public ")) {
+ operation.setVisibility("public");
+ result = parse.replace("public ", "");
+ } else if (parse.contains("protected ")) {
+ operation.setVisibility("protected");
+ result = parse.replace("protected ", "");
+ } else if (parse.contains("private ")) {
+ operation.setVisibility("private");
+ result = parse.replace("private ", "");
+ } else {
+ operation.setVisibility("");
+ }
+
+ // Static
+ if (result.contains("static ")) {
+ operation.setStatic(true);
+ result = result.replace("static ", "");
+ }
+ // Abstract
+ if (result.contains("abstract ")) {
+ operation.setAbstract(true);
+ result = result.replace("abstract ", "");
+ }
+
+ // Return Parameter
+ int typeIndex = result.indexOf(" ");
+ String type = result.substring(0, typeIndex).trim();
+ result = result.substring(typeIndex + 1);
+
+ // TROP COMPLEXE pour les generic du type <T extends Plop> T myMethod
+ /*if (log.isDebugEnabled()) {
+ log.debug ("type : " + type + " _ result= " + result);
+ }
+ if (type.contains("<")) { // Generic : <T extends Plop> T myMethod
+ int endGeneric = result.indexOf(">"); // index de fin du generic
+ type += result.substring(0, endGeneric).trim(); // type = <T extends Plop>
+ if (log.isDebugEnabled()) {
+ log.debug ("type : " + type + " _ result= " + result);
+ }
+ result = result.substring(endGeneric + 1).trim(); // result = T myMethod
+ if (log.isDebugEnabled()) {
+ log.debug ("type : " + type + " _ result= " + result);
+ }
+ typeIndex = result.indexOf(" ");
+ type += " " + result.substring(0, typeIndex).trim(); // type = <T extends Plop> T
+ if (log.isDebugEnabled()) {
+ log.debug ("type : " + type + " _ result= " + result);
+ }
+ result = result.substring(typeIndex + 1); // result = myMethod
+ if (log.isDebugEnabled()) {
+ log.debug ("type : " + type + " _ result= " + result);
+ }
+ }*/
+ ObjectModelParameterImpl returnParameter = new ObjectModelParameterImpl();
+ returnParameter.setType(type);
+ operation.setReturnParameter(returnParameter);
+
+ if (log.isDebugEnabled()) {
+ log.debug("parse before name : " + result);
+ }
+
+ int nameIndex = result.indexOf("(");
+ String methodName = "";
+ if (nameIndex != -1) {
+ methodName = result.substring(0, nameIndex).trim();
+ result = result.substring(nameIndex);
+
+ // Input parameters
+ if (result.contains("(")) {
+ int parentheseIndex = result.indexOf("(");
+ int parentheseEndIndex = result.indexOf(")");
+ result = result.substring(parentheseIndex + 1, parentheseEndIndex);
+
+ String paramName = "";
+ for (String param : result.split(",")) {
+ typeIndex = param.indexOf(" ");
+ type = param.substring(0, typeIndex).trim();
+ paramName = param.substring(typeIndex + 1).trim();
+
+ ObjectModelParameterImpl parameter = new ObjectModelParameterImpl();
+ parameter.setType(type);
+ parameter.setName(paramName);
+ operation.addParameter(parameter);
+ }
+ }
+
+ } else { // Il ne reste que le nom si pas de (
+ methodName = result;
+ }
+ operation.setName(methodName);
+
+ // Add operation to Classifier
+ ObjectModelClassifierImpl classifierImpl = (ObjectModelClassifierImpl) classifier;
+ classifierImpl.addOperation(operation);
+ // imports for returnType
+ this.addImport(classifier, operation.getReturnType());
+ // imports for inputParameters
+ for (ObjectModelParameter parameter : operation.getParameters()) {
+ this.addImport(classifier, parameter.getType());
+ }
+ } catch (StringIndexOutOfBoundsException eee) {
+ throw new IllegalArgumentException("Can't add Operation : Illegal parse parameter : " +
+ "input = " + parse + " _ current = " + result, eee);
+ }
+ return operation;
+ }
+
+ public ObjectModelParameter addParameter(ObjectModelOperation operation, String type, String name) {
+ ObjectModelParameter param = ObjectModelBuilderHelper.addParameter(operation, type, name);
+ this.addImport((ObjectModelClassifier) operation.getDeclaringElement(), type);
+ return param;
+ }
+
+ public void addException(ObjectModelOperation operation, String exception) {
+ ObjectModelBuilderHelper.addException(operation, exception);
+ this.addImport((ObjectModelClassifier) operation.getDeclaringElement(), exception);
+ }
+
+ public void setOperationBody(ObjectModelOperation operation, String body) {
+ ObjectModelBuilderHelper.setOperationBody(operation, body);
+ }
+
+
+}
Deleted: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaBuilderHelper.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaBuilderHelper.java 2009-10-29 13:32:03 UTC (rev 667)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaBuilderHelper.java 2009-10-29 17:47:57 UTC (rev 668)
@@ -1,202 +0,0 @@
-package org.nuiton.eugene.java;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.eugene.models.object.ObjectModelAttribute;
-import org.nuiton.eugene.models.object.ObjectModelClass;
-import org.nuiton.eugene.models.object.ObjectModelClassifier;
-import org.nuiton.eugene.models.object.ObjectModelOperation;
-import org.nuiton.eugene.models.object.xml.*;
-
-/**
- * JavaBuilderHelper
- * <p/>
- * Created: 28 oct. 2009
- *
- * @author fdesbois
- * @version $Revision$
- * <p/>
- * Mise a jour: $Date$
- * par : $Author$
- */
-public class JavaBuilderHelper extends ObjectModelBuilderHelper {
-
- private static final Log log = LogFactory.getLog(JavaBuilderHelper.class);
-
- /**
- * Add attribute to a classifier with properties in parse string.
- * Use java syntax to define properties of the attribute :
- * ex : "public static final java.util.Date maDate = new java.util.Date()"
- *
- * @param classifier the classifier to add the attribute
- * @param parse the properties of the attribute to parse
- * @return a new ObjectModelAttribute corresponding to the new attribute added to the classifier
- */
- public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String parse) {
- ObjectModelAttributeImpl attribute = new ObjectModelAttributeImpl();
-
- // Visibility
- if (parse.contains("public ")) {
- attribute.setVisibility("public");
- parse = parse.replace("public ", "");
- } else if (parse.contains("protected ")) {
- attribute.setVisibility("protected");
- parse = parse.replace("protected ", "");
- } else if (parse.contains("private ")) {
- attribute.setVisibility("private");
- parse = parse.replace("private ", "");
- } else {
- attribute.setVisibility("");
- }
-
- // Static
- if (parse.contains("static ")) {
- attribute.setStatic(true);
- parse = parse.replace("static ", "");
- }
- // Final
- if (parse.contains("final ")) {
- attribute.setFinal(true);
- parse = parse.replace("final ", "");
- }
-
- // Type
- int typeIndex = parse.indexOf(" ");
- String type = parse.substring(0, typeIndex).trim();
- attribute.setType(type);
- parse = parse.substring(typeIndex + 1);
-
- // Name
- int nameIndex = parse.indexOf("=");
- String name = "";
- if (nameIndex != -1) {
- name = parse.substring(0, nameIndex).trim();
- parse = parse.substring(nameIndex);
-
- // DefaultValue
- int equalsIndex = parse.indexOf("=");
- String value = parse.substring(equalsIndex + 1).trim();
- attribute.setDefaultValue(value);
-
- } else { // Il ne reste que le nom si pas de =
- name = parse;
- }
- attribute.setName(name);
-
- ObjectModelClassifierImpl classifierImpl = (ObjectModelClassifierImpl) classifier;
- classifierImpl.addAttribute(attribute);
- return attribute;
- }
-
- public ObjectModelOperation addOperation(ObjectModelClassifier classifier, String parse)
- throws IllegalArgumentException {
- ObjectModelOperationImpl operation = new ObjectModelOperationImpl();
- String result = "";
-
- try {
- // Visibility
- if (parse.contains("public ")) {
- operation.setVisibility("public");
- result = parse.replace("public ", "");
- } else if (parse.contains("protected ")) {
- operation.setVisibility("protected");
- result = parse.replace("protected ", "");
- } else if (parse.contains("private ")) {
- operation.setVisibility("private");
- result = parse.replace("private ", "");
- } else {
- operation.setVisibility("");
- }
-
- // Static
- if (result.contains("static ")) {
- operation.setStatic(true);
- result = result.replace("static ", "");
- }
- // Abstract
- if (result.contains("abstract ")) {
- operation.setAbstract(true);
- result = result.replace("abstract ", "");
- }
-
- // Return Parameter
- int typeIndex = result.indexOf(" ");
- String type = result.substring(0, typeIndex).trim();
- ObjectModelParameterImpl returnParameter = new ObjectModelParameterImpl();
- returnParameter.setType(type);
- operation.setReturnParameter(returnParameter);
- result = result.substring(typeIndex + 1);
-
- if (log.isDebugEnabled()) {
- log.debug("parse before name : " + result);
- }
-
- int nameIndex = result.indexOf("(");
- String methodName = "";
- if (nameIndex != -1) {
- methodName = result.substring(0, nameIndex).trim();
- result = result.substring(nameIndex);
-
- // Input parameters
- if (result.contains("(")) {
- int parentheseIndex = result.indexOf("(");
- int parentheseEndIndex = result.indexOf(")");
- result = result.substring(parentheseIndex + 1, parentheseEndIndex);
-
- String paramName = "";
- for (String param : result.split(",")) {
- typeIndex = param.indexOf(" ");
- type = param.substring(0, typeIndex).trim();
- paramName = param.substring(typeIndex + 1).trim();
-
- ObjectModelParameterImpl parameter = new ObjectModelParameterImpl();
- parameter.setType(type);
- parameter.setName(paramName);
- operation.addParameter(parameter);
- }
- }
-
- } else { // Il ne reste que le nom si pas de (
- methodName = result;
- }
- operation.setName(methodName);
-
- ObjectModelClassifierImpl classifierImpl = (ObjectModelClassifierImpl) classifier;
- classifierImpl.addOperation(operation);
- } catch (StringIndexOutOfBoundsException eee) {
- throw new IllegalArgumentException("Can't add Operation : Illegal parse parameter : " +
- "input = " + parse + " _ current = " + result, eee);
- }
- return operation;
- }
-
- public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, ObjectModelAttribute attribute) {
- ObjectModelAttributeImpl impl = new ObjectModelAttributeImpl();
- impl.setType(attribute.getType());
- impl.setName(attribute.getName());
- impl.setVisibility(attribute.getVisibility());
- impl.setFinal(attribute.isFinal());
- impl.setStatic(attribute.isStatic());
- impl.setDefaultValue(attribute.getDefaultValue());
-
- ObjectModelClassifierImpl classifierImpl = (ObjectModelClassifierImpl) classifier;
- classifierImpl.addAttribute(impl);
- return impl;
- }
-
- public void setSuperClass(ObjectModelClass classifier, String superclassQualifiedName) {
- ObjectModelClassImpl impl = (ObjectModelClassImpl) classifier;
- impl.getSuperclasses().clear();
- addSuperclass(impl, superclassQualifiedName);
- }
-
- public ObjectModelOperation addConstructor(ObjectModelClass clazz, String visibility) {
- ObjectModelOperationImpl operation = new ObjectModelOperationImpl();
- operation.setVisibility(visibility);
- operation.setName(clazz.getName());
-
- ObjectModelClassImpl classifierImpl = (ObjectModelClassImpl) clazz;
- classifierImpl.addOperation(operation);
- return operation;
- }
-}
Modified: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaGenerator.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaGenerator.java 2009-10-29 13:32:03 UTC (rev 667)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaGenerator.java 2009-10-29 17:47:57 UTC (rev 668)
@@ -57,13 +57,13 @@
Iterator<ObjectModelClass> j = clazz.getSuperclasses().iterator();
if (j.hasNext()) {
ObjectModelClassifier p = j.next();
- extend += p.getName();
+ extend += GeneratorUtil.getSimpleName(p.getQualifiedName());
}
String implement = "";
for (Iterator<ObjectModelInterface> i = clazz.getInterfaces().iterator(); i.hasNext();) {
ObjectModelClassifier parentInterface = i.next();
- implement += parentInterface.getName();
+ implement += GeneratorUtil.getSimpleName(parentInterface.getQualifiedName());
if (i.hasNext()) {
implement += ", ";
}
@@ -132,12 +132,12 @@
String attrName = attr.getName();
String attrVisibility = attr.getVisibility();
String attrType = GeneratorUtil.getSimpleName(attr.getType());
- String attrStatic = attr.isStatic() ? " static " : " ";
- String attrFinal = attr.isFinal() ? " final " : " ";
+ String attrStatic = attr.isStatic() ? " static" : "";
+ String attrFinal = attr.isFinal() ? " final" : "";
String attrValue = attr.getDefaultValue() != null && !attr.getDefaultValue().isEmpty() ?
" = " + GeneratorUtil.getSimpleName(attr.getDefaultValue()) : "";
-/*{ <%=attrVisibility%><%=attrStatic%><%=attrFinal%><%=attrType%> <%=attrName%><%=attrValue%>;
+/*{ <%=attrVisibility%><%=attrStatic%><%=attrFinal%> <%=attrType%> <%=attrName%><%=attrValue%>;
}*/
}
}
@@ -161,12 +161,12 @@
}
String opVisibility = op.getVisibility();
String opStatic = op.isStatic() ? "static " : "";
- String opAbstract = op.isAbstract() ? " abstract " : "";
+ String opAbstract = op.isAbstract() ? "abstract " : "";
ObjectModelParameter returnParam = op.getReturnParameter();
String opReturn = "";
if (returnParam != null) {
- opReturn = GeneratorUtil.getSimpleName(returnParam.getType());
+ opReturn = GeneratorUtil.getSimpleName(returnParam.getType()) + " ";
if (!opReturn.equals("void")) {
String paramDocumentation = returnParam.getDocumentation();
/*{ * @return <%=paramDocumentation%>
@@ -174,7 +174,7 @@
}
}
/*{ *)
- <%=opVisibility%> <%=opStatic%><%=opAbstract%><%=opReturn%> <%=opName%>(}*/
+ <%=opVisibility%> <%=opStatic%><%=opAbstract%><%=opReturn%><%=opName%>(}*/
String comma = "";
for (ObjectModelParameter param : params) {
String paramName = param.getName();
Modified: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/OM2JavaTransformer.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/OM2JavaTransformer.java 2009-10-29 13:32:03 UTC (rev 667)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/OM2JavaTransformer.java 2009-10-29 17:47:57 UTC (rev 668)
@@ -20,15 +20,14 @@
* Mise a jour: $Date$
* par : $Author$
*/
-public class OM2JavaTransformer extends ObjectModelTransformer<ObjectModel> {
+public abstract class OM2JavaTransformer extends ObjectModelTransformer<ObjectModel> {
private static final Log log = LogFactory.getLog(OM2JavaTransformer.class);
- private static JavaBuilderHelper helper = new JavaBuilderHelper();
+ private JavaBuilder builder;
public OM2JavaTransformer() {
super(new JavaGenerator());
- this.outputModel = new ObjectModelImpl();
}
@Override
@@ -36,9 +35,9 @@
if (log.isInfoEnabled()) {
log.debug("inputModelName = " + getModel().getName());
}
- ObjectModelImpl impl = (ObjectModelImpl) getOutputModel();
- impl.setName(getModel().getName());
- return impl;
+ this.builder = new JavaBuilder(getModel().getName());
+ this.outputModel = builder.getModel();
+ return this.outputModel;
}
@Override
@@ -61,103 +60,50 @@
}
}
- public JavaBuilderHelper getHelper() {
- return helper;
- }
-
- protected ImportsManager getImportsManager(ObjectModelClassifier classifier) {
- ObjectModelImpl impl = (ObjectModelImpl) getOutputModel();
- ImportsManager manager = impl.getExtension(classifier.getQualifiedName(), ImportsManager.class);
- if (manager == null) {
- manager = new ImportsManager();
- impl.addExtension(classifier.getQualifiedName(), manager);
- if (log.isDebugEnabled()) {
- log.debug("Add new importsManager for : " + classifier.getQualifiedName());
- }
- }
- return manager;
- }
-
- /*protected void addImportForClassifier(ObjectModelClassifier classifier, String imports) {
- ImportsManager manager = getImportsManager(classifier);
- manager.addImport(imports);
- }
-
- protected void addImportForClassifier(ObjectModelClassifier classifier, Class<?> imports) {
- ImportsManager manager = getImportsManager(classifier);
- manager.addImport(imports);
- }*/
-
protected ObjectModelClass createClass(String name, String packageName) {
- ObjectModelClassImpl clazz = new ObjectModelClassImpl();
- clazz.setName(name);
- clazz.setPackage(packageName);
- ObjectModelImpl impl = (ObjectModelImpl) getOutputModel();
- impl.addClass(clazz);
- return clazz;
+ return builder.createClass(name, packageName);
}
protected ObjectModelClass createAbstractClass(String name, String packageName) {
- ObjectModelClassImpl clazz = (ObjectModelClassImpl) createClass(name, packageName);
- clazz.setAbstract(true);
- return clazz;
+ return builder.createAbstractClass(name, packageName);
}
- private void addImport(ObjectModelClassifier classifier, String imports) {
- ImportsManager manager = getImportsManager(classifier);
- for (String oneType : GeneratorUtil.getTypesList(imports)) {
- manager.addImport(oneType);
- if (log.isDebugEnabled()) {
- log.debug("Add import for : " + classifier.getQualifiedName() + " _ import: " + oneType);
- }
- }
- }
-
protected void setSuperClass(ObjectModelClass classifier, String superclassQualifiedName) {
- getHelper().setSuperClass(classifier, superclassQualifiedName);
- addImport(classifier, superclassQualifiedName);
+ builder.setSuperClass(classifier, superclassQualifiedName);
}
protected void addInterface(ObjectModelClassifier classifier, String interfaceQualifiedName) {
- getHelper().addInterface(classifier, interfaceQualifiedName);
- addImport(classifier, interfaceQualifiedName);
+ builder.addInterface(classifier, interfaceQualifiedName);
}
- protected ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String parse) {
- ObjectModelAttribute attribute = getHelper().addAttribute(classifier, parse);
- addImport(classifier, attribute.getType());
- return attribute;
+ protected ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String parse)
+ throws IllegalArgumentException {
+ return builder.addAttribute(classifier, parse);
}
protected ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, ObjectModelAttribute attribute) {
- ObjectModelAttribute result = getHelper().addAttribute(classifier, attribute);
- if (log.isDebugEnabled()) {
- log.debug("add attribute : " + result.getVisibility() + " " + result.getType() + " " + result.getName());
- }
- addImport(classifier, result.getType());
- return result;
+ return builder.addAttribute(classifier, attribute);
}
- protected ObjectModelOperation addOperation(ObjectModelClassifier classifier, String parse) {
- ObjectModelOperation operation = getHelper().addOperation(classifier, parse);
- // imports for returnType
- addImport(classifier, operation.getReturnType());
- // imports for inputParameters
- for (ObjectModelParameter parameter : operation.getParameters()) {
- addImport(classifier, parameter.getType());
- }
- return operation;
+ protected ObjectModelOperation addConstructor(ObjectModelClass clazz, String visibility) {
+ return builder.addConstructor(clazz, visibility);
}
+ protected ObjectModelOperation addOperation(ObjectModelClassifier classifier, String parse)
+ throws IllegalArgumentException {
+ return builder.addOperation(classifier, parse);
+ }
+
protected ObjectModelParameter addParameter(ObjectModelOperation operation, String type, String name) {
- ObjectModelParameter param = getHelper().addParameter(operation, type, name);
- addImport((ObjectModelClassifier) operation.getDeclaringElement(), type);
- return param;
+ return builder.addParameter(operation, type, name);
}
protected void addException(ObjectModelOperation operation, String exception) {
- getHelper().addException(operation, exception);
- addImport((ObjectModelClassifier) operation.getDeclaringElement(), exception);
+ builder.addException(operation, exception);
}
+ protected void setOperationBody(ObjectModelOperation operation, String body) {
+ builder.setOperationBody(operation, body);
+ }
+
}
Modified: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java 2009-10-29 13:32:03 UTC (rev 667)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java 2009-10-29 17:47:57 UTC (rev 668)
@@ -1,5 +1,6 @@
package org.nuiton.eugene.test.generator;
+import org.apache.commons.lang.StringUtils;
import org.nuiton.eugene.GeneratorUtil;
import org.nuiton.eugene.java.OM2JavaTransformer;
import org.nuiton.eugene.models.object.*;
@@ -7,7 +8,9 @@
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
+import java.util.Collection;
import java.util.Iterator;
+import java.util.List;
/*{generator option: parentheses = false}*/
@@ -38,55 +41,153 @@
ObjectModelClass resultClass = null;
if (!clazz.getOperations().isEmpty()) {
- resultClass = this.createAbstractClass(clazz.getName(), clazz.getPackageName());
+ resultClass = createAbstractClass(clazz.getName(), clazz.getPackageName());
} else {
- resultClass = this.createClass(clazz.getName(), clazz.getPackageName());
+ resultClass = createClass(clazz.getName(), clazz.getPackageName());
}
+ createForDTO(resultClass, clazz);
+
// Set superclass
Iterator<ObjectModelClass> j = clazz.getSuperclasses().iterator();
if (j.hasNext()) {
ObjectModelClass p = j.next();
- this.setSuperClass(resultClass, p.getQualifiedName());
+ setSuperClass(resultClass, p.getQualifiedName());
}
// Add interfaces from inputModel
for (Iterator<ObjectModelInterface> i = clazz.getInterfaces().iterator(); i.hasNext();) {
ObjectModelClassifier parentInterface = i.next();
- this.addInterface(resultClass, parentInterface.getQualifiedName());
+ addInterface(resultClass, parentInterface.getQualifiedName());
}
- this.createListeners(resultClass, clazz);
+ createListeners(resultClass, clazz);
- // Add attributes
+ boolean hasEntity = false;
+ boolean hasMultipleAttribute = false;
+
+ // Add attributes with getter/setter
for (ObjectModelAttribute attr : clazz.getAttributes()) {
- if (attr.isNavigable() || attr.hasAssociationClass()) {
+ if (attr.isNavigable()/* || attr.hasAssociationClass()*/) {
+ String attrType = attr.getType();
+ String attrName = attr.getName();
+ String attrNameCapitalized = StringUtils.capitalize(attrName);
+ // multiple attribute
if (GeneratorUtil.isNMultiplicity(attr)) {
+ hasMultipleAttribute = true;
+
+ // Add getChild
+ ObjectModelOperation getChild = addOperation(resultClass,
+ "public " + attrType + " get" + attrNameCapitalized + "(int index)");
+ setOperationBody(getChild, ""
+ /*{
+ <%=attrType%> o = getChild(<%=attrName%>, index);
+ return o;
+ }*/
+ );
+
+ // Add getEntity
+ ObjectModelClass attrEntity = null;
+ if (getModel().hasClass(attr.getType())) {
+ attrEntity = getModel().getClass(attr.getType());
+ }
+ boolean isEntity = (attrEntity != null && attrEntity.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_ENTITY));
+
+ if (isEntity) {
+ hasEntity = true;
+ ObjectModelOperation getChildEntity = addOperation(resultClass,
+ "public " + attrType + " get" + attrNameCapitalized + "(" + String.class.getName() + " topiaId)");
+ setOperationBody(getChildEntity, ""
+ /*{
+ <%=attrType%> o = getEntity(<%=attrName%>, topiaId);
+ return o;
+ }*/
+ );
+ }
+
+ // Add addChild
+ ObjectModelOperation addChild = addOperation(resultClass,
+ "public " + attrType + " add" + attrNameCapitalized + "(" + attrType + " " + attrName + ")");
+ setOperationBody(addChild, ""
+
+ /*{
+ get<%=attrNameCapitalized%>().add(<%=attrName%>);
+ firePropertyChange("<%=attrName%>", null, <%=attrName%>);
+ return <%=attrName%>;
+ }*/
+ );
+
+ // Add removeChild
+ ObjectModelOperation removeChild = addOperation(resultClass,
+ "public boolean remove" + attrNameCapitalized + "(" + attrType + " " + attrName + ")");
+ setOperationBody(removeChild, ""
+
+ /*{
+ boolean removed = get<%=attrNameCapitalized%>().remove(<%=attrName%>);
+ if (removed) {
+ firePropertyChange("<%=attrName%>", <%=attrName%>, null);
+ }
+ return removed;
+ }*/
+ );
+
+ // Change type for Multiple attribute
if (attr.isOrdered()) {
- //type = List.class.getName();
+ attrType = List.class.getName() + "<" + attrType + ">";
} else {
- //type = Collection.class.getName();
+ attrType = Collection.class.getName() + "<" + attrType + ">";
}
}
- this.addAttribute(resultClass, attr);
+ if (attr.hasAssociationClass()) {
+ String assocAttrName = TopiaGeneratorUtil.getAssocAttrName(attr);
+ attrName = GeneratorUtil.toLowerCaseFirstLetter(assocAttrName);
+ attrType = attr.getAssociationClass().getName();
+ }
+
+ // Add attribute
+ addAttribute(resultClass, attr.getVisibility() + " " + attrType + " " + attrName);
+
+ // Add getter
+ ObjectModelOperation getter = this.addOperation(resultClass,
+ "public " + attrType + " get" + attrNameCapitalized);
+ setOperationBody(getter, ""
+ /*{
+ return this.<%=attrName%>;
+ }*/
+ );
+
+ // Add setter
+ ObjectModelOperation setter = this.addOperation(resultClass,
+ "public void set" + attrNameCapitalized + "(" + attrType + " newValue)");
+ setOperationBody(setter, ""
+ /*{
+ <%=attrType%> oldValue = get<%=attrNameCapitalized%>();
+ this.<%=attrName%> = newValue;
+ firePropertyChange("<%=attrName%>", oldValue, newValue);
+ }*/
+ );
+
}
}
+ // Add helper methods
+
+
// Add operations
for (ObjectModelOperation op : clazz.getOperations()) {
ObjectModelOperation resultOperation = this.addOperation(resultClass,
op.getVisibility() + " abstract " + op.getReturnType() + " " + op.getName());
for (ObjectModelParameter param : op.getParameters()) {
- ObjectModelParameter resultParameter = this.addParameter(resultOperation,
+ ObjectModelParameter resultParameter = addParameter(resultOperation,
param.getType(), param.getName());
}
for (String exception : op.getExceptions()) {
- this.addException(resultOperation, exception);
+ addException(resultOperation, exception);
}
}
}
@@ -95,59 +196,71 @@
// Add Serializable implements for DTO generation
if (inputClass.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_DTO)) {
- this.addInterface(resultClass, Serializable.class.getName());
+ addInterface(resultClass, Serializable.class.getName());
}
String svUID = TopiaGeneratorUtil.findTagValue("dto-serialVersionUID", inputClass, getModel());
- this.addAttribute(resultClass, "public static final long serialVersionUID = " + svUID);
+ if (svUID != null) {
+ addAttribute(resultClass, "public static final long serialVersionUID = " + svUID);
+ }
}
protected void createListeners(ObjectModelClass resultClass, ObjectModelClass inputClass) {
- this.addAttribute(resultClass, "protected final " + PropertyChangeSupport.class.getName() + " pcs");
+ addAttribute(resultClass, "protected final " + PropertyChangeSupport.class.getName() + " pcs");
// Default constructor
- ObjectModelOperation constructor = getHelper().addConstructor(resultClass, "public");
- getHelper().setOperationBody(constructor, ""
- /*{
- pcs = new PropertyChangeSupport(this);
- }*/
+ ObjectModelOperation constructor = addConstructor(resultClass, "public");
+ setOperationBody(constructor, ""
+ /*{
+ pcs = new PropertyChangeSupport(this);
+ }*/
);
// Add PropertyListener
String propType = PropertyChangeListener.class.getName();
String strType = String.class.getName();
- ObjectModelOperation addPropertyChangeListener = this.addOperation(resultClass,
+ String objectType = Object.class.getName();
+
+ ObjectModelOperation addPropertyChangeListener = addOperation(resultClass,
"public void addPropertyChangeListener(" + propType + " listener)");
- getHelper().setOperationBody(addPropertyChangeListener, ""
- /*{
- pcs.addPropertyChangeListener(listener);
- }*/
+ setOperationBody(addPropertyChangeListener, ""
+ /*{
+ pcs.addPropertyChangeListener(listener);
+ }*/
);
- ObjectModelOperation addPropertyChangeListenerPlus = this.addOperation(resultClass,
+ ObjectModelOperation addPropertyChangeListenerPlus = addOperation(resultClass,
"public void addPropertyChangeListener(" + strType + " propertyName," + propType + " listener)");
- getHelper().setOperationBody(addPropertyChangeListenerPlus, ""
- /*{
- pcs.addPropertyChangeListener(propertyName, listener);
- }*/
+ setOperationBody(addPropertyChangeListenerPlus, ""
+ /*{
+ pcs.addPropertyChangeListener(propertyName, listener);
+ }*/
);
- ObjectModelOperation removePropertyChangeListener = this.addOperation(resultClass,
+ ObjectModelOperation removePropertyChangeListener = addOperation(resultClass,
"public void removePropertyChangeListener(" + propType + " listener)");
- getHelper().setOperationBody(removePropertyChangeListener, ""
- /*{
- pcs.removePropertyChangeListener(listener);
- }*/
+ setOperationBody(removePropertyChangeListener, ""
+ /*{
+ pcs.removePropertyChangeListener(listener);
+ }*/
);
- ObjectModelOperation removePropertyChangeListenerPlus = this.addOperation(resultClass,
+ ObjectModelOperation removePropertyChangeListenerPlus = addOperation(resultClass,
"public void removePropertyChangeListener(" + strType + " propertyName," + propType + " listener)");
- getHelper().setOperationBody(removePropertyChangeListenerPlus, ""
- /*{
- pcs.removePropertyChangeListener(propertyName, listener);
- }*/
+ setOperationBody(removePropertyChangeListenerPlus, ""
+ /*{
+ pcs.removePropertyChangeListener(propertyName, listener);
+ }*/
);
+
+ ObjectModelOperation firePropertyChange = addOperation(resultClass,
+ "protected void firePropertyChange(" + strType + " propertyName," + objectType + " oldValue, " + objectType + " newValue)");
+ setOperationBody(firePropertyChange, ""
+ /*{
+ pcs.firePropertyChange(propertyName, oldValue, newValue);
+ }*/
+ );
}
Modified: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java 2009-10-29 13:32:03 UTC (rev 667)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java 2009-10-29 17:47:57 UTC (rev 668)
@@ -1,7 +1,7 @@
package org.nuiton.eugene.test.generator;
-import org.nuiton.eugene.models.object.builder.JavaBuilder;
+import org.nuiton.eugene.java.JavaBuilder;
import org.nuiton.eugene.models.object.ObjectModelClass;
import org.nuiton.eugene.models.object.ObjectModelOperation;
@@ -17,50 +17,46 @@
super("TestModel");
}
- @Override
+ //@Override
public void build() {
createRole();
createPerson();
}
private void createRole() {
- ObjectModelClass roleClass = getHelper().createClass("Role", "org.chorem.bonzoms");
+ ObjectModelClass roleClass = createClass("Role", "org.chorem.bonzoms");
- getHelper().addAttribute(roleClass, "name", "String");
+ addAttribute(roleClass, "String name");
//this.addImportForClassifier(roleClass, Date.class);
- getHelper().addAttribute(roleClass, "fromDate", "java.util.Date");
- getHelper().addAttribute(roleClass, "thruDate", "java.util.Date");
-
- this.addClassToModel(roleClass);
+ addAttribute(roleClass, "java.util.Date fromDate");
+ addAttribute(roleClass, "java.util.Date thruDate");
}
private void createPerson() {
- ObjectModelClass personneClass = getHelper().createClass("Person", "org.chorem.bonzoms");
+ ObjectModelClass personneClass = createClass("Person", "org.chorem.bonzoms");
- getHelper().addAttribute(personneClass, "lastName", "java.lang.String");
- getHelper().addAttribute(personneClass, "firstName", "java.lang.String", "\"\"");
+ addAttribute(personneClass, "java.lang.String lastName");
+ addAttribute(personneClass, "java.lang.String firstName = \"2.0\"");
//this.addImportForClassifier(personneClass, List.class);
- getHelper().addAttribute(personneClass, "roles",
- "java.util.List<org.chorem.bonzoms.Role>", "new java.util.ArrayList<org.chorem.bonzoms.Role>()");
+ addAttribute(personneClass,
+ "java.util.List<org.chorem.bonzoms.Role> roles = new java.util.ArrayList<org.chorem.bonzoms.Role>()");
- ObjectModelOperation setLastName = getHelper().addOperation(personneClass, "setLastName", null, "String", "lastName");
- getHelper().setOperationBody(setLastName, ""
+ ObjectModelOperation setLastName = addOperation(personneClass, "public void setLastName(String lastName)");
+ setOperationBody(setLastName, ""
/*{
this.lastName = lastName;
}*/
);
- ObjectModelOperation getLastName = getHelper().addOperation(personneClass, "getLastName", "String");
- getHelper().setOperationBody(getLastName, ""
+ ObjectModelOperation getLastName = addOperation(personneClass, "public String getLastName");
+ setOperationBody(getLastName, ""
/*{
return this.lastName;
}*/
);
-
- this.addClassToModel(personneClass);
}
}
Modified: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestReader.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestReader.java 2009-10-29 13:32:03 UTC (rev 667)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestReader.java 2009-10-29 17:47:57 UTC (rev 668)
@@ -19,11 +19,10 @@
*/
public class TestReader extends ModelReader<ObjectModel> {
- protected JavaBuilder builder;
@Override
public ObjectModel read(File[] file) {
- builder = new TestBuilder();
+ TestBuilder builder = new TestBuilder();
builder.build();
Added: branches/1.1.0-Javabuilder/eugene-test/src/main/models/dtotest2.objectmodel
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/models/dtotest2.objectmodel (rev 0)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/models/dtotest2.objectmodel 2009-10-29 17:47:57 UTC (rev 668)
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<objectModel xmlns="http://www.codelutin.org/eugene/objectModel" name="TopiaTest" version="1">
+ <class name="Personne" package="org.nuiton.eugene.test2">
+ <stereotype name="entity"/>
+ <superclass name="org.nuiton.eugene.test2.Party2" discriminator=""/>
+ <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute name="otherNames" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="0" maxMultiplicity="-1"/>
+ <attribute visibility="public" type="org.nuiton.eugene.test2.Address" reverseAttributeName="" associationType="aggregate" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/>
+ </class>
+ <class name="Employe" package="org.nuiton.eugene.test2">
+ <stereotype name="entity"/>
+ <superclass name="org.nuiton.eugene.test2.Personne" discriminator=""/>
+ <attribute name="salary" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute visibility="public" type="org.nuiton.eugene.test2.Company" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="false" ordering="unordered"/>
+ <attribute name="lead" visibility="public" type="org.nuiton.eugene.test2.Department" reverseAttributeName="leader" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="1" navigable="false" ordering="unordered"/>
+ </class>
+ <class name="Company" package="org.nuiton.eugene.test2">
+ <stereotype name="entity"/>
+ <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute visibility="public" type="org.nuiton.eugene.test2.Employe" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/>
+ <attribute visibility="public" associationClassName="org.nuiton.eugene.test2.Bill" type="org.nuiton.eugene.test2.Store" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/>
+ <attribute visibility="public" type="org.nuiton.eugene.test2.Department" reverseAttributeName="" associationType="composite" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/>
+ </class>
+ <class name="Address" package="org.nuiton.eugene.test2">
+ <stereotype name="entity"/>
+ <attribute name="city" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute name="adress" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute visibility="public" type="org.nuiton.eugene.test2.Personne" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="false" ordering="unordered"/>
+ </class>
+ <class name="Department" package="org.nuiton.eugene.test2">
+ <stereotype name="entity"/>
+ <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute name="leader" visibility="public" type="org.nuiton.eugene.test2.Employe" reverseAttributeName="lead" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/>
+ <attribute visibility="public" type="org.nuiton.eugene.test2.Company" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/>
+ <attribute visibility="public" type="org.nuiton.eugene.test2.Product" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/>
+ </class>
+ <class name="Product" package="org.nuiton.eugene.test2">
+ <stereotype name="entity"/>
+ <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute visibility="public" type="org.nuiton.eugene.test2.Department" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="false" ordering="unordered"/>
+ <attribute visibility="public" type="org.nuiton.eugene.test2.Type" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/>
+ </class>
+ <class name="Store" package="org.nuiton.eugene.test2">
+ <stereotype name="entity"/>
+ <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute name="DEFAULT_NUM" associationType="composite" visibility="public" static="true" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute name="numStore" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/>
+ <operation name="getDefaultNum" visibility="public" static="true">
+ <returnParameter type="java.lang.String"/>
+ </operation>
+ <class name="Row" package="org.nuiton.eugene.test2">
+ <attribute name="num" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute name="position" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/>
+ </class>
+ <attribute visibility="public" associationClassName="org.nuiton.eugene.test2.Bill" type="org.nuiton.eugene.test2.Company" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="0" maxMultiplicity="-1" navigable="false" ordering="unordered"/>
+ </class>
+ <class name="Type" package="org.nuiton.eugene.test2">
+ <stereotype name="entity"/>
+ <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute visibility="public" type="org.nuiton.eugene.test2.Product" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="false" ordering="unordered"/>
+ </class>
+ <associationClass name="Bill" package="org.nuiton.eugene.test2">
+ <stereotype name="entity"/>
+ <participant name="org.nuiton.eugene.test2.Company" attribute=""/>
+ <participant name="org.nuiton.eugene.test2.Store" attribute=""/>
+ <attribute name="cost" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute name="date" associationType="composite" visibility="public" type="java.util.Date" minMultiplicity="1" maxMultiplicity="1"/>
+ </associationClass>
+ <class name="Voiture" abstract="true" package="org.nuiton.eugene.test2.beangen">
+ <stereotype name="bean"/>
+ <tagValue name="documentation" value="Doc for BeanA"/>
+ <interface name="org.nuiton.eugene.test2.beangen.Vehicule"/>
+ <attribute name="immatriculation" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1">
+ <tagValue name="documentation" value="attrA of BeanA"/>
+ </attribute>
+ <attribute name="modele" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute name="proprietaire" associationType="composite" visibility="public" type="org.nuiton.eugene.test2.Personne" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute visibility="public" type="org.nuiton.eugene.test2.beangen.Roue" reverseAttributeName="" associationType="composite" reverseMaxMultiplicity="1" minMultiplicity="4" maxMultiplicity="4" navigable="true" ordering="unordered"/>
+ <attribute visibility="public" type="org.nuiton.eugene.test2.beangen.Siege" reverseAttributeName="" associationType="composite" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="4" navigable="true" ordering="unordered"/>
+ </class>
+ <class name="Roue" package="org.nuiton.eugene.test2.beangen">
+ <stereotype name="bean"/>
+ <operation name="mount" visibility="public">
+ <returnParameter type="void"/>
+ </operation>
+ <operation name="getModel" visibility="public">
+ <returnParameter type="org.nuiton.eugene.test2.Product"/>
+ <parameter name="id" type="java.lang.String"/>
+ </operation>
+ <attribute visibility="public" type="org.nuiton.eugene.test2.beangen.Voiture" reverseAttributeName="" reverseMaxMultiplicity="4" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/>
+ </class>
+ <class name="RelationDTO" package="org.nuiton.eugene.test2.beangen">
+ <stereotype name="dto"/>
+ <attribute name="idCompany" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute name="idDepartement" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute name="dateDebut" associationType="composite" visibility="public" type="java.util.Date" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute name="person" visibility="public" type="org.nuiton.eugene.test2.beangen.PersonneDTO" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/>
+ </class>
+ <class name="PersonneDTO" package="org.nuiton.eugene.test2.beangen">
+ <dependency name="" supplierName="org.nuiton.eugene.test2.Personne"/>
+ <stereotype name="dto"/>
+ <attribute visibility="public" type="org.nuiton.eugene.test2.beangen.RelationDTO" reverseAttributeName="person" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="false" ordering="unordered"/>
+ </class>
+ <class name="Siege" package="org.nuiton.eugene.test2.beangen">
+ <stereotype name="bean"/>
+ <attribute name="noSerie" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute visibility="public" type="org.nuiton.eugene.test2.beangen.Voiture" reverseAttributeName="" reverseMaxMultiplicity="4" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/>
+ </class>
+ <interface name="Vehicule" package="org.nuiton.eugene.test2.beangen">
+ <operation name="start" visibility="public">
+ <returnParameter type="void"/>
+ </operation>
+ </interface>
+ <class name="Contact2" package="org.nuiton.eugene.test2.deletetest">
+ <stereotype name="entity"/>
+ <attribute name="contactValue" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute name="type" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/>
+ <operation name="findAllByCompany" visibility="public">
+ <returnParameter type="java.util.Set<Contact2>"/>
+ <parameter name="company" type="org.nuiton.eugene.test2.Company"/>
+ <stereotype name="dao"/>
+ </operation>
+ <attribute visibility="public" type="org.nuiton.eugene.test2.Party2" reverseAttributeName="contacts" reverseMaxMultiplicity="-1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/>
+ </class>
+ <class name="Telephone2" package="org.nuiton.eugene.test2.deletetest">
+ <stereotype name="entity"/>
+ <superclass name="org.nuiton.eugene.test2.Contact2" discriminator=""/>
+ <attribute name="prefix" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute name="country" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/>
+ </class>
+ <class name="Party2" package="org.nuiton.eugene.test2.deletetest">
+ <stereotype name="entity"/>
+ <attribute name="contacts" visibility="public" type="org.nuiton.eugene.test2.Contact2" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/>
+ </class>
+ <class name="Person" package="org.nuiton.topia.test.entities">
+ <stereotype name="entity"/>
+ <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute name="firstname" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute visibility="public" type="org.nuiton.topia.test.entities.Pet" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/>
+ </class>
+ <class name="Pet" package="org.nuiton.topia.test.entities">
+ <stereotype name="entity"/>
+ <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute name="type" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute visibility="public" type="org.nuiton.topia.test.entities.Person" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/>
+ <attribute visibility="public" type="org.nuiton.topia.test.entities.Race" reverseAttributeName="" associationType="composite" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/>
+ </class>
+ <class name="Race" package="org.nuiton.topia.test.entities">
+ <stereotype name="entity"/>
+ <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/>
+ <attribute visibility="public" type="org.nuiton.topia.test.entities.Pet" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="false" ordering="unordered"/>
+ </class>
+ <class name="Set<Contact2>" package="java.util"/>
+</objectModel>
Modified: branches/1.1.0-Javabuilder/eugene-test/src/test/java/org/nuiton/eugene/java/JavaBuilderHelperTest.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/test/java/org/nuiton/eugene/java/JavaBuilderHelperTest.java 2009-10-29 13:32:03 UTC (rev 667)
+++ branches/1.1.0-Javabuilder/eugene-test/src/test/java/org/nuiton/eugene/java/JavaBuilderHelperTest.java 2009-10-29 17:47:57 UTC (rev 668)
@@ -1,7 +1,6 @@
package org.nuiton.eugene.java;
-import org.nuiton.eugene.java.JavaBuilderHelper;
import java.util.List;
import org.junit.After;
import org.junit.AfterClass;
@@ -46,7 +45,7 @@
@Test
public void testAddAttribute() {
System.out.println("addAttribute");
- JavaBuilderHelper instance = new JavaBuilderHelper();
+ JavaBuilder instance = new JavaBuilder("modelName");
ObjectModelClassifier classifier = new ObjectModelClassImpl();
@@ -75,13 +74,21 @@
assertEquals(result.getVisibility(), "private");
assertEquals(result.getDefaultValue(), "new java.util.Date()");
+ parse = "private double age = 2.0";
+ result = instance.addAttribute(classifier, parse);
+ assertNotNull(result);
+ assertEquals(result.getName(), "age");
+ assertEquals(result.getType(), "double");
+ assertEquals(result.getVisibility(), "private");
+ assertEquals(result.getDefaultValue(), "2.0");
+
}
@Test
public void testAddOperation() {
System.out.println("addOperation");
- JavaBuilderHelper instance = new JavaBuilderHelper();
+ JavaBuilder instance = new JavaBuilder("modelName");
ObjectModelClassifier classifier = new ObjectModelClassImpl();
@@ -93,6 +100,13 @@
assertEquals(result.getReturnType(), "java.util.List<java.lang.String>");
assertEquals(result.getVisibility(), "public");
+ /*parse = "public <T extends blob> T myMethod"; // UNSUPPORTED
+ result = instance.addOperation(classifier, parse);
+ assertNotNull(result);
+ assertEquals(result.getName(), "myMethod");
+ assertEquals(result.getReturnType(), "<T extends blob> T");
+ assertEquals(result.getVisibility(), "public");*/
+
parse = "public void addPropertyChangeListener(java.lang.String propertyName)";
result = instance.addOperation(classifier, parse);
assertNotNull(result);
1
0
r667 - in branches/1.1.0-Javabuilder: eugene/src/main/java/org/nuiton/eugene eugene-test/src/main/java/org/nuiton/eugene/java eugene-test/src/main/java/org/nuiton/eugene/test/generator
by fdesbois@users.nuiton.org 29 Oct '09
by fdesbois@users.nuiton.org 29 Oct '09
29 Oct '09
Author: fdesbois
Date: 2009-10-29 14:32:03 +0100 (Thu, 29 Oct 2009)
New Revision: 667
Modified:
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaBuilderHelper.java
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/OM2JavaTransformer.java
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelTransformer.java
Log:
- Correct errors for outputModel
- Correct some errors in helper
- Correct problem with importsManager
Modified: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelTransformer.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelTransformer.java 2009-10-28 19:04:40 UTC (rev 666)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelTransformer.java 2009-10-29 13:32:03 UTC (rev 667)
@@ -1,40 +1,34 @@
-
package org.nuiton.eugene;
-import org.nuiton.eugene.*;
+import org.nuiton.eugene.models.Model;
+import org.nuiton.eugene.models.object.*;
+
import java.io.File;
import java.util.Collection;
-import org.nuiton.eugene.models.Model;
-import org.nuiton.eugene.models.object.ObjectModel;
-import org.nuiton.eugene.models.object.ObjectModelClass;
-import org.nuiton.eugene.models.object.ObjectModelClassifier;
-import org.nuiton.eugene.models.object.ObjectModelElement;
-import org.nuiton.eugene.models.object.ObjectModelEnumeration;
-import org.nuiton.eugene.models.object.ObjectModelInterface;
/**
* ObjectModelTransformer
- *
+ * <p/>
* Created: 28 oct. 2009
*
- * @param <O>
* @author fdesbois
* @version $Revision$
- *
- * Mise a jour: $Date$
- * par : $Author$
+ * <p/>
+ * Mise a jour: $Date$
+ * par : $Author$
+ * @param <O>
*/
-public abstract class ObjectModelTransformer<O extends Model> extends Transformer<ObjectModel, O>{
+public abstract class ObjectModelTransformer<O extends Model> extends Transformer<ObjectModel, O> {
public ObjectModelTransformer(Generator<O> output) {
super(output);
}
protected abstract O initOutputModel();
-
+
/**
* Par defaut la methode appelle la methode
- * {@link #generateFromModel(Writer, ObjectModel)} puis boucle sur chaque
+ * {@link #transformFromModel(ObjectModel)} puis boucle sur chaque
* class en appelant la m?thode
* {@link #generateFromClass(Writer, ObjectModelClass)} puis boucle sur chaque
* interface en appelant a méthode
@@ -45,9 +39,11 @@
* getFilenameFor.... La methode generateFrom... n'utilise pas le Writer
* alors le fichier n'est pas généré, si on l'utilise m?me pour ne rien
* écrire alors le fichier sera généré.
+ *
* @param model
* @param destDir
- */@Override
+ */
+ @Override
public void generate(ObjectModel model, File destDir) {
// generateFromModel
@@ -55,20 +51,20 @@
initOutputModel();
//try {
- //String filename = getFilenameForModel(model);
- transformFromElement(model, ObjectModelType.OBJECT_MODEL);
+ //String filename = getFilenameForModel(model);
+ transformFromElement(model, ObjectModelType.OBJECT_MODEL);
- // generateFromClassifier
- transformFromElements(model.getClassifiers(), ObjectModelType.OBJECT_MODEL_CLASSIFIER);
+ // generateFromClassifier
+ transformFromElements(model.getClassifiers(), ObjectModelType.OBJECT_MODEL_CLASSIFIER);
- // generateFromInterface
- transformFromElements(model.getInterfaces(), ObjectModelType.OBJECT_MODEL_INTERFACE);
+ // generateFromInterface
+ transformFromElements(model.getInterfaces(), ObjectModelType.OBJECT_MODEL_INTERFACE);
- // generateFromClass
- transformFromElements(model.getClasses(), ObjectModelType.OBJECT_MODEL_CLASS);
+ // generateFromClass
+ transformFromElements(model.getClasses(), ObjectModelType.OBJECT_MODEL_CLASS);
- // generateFromEnumeration
- transformFromElements(model.getEnumerations(), ObjectModelType.OBJECT_MODEL_ENUMERATION);
+ // generateFromEnumeration
+ transformFromElements(model.getEnumerations(), ObjectModelType.OBJECT_MODEL_ENUMERATION);
/*} catch (IOException eee) {
if (log.isWarnEnabled()) {
@@ -76,9 +72,13 @@
}
}*/
+ debugOutputModel();
+
outputGenerator.generate(getOutputModel(), destDir);
}
+ protected abstract void debugOutputModel();
+
/**
* Parcours une collection d'éléments pour la génération suivant un type d'éléments.
* Types possibles : ObjectModelClassifier, ObjectModelClass, ObjectModelInterface et
@@ -86,27 +86,29 @@
* Deux méthodes dépendent du type et peuvent être surchargées :
* getFilenameForXXX et generateFromXXX (XXX étant un type prédéfini pour une méthode existante).
*
+ * @param elements Collection d'éléments d'un des types ci-dessus
+ * @param destDir dossier de destination pour le fichier généré
+ * @param type type explicite d'ObjectModel
* @see ObjectModelType
- *
- * @param elements Collection d'éléments d'un des types ci-dessus
- * @param destDir dossier de destination pour le fichier généré
- * @param type type explicite d'ObjectModel
*/
private void transformFromElements(Collection<? extends ObjectModelElement> elements,
- ObjectModelType type) {
+ ObjectModelType type) {
for (ObjectModelElement element : elements) {
String filename = "";
// Filename depends on type of element (Classifier, Class, Interface or Enumeration)
switch (type) {
case OBJECT_MODEL_CLASSIFIER:
- filename = getFilenameForClassifier((ObjectModelClassifier)element); break;
+ filename = getFilenameForClassifier((ObjectModelClassifier) element);
+ break;
case OBJECT_MODEL_INTERFACE:
- filename = getFilenameForInterface((ObjectModelInterface)element); break;
+ filename = getFilenameForInterface((ObjectModelInterface) element);
+ break;
case OBJECT_MODEL_CLASS:
- filename = getFilenameForClass((ObjectModelClass)element); break;
+ filename = getFilenameForClass((ObjectModelClass) element);
+ break;
case OBJECT_MODEL_ENUMERATION:
- filename = getFilenameForEnumeration((ObjectModelEnumeration)element);
+ filename = getFilenameForEnumeration((ObjectModelEnumeration) element);
}
transformFromElement(element, type);
@@ -119,38 +121,38 @@
* ObjectModelInterface et ObjectModelEnumeration.
* La méthode generateFromXXX dépend du type d'élément et peut être surchargée.
*
+ * @param element element à généré
+ * @param destDir dossier de destination
+ * @param filename nom du fichier de sortie
+ * @param type type d'ObjectModel
* @see ObjectModelType
- *
- * @param element element à généré
- * @param destDir dossier de destination
- * @param filename nom du fichier de sortie
- * @param type type d'ObjectModel
*/
protected void transformFromElement(Object element, ObjectModelType type) {
- switch (type) {
- case OBJECT_MODEL:
- transformFromModel((ObjectModel)element);
- break;
- case OBJECT_MODEL_CLASSIFIER:
- transformFromClassifier((ObjectModelClassifier)element);
- break;
- case OBJECT_MODEL_INTERFACE:
- transformFromInterface((ObjectModelInterface)element);
- break;
- case OBJECT_MODEL_CLASS:
- transformFromClass((ObjectModelClass)element);
- break;
- case OBJECT_MODEL_ENUMERATION:
- transformFromEnumeration((ObjectModelEnumeration)element);
- break;
- }
+ switch (type) {
+ case OBJECT_MODEL:
+ transformFromModel((ObjectModel) element);
+ break;
+ case OBJECT_MODEL_CLASSIFIER:
+ transformFromClassifier((ObjectModelClassifier) element);
+ break;
+ case OBJECT_MODEL_INTERFACE:
+ transformFromInterface((ObjectModelInterface) element);
+ break;
+ case OBJECT_MODEL_CLASS:
+ transformFromClass((ObjectModelClass) element);
+ break;
+ case OBJECT_MODEL_ENUMERATION:
+ transformFromEnumeration((ObjectModelEnumeration) element);
+ break;
+ }
}
/**
* Par defaut cette methode retourne le getName du model. Si l'on souhaite
* utiliser la methode generateFromModel il vaut mieux surcharger cette
* methode
+ *
* @param model
* @return
*/
@@ -161,6 +163,7 @@
/**
* Par defaut cette methode retourne le QualifiedName convertie en chemin
* par exemple pour org.codelutin.Toto on aurait org/codelutin/Toto
+ *
* @param model
* @param packageName
* @return
@@ -172,6 +175,7 @@
/**
* Par defaut cette methode retourne le QualifiedName convertie en chemin
* par exemple pour org.codelutin.Toto on aurait org/codelutin/Toto
+ *
* @param interfacez
* @return
*/
@@ -182,6 +186,7 @@
/**
* Par defaut cette methode retourne le QualifiedName convertie en chemin
* par exemple pour org.codelutin.Toto on aurait org/codelutin/Toto
+ *
* @param clazz
* @return
*/
@@ -192,6 +197,7 @@
/**
* Par defaut cette methode retourne le QualifiedName convertie en chemin
* par exemple pour org.codelutin.Toto on aurait org/codelutin/Toto
+ *
* @param clazz
* @return
*/
Modified: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaBuilderHelper.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaBuilderHelper.java 2009-10-28 19:04:40 UTC (rev 666)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaBuilderHelper.java 2009-10-29 13:32:03 UTC (rev 667)
@@ -1,29 +1,23 @@
-
package org.nuiton.eugene.java;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
-import org.nuiton.eugene.models.object.xml.ObjectModelBuilderHelper;
import org.nuiton.eugene.models.object.ObjectModelClass;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
import org.nuiton.eugene.models.object.ObjectModelOperation;
-import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl;
-import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl;
-import org.nuiton.eugene.models.object.xml.ObjectModelClassifierImpl;
-import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl;
-import org.nuiton.eugene.models.object.xml.ObjectModelParameterImpl;
+import org.nuiton.eugene.models.object.xml.*;
/**
* JavaBuilderHelper
- *
+ * <p/>
* Created: 28 oct. 2009
*
* @author fdesbois
* @version $Revision$
- *
- * Mise a jour: $Date$
- * par : $Author$
+ * <p/>
+ * Mise a jour: $Date$
+ * par : $Author$
*/
public class JavaBuilderHelper extends ObjectModelBuilderHelper {
@@ -33,8 +27,9 @@
* Add attribute to a classifier with properties in parse string.
* Use java syntax to define properties of the attribute :
* ex : "public static final java.util.Date maDate = new java.util.Date()"
+ *
* @param classifier the classifier to add the attribute
- * @param parse the properties of the attribute to parse
+ * @param parse the properties of the attribute to parse
* @return a new ObjectModelAttribute corresponding to the new attribute added to the classifier
*/
public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String parse) {
@@ -69,7 +64,7 @@
int typeIndex = parse.indexOf(" ");
String type = parse.substring(0, typeIndex).trim();
attribute.setType(type);
- parse = parse.substring(typeIndex+1);
+ parse = parse.substring(typeIndex + 1);
// Name
int nameIndex = parse.indexOf("=");
@@ -80,7 +75,7 @@
// DefaultValue
int equalsIndex = parse.indexOf("=");
- String value = parse.substring(equalsIndex+1).trim();
+ String value = parse.substring(equalsIndex + 1).trim();
attribute.setDefaultValue(value);
} else { // Il ne reste que le nom si pas de =
@@ -88,13 +83,13 @@
}
attribute.setName(name);
- ObjectModelClassifierImpl classifierImpl = (ObjectModelClassifierImpl)classifier;
+ ObjectModelClassifierImpl classifierImpl = (ObjectModelClassifierImpl) classifier;
classifierImpl.addAttribute(attribute);
return attribute;
}
public ObjectModelOperation addOperation(ObjectModelClassifier classifier, String parse)
- throws IllegalArgumentException{
+ throws IllegalArgumentException {
ObjectModelOperationImpl operation = new ObjectModelOperationImpl();
String result = "";
@@ -183,11 +178,14 @@
impl.setFinal(attribute.isFinal());
impl.setStatic(attribute.isStatic());
impl.setDefaultValue(attribute.getDefaultValue());
+
+ ObjectModelClassifierImpl classifierImpl = (ObjectModelClassifierImpl) classifier;
+ classifierImpl.addAttribute(impl);
return impl;
}
public void setSuperClass(ObjectModelClass classifier, String superclassQualifiedName) {
- ObjectModelClassImpl impl = (ObjectModelClassImpl)classifier;
+ ObjectModelClassImpl impl = (ObjectModelClassImpl) classifier;
impl.getSuperclasses().clear();
addSuperclass(impl, superclassQualifiedName);
}
@@ -197,7 +195,7 @@
operation.setVisibility(visibility);
operation.setName(clazz.getName());
- ObjectModelClassImpl classifierImpl = (ObjectModelClassImpl)clazz;
+ ObjectModelClassImpl classifierImpl = (ObjectModelClassImpl) clazz;
classifierImpl.addOperation(operation);
return operation;
}
Modified: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/OM2JavaTransformer.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/OM2JavaTransformer.java 2009-10-28 19:04:40 UTC (rev 666)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/OM2JavaTransformer.java 2009-10-29 13:32:03 UTC (rev 667)
@@ -1,39 +1,31 @@
-
package org.nuiton.eugene.java;
-import org.nuiton.eugene.ObjectModelTransformer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.eugene.GeneratorUtil;
import org.nuiton.eugene.ImportsManager;
-import org.nuiton.eugene.models.object.ObjectModel;
-import org.nuiton.eugene.models.object.ObjectModelAttribute;
-import org.nuiton.eugene.models.object.ObjectModelClass;
-import org.nuiton.eugene.models.object.ObjectModelClassifier;
-import org.nuiton.eugene.models.object.ObjectModelOperation;
-import org.nuiton.eugene.models.object.ObjectModelParameter;
+import org.nuiton.eugene.ObjectModelTransformer;
+import org.nuiton.eugene.models.object.*;
import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl;
import org.nuiton.eugene.models.object.xml.ObjectModelImpl;
/**
* OM2JavaTransformer
- *
+ * <p/>
* Created: 28 oct. 2009
*
* @author fdesbois
* @version $Revision$
- *
- * Mise a jour: $Date$
- * par : $Author$
+ * <p/>
+ * Mise a jour: $Date$
+ * par : $Author$
*/
public class OM2JavaTransformer extends ObjectModelTransformer<ObjectModel> {
private static final Log log = LogFactory.getLog(OM2JavaTransformer.class);
- protected ObjectModelImpl outputModel;
+ private static JavaBuilderHelper helper = new JavaBuilderHelper();
- private static JavaBuilderHelper helper = new JavaBuilderHelper();
-
public OM2JavaTransformer() {
super(new JavaGenerator());
this.outputModel = new ObjectModelImpl();
@@ -42,31 +34,51 @@
@Override
protected ObjectModel initOutputModel() {
if (log.isInfoEnabled()) {
- log.info("inputModelName = " + getModel().getName());
+ log.debug("inputModelName = " + getModel().getName());
}
- outputModel.setName(getModel().getName());
- return outputModel;
+ ObjectModelImpl impl = (ObjectModelImpl) getOutputModel();
+ impl.setName(getModel().getName());
+ return impl;
}
@Override
- public ObjectModel getOutputModel() {
- return this.outputModel;
+ protected void debugOutputModel() {
+ if (log.isDebugEnabled()) {
+ log.debug("classes : " + getOutputModel().getClasses().size());
+ for (ObjectModelClass clazz : getOutputModel().getClasses()) {
+ log.debug(" class : " + clazz.getQualifiedName());
+ ImportsManager manager = getOutputModel().getExtension(clazz.getQualifiedName(), ImportsManager.class);
+ for (String imports : manager.getImports(clazz.getPackageName())) {
+ log.debug(" import : " + imports);
+ }
+ for (ObjectModelAttribute attribute : clazz.getAttributes()) {
+ log.debug(" attribute : " + attribute.getType() + " " + attribute.getName());
+ }
+ for (ObjectModelOperation operation : clazz.getOperations()) {
+ log.debug(" operation : " + operation.getReturnType() + " " + operation.getName());
+ }
+ }
+ }
}
public JavaBuilderHelper getHelper() {
return helper;
}
-
+
protected ImportsManager getImportsManager(ObjectModelClassifier classifier) {
- ImportsManager manager = outputModel.getExtension(classifier.getQualifiedName(), ImportsManager.class);
+ ObjectModelImpl impl = (ObjectModelImpl) getOutputModel();
+ ImportsManager manager = impl.getExtension(classifier.getQualifiedName(), ImportsManager.class);
if (manager == null) {
manager = new ImportsManager();
- outputModel.addExtension(classifier.getQualifiedName(), manager);
+ impl.addExtension(classifier.getQualifiedName(), manager);
+ if (log.isDebugEnabled()) {
+ log.debug("Add new importsManager for : " + classifier.getQualifiedName());
+ }
}
return manager;
}
- protected void addImportForClassifier(ObjectModelClassifier classifier, String imports) {
+ /*protected void addImportForClassifier(ObjectModelClassifier classifier, String imports) {
ImportsManager manager = getImportsManager(classifier);
manager.addImport(imports);
}
@@ -74,48 +86,30 @@
protected void addImportForClassifier(ObjectModelClassifier classifier, Class<?> imports) {
ImportsManager manager = getImportsManager(classifier);
manager.addImport(imports);
+ }*/
+
+ protected ObjectModelClass createClass(String name, String packageName) {
+ ObjectModelClassImpl clazz = new ObjectModelClassImpl();
+ clazz.setName(name);
+ clazz.setPackage(packageName);
+ ObjectModelImpl impl = (ObjectModelImpl) getOutputModel();
+ impl.addClass(clazz);
+ return clazz;
}
- protected void addClassToModel(ObjectModelClass clazz) {
- outputModel.addClass((ObjectModelClassImpl)clazz);
- //ImportsManager manager = setImports(clazz);
-
- // extension for superclass
- /*Iterator<ObjectModelClass> it = clazz.getSuperclasses().iterator();
- if (it.hasNext()) {
- ObjectModelClass superclass = it.next();
- manager.addImport(superclass.getQualifiedName());
- }*/
+ protected ObjectModelClass createAbstractClass(String name, String packageName) {
+ ObjectModelClassImpl clazz = (ObjectModelClassImpl) createClass(name, packageName);
+ clazz.setAbstract(true);
+ return clazz;
}
- /*private ImportsManager setImports(ObjectModelClassifier classifier) {
- ImportsManager manager = getImportsManager(classifier);
- // attributes
- for (ObjectModelAttribute attribute : classifier.getAttributes()) {
- if (log.isInfoEnabled()) {
- log.info("attribute add import for : " + attribute.getType());
- }
- setImportsForType(manager, attribute.getType());
- setImportsForType(manager, attribute.getDefaultValue());
- }
- // implemented interfaces
- for (ObjectModelInterface interfacez : classifier.getInterfaces()) {
- manager.addImport(interfacez.getQualifiedName());
- }
- // operations
- for (ObjectModelOperation operation : classifier.getOperations()) {
- setImportsForType(manager, operation.getReturnType());
- for (ObjectModelParameter parameter : operation.getParameters()) {
- setImportsForType(manager, parameter.getType());
- }
- }
- return manager;
- }*/
-
private void addImport(ObjectModelClassifier classifier, String imports) {
ImportsManager manager = getImportsManager(classifier);
for (String oneType : GeneratorUtil.getTypesList(imports)) {
manager.addImport(oneType);
+ if (log.isDebugEnabled()) {
+ log.debug("Add import for : " + classifier.getQualifiedName() + " _ import: " + oneType);
+ }
}
}
@@ -128,7 +122,7 @@
getHelper().addInterface(classifier, interfaceQualifiedName);
addImport(classifier, interfaceQualifiedName);
}
-
+
protected ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String parse) {
ObjectModelAttribute attribute = getHelper().addAttribute(classifier, parse);
addImport(classifier, attribute.getType());
@@ -136,26 +130,34 @@
}
protected ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, ObjectModelAttribute attribute) {
- getHelper().addAttribute(classifier, attribute);
- addImport(classifier, attribute.getType());
- return attribute;
+ ObjectModelAttribute result = getHelper().addAttribute(classifier, attribute);
+ if (log.isDebugEnabled()) {
+ log.debug("add attribute : " + result.getVisibility() + " " + result.getType() + " " + result.getName());
+ }
+ addImport(classifier, result.getType());
+ return result;
}
protected ObjectModelOperation addOperation(ObjectModelClassifier classifier, String parse) {
ObjectModelOperation operation = getHelper().addOperation(classifier, parse);
+ // imports for returnType
addImport(classifier, operation.getReturnType());
+ // imports for inputParameters
+ for (ObjectModelParameter parameter : operation.getParameters()) {
+ addImport(classifier, parameter.getType());
+ }
return operation;
}
protected ObjectModelParameter addParameter(ObjectModelOperation operation, String type, String name) {
ObjectModelParameter param = getHelper().addParameter(operation, type, name);
- addImport((ObjectModelClassifier)operation.getDeclaringElement(), type);
+ addImport((ObjectModelClassifier) operation.getDeclaringElement(), type);
return param;
}
protected void addException(ObjectModelOperation operation, String exception) {
getHelper().addException(operation, exception);
- addImport((ObjectModelClassifier)operation.getDeclaringElement(), exception);
+ addImport((ObjectModelClassifier) operation.getDeclaringElement(), exception);
}
}
Modified: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java 2009-10-28 19:04:40 UTC (rev 666)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java 2009-10-29 13:32:03 UTC (rev 667)
@@ -1,30 +1,27 @@
-
package org.nuiton.eugene.test.generator;
+import org.nuiton.eugene.GeneratorUtil;
import org.nuiton.eugene.java.OM2JavaTransformer;
+import org.nuiton.eugene.models.object.*;
+
import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import java.util.Iterator;
-import org.nuiton.eugene.GeneratorUtil;
-import org.nuiton.eugene.models.object.ObjectModelAttribute;
-import org.nuiton.eugene.models.object.ObjectModelClass;
-import org.nuiton.eugene.models.object.ObjectModelClassifier;
-import org.nuiton.eugene.models.object.ObjectModelInterface;
-import org.nuiton.eugene.models.object.ObjectModelOperation;
-import org.nuiton.eugene.models.object.ObjectModelParameter;
/*{generator option: parentheses = false}*/
+
/*{generator option: writeString = +}*/
/**
* BeanTransformer
- *
+ * <p/>
* Created: 28 oct. 2009
*
* @author fdesbois
* @version $Revision$
- *
- * Mise a jour: $Date$
- * par : $Author$
+ * <p/>
+ * Mise a jour: $Date$
+ * par : $Author$
*/
public class BeanTransformer extends OM2JavaTransformer {
@@ -39,7 +36,12 @@
return;
}
- ObjectModelClass resultClass = getHelper().createClass(clazz.getName(), clazz.getPackageName());
+ ObjectModelClass resultClass = null;
+ if (!clazz.getOperations().isEmpty()) {
+ resultClass = this.createAbstractClass(clazz.getName(), clazz.getPackageName());
+ } else {
+ resultClass = this.createClass(clazz.getName(), clazz.getPackageName());
+ }
// Set superclass
Iterator<ObjectModelClass> j = clazz.getSuperclasses().iterator();
@@ -49,7 +51,7 @@
}
// Add interfaces from inputModel
- for (Iterator<ObjectModelInterface> i=clazz.getInterfaces().iterator(); i.hasNext();) {
+ for (Iterator<ObjectModelInterface> i = clazz.getInterfaces().iterator(); i.hasNext();) {
ObjectModelClassifier parentInterface = i.next();
this.addInterface(resultClass, parentInterface.getQualifiedName());
}
@@ -58,7 +60,7 @@
// Add attributes
for (ObjectModelAttribute attr : clazz.getAttributes()) {
-
+
if (attr.isNavigable() || attr.hasAssociationClass()) {
if (GeneratorUtil.isNMultiplicity(attr)) {
@@ -66,7 +68,7 @@
//type = List.class.getName();
} else {
//type = Collection.class.getName();
- }
+ }
}
this.addAttribute(resultClass, attr);
@@ -80,15 +82,13 @@
for (ObjectModelParameter param : op.getParameters()) {
ObjectModelParameter resultParameter = this.addParameter(resultOperation,
- param.getType(), param.getName());
+ param.getType(), param.getName());
}
for (String exception : op.getExceptions()) {
this.addException(resultOperation, exception);
}
}
-
- this.addClassToModel(resultClass);
}
private void createForDTO(ObjectModelClass resultClass, ObjectModelClass inputClass) {
@@ -104,51 +104,51 @@
protected void createListeners(ObjectModelClass resultClass, ObjectModelClass inputClass) {
- this.addAttribute(resultClass, "protected final PropertyChangeSupport pcs");
+ this.addAttribute(resultClass, "protected final " + PropertyChangeSupport.class.getName() + " pcs");
// Default constructor
- ObjectModelOperation constructor = getHelper().addConstructor(inputClass, "public");
+ ObjectModelOperation constructor = getHelper().addConstructor(resultClass, "public");
getHelper().setOperationBody(constructor, ""
- /*{
- pcs = new PropertyChangeSupport(this);
- }*/
+ /*{
+ pcs = new PropertyChangeSupport(this);
+ }*/
);
// Add PropertyListener
String propType = PropertyChangeListener.class.getName();
String strType = String.class.getName();
- ObjectModelOperation addPropertyChangeListener = this.addOperation(inputClass,
+ ObjectModelOperation addPropertyChangeListener = this.addOperation(resultClass,
"public void addPropertyChangeListener(" + propType + " listener)");
getHelper().setOperationBody(addPropertyChangeListener, ""
- /*{
- pcs.addPropertyChangeListener(listener);
- }*/
+ /*{
+ pcs.addPropertyChangeListener(listener);
+ }*/
);
- ObjectModelOperation addPropertyChangeListenerPlus =this.addOperation(inputClass,
+ ObjectModelOperation addPropertyChangeListenerPlus = this.addOperation(resultClass,
"public void addPropertyChangeListener(" + strType + " propertyName," + propType + " listener)");
getHelper().setOperationBody(addPropertyChangeListenerPlus, ""
- /*{
- pcs.addPropertyChangeListener(propertyName, listener);
- }*/
+ /*{
+ pcs.addPropertyChangeListener(propertyName, listener);
+ }*/
);
- ObjectModelOperation removePropertyChangeListener = this.addOperation(inputClass,
+ ObjectModelOperation removePropertyChangeListener = this.addOperation(resultClass,
"public void removePropertyChangeListener(" + propType + " listener)");
getHelper().setOperationBody(removePropertyChangeListener, ""
- /*{
- pcs.removePropertyChangeListener(listener);
- }*/
+ /*{
+ pcs.removePropertyChangeListener(listener);
+ }*/
);
- ObjectModelOperation removePropertyChangeListenerPlus =this.addOperation(inputClass,
+ ObjectModelOperation removePropertyChangeListenerPlus = this.addOperation(resultClass,
"public void removePropertyChangeListener(" + strType + " propertyName," + propType + " listener)");
getHelper().setOperationBody(removePropertyChangeListenerPlus, ""
- /*{
- pcs.removePropertyChangeListener(propertyName, listener);
- }*/
+ /*{
+ pcs.removePropertyChangeListener(propertyName, listener);
+ }*/
);
}
-
+
}
1
0
Author: fdesbois
Date: 2009-10-28 20:04:40 +0100 (Wed, 28 Oct 2009)
New Revision: 666
Added:
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaBuilderHelper.java
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaGenerator.java
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/OM2JavaTransformer.java
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java
branches/1.1.0-Javabuilder/eugene-test/src/test/java/org/nuiton/eugene/java/
branches/1.1.0-Javabuilder/eugene-test/src/test/java/org/nuiton/eugene/java/JavaBuilderHelperTest.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/AbstractGenerator.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelTransformer.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/Transformer.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaBuilder.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderHelper.java
Removed:
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/DTOBuilder.java
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/JavaGenerator.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/JavaBuilder.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilderHelper.java
Modified:
branches/1.1.0-Javabuilder/eugene-test/pom.xml
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java
branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestReader.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/Generator.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelGenerator.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/StateModelGenerator.java
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java
branches/1.1.0-Javabuilder/eugene/src/test/resources/log4j.properties
Log:
- Change hierarchy for Generator to have common root with Transformer
- Create transformers
- Begin translation BeanGenerator to BeanTransformer
Added: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/AbstractGenerator.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/AbstractGenerator.java (rev 0)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/AbstractGenerator.java 2009-10-28 19:04:40 UTC (rev 666)
@@ -0,0 +1,160 @@
+package org.nuiton.eugene;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import org.nuiton.eugene.models.Model;
+
+/**
+ * AbstractGenerator
+ *
+ * Created: 28 oct. 2009
+ *
+ * @param <M>
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+public abstract class AbstractGenerator<M extends Model> extends Generator<M> {
+
+ protected AbstractGenerator<M> parent = null;
+
+ public AbstractGenerator() {
+ super();
+ }
+
+ public AbstractGenerator(AbstractGenerator<M> parent) {
+ super();
+ setParent(parent);
+ }
+
+ public void setParent(AbstractGenerator<M> parent) {
+ this.parent = parent;
+ setEncoding(parent.getEncoding());
+ }
+
+ @Override
+ public boolean getOverwrite() {
+ if (parent != null) {
+ return getOverwrite();
+ }
+ return overwrite;
+ }
+
+ /**
+ * Permet de recuperer la proprieté passé en argument
+ *
+ * @param name le nom de la propriete
+ * @return la valeur de la propriété
+ */
+ @Override
+ public String getProperty(String name) {
+ if (parent != null) {
+ return parent.getProperty(name);
+ }
+ return properties.getProperty(name);
+ }
+
+ @Override
+ public long getLastModifiedSource() {
+ if (parent != null) {
+ return parent.getLastModifiedSource();
+ }
+ return this.lastModifiedSource;
+ }
+
+ /**
+ * @param file fichier a tester
+ * @return vrai si le fichier passé en parametre est plus recent que
+ * les sources sur generateur.
+ */
+ protected boolean isNewerThanSource(File file) {
+ if (log.isDebugEnabled()) {
+ log.debug("source date: " + getLastModifiedSource()
+ + " file date: " + file.lastModified() + "(" + file + ")");
+ }
+ return file.lastModified() > getLastModifiedSource();
+ }
+
+ protected File getDestinationFile(File destDir, String filename) {
+ return new File(destDir, filename);
+ }
+
+ /**
+ * Test if given package is allowed for generation.
+ *
+ * An element can be generated if his package is in the {@link generatedPackages} list
+ * or if {@link generatedPackages} is null or empty.
+ *
+ * @param packageName package name to test
+ * @return generation allowed
+ */
+ protected boolean canGeneratePackage(String packageName) {
+ boolean canGenerate = true;
+ if (parent != null) {
+ return parent.canGeneratePackage(packageName);
+ }
+ // if not generation restriction, generate everything
+ if (generatedPackages != null && !generatedPackages.isEmpty()) {
+ canGenerate = false;
+
+ // on doit donc tester que le package courant
+ // soit est egal a un des element de la liste
+ // soit commence par ca
+ for (String generatedPackage : generatedPackages) {
+
+ // cas egalité parfaites
+ if (packageName != null && packageName.equals(generatedPackage)) {
+ canGenerate = true;
+ }
+
+ // cas commence par (on ajout un point à la fin)
+ String localGeneratedPackage = generatedPackage;
+ if (!localGeneratedPackage.endsWith(".")) {
+ localGeneratedPackage += ".";
+ }
+ if (packageName != null && packageName.startsWith(localGeneratedPackage)) {
+ canGenerate = true;
+ }
+
+ }
+ }
+
+ return canGenerate;
+ }
+
+ protected void write(File outputFile, MonitorWriter out) {
+ File write0utputFile = outputFile;
+ if (out.isModified()) {
+ try {
+ write0utputFile = outputFile.getCanonicalFile();
+ write0utputFile.getParentFile().mkdirs();
+
+ Writer output = null;
+
+ if (encoding != null) {
+ if (log.isDebugEnabled()) {
+ log.debug("Force encoding to " + encoding + " : " + this);
+ }
+ output = new OutputStreamWriter(new FileOutputStream(
+ write0utputFile), encoding);
+ } else {
+ output = new OutputStreamWriter(new FileOutputStream(
+ write0utputFile));
+ }
+
+ output.write(out.getBuffer().toString());
+ output.close();
+ } catch (IOException eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Unable to write file : " + write0utputFile.getAbsolutePath(), eee);
+ }
+ throw new RuntimeException(eee);
+ }
+ }
+ }
+}
Modified: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/Generator.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/Generator.java 2009-10-28 19:04:32 UTC (rev 665)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/Generator.java 2009-10-28 19:04:40 UTC (rev 666)
@@ -35,7 +35,7 @@
*
* Created: 5 août 2004
*
- * @param <M> Model associated to the generator
+ * @param <M> Model associated to the generator (input model)
*
* @author Cedric Pineau <pineau(a)codelutin.com>
* @version $Revision$
@@ -64,33 +64,17 @@
/** date de derniere modification de la source la plus recente */
protected long lastModifiedSource = 0;
+ /** Model */
+ protected M model;
- protected Generator<M> parent = null;
-
public Generator() {
}
- public Generator(Generator<M> parent) {
- setParent(parent);
- }
-
- public void setParent(Generator<M> parent) {
- this.parent = parent;
- setEncoding(parent.getEncoding());
- }
-
- public void setProperties(Properties p) {
- this.properties = p;
- }
-
public void setOverwrite(boolean v) {
overwrite = v;
}
public boolean getOverwrite() {
- if (parent != null) {
- return getOverwrite();
- }
return overwrite;
}
@@ -101,6 +85,20 @@
public void setEncoding(String encoding) {
this.encoding = encoding;
}
+
+ public void setProperties(Properties p) {
+ this.properties = p;
+ }
+
+ /**
+ * Permet de recuperer la proprieté passé en argument
+ *
+ * @param name le nom de la propriete
+ * @return la valeur de la propriété
+ */
+ public String getProperty(String name) {
+ return properties.getProperty(name);
+ }
/**
* Set list of package to allow generation.
@@ -113,73 +111,14 @@
this.generatedPackages = generatedPackages;
}
- /**
- * Permet de recuperer la proprieté passé en argument
- *
- * @param name le nom de la propriete
- * @return la valeur de la propriété
- */
- public String getProperty(String name) {
- if (parent != null) {
- return parent.getProperty(name);
- }
- return properties.getProperty(name);
- }
-
public void setLastModifiedSource(long lastModifiedSource) {
this.lastModifiedSource = lastModifiedSource;
}
- /**
- * @param file fichier a tester
- * @return vrai si le fichier passé en parametre est plus recent que
- * les sources sur generateur.
- */
- protected boolean isNewerThanSource(File file) {
- if (log.isDebugEnabled()) {
- log.debug("source date: " + lastModifiedSource
- + " file date: " + file.lastModified() + "(" + file + ")");
- }
- return file.lastModified() > lastModifiedSource;
+ public long getLastModifiedSource() {
+ return this.lastModifiedSource;
}
-
- protected File getDestinationFile(File destDir, String filename) {
- return new File(destDir, filename);
- }
-
- protected void write(File outputFile, MonitorWriter out) {
- File write0utputFile = outputFile;
- if (out.isModified()) {
- try {
- write0utputFile = outputFile.getCanonicalFile();
- write0utputFile.getParentFile().mkdirs();
-
- Writer output = null;
-
- if (encoding != null) {
- if (log.isDebugEnabled()) {
- log.debug("Force encoding to " + encoding + " : "
- + this);
- }
- output = new OutputStreamWriter(new FileOutputStream(
- write0utputFile), encoding);
- } else {
- output = new OutputStreamWriter(new FileOutputStream(
- write0utputFile));
- }
-
- output.write(out.getBuffer().toString());
- output.close();
- } catch (IOException eee) {
- if (log.isWarnEnabled()) {
- log.warn("Unable to write file : "
- + write0utputFile.getAbsolutePath(), eee);
- }
- throw new RuntimeException(eee);
- }
- }
- }
-
+
public List<String> getExcludeTemplates() {
return excludeTemplates;
}
@@ -188,51 +127,13 @@
this.excludeTemplates = excludeTemplates;
}
+ public M getModel() {
+ return this.model;
+ }
+
@Deprecated
public abstract void generate(File[] file, File destDir);
public abstract void generate(M model, File destDir);
- /**
- * Test if given package is allowed for generation.
- *
- * An element can be generated if his package is in the {@link generatedPackages} list
- * or if {@link generatedPackages} is null or empty.
- *
- * @param packageName package name to test
- * @return generation allowed
- */
- protected boolean canGeneratePackage(String packageName) {
- boolean canGenerate = true;
- if (parent != null) {
- return parent.canGeneratePackage(packageName);
- }
- // if not generation restriction, generate everything
- if (generatedPackages != null && !generatedPackages.isEmpty()) {
- canGenerate = false;
-
- // on doit donc tester que le package courant
- // soit est egal a un des element de la liste
- // soit commence par ca
- for (String generatedPackage : generatedPackages) {
-
- // cas egalité parfaites
- if (packageName != null && packageName.equals(generatedPackage)) {
- canGenerate = true;
- }
-
- // cas commence par (on ajout un point à la fin)
- String localGeneratedPackage = generatedPackage;
- if (!localGeneratedPackage.endsWith(".")) {
- localGeneratedPackage += ".";
- }
- if (packageName != null && packageName.startsWith(localGeneratedPackage)) {
- canGenerate = true;
- }
-
- }
- }
-
- return canGenerate;
- }
}
Deleted: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/JavaBuilder.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/JavaBuilder.java 2009-10-28 19:04:32 UTC (rev 665)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/JavaBuilder.java 2009-10-28 19:04:40 UTC (rev 666)
@@ -1,199 +0,0 @@
-
-package org.nuiton.eugene;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
-import java.util.regex.Matcher;
-import org.apache.commons.digester.Digester;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.eugene.models.object.ObjectModel;
-import org.nuiton.eugene.models.object.ObjectModelAttribute;
-import org.nuiton.eugene.models.object.ObjectModelBuilderHelper;
-import org.nuiton.eugene.models.object.ObjectModelClass;
-import org.nuiton.eugene.models.object.ObjectModelClassifier;
-import org.nuiton.eugene.models.object.ObjectModelElement;
-import org.nuiton.eugene.models.object.ObjectModelEnumeration;
-import org.nuiton.eugene.models.object.ObjectModelInterface;
-import org.nuiton.eugene.models.object.ObjectModelOperation;
-import org.nuiton.eugene.models.object.ObjectModelParameter;
-import org.nuiton.eugene.models.object.xml.DigesterObjectModelRuleSet;
-import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl;
-import org.nuiton.eugene.models.object.xml.ObjectModelClassifierImpl;
-import org.nuiton.eugene.models.object.xml.ObjectModelElementImpl;
-import org.nuiton.eugene.models.object.xml.ObjectModelImpl;
-import org.nuiton.eugene.models.object.xml.ObjectModelImplRef;
-import org.nuiton.eugene.models.object.xml.ObjectModelImplTagValue;
-import org.nuiton.util.FileUtil;
-import org.nuiton.util.RecursiveProperties;
-import org.nuiton.util.StringUtil;
-import org.xml.sax.SAXException;
-
-/**
- *
- * @author fdesbois
- */
-public abstract class JavaBuilder {
-
- private static final Log log = LogFactory.getLog(JavaBuilder.class);
-
- protected ObjectModelImpl objectModel;
-
- private static ObjectModelBuilderHelper helper = new ObjectModelBuilderHelper();
-
- public JavaBuilder(String modelName) {
- this.objectModel = new ObjectModelImpl();
- this.objectModel.setName(modelName);
- }
-
- public JavaBuilder() {
- this.objectModel = new ObjectModelImpl();
- }
-
- public ObjectModel getModel() {
- return objectModel;
- }
-
- public ObjectModelBuilderHelper getHelper() {
- return helper;
- }
-
- protected ImportsManager getImportsManager(ObjectModelClassifier classifier) {
- ImportsManager manager = objectModel.getExtension(classifier.getQualifiedName(), ImportsManager.class);
- if (manager == null) {
- manager = new ImportsManager();
- objectModel.addExtension(classifier.getQualifiedName(), manager);
- }
- return manager;
- }
-
- public void addImportForClassifier(ObjectModelClassifier classifier, String imports) {
- ImportsManager manager = getImportsManager(classifier);
- manager.addImport(imports);
- }
-
- public void addImportForClassifier(ObjectModelClassifier classifier, Class<?> imports) {
- ImportsManager manager = getImportsManager(classifier);
- manager.addImport(imports);
- }
-
- public void addClassToModel(ObjectModelClass clazz) {
- objectModel.addClass((ObjectModelClassImpl)clazz);
- ImportsManager manager = setImports(clazz);
-
- // extension for superclass
- Iterator<ObjectModelClass> it = clazz.getSuperclasses().iterator();
- if (it.hasNext()) {
- ObjectModelClass superclass = it.next();
- manager.addImport(superclass.getQualifiedName());
- }
- }
-
- private ImportsManager setImports(ObjectModelClassifier classifier) {
- ImportsManager manager = getImportsManager(classifier);
- // attributes
- for (ObjectModelAttribute attribute : classifier.getAttributes()) {
- if (log.isInfoEnabled()) {
- log.info("attribute add import for : " + attribute.getType());
- }
- setImportsForType(manager, attribute.getType());
- setImportsForType(manager, attribute.getDefaultValue());
- }
- // implemented interfaces
- for (ObjectModelInterface interfacez : classifier.getInterfaces()) {
- manager.addImport(interfacez.getQualifiedName());
- }
- // operations
- for (ObjectModelOperation operation : classifier.getOperations()) {
- setImportsForType(manager, operation.getReturnType());
- for (ObjectModelParameter parameter : operation.getParameters()) {
- setImportsForType(manager, parameter.getType());
- }
- }
- return manager;
- }
-
- private void setImportsForType(ImportsManager manager, String type) {
- for (String oneType : GeneratorUtil.getTypesList(type)) {
- manager.addImport(oneType);
- }
- }
-
- public void build() {
-
- }
-
- public void build(ObjectModel objectModel) {
- this.objectModel = (ObjectModelImpl)objectModel;
- //initFiles();
- build(); // Ajout elements, ...
-
- //String filename = getFilenameForModel(objectModel);
- buildFromElement(objectModel, ObjectModelType.OBJECT_MODEL);
-
- buildFromElements(objectModel.getClassifiers(),
- ObjectModelType.OBJECT_MODEL_CLASSIFIER);
-
- buildFromElements(objectModel.getInterfaces(),
- ObjectModelType.OBJECT_MODEL_INTERFACE);
-
- buildFromElements(objectModel.getClasses(),
- ObjectModelType.OBJECT_MODEL_CLASS);
-
- buildFromElements(objectModel.getEnumerations(),
- ObjectModelType.OBJECT_MODEL_ENUMERATION);
-
- }
-
- private void buildFromElements(Collection<? extends ObjectModelElement> elements, ObjectModelType type) {
- for (ObjectModelElement element : elements) {
- buildFromElement(element, type);
- }
- }
-
- protected void buildFromElement(Object element, ObjectModelType type) {
- switch (type) {
- case OBJECT_MODEL:
- buildFromModel((ObjectModel)element);
- break;
- case OBJECT_MODEL_CLASSIFIER:
- buildFromClassifier((ObjectModelClassifier)element);
- break;
- case OBJECT_MODEL_INTERFACE:
- buildFromInterface((ObjectModelInterface)element);
- break;
- case OBJECT_MODEL_CLASS:
- buildFromClass((ObjectModelClass)element);
- break;
- case OBJECT_MODEL_ENUMERATION:
- buildFromEnumeration((ObjectModelEnumeration)element);
- break;
- }
- }
-
- public void buildFromModel(ObjectModel model) {
-
- }
-
- public void buildFromClassifier(ObjectModelClassifier model) {
-
- }
-
- public void buildFromInterface(ObjectModelInterface model) {
-
- }
-
- public void buildFromClass(ObjectModelClass model) {
-
- }
-
- public void buildFromEnumeration(ObjectModelEnumeration model) {
-
- }
-}
Modified: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelGenerator.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelGenerator.java 2009-10-28 19:04:32 UTC (rev 665)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelGenerator.java 2009-10-28 19:04:40 UTC (rev 666)
@@ -68,26 +68,20 @@
*
* Mise a jour: $Date$ par : $Author$
*/
-public class ObjectModelGenerator extends Generator<ObjectModel> {
+public class ObjectModelGenerator extends AbstractGenerator<ObjectModel> {
/** Logger for this class. */
private static Log log = LogFactory.getLog(ObjectModelGenerator.class);
- protected ObjectModel model = null;
public ObjectModelGenerator() {
super();
}
- public ObjectModelGenerator(Generator parent) {
+ public ObjectModelGenerator(AbstractGenerator<ObjectModel> parent) {
super(parent);
}
- public ObjectModel getModel() {
- return model;
- }
-
-
@Override
@Deprecated
public void generate(File[] files, File destDir) {
@@ -112,13 +106,16 @@
* écrire alors le fichier sera généré.
* @param model
* @param destDir
- * @throws IOException
*/@Override
public void generate(ObjectModel model, File destDir) {
// generateFromModel
this.model = model;
+ if (log.isInfoEnabled()) {
+ log.info("inputModel : " + this.model);
+ }
+
//try {
String filename = getFilenameForModel(model);
generateFromElement(model, destDir, filename,
Added: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelTransformer.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelTransformer.java (rev 0)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/ObjectModelTransformer.java 2009-10-28 19:04:40 UTC (rev 666)
@@ -0,0 +1,221 @@
+
+package org.nuiton.eugene;
+
+import org.nuiton.eugene.*;
+import java.io.File;
+import java.util.Collection;
+import org.nuiton.eugene.models.Model;
+import org.nuiton.eugene.models.object.ObjectModel;
+import org.nuiton.eugene.models.object.ObjectModelClass;
+import org.nuiton.eugene.models.object.ObjectModelClassifier;
+import org.nuiton.eugene.models.object.ObjectModelElement;
+import org.nuiton.eugene.models.object.ObjectModelEnumeration;
+import org.nuiton.eugene.models.object.ObjectModelInterface;
+
+/**
+ * ObjectModelTransformer
+ *
+ * Created: 28 oct. 2009
+ *
+ * @param <O>
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+public abstract class ObjectModelTransformer<O extends Model> extends Transformer<ObjectModel, O>{
+
+ public ObjectModelTransformer(Generator<O> output) {
+ super(output);
+ }
+
+ protected abstract O initOutputModel();
+
+ /**
+ * Par defaut la methode appelle la methode
+ * {@link #generateFromModel(Writer, ObjectModel)} puis boucle sur chaque
+ * class en appelant la m?thode
+ * {@link #generateFromClass(Writer, ObjectModelClass)} puis boucle sur chaque
+ * interface en appelant a méthode
+ * {@link #generateFromInterface(Writer, ObjectModelInterface)} et enfin sur chaque
+ * énumération en appelant la méthode
+ * {@link #generateFromEnumeration(Writer, ObjectModelEnumeration)}
+ * Le nom de fichier est récupérer pour chacun d'eux en appelant la méthode
+ * getFilenameFor.... La methode generateFrom... n'utilise pas le Writer
+ * alors le fichier n'est pas généré, si on l'utilise m?me pour ne rien
+ * écrire alors le fichier sera généré.
+ * @param model
+ * @param destDir
+ */@Override
+ public void generate(ObjectModel model, File destDir) {
+
+ // generateFromModel
+ this.model = model; // inputModel
+ initOutputModel();
+
+ //try {
+ //String filename = getFilenameForModel(model);
+ transformFromElement(model, ObjectModelType.OBJECT_MODEL);
+
+ // generateFromClassifier
+ transformFromElements(model.getClassifiers(), ObjectModelType.OBJECT_MODEL_CLASSIFIER);
+
+ // generateFromInterface
+ transformFromElements(model.getInterfaces(), ObjectModelType.OBJECT_MODEL_INTERFACE);
+
+ // generateFromClass
+ transformFromElements(model.getClasses(), ObjectModelType.OBJECT_MODEL_CLASS);
+
+ // generateFromEnumeration
+ transformFromElements(model.getEnumerations(), ObjectModelType.OBJECT_MODEL_ENUMERATION);
+
+ /*} catch (IOException eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Unable to generate for file", eee);
+ }
+ }*/
+
+ outputGenerator.generate(getOutputModel(), destDir);
+ }
+
+ /**
+ * Parcours une collection d'éléments pour la génération suivant un type d'éléments.
+ * Types possibles : ObjectModelClassifier, ObjectModelClass, ObjectModelInterface et
+ * ObjectModelEnumeration.
+ * Deux méthodes dépendent du type et peuvent être surchargées :
+ * getFilenameForXXX et generateFromXXX (XXX étant un type prédéfini pour une méthode existante).
+ *
+ * @see ObjectModelType
+ *
+ * @param elements Collection d'éléments d'un des types ci-dessus
+ * @param destDir dossier de destination pour le fichier généré
+ * @param type type explicite d'ObjectModel
+ */
+ private void transformFromElements(Collection<? extends ObjectModelElement> elements,
+ ObjectModelType type) {
+
+ for (ObjectModelElement element : elements) {
+ String filename = "";
+ // Filename depends on type of element (Classifier, Class, Interface or Enumeration)
+ switch (type) {
+ case OBJECT_MODEL_CLASSIFIER:
+ filename = getFilenameForClassifier((ObjectModelClassifier)element); break;
+ case OBJECT_MODEL_INTERFACE:
+ filename = getFilenameForInterface((ObjectModelInterface)element); break;
+ case OBJECT_MODEL_CLASS:
+ filename = getFilenameForClass((ObjectModelClass)element); break;
+ case OBJECT_MODEL_ENUMERATION:
+ filename = getFilenameForEnumeration((ObjectModelEnumeration)element);
+ }
+
+ transformFromElement(element, type);
+ }
+ }
+
+ /**
+ * Génération pour un élément du modèle (ou le modèle lui-même).
+ * Types possibles : ObjectModel, ObjectModelClassifier, ObjectModelClass,
+ * ObjectModelInterface et ObjectModelEnumeration.
+ * La méthode generateFromXXX dépend du type d'élément et peut être surchargée.
+ *
+ * @see ObjectModelType
+ *
+ * @param element element à généré
+ * @param destDir dossier de destination
+ * @param filename nom du fichier de sortie
+ * @param type type d'ObjectModel
+ */
+ protected void transformFromElement(Object element, ObjectModelType type) {
+
+ switch (type) {
+ case OBJECT_MODEL:
+ transformFromModel((ObjectModel)element);
+ break;
+ case OBJECT_MODEL_CLASSIFIER:
+ transformFromClassifier((ObjectModelClassifier)element);
+ break;
+ case OBJECT_MODEL_INTERFACE:
+ transformFromInterface((ObjectModelInterface)element);
+ break;
+ case OBJECT_MODEL_CLASS:
+ transformFromClass((ObjectModelClass)element);
+ break;
+ case OBJECT_MODEL_ENUMERATION:
+ transformFromEnumeration((ObjectModelEnumeration)element);
+ break;
+ }
+ }
+
+ /**
+ * Par defaut cette methode retourne le getName du model. Si l'on souhaite
+ * utiliser la methode generateFromModel il vaut mieux surcharger cette
+ * methode
+ * @param model
+ * @return
+ */
+ public String getFilenameForModel(ObjectModel model) {
+ return model.getName();
+ }
+
+ /**
+ * Par defaut cette methode retourne le QualifiedName convertie en chemin
+ * par exemple pour org.codelutin.Toto on aurait org/codelutin/Toto
+ * @param model
+ * @param packageName
+ * @return
+ */
+ public String getFilenameForPackage(ObjectModel model, String packageName) {
+ return packageName.replace('.', File.separatorChar);
+ }
+
+ /**
+ * Par defaut cette methode retourne le QualifiedName convertie en chemin
+ * par exemple pour org.codelutin.Toto on aurait org/codelutin/Toto
+ * @param interfacez
+ * @return
+ */
+ public String getFilenameForInterface(ObjectModelInterface interfacez) {
+ return interfacez.getQualifiedName().replace('.', File.separatorChar);
+ }
+
+ /**
+ * Par defaut cette methode retourne le QualifiedName convertie en chemin
+ * par exemple pour org.codelutin.Toto on aurait org/codelutin/Toto
+ * @param clazz
+ * @return
+ */
+ public String getFilenameForClass(ObjectModelClass clazz) {
+ return clazz.getQualifiedName().replace('.', File.separatorChar);
+ }
+
+ /**
+ * Par defaut cette methode retourne le QualifiedName convertie en chemin
+ * par exemple pour org.codelutin.Toto on aurait org/codelutin/Toto
+ * @param clazz
+ * @return
+ */
+ public String getFilenameForClassifier(ObjectModelClassifier clazz) {
+ return clazz.getQualifiedName().replace('.', File.separatorChar);
+ }
+
+ public String getFilenameForEnumeration(ObjectModelEnumeration enumeration) {
+ return enumeration.getQualifiedName().replace('.', File.separatorChar);
+ }
+
+ public void transformFromModel(ObjectModel model) {
+ }
+
+ public void transformFromInterface(ObjectModelInterface interfacez) {
+ }
+
+ public void transformFromClass(ObjectModelClass clazz) {
+ }
+
+ public void transformFromClassifier(ObjectModelClassifier clazz) {
+ }
+
+ public void transformFromEnumeration(ObjectModelEnumeration enumeration) {
+ }
+
+}
Modified: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/StateModelGenerator.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/StateModelGenerator.java 2009-10-28 19:04:32 UTC (rev 665)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/StateModelGenerator.java 2009-10-28 19:04:40 UTC (rev 666)
@@ -46,18 +46,16 @@
*
* Last update : $Date$ By : $Author$
*/
-public class StateModelGenerator extends Generator<StateModel> {
+public class StateModelGenerator extends AbstractGenerator<StateModel> {
/** Logger for this class */
private static Log log = LogFactory.getLog(StateModelGenerator.class);
- /** Model */
- protected StateModel model;
-
/**
* Empty constructor
*/
public StateModelGenerator() {
+ super();
}
/**
@@ -65,17 +63,10 @@
*
* @param parent parent generator
*/
- public StateModelGenerator(Generator parent) {
+ public StateModelGenerator(AbstractGenerator<StateModel> parent) {
super(parent);
}
- /**
- * @return the model
- */
- public StateModel getModel() {
- return model;
- }
-
/*
* @see org.nuiton.eugene.Generator#generate(java.io.File[], java.io.File)
*/
Added: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/Transformer.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/Transformer.java (rev 0)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/Transformer.java 2009-10-28 19:04:40 UTC (rev 666)
@@ -0,0 +1,84 @@
+
+package org.nuiton.eugene;
+
+import org.nuiton.eugene.*;
+import java.io.File;
+import java.util.List;
+import java.util.Properties;
+import org.nuiton.eugene.models.Model;
+
+/**
+ * Transformer
+ *
+ * Created: 28 oct. 2009
+ *
+ * @param <I> input model to transform
+ * @param <O> output model transformed
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+public abstract class Transformer<I extends Model, O extends Model> extends Generator<I> {
+
+ protected Generator<O> outputGenerator;
+
+ protected O outputModel;
+
+ public Transformer(Generator<O> outputGenerator) {
+ super();
+ this.outputGenerator = outputGenerator;
+ }
+
+ @Override
+ public void setOverwrite(boolean v) {
+ outputGenerator.setOverwrite(v);
+ }
+
+ @Override
+ public void setEncoding(String encoding) {
+ outputGenerator.setEncoding(encoding);
+ }
+
+ @Override
+ public void setProperties(Properties p) {
+ outputGenerator.setProperties(p);
+ }
+
+ /**
+ * Set list of package to allow generation.
+ *
+ * If {@code null} or empty, generate all packages.
+ *
+ * @param generatedPackages list of package to generate
+ */
+ @Override
+ public void setGeneratedPackages(List<String> generatedPackages) {
+ outputGenerator.setGeneratedPackages(generatedPackages);
+ }
+
+ @Override
+ public void setLastModifiedSource(long lastModifiedSource) {
+ outputGenerator.setLastModifiedSource(lastModifiedSource);
+ }
+
+ @Override
+ public void setExcludeTemplates(List<String> excludeTemplates) {
+ outputGenerator.setExcludeTemplates(excludeTemplates);
+ }
+
+ public Generator<O> getOutputGenerator() {
+ return this.outputGenerator;
+ }
+
+ public O getOutputModel() {
+ return this.outputModel;
+ }
+
+ @Override
+ @Deprecated
+ public void generate(File[] file, File destDir) {
+ getOutputGenerator().generate(file, destDir);
+ }
+}
Deleted: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilderHelper.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilderHelper.java 2009-10-28 19:04:32 UTC (rev 665)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilderHelper.java 2009-10-28 19:04:40 UTC (rev 666)
@@ -1,131 +0,0 @@
-/* *##%
- * Copyright (c) 2009 poussin. All rights reserved.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *##%*/
-
-package org.nuiton.eugene.models.object;
-
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl;
-import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl;
-import org.nuiton.eugene.models.object.xml.ObjectModelClassifierImpl;
-import org.nuiton.eugene.models.object.xml.ObjectModelInterfaceImpl;
-import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl;
-import org.nuiton.eugene.models.object.xml.ObjectModelParameterImpl;
-
-/**
- * class that help to build java class or interface object.
- *
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-public class ObjectModelBuilderHelper {
-
- public static final boolean PROP_SET_STATIC = true;
- public static final boolean PROP_SET_NO_STATIC = false;
-
- /** to use log facility, just put in your code: log.info(\"...\"); */
- static private Log log = LogFactory.getLog(ObjectModelBuilderHelper.class);
-
- public ObjectModelClass createClass(String name, String packageName) {
- ObjectModelClassImpl result = new ObjectModelClassImpl();
- result.setName(name);
- result.setPackage(packageName);
- return result;
- }
-
- public ObjectModelClass createAbstractClass(String name, String packageName) {
- ObjectModelClassImpl result = (ObjectModelClassImpl) createClass(name,packageName);
- result.setAbstract(true);
- return result;
- }
-
- public ObjectModelInterface createInterface(String name, String packageName) {
- ObjectModelInterfaceImpl result = new ObjectModelInterfaceImpl();
- result.setName(name);
- result.setPackage(packageName);
- return result;
- }
-
- public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type, String value,
- String visibility, boolean isStatic, boolean isFinal) {
- ObjectModelAttributeImpl attribute = new ObjectModelAttributeImpl();
- attribute.setFinal(isFinal);
- attribute.setDefaultValue(value);
- attribute.setName(name);
- attribute.setStatic(isStatic);
- attribute.setType(type);
- attribute.setVisibility(visibility);
-
- ObjectModelClassifierImpl classifierImpl = (ObjectModelClassifierImpl)classifier;
- classifierImpl.addAttribute(attribute);
- return attribute;
- }
-
- public ObjectModelAttribute addConstant(ObjectModelClassifier classifier, String name, String type, String value, String visibility) {
- return addAttribute(classifier, name, type, value, visibility, true, true);
- }
-
- public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type, String value) {
- return addAttribute(classifier, name, type, value, "protected", false, false);
- }
-
- public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type) {
- return addAttribute(classifier, name, type, "", "protected", false, false);
- }
-
- public ObjectModelOperation addOperation(ObjectModelClassifier clazz,
- String name, String returnType, String... inputParameters) {
- ObjectModelOperationImpl result = new ObjectModelOperationImpl();
- result.setName(name);
-
- result.setName(name);
- result.setVisibility("public");
- ObjectModelParameterImpl returnParameter = new ObjectModelParameterImpl();
- if (returnType == null) {
- returnType = "void";
- }
- returnParameter.setType(returnType);
-
- result.setReturnParameter(returnParameter);
-
- int nbParameters = inputParameters.length;
- if (nbParameters %2 != 0) {
- throw new IllegalArgumentException("Unccorect number of parameters (" + nbParameters + ") : " +
- "each inputParameter must have name and type");
- }
- for (int i = 0; i < inputParameters.length; i+=2) {
- ObjectModelParameterImpl parameter = new ObjectModelParameterImpl();
- parameter.setType(inputParameters[i]);
- parameter.setName(inputParameters[i+1]);
- //importsManager.addImport(inputParameters[i+1]);
- result.addParameter(parameter);
- }
-
- ((ObjectModelClassifierImpl)clazz).addOperation(result);
- return result;
- }
-
- public void setOperationBody(ObjectModelOperation operation, String body) {
- ObjectModelOperationImpl operationImpl = (ObjectModelOperationImpl) operation;
- operationImpl.setBodyCode(body);
- }
-}
Copied: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaBuilder.java (from rev 662, branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/JavaBuilder.java)
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaBuilder.java (rev 0)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaBuilder.java 2009-10-28 19:04:40 UTC (rev 666)
@@ -0,0 +1,109 @@
+
+package org.nuiton.eugene.models.object.builder;
+
+import org.nuiton.eugene.*;
+import java.util.Collection;
+import java.util.Iterator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.models.object.ObjectModel;
+import org.nuiton.eugene.models.object.ObjectModelAttribute;
+import org.nuiton.eugene.models.object.xml.ObjectModelBuilderHelper;
+import org.nuiton.eugene.models.object.ObjectModelClass;
+import org.nuiton.eugene.models.object.ObjectModelClassifier;
+import org.nuiton.eugene.models.object.ObjectModelElement;
+import org.nuiton.eugene.models.object.ObjectModelEnumeration;
+import org.nuiton.eugene.models.object.ObjectModelInterface;
+import org.nuiton.eugene.models.object.ObjectModelOperation;
+import org.nuiton.eugene.models.object.ObjectModelParameter;
+import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl;
+import org.nuiton.eugene.models.object.xml.ObjectModelImpl;
+
+/**
+ *
+ * @author fdesbois
+ */
+public abstract class JavaBuilder {
+
+ private static final Log log = LogFactory.getLog(JavaBuilder.class);
+
+ protected ObjectModelImpl objectModel;
+
+ private static ObjectModelBuilderHelper helper = new ObjectModelBuilderHelper();
+
+ public JavaBuilder(String modelName) {
+ this.objectModel = new ObjectModelImpl();
+ this.objectModel.setName(modelName);
+ }
+
+ public ObjectModel getModel() {
+ return objectModel;
+ }
+
+ public ObjectModelBuilderHelper getHelper() {
+ return helper;
+ }
+
+ protected ImportsManager getImportsManager(ObjectModelClassifier classifier) {
+ ImportsManager manager = objectModel.getExtension(classifier.getQualifiedName(), ImportsManager.class);
+ if (manager == null) {
+ manager = new ImportsManager();
+ objectModel.addExtension(classifier.getQualifiedName(), manager);
+ }
+ return manager;
+ }
+
+ public void addImportForClassifier(ObjectModelClassifier classifier, String imports) {
+ ImportsManager manager = getImportsManager(classifier);
+ manager.addImport(imports);
+ }
+
+ public void addImportForClassifier(ObjectModelClassifier classifier, Class<?> imports) {
+ ImportsManager manager = getImportsManager(classifier);
+ manager.addImport(imports);
+ }
+
+ public void addClassToModel(ObjectModelClass clazz) {
+ objectModel.addClass((ObjectModelClassImpl)clazz);
+ ImportsManager manager = setImports(clazz);
+
+ // extension for superclass
+ Iterator<ObjectModelClass> it = clazz.getSuperclasses().iterator();
+ if (it.hasNext()) {
+ ObjectModelClass superclass = it.next();
+ manager.addImport(superclass.getQualifiedName());
+ }
+ }
+
+ private ImportsManager setImports(ObjectModelClassifier classifier) {
+ ImportsManager manager = getImportsManager(classifier);
+ // attributes
+ for (ObjectModelAttribute attribute : classifier.getAttributes()) {
+ if (log.isInfoEnabled()) {
+ log.info("attribute add import for : " + attribute.getType());
+ }
+ setImportsForType(manager, attribute.getType());
+ setImportsForType(manager, attribute.getDefaultValue());
+ }
+ // implemented interfaces
+ for (ObjectModelInterface interfacez : classifier.getInterfaces()) {
+ manager.addImport(interfacez.getQualifiedName());
+ }
+ // operations
+ for (ObjectModelOperation operation : classifier.getOperations()) {
+ setImportsForType(manager, operation.getReturnType());
+ for (ObjectModelParameter parameter : operation.getParameters()) {
+ setImportsForType(manager, parameter.getType());
+ }
+ }
+ return manager;
+ }
+
+ private void setImportsForType(ImportsManager manager, String type) {
+ for (String oneType : GeneratorUtil.getTypesList(type)) {
+ manager.addImport(oneType);
+ }
+ }
+
+ public abstract void build();
+}
Property changes on: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaBuilder.java
___________________________________________________________________
Added: svn:mergeinfo
+
Copied: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderHelper.java (from rev 653, branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilderHelper.java)
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderHelper.java (rev 0)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderHelper.java 2009-10-28 19:04:40 UTC (rev 666)
@@ -0,0 +1,167 @@
+/* *##%
+ * Copyright (c) 2009 poussin. All rights reserved.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *##%*/
+
+package org.nuiton.eugene.models.object.xml;
+
+
+import org.nuiton.eugene.models.object.*;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl;
+import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl;
+import org.nuiton.eugene.models.object.xml.ObjectModelClassifierImpl;
+import org.nuiton.eugene.models.object.xml.ObjectModelImplRef;
+import org.nuiton.eugene.models.object.xml.ObjectModelInterfaceImpl;
+import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl;
+import org.nuiton.eugene.models.object.xml.ObjectModelParameterImpl;
+
+/**
+ * class that help to build java class or interface object.
+ *
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class ObjectModelBuilderHelper {
+
+ public static final boolean PROP_SET_STATIC = true;
+ public static final boolean PROP_SET_NO_STATIC = false;
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(ObjectModelBuilderHelper.class);
+
+ public ObjectModelClass createClass(String name, String packageName) {
+ ObjectModelClassImpl result = new ObjectModelClassImpl();
+ result.setName(name);
+ result.setPackage(packageName);
+ return result;
+ }
+
+ public ObjectModelClass createAbstractClass(String name, String packageName) {
+ ObjectModelClassImpl result = (ObjectModelClassImpl) createClass(name,packageName);
+ result.setAbstract(true);
+ return result;
+ }
+
+ public ObjectModelInterface createInterface(String name, String packageName) {
+ ObjectModelInterfaceImpl result = new ObjectModelInterfaceImpl();
+ result.setName(name);
+ result.setPackage(packageName);
+ return result;
+ }
+
+ public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type, String value,
+ String visibility, boolean isStatic, boolean isFinal) {
+ ObjectModelAttributeImpl attribute = new ObjectModelAttributeImpl();
+ attribute.setFinal(isFinal);
+ attribute.setDefaultValue(value);
+ attribute.setName(name);
+ attribute.setStatic(isStatic);
+ attribute.setType(type);
+ attribute.setVisibility(visibility);
+
+ ObjectModelClassifierImpl classifierImpl = (ObjectModelClassifierImpl)classifier;
+ classifierImpl.addAttribute(attribute);
+ return attribute;
+ }
+
+ public ObjectModelAttribute addConstant(ObjectModelClassifier classifier, String name, String type, String value, String visibility) {
+ return addAttribute(classifier, name, type, value, visibility, true, true);
+ }
+
+ public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type, String value) {
+ return addAttribute(classifier, name, type, value, "protected", false, false);
+ }
+
+ public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type) {
+ return addAttribute(classifier, name, type, "", "protected", false, false);
+ }
+
+ public ObjectModelOperation addOperation(ObjectModelClassifier clazz,
+ String name, String returnType, String... inputParameters) {
+ ObjectModelOperationImpl result = new ObjectModelOperationImpl();
+ result.setName(name);
+
+ result.setName(name);
+ result.setVisibility("public");
+ ObjectModelParameterImpl returnParameter = new ObjectModelParameterImpl();
+ if (returnType == null) {
+ returnType = "void";
+ }
+ returnParameter.setType(returnType);
+
+ result.setReturnParameter(returnParameter);
+
+ int nbParameters = inputParameters.length;
+ if (nbParameters %2 != 0) {
+ throw new IllegalArgumentException("Unccorect number of parameters (" + nbParameters + ") : " +
+ "each inputParameter must have name and type");
+ }
+ for (int i = 0; i < inputParameters.length; i+=2) {
+ ObjectModelParameterImpl parameter = new ObjectModelParameterImpl();
+ parameter.setType(inputParameters[i]);
+ parameter.setName(inputParameters[i+1]);
+ //importsManager.addImport(inputParameters[i+1]);
+ result.addParameter(parameter);
+ }
+
+ ((ObjectModelClassifierImpl)clazz).addOperation(result);
+ return result;
+ }
+
+ public void setOperationBody(ObjectModelOperation operation, String body) {
+ ObjectModelOperationImpl operationImpl = (ObjectModelOperationImpl) operation;
+ operationImpl.setBodyCode(body);
+ }
+
+ public void addInterface(ObjectModelClassifier classifier, String interfaceQualifiedName) {
+ ObjectModelClassifierImpl impl = (ObjectModelClassifierImpl) classifier;
+
+ ObjectModelImplRef interfacez = new ObjectModelImplRef();
+ interfacez.setName(interfaceQualifiedName);
+
+ impl.addInterface(interfacez);
+ }
+
+ public void addSuperclass(ObjectModelClass clazz, String superclassQualifiedName) {
+ ObjectModelClassImpl impl = (ObjectModelClassImpl) clazz;
+
+ ObjectModelImplRef superclass = new ObjectModelImplRef();
+ superclass.setName(superclassQualifiedName);
+
+ impl.addSuperclass(superclass);
+ }
+
+ public ObjectModelParameter addParameter(ObjectModelOperation operation, String type, String name) {
+ ObjectModelOperationImpl impl = (ObjectModelOperationImpl) operation;
+ ObjectModelParameterImpl param = new ObjectModelParameterImpl();
+ param.setType(type);
+ param.setName(name);
+ impl.addParameter(param);
+ return param;
+ }
+
+ public void addException(ObjectModelOperation operation, String exception) {
+ ObjectModelOperationImpl impl = (ObjectModelOperationImpl) operation;
+ ObjectModelParameterImpl param = new ObjectModelParameterImpl();
+ param.setType(exception);
+ impl.addExceptionParameter(param);
+ }
+}
Modified: branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java 2009-10-28 19:04:32 UTC (rev 665)
+++ branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java 2009-10-28 19:04:40 UTC (rev 666)
@@ -133,7 +133,20 @@
if (interfaces == null) {
interfaces = new ArrayList<ObjectModelInterface>();
for(ObjectModelImplRef ref : interfacesRefs) {
- interfaces.add(objectModelImpl.getInterface(ref.getName()));
+ // QUICK FIX for interface not include in the model (ex : Serializable)
+ ObjectModelInterfaceImpl interfacez =
+ (ObjectModelInterfaceImpl)objectModelImpl.getInterface(ref.getName());
+ if (interfacez == null) {
+ interfacez = new ObjectModelInterfaceImpl();
+ String fqn = ref.getName();
+ int index = fqn.indexOf(".");
+ String packageName = fqn.substring(0, index);
+ String name = fqn.substring(index+1);
+ interfacez.setName(name);
+ interfacez.setPackage(packageName);
+ interfacez.postInit(); // to create qualifiedName
+ }
+ interfaces.add(interfacez);
}
}
return interfaces;
Modified: branches/1.1.0-Javabuilder/eugene/src/test/resources/log4j.properties
===================================================================
--- branches/1.1.0-Javabuilder/eugene/src/test/resources/log4j.properties 2009-10-28 19:04:32 UTC (rev 665)
+++ branches/1.1.0-Javabuilder/eugene/src/test/resources/log4j.properties 2009-10-28 19:04:40 UTC (rev 666)
@@ -7,5 +7,5 @@
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n
# package level
-log4j.logger.org.nuiton.eugene=INFO
+log4j.logger.org.nuiton.eugene=DEBUG
log4j.logger.org.apache.commons.digester=INFO
\ No newline at end of file
Modified: branches/1.1.0-Javabuilder/eugene-test/pom.xml
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/pom.xml 2009-10-28 19:04:32 UTC (rev 665)
+++ branches/1.1.0-Javabuilder/eugene-test/pom.xml 2009-10-28 19:04:40 UTC (rev 666)
@@ -93,8 +93,8 @@
<artifactId>maven-eugene-plugin</artifactId>
<version>${project.version}</version>
<executions>
- <execution>
- <id>Test Generator</id>
+ <!--execution>
+ <id>Test Regression Generator</id>
<phase>generate-test-sources</phase>
<configuration>
<reader>org.nuiton.eugene.ObjectModelReader</reader>
@@ -109,14 +109,14 @@
<goals>
<goal>generate</goal>
</goals>
- </execution>
+ </execution-->
<execution>
<id>Test Java Generator</id>
<phase>generate-test-sources</phase>
<configuration>
<reader>org.nuiton.eugene.test.generator.TestReader</reader>
<includes>**/*.objectmodel</includes>
- <templates>org.nuiton.eugene.test.generator.JavaGenerator</templates>
+ <templates>org.nuiton.eugene.java.JavaGenerator</templates>
<defaultPackage>org.nuiton.eugene.test</defaultPackage>
<extraClassPathDirectory>target/classes</extraClassPathDirectory>
<generateResources>
@@ -127,6 +127,23 @@
<goal>generate</goal>
</goals>
</execution>
+ <execution>
+ <id>Test Bean Transformer</id>
+ <phase>generate-test-sources</phase>
+ <configuration>
+ <reader>org.nuiton.eugene.ObjectModelReader</reader>
+ <includes>**/*.objectmodel</includes>
+ <templates>org.nuiton.eugene.test.generator.BeanTransformer</templates>
+ <defaultPackage>org.nuiton.eugene.test</defaultPackage>
+ <extraClassPathDirectory>target/classes</extraClassPathDirectory>
+ <generateResources>
+ <input>src/main/models</input>
+ </generateResources>
+ </configuration>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
</executions>
</plugin>
Added: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaBuilderHelper.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaBuilderHelper.java (rev 0)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaBuilderHelper.java 2009-10-28 19:04:40 UTC (rev 666)
@@ -0,0 +1,204 @@
+
+package org.nuiton.eugene.java;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.models.object.ObjectModelAttribute;
+import org.nuiton.eugene.models.object.xml.ObjectModelBuilderHelper;
+import org.nuiton.eugene.models.object.ObjectModelClass;
+import org.nuiton.eugene.models.object.ObjectModelClassifier;
+import org.nuiton.eugene.models.object.ObjectModelOperation;
+import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl;
+import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl;
+import org.nuiton.eugene.models.object.xml.ObjectModelClassifierImpl;
+import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl;
+import org.nuiton.eugene.models.object.xml.ObjectModelParameterImpl;
+
+/**
+ * JavaBuilderHelper
+ *
+ * Created: 28 oct. 2009
+ *
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+public class JavaBuilderHelper extends ObjectModelBuilderHelper {
+
+ private static final Log log = LogFactory.getLog(JavaBuilderHelper.class);
+
+ /**
+ * Add attribute to a classifier with properties in parse string.
+ * Use java syntax to define properties of the attribute :
+ * ex : "public static final java.util.Date maDate = new java.util.Date()"
+ * @param classifier the classifier to add the attribute
+ * @param parse the properties of the attribute to parse
+ * @return a new ObjectModelAttribute corresponding to the new attribute added to the classifier
+ */
+ public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String parse) {
+ ObjectModelAttributeImpl attribute = new ObjectModelAttributeImpl();
+
+ // Visibility
+ if (parse.contains("public ")) {
+ attribute.setVisibility("public");
+ parse = parse.replace("public ", "");
+ } else if (parse.contains("protected ")) {
+ attribute.setVisibility("protected");
+ parse = parse.replace("protected ", "");
+ } else if (parse.contains("private ")) {
+ attribute.setVisibility("private");
+ parse = parse.replace("private ", "");
+ } else {
+ attribute.setVisibility("");
+ }
+
+ // Static
+ if (parse.contains("static ")) {
+ attribute.setStatic(true);
+ parse = parse.replace("static ", "");
+ }
+ // Final
+ if (parse.contains("final ")) {
+ attribute.setFinal(true);
+ parse = parse.replace("final ", "");
+ }
+
+ // Type
+ int typeIndex = parse.indexOf(" ");
+ String type = parse.substring(0, typeIndex).trim();
+ attribute.setType(type);
+ parse = parse.substring(typeIndex+1);
+
+ // Name
+ int nameIndex = parse.indexOf("=");
+ String name = "";
+ if (nameIndex != -1) {
+ name = parse.substring(0, nameIndex).trim();
+ parse = parse.substring(nameIndex);
+
+ // DefaultValue
+ int equalsIndex = parse.indexOf("=");
+ String value = parse.substring(equalsIndex+1).trim();
+ attribute.setDefaultValue(value);
+
+ } else { // Il ne reste que le nom si pas de =
+ name = parse;
+ }
+ attribute.setName(name);
+
+ ObjectModelClassifierImpl classifierImpl = (ObjectModelClassifierImpl)classifier;
+ classifierImpl.addAttribute(attribute);
+ return attribute;
+ }
+
+ public ObjectModelOperation addOperation(ObjectModelClassifier classifier, String parse)
+ throws IllegalArgumentException{
+ ObjectModelOperationImpl operation = new ObjectModelOperationImpl();
+ String result = "";
+
+ try {
+ // Visibility
+ if (parse.contains("public ")) {
+ operation.setVisibility("public");
+ result = parse.replace("public ", "");
+ } else if (parse.contains("protected ")) {
+ operation.setVisibility("protected");
+ result = parse.replace("protected ", "");
+ } else if (parse.contains("private ")) {
+ operation.setVisibility("private");
+ result = parse.replace("private ", "");
+ } else {
+ operation.setVisibility("");
+ }
+
+ // Static
+ if (result.contains("static ")) {
+ operation.setStatic(true);
+ result = result.replace("static ", "");
+ }
+ // Abstract
+ if (result.contains("abstract ")) {
+ operation.setAbstract(true);
+ result = result.replace("abstract ", "");
+ }
+
+ // Return Parameter
+ int typeIndex = result.indexOf(" ");
+ String type = result.substring(0, typeIndex).trim();
+ ObjectModelParameterImpl returnParameter = new ObjectModelParameterImpl();
+ returnParameter.setType(type);
+ operation.setReturnParameter(returnParameter);
+ result = result.substring(typeIndex + 1);
+
+ if (log.isDebugEnabled()) {
+ log.debug("parse before name : " + result);
+ }
+
+ int nameIndex = result.indexOf("(");
+ String methodName = "";
+ if (nameIndex != -1) {
+ methodName = result.substring(0, nameIndex).trim();
+ result = result.substring(nameIndex);
+
+ // Input parameters
+ if (result.contains("(")) {
+ int parentheseIndex = result.indexOf("(");
+ int parentheseEndIndex = result.indexOf(")");
+ result = result.substring(parentheseIndex + 1, parentheseEndIndex);
+
+ String paramName = "";
+ for (String param : result.split(",")) {
+ typeIndex = param.indexOf(" ");
+ type = param.substring(0, typeIndex).trim();
+ paramName = param.substring(typeIndex + 1).trim();
+
+ ObjectModelParameterImpl parameter = new ObjectModelParameterImpl();
+ parameter.setType(type);
+ parameter.setName(paramName);
+ operation.addParameter(parameter);
+ }
+ }
+
+ } else { // Il ne reste que le nom si pas de (
+ methodName = result;
+ }
+ operation.setName(methodName);
+
+ ObjectModelClassifierImpl classifierImpl = (ObjectModelClassifierImpl) classifier;
+ classifierImpl.addOperation(operation);
+ } catch (StringIndexOutOfBoundsException eee) {
+ throw new IllegalArgumentException("Can't add Operation : Illegal parse parameter : " +
+ "input = " + parse + " _ current = " + result, eee);
+ }
+ return operation;
+ }
+
+ public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, ObjectModelAttribute attribute) {
+ ObjectModelAttributeImpl impl = new ObjectModelAttributeImpl();
+ impl.setType(attribute.getType());
+ impl.setName(attribute.getName());
+ impl.setVisibility(attribute.getVisibility());
+ impl.setFinal(attribute.isFinal());
+ impl.setStatic(attribute.isStatic());
+ impl.setDefaultValue(attribute.getDefaultValue());
+ return impl;
+ }
+
+ public void setSuperClass(ObjectModelClass classifier, String superclassQualifiedName) {
+ ObjectModelClassImpl impl = (ObjectModelClassImpl)classifier;
+ impl.getSuperclasses().clear();
+ addSuperclass(impl, superclassQualifiedName);
+ }
+
+ public ObjectModelOperation addConstructor(ObjectModelClass clazz, String visibility) {
+ ObjectModelOperationImpl operation = new ObjectModelOperationImpl();
+ operation.setVisibility(visibility);
+ operation.setName(clazz.getName());
+
+ ObjectModelClassImpl classifierImpl = (ObjectModelClassImpl)clazz;
+ classifierImpl.addOperation(operation);
+ return operation;
+ }
+}
Copied: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaGenerator.java (from rev 662, branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/JavaGenerator.java)
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaGenerator.java (rev 0)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaGenerator.java 2009-10-28 19:04:40 UTC (rev 666)
@@ -0,0 +1,205 @@
+
+package org.nuiton.eugene.java;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.Writer;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Set;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.GeneratorUtil;
+import org.nuiton.eugene.ImportsManager;
+import org.nuiton.eugene.ObjectModelGenerator;
+import org.nuiton.eugene.models.object.ObjectModelAttribute;
+import org.nuiton.eugene.models.object.ObjectModelClass;
+import org.nuiton.eugene.models.object.ObjectModelClassifier;
+import org.nuiton.eugene.models.object.ObjectModelInterface;
+import org.nuiton.eugene.models.object.ObjectModelOperation;
+import org.nuiton.eugene.models.object.ObjectModelParameter;
+
+/*{generator option: parentheses = true}*/
+/*{generator option: writeString = output.write}*/
+/**
+ * JavaGenerator
+ *
+ * Created: 22 oct. 2009
+ *
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+public class JavaGenerator extends ObjectModelGenerator {
+
+ private static final Log log = LogFactory.getLog(JavaGenerator.class);
+
+ @Override
+ public String getFilenameForClass(ObjectModelClass clazz) {
+ return clazz.getQualifiedName().replace('.', File.separatorChar) + ".java";//return clazz.getName() + ".java";
+ }
+
+ @Override
+ public void generateFromClass(Writer output, ObjectModelClass clazz) throws IOException {
+
+ if (log.isInfoEnabled()) {
+ log.info("generate : " + clazz.getName());
+ }
+
+ this.generateHeader(output, clazz); // Imports, package et documentation
+
+ String abstractStr = clazz.isAbstract() ? " abstract " : " ";
+ String className = clazz.getName();
+
+ String extend = "";
+ Iterator<ObjectModelClass> j = clazz.getSuperclasses().iterator();
+ if (j.hasNext()) {
+ ObjectModelClassifier p = j.next();
+ extend += p.getName();
+ }
+
+ String implement = "";
+ for (Iterator<ObjectModelInterface> i = clazz.getInterfaces().iterator(); i.hasNext();) {
+ ObjectModelClassifier parentInterface = i.next();
+ implement += parentInterface.getName();
+ if (i.hasNext()) {
+ implement += ", ";
+ }
+ }
+
+/*{
+public<%=abstractStr%>class <%=className%>}*/
+
+/*
+ * Définition de la super classe : il ne doit y avoir qu'une
+ */
+ if (extend.length() > 0) {
+/*{ extends <%=extend%>}*/
+ }
+
+ if (implement.length() > 0) {
+/*{ implements <%=implement%> {
+
+}*/
+ } else {
+ /*{ {
+
+}*/
+ }
+
+ this.generateAttributes(output, clazz.getAttributes());
+ this.generateOperations(output, clazz.getOperations());
+/*{
+} //<%=clazz.getName()%>
+}*/
+ }
+
+ protected void generateHeader(Writer output, ObjectModelClassifier classifier) throws IOException {
+
+ String packageName = classifier.getPackageName();
+/*{package <%=packageName%>;
+
+}*/
+ // potentiel crash si imports non defini
+ // dans ce cas, probleme de config utilisateur ! obligation de passer par un builder ?
+ ImportsManager manager = getModel().getExtension(classifier.getQualifiedName(), ImportsManager.class);
+ for (String imports : manager.getImports(classifier.getPackageName())) {
+/*{import <%=imports%>;
+ }*/
+ }
+
+ }
+
+ protected void generateAttributes(Writer output, Collection<ObjectModelAttribute> attributes) throws IOException {
+
+ for (ObjectModelAttribute attr : attributes) {
+
+ if (attr.getDocumentation() != null && !attr.getDocumentation().isEmpty()) {
+/*{ /**
+ * <%=attr.getDocumentation()%>
+ *)
+}*/
+ }
+
+// String annotation = attr.getTagValue(TAG_ANNOTATION);
+// if (annotation != null && annotation.length() > 0) {
+///* <%=annotation%>
+//*/
+// }
+
+ String attrName = attr.getName();
+ String attrVisibility = attr.getVisibility();
+ String attrType = GeneratorUtil.getSimpleName(attr.getType());
+ String attrStatic = attr.isStatic() ? " static " : " ";
+ String attrFinal = attr.isFinal() ? " final " : " ";
+ String attrValue = attr.getDefaultValue() != null && !attr.getDefaultValue().isEmpty() ?
+ " = " + GeneratorUtil.getSimpleName(attr.getDefaultValue()) : "";
+
+/*{ <%=attrVisibility%><%=attrStatic%><%=attrFinal%><%=attrType%> <%=attrName%><%=attrValue%>;
+}*/
+ }
+ }
+
+ protected void generateOperations(Writer output, Collection<ObjectModelOperation> operations) throws IOException {
+ for (ObjectModelOperation op : operations) {
+ String opName = op.getName();
+/*{ /**
+}*/
+ if (op.getDocumentation() != null && !op.getDocumentation().isEmpty()) {
+ String opDocumentation = op.getDocumentation();
+/*{ * <%=opName%> : <%=opDocumentation%>
+}*/
+ }
+ Collection<ObjectModelParameter> params = op.getParameters();
+ for (ObjectModelParameter param : params) {
+ String paramName = param.getName();
+ String paramDocumentation = param.getDocumentation();
+/*{ * @param <%=paramName%> <%=paramDocumentation%>
+ }*/
+ }
+ String opVisibility = op.getVisibility();
+ String opStatic = op.isStatic() ? "static " : "";
+ String opAbstract = op.isAbstract() ? " abstract " : "";
+
+ ObjectModelParameter returnParam = op.getReturnParameter();
+ String opReturn = "";
+ if (returnParam != null) {
+ opReturn = GeneratorUtil.getSimpleName(returnParam.getType());
+ if (!opReturn.equals("void")) {
+ String paramDocumentation = returnParam.getDocumentation();
+/*{ * @return <%=paramDocumentation%>
+ }*/
+ }
+ }
+/*{ *)
+ <%=opVisibility%> <%=opStatic%><%=opAbstract%><%=opReturn%> <%=opName%>(}*/
+ String comma = "";
+ for (ObjectModelParameter param : params) {
+ String paramName = param.getName();
+ String paramType = GeneratorUtil.getSimpleName(param.getType());
+/*{<%=comma%><%=paramType%> <%=paramName%>}*/
+ comma = ", ";
+ }
+/*{)}*/
+ Set<String> exceptions = op.getExceptions();
+ comma = " throws ";
+ for (String exception : exceptions) {
+/*{<%=comma%><%=exception%>}*/
+ comma = ", ";
+ }
+
+ if (!op.getBodyCode().isEmpty()) {
+/*{ {<%=op.getBodyCode()%>}
+
+}*/
+ } else {
+/*{;
+
+}*/
+ }
+ }
+ }
+
+}
Property changes on: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/JavaGenerator.java
___________________________________________________________________
Added: svn:mergeinfo
+
Added: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/OM2JavaTransformer.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/OM2JavaTransformer.java (rev 0)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/java/OM2JavaTransformer.java 2009-10-28 19:04:40 UTC (rev 666)
@@ -0,0 +1,161 @@
+
+package org.nuiton.eugene.java;
+
+import org.nuiton.eugene.ObjectModelTransformer;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.GeneratorUtil;
+import org.nuiton.eugene.ImportsManager;
+import org.nuiton.eugene.models.object.ObjectModel;
+import org.nuiton.eugene.models.object.ObjectModelAttribute;
+import org.nuiton.eugene.models.object.ObjectModelClass;
+import org.nuiton.eugene.models.object.ObjectModelClassifier;
+import org.nuiton.eugene.models.object.ObjectModelOperation;
+import org.nuiton.eugene.models.object.ObjectModelParameter;
+import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl;
+import org.nuiton.eugene.models.object.xml.ObjectModelImpl;
+
+/**
+ * OM2JavaTransformer
+ *
+ * Created: 28 oct. 2009
+ *
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+public class OM2JavaTransformer extends ObjectModelTransformer<ObjectModel> {
+
+ private static final Log log = LogFactory.getLog(OM2JavaTransformer.class);
+
+ protected ObjectModelImpl outputModel;
+
+ private static JavaBuilderHelper helper = new JavaBuilderHelper();
+
+ public OM2JavaTransformer() {
+ super(new JavaGenerator());
+ this.outputModel = new ObjectModelImpl();
+ }
+
+ @Override
+ protected ObjectModel initOutputModel() {
+ if (log.isInfoEnabled()) {
+ log.info("inputModelName = " + getModel().getName());
+ }
+ outputModel.setName(getModel().getName());
+ return outputModel;
+ }
+
+ @Override
+ public ObjectModel getOutputModel() {
+ return this.outputModel;
+ }
+
+ public JavaBuilderHelper getHelper() {
+ return helper;
+ }
+
+ protected ImportsManager getImportsManager(ObjectModelClassifier classifier) {
+ ImportsManager manager = outputModel.getExtension(classifier.getQualifiedName(), ImportsManager.class);
+ if (manager == null) {
+ manager = new ImportsManager();
+ outputModel.addExtension(classifier.getQualifiedName(), manager);
+ }
+ return manager;
+ }
+
+ protected void addImportForClassifier(ObjectModelClassifier classifier, String imports) {
+ ImportsManager manager = getImportsManager(classifier);
+ manager.addImport(imports);
+ }
+
+ protected void addImportForClassifier(ObjectModelClassifier classifier, Class<?> imports) {
+ ImportsManager manager = getImportsManager(classifier);
+ manager.addImport(imports);
+ }
+
+ protected void addClassToModel(ObjectModelClass clazz) {
+ outputModel.addClass((ObjectModelClassImpl)clazz);
+ //ImportsManager manager = setImports(clazz);
+
+ // extension for superclass
+ /*Iterator<ObjectModelClass> it = clazz.getSuperclasses().iterator();
+ if (it.hasNext()) {
+ ObjectModelClass superclass = it.next();
+ manager.addImport(superclass.getQualifiedName());
+ }*/
+ }
+
+ /*private ImportsManager setImports(ObjectModelClassifier classifier) {
+ ImportsManager manager = getImportsManager(classifier);
+ // attributes
+ for (ObjectModelAttribute attribute : classifier.getAttributes()) {
+ if (log.isInfoEnabled()) {
+ log.info("attribute add import for : " + attribute.getType());
+ }
+ setImportsForType(manager, attribute.getType());
+ setImportsForType(manager, attribute.getDefaultValue());
+ }
+ // implemented interfaces
+ for (ObjectModelInterface interfacez : classifier.getInterfaces()) {
+ manager.addImport(interfacez.getQualifiedName());
+ }
+ // operations
+ for (ObjectModelOperation operation : classifier.getOperations()) {
+ setImportsForType(manager, operation.getReturnType());
+ for (ObjectModelParameter parameter : operation.getParameters()) {
+ setImportsForType(manager, parameter.getType());
+ }
+ }
+ return manager;
+ }*/
+
+ private void addImport(ObjectModelClassifier classifier, String imports) {
+ ImportsManager manager = getImportsManager(classifier);
+ for (String oneType : GeneratorUtil.getTypesList(imports)) {
+ manager.addImport(oneType);
+ }
+ }
+
+ protected void setSuperClass(ObjectModelClass classifier, String superclassQualifiedName) {
+ getHelper().setSuperClass(classifier, superclassQualifiedName);
+ addImport(classifier, superclassQualifiedName);
+ }
+
+ protected void addInterface(ObjectModelClassifier classifier, String interfaceQualifiedName) {
+ getHelper().addInterface(classifier, interfaceQualifiedName);
+ addImport(classifier, interfaceQualifiedName);
+ }
+
+ protected ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String parse) {
+ ObjectModelAttribute attribute = getHelper().addAttribute(classifier, parse);
+ addImport(classifier, attribute.getType());
+ return attribute;
+ }
+
+ protected ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, ObjectModelAttribute attribute) {
+ getHelper().addAttribute(classifier, attribute);
+ addImport(classifier, attribute.getType());
+ return attribute;
+ }
+
+ protected ObjectModelOperation addOperation(ObjectModelClassifier classifier, String parse) {
+ ObjectModelOperation operation = getHelper().addOperation(classifier, parse);
+ addImport(classifier, operation.getReturnType());
+ return operation;
+ }
+
+ protected ObjectModelParameter addParameter(ObjectModelOperation operation, String type, String name) {
+ ObjectModelParameter param = getHelper().addParameter(operation, type, name);
+ addImport((ObjectModelClassifier)operation.getDeclaringElement(), type);
+ return param;
+ }
+
+ protected void addException(ObjectModelOperation operation, String exception) {
+ getHelper().addException(operation, exception);
+ addImport((ObjectModelClassifier)operation.getDeclaringElement(), exception);
+ }
+
+}
Added: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java (rev 0)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java 2009-10-28 19:04:40 UTC (rev 666)
@@ -0,0 +1,154 @@
+
+package org.nuiton.eugene.test.generator;
+
+import org.nuiton.eugene.java.OM2JavaTransformer;
+import java.beans.PropertyChangeListener;
+import java.io.Serializable;
+import java.util.Iterator;
+import org.nuiton.eugene.GeneratorUtil;
+import org.nuiton.eugene.models.object.ObjectModelAttribute;
+import org.nuiton.eugene.models.object.ObjectModelClass;
+import org.nuiton.eugene.models.object.ObjectModelClassifier;
+import org.nuiton.eugene.models.object.ObjectModelInterface;
+import org.nuiton.eugene.models.object.ObjectModelOperation;
+import org.nuiton.eugene.models.object.ObjectModelParameter;
+
+/*{generator option: parentheses = false}*/
+/*{generator option: writeString = +}*/
+/**
+ * BeanTransformer
+ *
+ * Created: 28 oct. 2009
+ *
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Mise a jour: $Date$
+ * par : $Author$
+ */
+public class BeanTransformer extends OM2JavaTransformer {
+
+ public BeanTransformer() {
+ super();
+ }
+
+ @Override
+ public void transformFromClass(ObjectModelClass clazz) {
+ if (!clazz.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_BEAN) &&
+ !clazz.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_DTO)) {
+ return;
+ }
+
+ ObjectModelClass resultClass = getHelper().createClass(clazz.getName(), clazz.getPackageName());
+
+ // Set superclass
+ Iterator<ObjectModelClass> j = clazz.getSuperclasses().iterator();
+ if (j.hasNext()) {
+ ObjectModelClass p = j.next();
+ this.setSuperClass(resultClass, p.getQualifiedName());
+ }
+
+ // Add interfaces from inputModel
+ for (Iterator<ObjectModelInterface> i=clazz.getInterfaces().iterator(); i.hasNext();) {
+ ObjectModelClassifier parentInterface = i.next();
+ this.addInterface(resultClass, parentInterface.getQualifiedName());
+ }
+
+ this.createListeners(resultClass, clazz);
+
+ // Add attributes
+ for (ObjectModelAttribute attr : clazz.getAttributes()) {
+
+ if (attr.isNavigable() || attr.hasAssociationClass()) {
+
+ if (GeneratorUtil.isNMultiplicity(attr)) {
+ if (attr.isOrdered()) {
+ //type = List.class.getName();
+ } else {
+ //type = Collection.class.getName();
+ }
+ }
+
+ this.addAttribute(resultClass, attr);
+ }
+ }
+
+ // Add operations
+ for (ObjectModelOperation op : clazz.getOperations()) {
+ ObjectModelOperation resultOperation = this.addOperation(resultClass,
+ op.getVisibility() + " abstract " + op.getReturnType() + " " + op.getName());
+
+ for (ObjectModelParameter param : op.getParameters()) {
+ ObjectModelParameter resultParameter = this.addParameter(resultOperation,
+ param.getType(), param.getName());
+ }
+
+ for (String exception : op.getExceptions()) {
+ this.addException(resultOperation, exception);
+ }
+ }
+
+ this.addClassToModel(resultClass);
+ }
+
+ private void createForDTO(ObjectModelClass resultClass, ObjectModelClass inputClass) {
+
+ // Add Serializable implements for DTO generation
+ if (inputClass.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_DTO)) {
+ this.addInterface(resultClass, Serializable.class.getName());
+ }
+
+ String svUID = TopiaGeneratorUtil.findTagValue("dto-serialVersionUID", inputClass, getModel());
+ this.addAttribute(resultClass, "public static final long serialVersionUID = " + svUID);
+ }
+
+ protected void createListeners(ObjectModelClass resultClass, ObjectModelClass inputClass) {
+
+ this.addAttribute(resultClass, "protected final PropertyChangeSupport pcs");
+
+ // Default constructor
+ ObjectModelOperation constructor = getHelper().addConstructor(inputClass, "public");
+ getHelper().setOperationBody(constructor, ""
+ /*{
+ pcs = new PropertyChangeSupport(this);
+ }*/
+ );
+
+ // Add PropertyListener
+ String propType = PropertyChangeListener.class.getName();
+ String strType = String.class.getName();
+ ObjectModelOperation addPropertyChangeListener = this.addOperation(inputClass,
+ "public void addPropertyChangeListener(" + propType + " listener)");
+ getHelper().setOperationBody(addPropertyChangeListener, ""
+ /*{
+ pcs.addPropertyChangeListener(listener);
+ }*/
+ );
+
+ ObjectModelOperation addPropertyChangeListenerPlus =this.addOperation(inputClass,
+ "public void addPropertyChangeListener(" + strType + " propertyName," + propType + " listener)");
+ getHelper().setOperationBody(addPropertyChangeListenerPlus, ""
+ /*{
+ pcs.addPropertyChangeListener(propertyName, listener);
+ }*/
+ );
+
+ ObjectModelOperation removePropertyChangeListener = this.addOperation(inputClass,
+ "public void removePropertyChangeListener(" + propType + " listener)");
+ getHelper().setOperationBody(removePropertyChangeListener, ""
+ /*{
+ pcs.removePropertyChangeListener(listener);
+ }*/
+ );
+
+ ObjectModelOperation removePropertyChangeListenerPlus =this.addOperation(inputClass,
+ "public void removePropertyChangeListener(" + strType + " propertyName," + propType + " listener)");
+ getHelper().setOperationBody(removePropertyChangeListenerPlus, ""
+ /*{
+ pcs.removePropertyChangeListener(propertyName, listener);
+ }*/
+ );
+ }
+
+
+}
Deleted: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/DTOBuilder.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/DTOBuilder.java 2009-10-28 19:04:32 UTC (rev 665)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/DTOBuilder.java 2009-10-28 19:04:40 UTC (rev 666)
@@ -1,52 +0,0 @@
-package org.nuiton.eugene.test.generator;
-
-import java.util.List;
-import org.apache.commons.lang.StringUtils;
-import org.nuiton.eugene.ImportsManager;
-import org.nuiton.eugene.JavaBuilder;
-import org.nuiton.eugene.models.object.ObjectModelAttribute;
-import org.nuiton.eugene.models.object.ObjectModelClass;
-import org.nuiton.eugene.models.object.ObjectModelOperation;
-import org.nuiton.eugene.models.object.builder.JavaFile;
-
-/*{generator option: parentheses = false}*/
-/*{generator option: writeString = +}*/
-/**
- *
- * @author fdesbois
- */
-public class DTOBuilder extends JavaBuilder {
-
- @Override
- public void buildFromClass(ObjectModelClass clazz) {
-
- if (!clazz.hasStereotype("dto")) {
- for (ObjectModelAttribute attribute : clazz.getAttributes()) {
- String attributeNameCapitalize = StringUtils.capitalize(attribute.getName());
- String attributeName = attribute.getName();
- ObjectModelOperation operationSetter =
- getHelper().addOperation(clazz, "set" + attributeNameCapitalize,
- null, attribute.getType(), attributeName);
-
- getHelper().setOperationBody(operationSetter, ""
-/*{
- this.<%=attributeName%> = <%=attributeName%>;
- }*/
- );
-
- ObjectModelOperation operationGetter =
- getHelper().addOperation(clazz, "get" + attributeNameCapitalize,
- attribute.getType());
-
- getHelper().setOperationBody(operationGetter, ""
-/*{
- return this.<%=attributeName%>;
-}*/
- );
- }
-
- this.addImportForClassifier(clazz, List.class);
- }
-
- }
-}
Deleted: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/JavaGenerator.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/JavaGenerator.java 2009-10-28 19:04:32 UTC (rev 665)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/JavaGenerator.java 2009-10-28 19:04:40 UTC (rev 666)
@@ -1,201 +0,0 @@
-
-package org.nuiton.eugene.test.generator;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.Writer;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Set;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.eugene.GeneratorUtil;
-import org.nuiton.eugene.ImportsManager;
-import org.nuiton.eugene.ObjectModelGenerator;
-import org.nuiton.eugene.models.object.ObjectModelAttribute;
-import org.nuiton.eugene.models.object.ObjectModelClass;
-import org.nuiton.eugene.models.object.ObjectModelClassifier;
-import org.nuiton.eugene.models.object.ObjectModelInterface;
-import org.nuiton.eugene.models.object.ObjectModelOperation;
-import org.nuiton.eugene.models.object.ObjectModelParameter;
-
-/*{generator option: parentheses = true}*/
-/*{generator option: writeString = output.write}*/
-/**
- * JavaGenerator
- *
- * Created: 22 oct. 2009
- *
- * @author fdesbois
- * @version $Revision$
- *
- * Mise a jour: $Date$
- * par : $Author$
- */
-public class JavaGenerator extends ObjectModelGenerator {
-
- private static final Log log = LogFactory.getLog(JavaGenerator.class);
-
- @Override
- public String getFilenameForClass(ObjectModelClass clazz) {
- return clazz.getQualifiedName().replace('.', File.separatorChar) + ".java";//return clazz.getName() + ".java";
- }
-
- @Override
- public void generateFromClass(Writer output, ObjectModelClass clazz) throws IOException {
-
- if (log.isInfoEnabled()) {
- log.info("generate : " + clazz.getName());
- }
-
- this.generateHeader(output, clazz); // Imports, package et documentation
-
- String abstractStr = clazz.isAbstract() ? " abstract " : " ";
- String className = clazz.getName();
-
- String extend = "";
- Iterator<ObjectModelClass> j = clazz.getSuperclasses().iterator();
- if (j.hasNext()) {
- ObjectModelClassifier p = j.next();
- extend += p.getName();
- }
-
- String implement = "";
- for (Iterator<ObjectModelInterface> i = clazz.getInterfaces().iterator(); i.hasNext();) {
- ObjectModelClassifier parentInterface = i.next();
- implement += parentInterface.getName();
- if (i.hasNext()) {
- implement += ", ";
- }
- }
-
-/*{
-public<%=abstractStr%>class <%=className%>}*/
-
-/*
- * Définition de la super classe : il ne doit y avoir qu'une
- */
- if (extend.length() > 0) {
-/*{ extends <%=extend%>}*/
- }
-
- if (implement.length() > 0) {
-/*{ implements <%=implement%> {
-
-}*/
- } else {
- /*{ {
-
-}*/
- }
-
- this.generateAttributes(output, clazz.getAttributes());
- this.generateOperations(output, clazz.getOperations());
-/*{
-} //<%=clazz.getName()%>
-}*/
- }
-
- protected void generateHeader(Writer output, ObjectModelClassifier classifier) throws IOException {
-
- String packageName = classifier.getPackageName();
-/*{package <%=packageName%>;
-
-}*/
- // potentiel crash si imports non defini
- // dans ce cas, probleme de config utilisateur ! obligation de passer par un builder ?
- ImportsManager manager = getModel().getExtension(classifier.getQualifiedName(), ImportsManager.class);
- for (String imports : manager.getImports(classifier.getPackageName())) {
-/*{import <%=imports%>;
- }*/
- }
-
- }
-
- protected void generateAttributes(Writer output, Collection<ObjectModelAttribute> attributes) throws IOException {
-
- for (ObjectModelAttribute attr : attributes) {
-
- if (attr.getDocumentation() != null && !attr.getDocumentation().isEmpty()) {
-/*{ /**
- * <%=attr.getDocumentation()%>
- *)
-}*/
- }
-
-// String annotation = attr.getTagValue(TAG_ANNOTATION);
-// if (annotation != null && annotation.length() > 0) {
-///* <%=annotation%>
-//*/
-// }
-
- String attrName = attr.getName();
- String attrVisibility = attr.getVisibility();
- String attrType = GeneratorUtil.getSimpleName(attr.getType());
- String attrStatic = attr.isStatic() ? " static " : " ";
- String attrFinal = attr.isFinal() ? " final " : " ";
- String attrValue = !attr.getDefaultValue().isEmpty() ? " = " + GeneratorUtil.getSimpleName(attr.getDefaultValue()) : "";
-
-/*{ <%=attrVisibility%><%=attrStatic%><%=attrFinal%><%=attrType%> <%=attrName%><%=attrValue%>;
-}*/
- }
- }
-
- protected void generateOperations(Writer output, Collection<ObjectModelOperation> operations) throws IOException {
- for (ObjectModelOperation op : operations) {
- String opName = op.getName();
-/*{ /**
-}*/
- if (op.getDocumentation() != null && !op.getDocumentation().isEmpty()) {
- String opDocumentation = op.getDocumentation();
-/*{ * <%=opName%> : <%=opDocumentation%>
-}*/
- }
- Collection<ObjectModelParameter> params = op.getParameters();
- for (ObjectModelParameter param : params) {
- String paramName = param.getName();
- String paramDocumentation = param.getDocumentation();
-/*{ * @param <%=paramName%> <%=paramDocumentation%>
- }*/
- }
- String opVisibility = op.getVisibility();
- String opStatic = op.isStatic() ? " static " : "";
- String opAbstract = op.isAbstract() ? " abstract " : "";
-
- ObjectModelParameter returnParam = op.getReturnParameter();
- String opReturn = GeneratorUtil.getSimpleName(returnParam.getType());
- if (!opReturn.equals("void")) {
- String paramDocumentation = returnParam.getDocumentation();
-/*{ * @return <%=paramDocumentation%>
- }*/
- }
-/*{ *)
- <%=opVisibility%><%=opStatic%><%=opAbstract%> <%=opReturn%> <%=opName%>(}*/
- String comma = "";
- for (ObjectModelParameter param : params) {
- String paramName = param.getName();
- String paramType = GeneratorUtil.getSimpleName(param.getType());
-/*{<%=comma%><%=paramType%> <%=paramName%>}*/
- comma = ", ";
- }
-/*{)}*/
- Set<String> exceptions = op.getExceptions();
- comma = " throws ";
- for (String exception : exceptions) {
-/*{<%=comma%><%=exception%>}*/
- comma = ", ";
- }
-
- if (!op.getBodyCode().isEmpty()) {
-/*{ {<%=op.getBodyCode()%>}
-
-}*/
- } else {
-/*{;
-
-}*/
- }
- }
- }
-
-}
Modified: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java 2009-10-28 19:04:32 UTC (rev 665)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java 2009-10-28 19:04:40 UTC (rev 666)
@@ -1,7 +1,7 @@
package org.nuiton.eugene.test.generator;
-import org.nuiton.eugene.JavaBuilder;
+import org.nuiton.eugene.models.object.builder.JavaBuilder;
import org.nuiton.eugene.models.object.ObjectModelClass;
import org.nuiton.eugene.models.object.ObjectModelOperation;
Modified: branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestReader.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestReader.java 2009-10-28 19:04:32 UTC (rev 665)
+++ branches/1.1.0-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestReader.java 2009-10-28 19:04:40 UTC (rev 666)
@@ -2,7 +2,7 @@
package org.nuiton.eugene.test.generator;
import java.io.File;
-import org.nuiton.eugene.JavaBuilder;
+import org.nuiton.eugene.models.object.builder.JavaBuilder;
import org.nuiton.eugene.ModelReader;
import org.nuiton.eugene.models.object.ObjectModel;
Added: branches/1.1.0-Javabuilder/eugene-test/src/test/java/org/nuiton/eugene/java/JavaBuilderHelperTest.java
===================================================================
--- branches/1.1.0-Javabuilder/eugene-test/src/test/java/org/nuiton/eugene/java/JavaBuilderHelperTest.java (rev 0)
+++ branches/1.1.0-Javabuilder/eugene-test/src/test/java/org/nuiton/eugene/java/JavaBuilderHelperTest.java 2009-10-28 19:04:40 UTC (rev 666)
@@ -0,0 +1,110 @@
+
+package org.nuiton.eugene.java;
+
+import org.nuiton.eugene.java.JavaBuilderHelper;
+import java.util.List;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.nuiton.eugene.models.object.ObjectModelAttribute;
+import org.nuiton.eugene.models.object.ObjectModelClassifier;
+import org.nuiton.eugene.models.object.ObjectModelOperation;
+import org.nuiton.eugene.models.object.ObjectModelParameter;
+import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl;
+
+/**
+ *
+ * @author fdesbois
+ */
+public class JavaBuilderHelperTest {
+
+ public JavaBuilderHelperTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception {
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception {
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ /**
+ * Test of addAttribute method, of class JavaBuilderHelper.
+ */
+ @Test
+ public void testAddAttribute() {
+ System.out.println("addAttribute");
+ JavaBuilderHelper instance = new JavaBuilderHelper();
+
+ ObjectModelClassifier classifier = new ObjectModelClassImpl();
+
+ String parse = "public java.lang.String bilou";
+ ObjectModelAttribute result = instance.addAttribute(classifier, parse);
+ assertNotNull(result);
+ assertEquals(result.getName(), "bilou");
+ assertEquals(result.getType(), "java.lang.String");
+ assertEquals(result.getVisibility(), "public");
+
+ parse = "public static final long uid = 12534sdf78ef9";
+ result = instance.addAttribute(classifier, parse);
+ assertNotNull(result);
+ assertTrue(result.isFinal());
+ assertTrue(result.isStatic());
+ assertEquals(result.getName(), "uid");
+ assertEquals(result.getType(), "long");
+ assertEquals(result.getVisibility(), "public");
+ assertEquals(result.getDefaultValue(), "12534sdf78ef9");
+
+ parse = "private java.util.Date publicDate = new java.util.Date()";
+ result = instance.addAttribute(classifier, parse);
+ assertNotNull(result);
+ assertEquals(result.getName(), "publicDate");
+ assertEquals(result.getType(), "java.util.Date");
+ assertEquals(result.getVisibility(), "private");
+ assertEquals(result.getDefaultValue(), "new java.util.Date()");
+
+ }
+
+ @Test
+ public void testAddOperation() {
+ System.out.println("addOperation");
+
+ JavaBuilderHelper instance = new JavaBuilderHelper();
+
+ ObjectModelClassifier classifier = new ObjectModelClassImpl();
+
+ String parse = "public abstract java.util.List<java.lang.String> methodName";
+ ObjectModelOperation result = instance.addOperation(classifier, parse);
+ assertNotNull(result);
+ assertTrue(result.isAbstract());
+ assertEquals(result.getName(), "methodName");
+ assertEquals(result.getReturnType(), "java.util.List<java.lang.String>");
+ assertEquals(result.getVisibility(), "public");
+
+ parse = "public void addPropertyChangeListener(java.lang.String propertyName)";
+ result = instance.addOperation(classifier, parse);
+ assertNotNull(result);
+ assertEquals(result.getName(), "addPropertyChangeListener");
+ assertEquals(result.getReturnType(), "void");
+ assertEquals(result.getVisibility(), "public");
+ assertEquals(result.getParameters().size(), 1);
+
+ List<ObjectModelParameter> listParams = (List<ObjectModelParameter>)result.getParameters();
+ ObjectModelParameter param1 = listParams.get(0);
+ assertEquals(param1.getName(), "propertyName");
+ assertEquals(param1.getType(), "java.lang.String");
+ }
+
+}
\ No newline at end of file
1
0
r665 - in branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models: . object
by fdesbois@users.nuiton.org 28 Oct '09
by fdesbois@users.nuiton.org 28 Oct '09
28 Oct '09
Author: fdesbois
Date: 2009-10-28 20:04:32 +0100 (Wed, 28 Oct 2009)
New Revision: 665
Removed:
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/
branches/1.1.0-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/ui/
Log:
- Change hierarchy for Generator to have common root with Transformer
- Create transformers
- Begin translation BeanGenerator to BeanTransformer
1
0