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
- 1738 discussions
r725 - branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene
by tchemit@users.nuiton.org 27 Nov '09
by tchemit@users.nuiton.org 27 Nov '09
27 Nov '09
Author: tchemit
Date: 2009-11-27 10:46:35 +0100 (Fri, 27 Nov 2009)
New Revision: 725
Modified:
branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/Template.java
Log:
les methodes abstraites en haut :)
Modified: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/Template.java
===================================================================
--- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/Template.java 2009-11-26 20:06:51 UTC (rev 724)
+++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/Template.java 2009-11-27 09:46:35 UTC (rev 725)
@@ -20,19 +20,20 @@
package org.nuiton.eugene;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.models.Model;
+
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Properties;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.eugene.models.Model;
-
/**
- * Generator.
+ * Generator. TODO javadoc
*
* Created: 5 août 2004
*
@@ -75,7 +76,13 @@
/** Model */
protected M model;
+
@Deprecated
+ public abstract void generate(File[] file, File destDir);
+
+ public abstract void applyTemplate(M model, File destDir) throws IOException;
+
+ @Deprecated
public void setOverwrite(boolean v) {
//overwrite = v;
properties.setProperty(PROP_OVERWRITE, String.valueOf(v));
@@ -126,10 +133,12 @@
if (generatedPackages == null) {
generatedPackages = new ArrayList<String>();
String genPackages = getProperty(PROP_GENERATED_PACKAGES);
- if (!StringUtils.isEmpty(genPackages)) {
- for (String s : genPackages.split(",")) {
- generatedPackages.add(s);
- }
+ if (!StringUtils.isEmpty(genPackages)) {
+ //TC-20091125 avoid manual array copy
+ generatedPackages.addAll(Arrays.asList(genPackages.split(",")));
+// for (String s : genPackages.split(",")) {
+// generatedPackages.add(s);
+// }
}
}
return this.generatedPackages;
@@ -149,9 +158,11 @@
excludeTemplates = new ArrayList<String>();
String excludes = getProperty(PROP_EXCLUDE_TEMPLATES);
if (!StringUtils.isEmpty(excludes)) {
- for (String s : excludes.split(",")) {
- excludeTemplates.add(s);
- }
+ //TC-20091125 avoid manual array copy
+ excludeTemplates.addAll(Arrays.asList(excludes.split(",")));
+// for (String s : excludes.split(",")) {
+// excludeTemplates.add(s);
+// }
}
}
return excludeTemplates;
@@ -166,9 +177,4 @@
return this.model;
}
- @Deprecated
- public abstract void generate(File[] file, File destDir);
-
- public abstract void applyTemplate(M model, File destDir) throws IOException;
-
}
1
0
r724 - branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene
by tchemit@users.nuiton.org 26 Nov '09
by tchemit@users.nuiton.org 26 Nov '09
26 Nov '09
Author: tchemit
Date: 2009-11-26 21:06:51 +0100 (Thu, 26 Nov 2009)
New Revision: 724
Modified:
branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java
Log:
- add convertVariableNameToConstantName from Topia, can be used in eugene too (not Topia specific)
- remove a @see javadoc annotation on a test class
Modified: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java
===================================================================
--- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2009-11-25 11:39:03 UTC (rev 723)
+++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2009-11-26 20:06:51 UTC (rev 724)
@@ -20,25 +20,14 @@
package org.nuiton.eugene;
+import org.apache.commons.lang.StringUtils;
+import org.nuiton.eugene.models.Model;
+import org.nuiton.eugene.models.object.*;
+
import java.io.File;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-
-import java.util.Set;
+import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.apache.commons.lang.StringUtils;
-import org.nuiton.eugene.models.Model;
-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.ObjectModelElement;
-import org.nuiton.eugene.models.object.ObjectModelOperation;
-import org.nuiton.eugene.models.object.ObjectModelParameter;
/**
* GeneratorUtil.
@@ -594,7 +583,7 @@
/**
* Suppress packageName from a fullQualifiedName, even if it contains List, Map or other generics.
* See JUnit test for matching expressions.
- * @see org.nuiton.eugene.GeneratorUtilTest
+ * //@see org.nuiton.eugene.GeneratorUtilTest
* @param str FullQualifiedName for an attribute type (for exemple)
* @return the simple name associated to the str given
*/
@@ -642,4 +631,33 @@
return results;
}
+ /**
+ * Convertit un nom de variable en nom de constante.
+ *
+ * @param variableName le nom de variable a convertir
+ * @return le nom de la constante à partir du nom de la variable
+ */
+ public static String convertVariableNameToConstantName(String variableName) {
+ //TODO Faire des tests pour savoir si variableName est non null et valide
+ //TODO Ameliorer l'algo pour tenir compte des caractères non alpha
+ //TODO pour le moment cela convient, donc...
+ StringBuilder buffer = new StringBuilder();
+ boolean lastCarIsUp = false;
+ for (int i = 0, j = variableName.length(); i < j; i++) {
+ char c = variableName.charAt(i);
+ boolean carIsUp = Character.isUpperCase(c);
+ if (i > 0 && !lastCarIsUp && carIsUp) {
+ // ajout d'un _
+ buffer.append('_');
+ }
+ if (carIsUp) {
+ buffer.append(c);
+ } else {
+ buffer.append(Character.toUpperCase(c));
+ }
+ lastCarIsUp = carIsUp;
+ }
+ return buffer.toString();
+ }
+
} // GeneratorUtil
1
0
r723 - in trunk: eugene/src/site maven-eugene-plugin/src/site src/site
by fdesbois@users.nuiton.org 25 Nov '09
by fdesbois@users.nuiton.org 25 Nov '09
25 Nov '09
Author: fdesbois
Date: 2009-11-25 12:39:03 +0100 (Wed, 25 Nov 2009)
New Revision: 723
Removed:
trunk/eugene/src/site/fr/
trunk/maven-eugene-plugin/src/site/fr/
trunk/src/site/fr/
Log:
delete old folders from previous site hierarchy
1
0
r722 - in trunk: . eugene/src/site eugene/src/site/fr/rst eugene/src/site/rst maven-eugene-plugin/src/site src/site src/site/fr/resources/images src/site/fr/resources/models src/site/fr/resources/xmi src/site/fr/rst src/site/resources src/site/resources/images src/site/resources/models src/site/resources/xmi src/site/rst
by fdesbois@users.nuiton.org 25 Nov '09
by fdesbois@users.nuiton.org 25 Nov '09
25 Nov '09
Author: fdesbois
Date: 2009-11-25 12:37:26 +0100 (Wed, 25 Nov 2009)
New Revision: 722
Added:
trunk/eugene/src/site/rst/
trunk/eugene/src/site/rst/index.rst
trunk/eugene/src/site/site.xml
trunk/maven-eugene-plugin/src/site/site.xml
trunk/src/site/resources/
trunk/src/site/resources/images/
trunk/src/site/resources/images/Hotel.objectmodel.png
trunk/src/site/resources/images/Hotel.png
trunk/src/site/resources/images/ObjectModel.png
trunk/src/site/resources/images/ObjectModel_Generator.png
trunk/src/site/resources/images/ObjectModel_Interfaces.png
trunk/src/site/resources/images/StateModel.png
trunk/src/site/resources/images/plugin_choix.png
trunk/src/site/resources/images/plugin_menu.png
trunk/src/site/resources/images/plugin_newdepot.png
trunk/src/site/resources/images/plugin_typeinstall.png
trunk/src/site/resources/images/plugin_utilisation_editeur.png
trunk/src/site/resources/models/
trunk/src/site/resources/models/buix.guix
trunk/src/site/resources/models/exemple.topiaModel
trunk/src/site/resources/xmi/
trunk/src/site/resources/xmi/ObjectModel.zuml
trunk/src/site/resources/xmi/objectmodel.zargo
trunk/src/site/rst/
trunk/src/site/rst/DevUIDoc.rst
trunk/src/site/rst/DiscussionSurTypeDeGeneration.rst
trunk/src/site/rst/FAQ.rst
trunk/src/site/rst/ObjectModel.rst
trunk/src/site/rst/Todo.rst
trunk/src/site/rst/index.rst
trunk/src/site/rst/maven-plugin.rst
trunk/src/site/rst/plugineclipse.rst
trunk/src/site/site.xml
Removed:
trunk/eugene/src/site/fr/rst/index.rst
trunk/eugene/src/site/site_fr.xml
trunk/maven-eugene-plugin/src/site/site_fr.xml
trunk/src/site/fr/resources/images/Hotel.objectmodel.png
trunk/src/site/fr/resources/images/Hotel.png
trunk/src/site/fr/resources/images/ObjectModel.png
trunk/src/site/fr/resources/images/ObjectModel_Generator.png
trunk/src/site/fr/resources/images/ObjectModel_Interfaces.png
trunk/src/site/fr/resources/images/StateModel.png
trunk/src/site/fr/resources/images/plugin_choix.png
trunk/src/site/fr/resources/images/plugin_menu.png
trunk/src/site/fr/resources/images/plugin_newdepot.png
trunk/src/site/fr/resources/images/plugin_typeinstall.png
trunk/src/site/fr/resources/images/plugin_utilisation_editeur.png
trunk/src/site/fr/resources/models/buix.guix
trunk/src/site/fr/resources/models/exemple.topiaModel
trunk/src/site/fr/resources/xmi/ObjectModel.zuml
trunk/src/site/fr/resources/xmi/objectmodel.zargo
trunk/src/site/fr/rst/DevUIDoc.rst
trunk/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst
trunk/src/site/fr/rst/FAQ.rst
trunk/src/site/fr/rst/ObjectModel.rst
trunk/src/site/fr/rst/Todo.rst
trunk/src/site/fr/rst/index.rst
trunk/src/site/fr/rst/maven-plugin.rst
trunk/src/site/fr/rst/plugineclipse.rst
trunk/src/site/site_fr.xml
Modified:
trunk/eugene/src/site/site_en.xml
trunk/maven-eugene-plugin/src/site/site_en.xml
trunk/pom.xml
trunk/src/site/site_en.xml
Log:
Change site hierarchy
Deleted: trunk/eugene/src/site/fr/rst/index.rst
===================================================================
--- trunk/eugene/src/site/fr/rst/index.rst 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/eugene/src/site/fr/rst/index.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,7 +0,0 @@
-======
-Eugene
-======
-
-Voir details sur le site `parent`_
-
-.. _parent: ../../fr/index.html
Copied: trunk/eugene/src/site/rst/index.rst (from rev 719, trunk/eugene/src/site/fr/rst/index.rst)
===================================================================
--- trunk/eugene/src/site/rst/index.rst (rev 0)
+++ trunk/eugene/src/site/rst/index.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,7 @@
+======
+Eugene
+======
+
+Voir details sur le site `parent`_
+
+.. _parent: ../index.html
Copied: trunk/eugene/src/site/site.xml (from rev 719, trunk/eugene/src/site/site_fr.xml)
===================================================================
--- trunk/eugene/src/site/site.xml (rev 0)
+++ trunk/eugene/src/site/site.xml 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="${project.name}">
+
+ <bannerLeft>
+ <name>${project.name}</name>
+ </bannerLeft>
+
+ <body>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html" />
+ </breadcrumbs>
+
+ <menu ref="parent"/>
+
+ <menu ref="reports"/>
+
+ </body>
+</project>
Property changes on: trunk/eugene/src/site/site.xml
___________________________________________________________________
Added: svn:mergeinfo
+
Modified: trunk/eugene/src/site/site_en.xml
===================================================================
--- trunk/eugene/src/site/site_en.xml 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/eugene/src/site/site_en.xml 2009-11-25 11:37:26 UTC (rev 722)
@@ -10,6 +10,10 @@
<breadcrumbs>
<item name="${project.name}" href="index.html" />
</breadcrumbs>
+
+ <menu name="Parent">
+ <item href="../../index.html" name="${project.parent.name}"/>
+ </menu>
<menu ref="reports"/>
Deleted: trunk/eugene/src/site/site_fr.xml
===================================================================
--- trunk/eugene/src/site/site_fr.xml 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/eugene/src/site/site_fr.xml 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="${project.name}">
-
- <bannerLeft>
- <name>${project.name}</name>
- </bannerLeft>
-
- <body>
-
- <breadcrumbs>
- <item name="${project.name}" href="index.html" />
- </breadcrumbs>
-
- <menu ref="reports"/>
-
- </body>
-</project>
Added: trunk/maven-eugene-plugin/src/site/site.xml
===================================================================
--- trunk/maven-eugene-plugin/src/site/site.xml (rev 0)
+++ trunk/maven-eugene-plugin/src/site/site.xml 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="${project.name}">
+
+ <bannerLeft>
+ <name>${project.name}</name>
+ </bannerLeft>
+
+ <body>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html" />
+ </breadcrumbs>
+
+ <menu ref="parent"/>
+
+ <menu ref="reports"/>
+
+ </body>
+</project>
Modified: trunk/maven-eugene-plugin/src/site/site_en.xml
===================================================================
--- trunk/maven-eugene-plugin/src/site/site_en.xml 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/maven-eugene-plugin/src/site/site_en.xml 2009-11-25 11:37:26 UTC (rev 722)
@@ -11,6 +11,10 @@
<item name="${project.name}" href="index.html" />
</breadcrumbs>
+ <menu name="Parent">
+ <item href="../../index.html" name="${project.parent.name}"/>
+ </menu>
+
<menu ref="reports"/>
</body>
Deleted: trunk/maven-eugene-plugin/src/site/site_fr.xml
===================================================================
--- trunk/maven-eugene-plugin/src/site/site_fr.xml 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/maven-eugene-plugin/src/site/site_fr.xml 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="${project.name}">
-
- <bannerLeft>
- <name>${project.name}</name>
- </bannerLeft>
-
- <body>
-
- <breadcrumbs>
- <item name="${project.name}" href="index.html" />
- </breadcrumbs>
-
- <menu ref="reports"/>
-
- </body>
-</project>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/pom.xml 2009-11-25 11:37:26 UTC (rev 722)
@@ -246,29 +246,12 @@
<!--Multilanguage maven-site -->
<maven.site.locales>fr,en</maven.site.locales>
-
+ <defaultLocale>fr</defaultLocale>
</properties>
<build>
<defaultGoal>install</defaultGoal>
- <plugins>
- <plugin>
- <groupId>org.nuiton</groupId>
- <artifactId>maven-helper-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-site-index</id>
- <goals>
- <goal>generate-site-index</goal>
- </goals>
- <configuration>
- <locales>${maven.site.locales}</locales>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
<pluginManagement>
<plugins>
Deleted: trunk/src/site/fr/resources/images/Hotel.objectmodel.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/images/Hotel.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/images/ObjectModel.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/images/ObjectModel_Generator.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/images/ObjectModel_Interfaces.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/images/StateModel.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/images/plugin_choix.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/images/plugin_menu.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/images/plugin_newdepot.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/images/plugin_typeinstall.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/images/plugin_utilisation_editeur.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/models/buix.guix
===================================================================
--- trunk/src/site/fr/resources/models/buix.guix 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/fr/resources/models/buix.guix 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,409 +0,0 @@
-<GuixApplication id="Application">
- <properties>
- <property name="name" type="String"><value>Buix Application</value></property>
- </properties>
- <WidgetWindow id="GuixWindow">
- <properties>
- <property name="name" type="String"><value>Buix</value></property>
- <property name="title" type="String"><value>Application Buix</value></property>
- <property name="x" type="int"><value>50</value></property>
- <property name="y" type="int"><value>50</value></property>
- <property name="width" type="int"><value>1000</value></property>
- <property name="height" type="int"><value>800</value></property>
- <property name="menubar" type="ComponentResource"><value>MenuBar</value></property>
- </properties>
- <signals>
- <signal name="closing" argument="false" handler="onClosing"/>
- </signals>
- <children>
- <child>
- <WidgetContainer id="GuixGridBag">
- <properties>
- <property name="name" type="String"><value>vbox</value></property>
- </properties>
- <children>
- <child>
- <layout>
- <property name="x" type="int"><value>0</value></property>
- <property name="y" type="int"><value>1</value></property>
- <property name="weightx" type="double"><value>1.0</value></property>
- <property name="weighty" type="double"><value>1.0</value></property>
- </layout>
- <WidgetContainer id="GuixSpliter">
- <properties>
- <property name="name" type="String"><value>verticalSpliter</value></property>
- <property name="orientation" type="Enum"><value><enum type="int" select="0"><item>0</item><item>1</item></enum></value></property>
- <property name="dividerSize" type="int"><value>9</value></property>
- <property name="express" type="boolean"><value>true</value></property>
- </properties>
- <children>
- <child>
- <layout>
- <property name="position" type="Enum"><value><enum type="String" select="3"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property>
- </layout>
- <WidgetContainer id="GuixScrollPane">
- <properties>
- <property name="name" type="String"><value>scrollTree</value></property>
- </properties>
- <children>
- <child>
- <WidgetComponent id="GuixTree">
- <properties>
- <property name="name" type="String"><value>tree</value></property>
- </properties>
- <signals>
- <signal name="clicked" argument="false" handler="onTreeClicked"/>
- </signals>
- </WidgetComponent>
- </child>
- </children>
- </WidgetContainer>
- </child>
- <child>
- <layout>
- <property name="position" type="Enum"><value><enum type="String" select="2"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property>
- </layout>
- <WidgetContainer id="GuixSpliter">
- <properties>
- <property name="name" type="String"><value>horizontalSpliter</value></property>
- <property name="orientation" type="Enum"><value><enum type="int" select="1"><item>0</item><item>1</item></enum></value></property>
- <property name="dividerSize" type="int"><value>9</value></property>
- <property name="express" type="boolean"><value>true</value></property>
- </properties>
- <children>
- <child>
- <layout>
- <property name="position" type="Enum"><value><enum type="String" select="1"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property>
- </layout>
- <WidgetContainer id="GuixTabbedPane">
- <properties>
- <property name="name" type="String"><value>tabProperties</value></property>
- <property name="childCount" type="int"><value>3</value></property>
- </properties>
- <children>
- <child>
- <layout>
- <property name="text" type="String"><value>Properties</value></property>
- <property name="position" type="int"><value>0</value></property>
- </layout>
- <WidgetContainer id="GuixScrollPane">
- <properties>
- <property name="name" type="String"><value>scrollProperties</value></property>
- </properties>
- <children>
- <child>
- <WidgetComponent id="GuixTable">
- <properties>
- <property name="name" type="String"><value>tableProperties</value></property>
- </properties>
- </WidgetComponent>
- </child>
- </children>
- </WidgetContainer>
- </child>
- <child>
- <layout>
- <property name="position" type="int"><value>1</value></property>
- <property name="text" type="String"><value>Container Properties</value></property>
- </layout>
- <WidgetContainer id="GuixScrollPane">
- <properties>
- <property name="name" type="String"><value>scrollContainerProperties</value></property>
- </properties>
- <children>
- <child>
- <WidgetComponent id="GuixTable">
- <properties>
- <property name="name" type="String"><value>tableContainerProperties</value></property>
- </properties>
- </WidgetComponent>
- </child>
- </children>
- </WidgetContainer>
- </child>
- <child>
- <layout>
- <property name="text" type="String"><value>Signals</value></property>
- <property name="position" type="int"><value>2</value></property>
- </layout>
- <WidgetContainer id="GuixGridBag">
- <properties>
- <property name="name" type="String"><value>gridSignals</value></property>
- </properties>
- <children>
- <child>
- <layout>
- <property name="weighty" type="double"><value>0.0</value></property>
- </layout>
- <WidgetComponent id="GuixComboBox">
- <properties>
- <property name="name" type="String"><value>comboAllSignals</value></property>
- </properties>
- </WidgetComponent>
- </child>
- <child>
- <layout>
- <property name="weightx" type="double"><value>0.0</value></property>
- <property name="weighty" type="double"><value>0.0</value></property>
- <property name="x" type="int"><value>1</value></property>
- </layout>
- <WidgetComponent id="GuixButton">
- <properties>
- <property name="name" type="String"><value>addSignal</value></property>
- <property name="text" type="String"><value>add</value></property>
- </properties>
- <signals>
- <signal name="clicked" argument="false" handler="onAddSignal"/>
- </signals>
- </WidgetComponent>
- </child>
- <child>
- <layout>
- <property name="x" type="int"><value>0</value></property>
- <property name="y" type="int"><value>1</value></property>
- <property name="width" type="int"><value>2</value></property>
- </layout>
- <WidgetContainer id="GuixScrollPane">
- <properties>
- <property name="name" type="String"><value>scrollSignals</value></property>
- </properties>
- <children>
- <child>
- <WidgetComponent id="GuixTable">
- <properties>
- <property name="name" type="String"><value>tableSignals</value></property>
- </properties>
- </WidgetComponent>
- </child>
- </children>
- </WidgetContainer>
- </child>
- </children>
- </WidgetContainer>
- </child>
- </children>
- </WidgetContainer>
- </child>
- <child>
- <layout>
- <property name="position" type="Enum"><value><enum type="String" select="0"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property>
- </layout>
- <WidgetContainer id="GuixGridBag">
- <properties>
- <property name="name" type="String"><value>GuixGridBag1</value></property>
- </properties>
- <children>
- <child>
- <layout>
- <property name="weightx" type="double"><value>0.0</value></property>
- <property name="weighty" type="double"><value>0.0</value></property>
- </layout>
- <WidgetComponent id="GuixButton">
- <properties>
- <property name="name" type="String"><value>GuixButton16</value></property>
- <property name="text" type="String"><value>Selection</value></property>
- </properties>
- <signals>
- <signal name="clicked" argument="false" handler="onSelectionButton"/>
- </signals>
- </WidgetComponent>
- </child>
- <child>
- <layout>
- <property name="y" type="int"><value>1</value></property>
- <property name="width" type="int"><value>2</value></property>
- </layout>
- <WidgetContainer id="GuixTabbedPane">
- <properties>
- <property name="name" type="String"><value>tabTools</value></property>
- <property name="childCount" type="int"><value>4</value></property>
- </properties>
- </WidgetContainer>
- </child>
- </children>
- </WidgetContainer>
- </child>
- </children>
- </WidgetContainer>
- </child>
- </children>
- </WidgetContainer>
- </child>
- <child>
- <layout>
- <property name="weighty" type="double"><value>0.0</value></property>
- </layout>
- <WidgetContainer id="GuixGrid">
- <properties>
- <property name="name" type="String"><value>toolbar</value></property>
- </properties>
- <children>
- <child>
- <layout>
- <property name="x" type="int"><value>8</value></property>
- </layout>
- <WidgetComponent id="GuixCheckBox">
- <properties>
- <property name="name" type="String"><value>checkboxDesignTime</value></property>
- <property name="text" type="String"><value>Design</value></property>
- <property name="selected" type="boolean"><value>true</value></property>
- </properties>
- <signals>
- <signal name="itemStateChanged" argument="true" handler="onDesignTime"/>
- </signals>
- </WidgetComponent>
- </child>
- </children>
- </WidgetContainer>
- </child>
- <child>
- <layout>
- <property name="y" type="int"><value>2</value></property>
- <property name="weighty" type="double"><value>0.0</value></property>
- </layout>
- <WidgetComponent id="GuixLabel">
- <properties>
- <property name="name" type="String"><value>statusBar</value></property>
- <property name="text" type="String"><value> </value></property>
- </properties>
- </WidgetComponent>
- </child>
- </children>
- </WidgetContainer>
- </child>
- </children>
- </WidgetWindow>
- <WidgetWindow id="GuixWindowNG">
- <properties>
- <property name="name" type="String"><value>GuixWindowNG1</value></property>
- </properties>
- <children>
- <child>
- <WidgetContainer id="GuixMenuBar">
- <properties>
- <property name="name" type="String"><value>MenuBar</value></property>
- </properties>
- <children>
- <child>
- <WidgetContainer id="GuixMenu">
- <properties>
- <property name="name" type="String"><value>GuixMenu1</value></property>
- <property name="text" type="String"><value>File</value></property>
- </properties>
- <children>
- <child>
- <WidgetComponent id="GuixMenuItem">
- <properties>
- <property name="name" type="String"><value>GuixMenuItem1</value></property>
- <property name="text" type="String"><value>new</value></property>
- <property name="icon" type="Resource"><value></value></property>
- </properties>
- <signals>
- <signal name="menuClicked" argument="false" handler="onNew"/>
- </signals>
- </WidgetComponent>
- </child>
- <child>
- <WidgetComponent id="GuixMenuItem">
- <properties>
- <property name="name" type="String"><value>GuixMenuItem2</value></property>
- <property name="text" type="String"><value>load</value></property>
- </properties>
- <signals>
- <signal name="menuClicked" argument="false" handler="onLoad"/>
- </signals>
- </WidgetComponent>
- </child>
- <child>
- <WidgetComponent id="GuixMenuItem">
- <properties>
- <property name="name" type="String"><value>GuixMenuItem3</value></property>
- <property name="text" type="String"><value>save</value></property>
- </properties>
- <signals>
- <signal name="menuClicked" argument="false" handler="onSave"/>
- </signals>
- </WidgetComponent>
- </child>
- <child>
- <WidgetComponent id="GuixMenuItem">
- <properties>
- <property name="name" type="String"><value>GuixMenuItem4</value></property>
- <property name="text" type="String"><value>export</value></property>
- </properties>
- <signals>
- <signal name="menuClicked" argument="false" handler="onExport"/>
- </signals>
- </WidgetComponent>
- </child>
- <child>
- <WidgetComponent id="GuixMenuItem">
- <properties>
- <property name="name" type="String"><value>GuixMenuItem8</value></property>
- <property name="text" type="String"><value>preview</value></property>
- </properties>
- <signals>
- <signal name="menuClicked" argument="false" handler="onPreview"/>
- </signals>
- </WidgetComponent>
- </child>
- </children>
- </WidgetContainer>
- </child>
- <child>
- <WidgetContainer id="GuixMenu">
- <properties>
- <property name="name" type="String"><value>GuixMenu2</value></property>
- <property name="text" type="String"><value>Edit</value></property>
- </properties>
- <children>
- <child>
- <WidgetComponent id="GuixMenuItem">
- <properties>
- <property name="name" type="String"><value>GuixMenuItem5</value></property>
- <property name="text" type="String"><value>ajouter le composant</value></property>
- </properties>
- <signals>
- <signal name="menuClicked" argument="false" handler="onAddComponent"/>
- </signals>
- </WidgetComponent>
- </child>
- <child>
- <WidgetComponent id="GuixMenuItem">
- <properties>
- <property name="name" type="String"><value>GuixMenuItem6</value></property>
- <property name="text" type="String"><value>couper</value></property>
- </properties>
- <signals>
- <signal name="menuClicked" argument="false" handler="onCouper"/>
- </signals>
- </WidgetComponent>
- </child>
- <child>
- <WidgetComponent id="GuixMenuItem">
- <properties>
- <property name="name" type="String"><value>GuixMenuItem7</value></property>
- <property name="text" type="String"><value>coller</value></property>
- </properties>
- <signals>
- <signal name="menuClicked" argument="false" handler="onColler"/>
- </signals>
- </WidgetComponent>
- </child>
- </children>
- </WidgetContainer>
- </child>
- <child>
- <WidgetContainer id="GuixMenu">
- <properties>
- <property name="name" type="String"><value>GuixMenu3</value></property>
- <property name="text" type="String"><value>help</value></property>
- </properties>
- </WidgetContainer>
- </child>
- </children>
- </WidgetContainer>
- </child>
- </children>
- </WidgetWindow>
-</GuixApplication>
Deleted: trunk/src/site/fr/resources/models/exemple.topiaModel
===================================================================
--- trunk/src/site/fr/resources/models/exemple.topiaModel 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/fr/resources/models/exemple.topiaModel 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<topiaModel xmlns:topia="http://www.codelutin.org/topia/topiaModel">
- <class name="Person" stereotype="entity" package="org.codelutin.test">
- <attribute multiplicity="1" name="name" visibility="public" type="java.lang.String">
- <tag name="mandatory" value="true"/>
- <tag name="indexed" value="false"/>
- <tag name="primaryKey" value="false"/>
- <tag name="readonly" value="false"/>
- </attribute>
- <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Address">
- <tag name="mandatory" value="true"/>
- <tag name="indexed" value="false"/>
- <tag name="primaryKey" value="false"/>
- <tag name="readonly" value="false"/>
- </attribute>
- </class>
- <class name="Employee" type="entity" extends="org.codelutin.test.Person" package="org.codelutin.test">
- <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Company">
- <tag name="mandatory" value="true"/>
- <tag name="indexed" value="false"/>
- <tag name="primaryKey" value="false"/>
- <tag name="readonly" value="false"/>
- </attribute>
- </class>
- <class name="Company" type="entity" package="org.codelutin.test">
- <attribute multiplicity="1" name="name" visibility="public" type="java.lang.String">
- <tag name="mandatory" value="true"/>
- <tag name="indexed" value="false"/>
- <tag name="primaryKey" value="false"/>
- <tag name="readonly" value="false"/>
- </attribute>
- <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Address">
- <tag name="mandatory" value="true"/>
- <tag name="indexed" value="false"/>
- <tag name="primaryKey" value="false"/>
- <tag name="readonly" value="false"/>
- </attribute>
- <attribute multiplicity="n" name="address" visibility="public" type="org.codelutin.test.Employee">
- <tag name="mandatory" value="true"/>
- <tag name="indexed" value="false"/>
- <tag name="primaryKey" value="false"/>
- <tag name="readonly" value="false"/>
- </attribute>
- <operation name="getTime" visibility="public" returnType="int">
- <parameter name="year" type="org.codelutin.Employee"/>
- </operation>
- </class>
-</topiaModel>
Deleted: trunk/src/site/fr/resources/xmi/ObjectModel.zuml
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/xmi/objectmodel.zargo
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/rst/DevUIDoc.rst
===================================================================
--- trunk/src/site/fr/rst/DevUIDoc.rst 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/fr/rst/DevUIDoc.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,103 +0,0 @@
-=======
-UIModel
-=======
-
-:Authors: Aurelie MAZELIER
-:Revision: $Revision$
-:Date: $Date$
-
-
-.. contents::
-
-
-Model UIModel
-=============
-
-En parcourant un fichier xml, il est possible de construire un objet
-UIModel. Cet objet est défini par les interfaces suivantes.
-
-
-Interfaces
-----------
-
-- UIModel :
-
- - version XML
- - root de type UIModelObject
- - le nom du package
- - liste des objets du model
-
-- UIModelObject :
-
- - nom
- - type
- - un UIModelObject parent
- - un UIModel
- - une liste d'arguments
- - une liste de propriétés
- - une liste d'évènements
- - une liste d'enfants
-
-- UIModelArgument :
-
- - une liste d'arguments
-
-- UIModelProperty :
-
- - un nom
- - une valeur (de différents type : int, float ...)
- - un index
-
-- UIModelEvent :
-
- - le nom de la addListenerMethod
- - le nom de la listenerInterface
- - le nom de la listenerMethod
- - le nom du handler
- - le nom de la eventProperty
-
-- UIModelChild :
-
- - un enfant UIModelObject
- - la contrainte de l'enfant de type UIModelConstraint
-
-- UIModelConstraint :
-
- - une valeur de type Object ou String
-
-
-Implantations
--------------
-
-Il existe deux implantations de ces interfaces.
-
-
-impl
-~~~~
-
-Cette première implantation permet d'obtenir un UIModel lors
-du parcours du fichier xml de type uimodel par le parser
-XMLParser.
-
-
-xml
-~~~
-
-Cette deuxième implantation permet d'obtenir un UIModel lors
-du parcours du fichier xml de type javaxml par le parser
-JavaXMLParser.
-
-
-JavaXMLParser
--------------
-
-Ce parser permet de parcourir des fichiers javaxml afin d'obtenir un
-objet UIModel. Ce parser utilise dom4j.
-
-
-Générateurs
-===========
-
-- Génération d'objet UIModel (UIModelGenerator). Ce générateur utilise les classes précédentes afin d'obtenir un objet UIModel en fonction des fichiers xml. A partir de cet objet UIModel, il est possible de lancer la génération. Ces générateurs sont utilisées dans Topia pour générer les fichiers java à partir de l'objet UIModel.
-
-- Génération d'objet UIModel (UIModelGeneratorWithCapitalizeName). Ce générateur est une sous classe du premier. Il est possède une méthode permettant de mettre la première lettre en majuscule du nom d'un objet, d'une propriété...
Deleted: trunk/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst
===================================================================
--- trunk/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,82 +0,0 @@
-=========================
-Principe de la génération
-=========================
-
-Il y a deux façon de voir la génération.
-
-La première que l'on rencontre le plus
-souvent génère des fichiers avec des sections à
-modifier par le développeur. Ces sections sont marquées par des commentaires
-que le générateur interprète pour savoir qu'il n'a pas le droit de modifier
-cette partie de code.
-
-La deuxième qui à pour principe:
-
-- le générateur ne doit jamais modifier les fichiers de l'utilisateur.
-- l'utilisateur ne doit jamais modifier le code généré
-
-De cette façon les choses sont clairement séparé, et cela est possible sans
-utilisation d'artifice perturbant le développeur grâce au nouveau langage à
-objet et à l'héritage.
-
-La grosse différence n'est pas dans les générateurs eux même mais dans les
-templates de génération. Si tous les générateurs de la première catégorie
-peuvent très bien servir pour faire de la génération de la seconde,
-l'inverse n'est pas vrai. Car la seconde catégorie demande des générateurs
-beaucoup plus simple, ce qui est d'ailleur un avantage pour la maintenance.
-
-Code Lutin utilise un générateur du deuxième type: Eugene
-
-Quelques générateurs de la première catégorie:
-
-- Acceleo (Obeo)
-- Pragmatic (Argia)
-
-Les principes de Eugene
-=======================
-
-- le générateur ne doit jamais modifier les fichiers de l'utilisateur.
-- l'utilisateur ne doit jamais modifier le code généré
-- le modèle est toujours la source (pas de reverse, pas de modification du
- modèle par le générateur
-- être le plus simple possible (simple à maintenir)
-- s'appuyer sur les normes (XMI)
-- pouvoir utiliser plusieurs fichiers XMI pour la même génération
-- ne pas mettre dans le modèle des choses techniques (ex: type pour la base de
- données) mais dans un fichier de propriété à coté du modèle.
-- avoir une couche d'abstraction du XMI pour évité la modification des
- templates si la version de XMI change (XMLObjectModel)
-- s'appuyer sur un modèle mémoire simple (ObjectModel écrit spécifiquement
- car aucun modèle simple n'a été trouvé)
-- s'appuyer sur un langage puissant et connu des développeurs (Java)
-- ne jamais mélanger le code généré et le code utilisateur
-- pouvoir générer n'importe quelle type de fichier (XML, Java, texte, ...)
-- être facilement intégrable dans une phase de génération/compilation
- (task ant, plugin maven)
-- être indépendant d'un outil de développement spécifique (chacun à le droit de
- choisir l'éditeur qu'il souhaite).
-
-Défaut de la première solution
-==============================
-
-- il faut prévoir partout ou l'utilisateur pourrait souhaiter ajouter du
- code. Par exemple dans Pragmatic, on ne peut pas utiliser les imports car il
- n'y a pas de section utilisateur à cet endroit, il faut donc à chaque fois
- écrire le package lorsque l'on souhaite utiliser une classe non encore
- importée.
-
-- le développeur voit beaucoup de code qu'il n'a pas le droit de modifier
- ce qui complexifie la vue du développeur pour rien
-
-Défaut des générateurs le plus souvent rencontré
-================================================
-
-- Les générateurs au lieu d'utiliser un langage et façon de faire que tous
- les développeurs connaissent réinvente leur propre syntaxe et langage.
-
-Eugene lui utilise seulement du Java et les tags JSP (<%, <%=, %>).
-De cette façon le générateur reste simple pas de langage à développer et
-parser. L'utilisateur qui connait Java connait le langage de template. Et
-surtout l'utilisateur n'est pas limité par le langage développé
-spécifiquement pour les templates.
-
Deleted: trunk/src/site/fr/rst/FAQ.rst
===================================================================
--- trunk/src/site/fr/rst/FAQ.rst 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/fr/rst/FAQ.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,16 +0,0 @@
-===
-FAQ
-===
-
-Comment convertir les modèles UML de Poseidon vers ArgoUML ?
-============================================================
-
-Il faut sauver le modèle sous Poseidon en XMI, on bien l'extraire du
-fichier .zmul qui est en fait un fichier zip::
-
- xlstproc -o <argo-file>.xmi poseidon2argouml.xsl <poseidon-file>.xmi
-
-Ensuite dans ArgoUML ouvrez le fichier généré.
-
-Les diagrammes ne sont pas convertie, il faut donc les recréer a partir des
-classes en faisant du drag&drop.
Deleted: trunk/src/site/fr/rst/ObjectModel.rst
===================================================================
--- trunk/src/site/fr/rst/ObjectModel.rst 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/fr/rst/ObjectModel.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,92 +0,0 @@
-===========
-ObjectModel
-===========
-
-:Authors: Arnaud Thimel, Florian Desbois
-:Contact: eugene-devel(a)list.nuiton.org ou eugene-users(a)list.nuiton.org
-:Revision: $Revision$
-:Date: $Date$
-
-
-.. contents::
-
-
-Introduction
-============
-
-Le générateur ObjectModelGenerator est prévu pour lire et analyser des modèles
-objets puis générer du code à partir de ceux-ci. En UML, un modèle objet est
-représenté par un diagramme de classe. Cette vision des modèles objet étant très
-répandue, elle sert de base à l'ObjectModelGenerator (il est à noter cependant
-que ce n'est pas obligatoire).
-
-Partons donc du principe que l'on dispose d'un modèle (diagramme de classe) créé
-à l'aide d'un outil de modélisation au format XMI (XML Metadata Interchange).
-
-La génération de code se fait ensuite en trois étapes :
-
-- Epuration du XMI en un code XML ne conservant que les informations utiles ;
-- Mise en mémoire du modèle simplifié ;
-- Application des templates / génération de code.
-
-
-Epuration du modèle XMI
-=======================
-
-La plupart des outils de modélisation décrivent leur modèle en XMI. Or le XMI
-est trop verbeux pour être compréhensible aisement.
-
-Eugene propose une tranformation XSLT permettant ainsi d'obtenir un XML
-épuré décrivant le modèle et ne conservant que l'essentiel des informations.
-
-Parmi les informations extraites, on peut citer :
-
-- Objets (classes, classes abtraites, interfaces)
-- Attributs (nom, type, visibilité, ...)
-- Relations entre les classes (toutes multiplicités, navigabilité, classes d'association, ...)
-- Opérations (nom, type de retour, noms et types des arguments, exceptions levées, ...)
-- Stéréotypes
-
-A partir du diagramme suivant :
-
-.. image:: images/Hotel.png
-
-On obtient un ObjectModel tel que :
-
-.. image:: images/Hotel.objectmodel.png
-
-
-Modèle mémoire
-==============
-
-Une fois le XMI ramené à un XML compréhensible, le modèle est chargé en
-mémoire afin de subir la génération.
-
-Ainsi, le modèle instancié est basé sur le diagramme de classes (méta-modèle) suivant :
-
-.. image:: images/ObjectModel.png
-
-Les interfaces disponibles pour les générateurs sont les suivantes :
-
-.. image:: images/ObjectModel_Interfaces.png
-
-ObjectModelGenerator :
-
-.. image:: images/ObjectModel_Generator.png
-
-Application des templates
-=========================
-
-Chaque template est à lui seul un générateur qui hérite de ObjectModelGenerator.
-Toute partie de ce générateur peut donc être surchargée permettant ainsi une
-forte personnalisation des générateurs. Le rôle de l'ObjectModelGenerator est
-donc de parcourir le modèle et à chaque élément clé du modèle, (model, classes
-interfaces, classifier) les méthodes correspondantes sont appelées. Par défaut,
-ces méthodes décrites dans le générateur de base sont vide, et il n'en ressort
-donc aucun code généré. Les templates ont donc pour but de surcharger ses
-méthodes et décrire le code qui va être généré.
-
-Les templates peuvent être de toutes sortes car ils peuvent générer un fichier
-différent par modèle, par interface, par classe ou encore par classifier (souche
-commune aux classes et interfaces). De plus, ils peuvent indifféremment générer
-du code Java / XML ou encore tout autre type de code (texte ou autre...).
Deleted: trunk/src/site/fr/rst/Todo.rst
===================================================================
--- trunk/src/site/fr/rst/Todo.rst 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/fr/rst/Todo.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,115 +0,0 @@
-====
-TODO
-====
-
-
-:Revision: $Revision$
-:Date: $Date$
-
-
-Idées ou choses à faire
-=======================
-
-- support des InnerClasses (en xmi argo: la classe est declarer dans une classe
- dans un element UML:Namespace.ownedElement) (`Evolution #59`_ )
-
-- support des static (tout element declarer dans une class/interface: methode,
- attribut, enumeration, class, ...)
- (en xmi argo: ownerScope='classifier' ou ownerScope='instance') (`Evolution #58`_ )
-
-.. _Evolution #59: http://www.nuiton.org/issues/show/59
-.. _Evolution #58: http://www.nuiton.org/issues/show/58
-
-- peut-etre faire des tests unitaires avec http://juxy.tigris.org/ pour le xls
-
-- Permettre de faire du 'model to model' avant la generation
-
-Model to Model
-==============
-
-(2009-10-19 : En cours de developpement : `branches/1.0.1-javabuilder`_ )
-
-.. _branches/1.0.1-javabuilder: http://nuiton.org/repositories/browse/eugene/branches/1.0.1-Javabuilder
-
-Pour tout ce qui est génération de classe Java, le principe de base d'Eugene
-est de dire que le développeur écrit directement ce qu'il souhaite voir dans
-le fichier final.
-
-Cela pose quelques difficultés:
-
-- difficulté de prévoir les imports
-- difficulté d'éviter la génération de deux méthodes ayant le même nom
-
-L'idée serait alors de constuire la classe Java souhaitée au final en appelant
-des méthodes (addImport, addMethod, addAttribute, ...). Ceci nous donnerait
-alors un nouveau modèle mémoire dont on demanderait la génération à un
-générateur sans inteligence qui se contenterait d'écrire le code Java modélisé.
-
-L'avantage est que pour chaque méthode à ajouter on peut demander avant si elle
-n'a pas déjà été ajoutée et ainsi potentiellement la renomé avant de l'inclure.
-D'ajouter de façon automatique tous les imports des arguments des méthodes, ...
-
-Pour pouvoir faire cela, nous pourrions nous baser sur ObjectModel, mais des
-ajouter doivent être fait:
-
-- pouvoir indiquer sur une Class une série d'import.
-- pouvoir ajouter un message de licence
-- pouvoir ajouter sur une méthode sont code source
-
-Ce dernier élément est le plus problèmatique, car il deviendrait pénible de
-devoir instancier tout le code de la méthode en objet et on perdrait l'idée
-de départ d'Eugene.
-
-Dans eugène il est déjà possible de modifier la transformation des tags de
-génération '/\*{' et '}\*/' qui par défaut génère un 'ouput.write("...");'
-Dans notre cas, il faudrait quelque chose comme 'method.addCode("...");' ou
-encore plus simplement '"..." +' ce qui pourrait donner::
-
- addImport(MonObject.class);
- method.addCode(
- /*{ int i = 0;
- i = 1+2;
- MonObject result = new MonObject(result);
- return result;
- }*/
- );
-
-qui deviendrait::
-
- addImport(MonObject.class);
- method.addCode(
- "int i = 0;\n" +
- "i = 1+2;\n" +
- "MonObject result = new MonObject(result);\n" +
- "return result;\n"
- );
-
-On garde la facilte d'écriture du code à générer et on permet d'ajouter
-facilement des imports dont on aurait besoin dans le coprs de la méthode. Aucun
-traitement complexe du code de la méthode n'est donc nécessaire.
-
-Ce nouveau mode de génération ne serait qu'une moyen complémentaire de la
-génération actuelle.
-
-Travail a faire:
-
-- ajout d'objet dans ObjectModel
-- ajout de méthode de modification dans ObjectModel
-- création d'un template de génération d'un POJO (génération direct d'un modèle)
-
-Il serait toute fois dommage d'ajouter tout un ensemnble de setter sur les
-interfaces d'ObjectModel qui le rendrait moins clair pour les générateurs.
-Il faut donc trouver une solution pour permettre l'instanciation et la
-modification de classe implantant l'ObjectModel sans pour autant les ajouter
-au interface.
-
-Une idée pourrait-être l'utilisation de Helper qui permette de créer et modifier
-le modèle::
-
- ObjectModelClass clazz = ObjectModelHelper.createClass();
- ObjectModelOperation method = ObjectModelHelper.addMethod(
- clazz, "name", "typeRetour", "paramName", "typeParam");
- ObjectModelHelper.addImport("java.util.List");
- ObjectModelHelper.addCode(method,
- /*{ blablabla
- }*/
Deleted: trunk/src/site/fr/rst/index.rst
===================================================================
--- trunk/src/site/fr/rst/index.rst 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/fr/rst/index.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,80 +0,0 @@
-======
-Eugene
-======
-
-.. contents::
-
-
-Origine du projet
------------------
-
-Eugene est né à la suite d'une recherche de générateur de code basé sur
-un modèle mémoire simple qui s'est terminée par un échec.
-
-Les projets alors étudiés étaient alors entre autres :
-
-- Jostraca ;
-- EMF ;
-- ...
-
-Le choix de la génération de code par rapport à l'introspection a été fait car
-la génération code permet de passer par l'étape compilation et donc de
-validation du code généré. En effet, si le besoin était initialement porté sur
-de la génération de code Java, Eugene a été pensé pour générer tout type
-de code.
-
-
-Côté technique
---------------
-
-Eugene permet l'utilisation d'un ensemble de générateurs. Ces
-générateurs sont abstraits de toute spécificité permettant ainsi de les adapter
-en fonction des besoins.
-
-Par défaut, Eugene propose trois implantations de ces générateurs :
-
-- ObjectModelGenerator (génération à partir d'un modèle objet) ;
-- StateModelGenerator (génération à partir d'un modèle d'états) ;
-- UIModelGenerator (génération à partir d'un modèle graphique).
-
-Chacun de ces modèles a ses propres spécificités liés à sa structure et son mode
-de fonctionnement...
-
-Cependant, ces générateurs sont inutiles sans des templates de génération. Les
-templates sont les fichiers qui vont permettre de déterminer quel sera le
-contenu généré en fonction du modèle initial. Grâce à NuitonProcessor_, ces
-templates sont écrit avec une sytaxe proche de la syntaxe JSP en imbriquant les
-portions de code Java avec les portions de code généré. Le rôle de
-NuitonProcessor_ est de transformer ces templates en remplaçant la syntaxe JSP par
-la syntaxe Java correpondante. Les classes Java obtenues peuvent donc être
-compilées et deviennent autonomes.
-
-.. _NuitonProcessor: http://maven-site.nuiton.org/processor/
-
-Règle ant
----------
-
-Voici un exemple d'utilisation de la règle ant.
-
-::
-
- <taskdef name="generator" classname="org.nuiton.eugene.GeneratorTask"
- classpath="${compile.classpath}:${targetbuild}:${resources}" />
-
- <target name="generate" description="generate">
- <generator srcdir="${modelDir}" destdir="${targetgen}"
- resolver="org.nuiton.exemple.ResourceResolver"
- templates="org.nuiton.example.JavaBeanGenerator"
- properties="defaultPackage=org.nuiton,fullPackagePath=org.nuiton,extraPackages=org.nuiton"
- classpath="${compile.classpath}:${targetbuild}:${resources}" />
- </target>
-
-Dans cette exemple, un template de génération sera apliqué sur tous les
-fichiers.
-
-Plugin maven
-------------
-
-Un plugin maven est disponnible à l'adresse suivante
-http://maven-site.nuiton.org/eugene/maven-eugene-plugin . Il permet l'utilisation
-depuis maven de Eugene.
Deleted: trunk/src/site/fr/rst/maven-plugin.rst
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/rst/plugineclipse.rst
===================================================================
--- trunk/src/site/fr/rst/plugineclipse.rst 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/fr/rst/plugineclipse.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,44 +0,0 @@
-Installation du plugin LutinGenerator
-=====================================
-
-Ce guide détail comment installer le plugin eclipse LutinGenerator via
-l'update site (assitant d'instalation de plugins).
-
-Installation
-------------
-
-Ouvrez l'assitant d'installation de plugin via le menu
-(Help/Software Updates/Find and install...).
-
-.. image:: images/plugin_menu.png
-
-Sur la fenêtre suivante sélectionnez "Search for new features to install".
-
-.. image:: images/plugin_typeinstall.png
-
-Une nouvelle fenêtre s'affiche, sélectionnez "New remote site" pour ajouter le
-dépot "LutinGenerator".
-
-L'adresse du dépot à utiliser est :
-
-::
-
- http://lutingenerator.labs.libre-entreprise.org/eclipse/
-
-.. image:: images/plugin_newdepot.png
-
-
-Sélectionnez ensuite ce dépot et cliquez sur "Finish".
-
-Installez ensuite la dernière version disponible et redémarrez eclipse:
-
-.. image:: images/plugin_choix.png
-
-
-Utilisation
------------
-
-Pour disposer de la coloration des templates, cliquez droit sur un fichier
-source java et sélectionnez "Open with > / LutinGenerator Template Editor"
-
-.. image:: images/plugin_utilisation_editeur.png
\ No newline at end of file
Copied: trunk/src/site/resources/images/Hotel.objectmodel.png (from rev 719, trunk/src/site/fr/resources/images/Hotel.objectmodel.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/images/Hotel.png (from rev 719, trunk/src/site/fr/resources/images/Hotel.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/images/ObjectModel.png (from rev 719, trunk/src/site/fr/resources/images/ObjectModel.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/images/ObjectModel_Generator.png (from rev 719, trunk/src/site/fr/resources/images/ObjectModel_Generator.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/images/ObjectModel_Interfaces.png (from rev 719, trunk/src/site/fr/resources/images/ObjectModel_Interfaces.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/images/StateModel.png (from rev 719, trunk/src/site/fr/resources/images/StateModel.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/images/plugin_choix.png (from rev 719, trunk/src/site/fr/resources/images/plugin_choix.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/images/plugin_menu.png (from rev 719, trunk/src/site/fr/resources/images/plugin_menu.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/images/plugin_newdepot.png (from rev 719, trunk/src/site/fr/resources/images/plugin_newdepot.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/images/plugin_typeinstall.png (from rev 719, trunk/src/site/fr/resources/images/plugin_typeinstall.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/images/plugin_utilisation_editeur.png (from rev 719, trunk/src/site/fr/resources/images/plugin_utilisation_editeur.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/models/buix.guix (from rev 719, trunk/src/site/fr/resources/models/buix.guix)
===================================================================
--- trunk/src/site/resources/models/buix.guix (rev 0)
+++ trunk/src/site/resources/models/buix.guix 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,409 @@
+<GuixApplication id="Application">
+ <properties>
+ <property name="name" type="String"><value>Buix Application</value></property>
+ </properties>
+ <WidgetWindow id="GuixWindow">
+ <properties>
+ <property name="name" type="String"><value>Buix</value></property>
+ <property name="title" type="String"><value>Application Buix</value></property>
+ <property name="x" type="int"><value>50</value></property>
+ <property name="y" type="int"><value>50</value></property>
+ <property name="width" type="int"><value>1000</value></property>
+ <property name="height" type="int"><value>800</value></property>
+ <property name="menubar" type="ComponentResource"><value>MenuBar</value></property>
+ </properties>
+ <signals>
+ <signal name="closing" argument="false" handler="onClosing"/>
+ </signals>
+ <children>
+ <child>
+ <WidgetContainer id="GuixGridBag">
+ <properties>
+ <property name="name" type="String"><value>vbox</value></property>
+ </properties>
+ <children>
+ <child>
+ <layout>
+ <property name="x" type="int"><value>0</value></property>
+ <property name="y" type="int"><value>1</value></property>
+ <property name="weightx" type="double"><value>1.0</value></property>
+ <property name="weighty" type="double"><value>1.0</value></property>
+ </layout>
+ <WidgetContainer id="GuixSpliter">
+ <properties>
+ <property name="name" type="String"><value>verticalSpliter</value></property>
+ <property name="orientation" type="Enum"><value><enum type="int" select="0"><item>0</item><item>1</item></enum></value></property>
+ <property name="dividerSize" type="int"><value>9</value></property>
+ <property name="express" type="boolean"><value>true</value></property>
+ </properties>
+ <children>
+ <child>
+ <layout>
+ <property name="position" type="Enum"><value><enum type="String" select="3"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property>
+ </layout>
+ <WidgetContainer id="GuixScrollPane">
+ <properties>
+ <property name="name" type="String"><value>scrollTree</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetComponent id="GuixTree">
+ <properties>
+ <property name="name" type="String"><value>tree</value></property>
+ </properties>
+ <signals>
+ <signal name="clicked" argument="false" handler="onTreeClicked"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <layout>
+ <property name="position" type="Enum"><value><enum type="String" select="2"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property>
+ </layout>
+ <WidgetContainer id="GuixSpliter">
+ <properties>
+ <property name="name" type="String"><value>horizontalSpliter</value></property>
+ <property name="orientation" type="Enum"><value><enum type="int" select="1"><item>0</item><item>1</item></enum></value></property>
+ <property name="dividerSize" type="int"><value>9</value></property>
+ <property name="express" type="boolean"><value>true</value></property>
+ </properties>
+ <children>
+ <child>
+ <layout>
+ <property name="position" type="Enum"><value><enum type="String" select="1"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property>
+ </layout>
+ <WidgetContainer id="GuixTabbedPane">
+ <properties>
+ <property name="name" type="String"><value>tabProperties</value></property>
+ <property name="childCount" type="int"><value>3</value></property>
+ </properties>
+ <children>
+ <child>
+ <layout>
+ <property name="text" type="String"><value>Properties</value></property>
+ <property name="position" type="int"><value>0</value></property>
+ </layout>
+ <WidgetContainer id="GuixScrollPane">
+ <properties>
+ <property name="name" type="String"><value>scrollProperties</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetComponent id="GuixTable">
+ <properties>
+ <property name="name" type="String"><value>tableProperties</value></property>
+ </properties>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <layout>
+ <property name="position" type="int"><value>1</value></property>
+ <property name="text" type="String"><value>Container Properties</value></property>
+ </layout>
+ <WidgetContainer id="GuixScrollPane">
+ <properties>
+ <property name="name" type="String"><value>scrollContainerProperties</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetComponent id="GuixTable">
+ <properties>
+ <property name="name" type="String"><value>tableContainerProperties</value></property>
+ </properties>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <layout>
+ <property name="text" type="String"><value>Signals</value></property>
+ <property name="position" type="int"><value>2</value></property>
+ </layout>
+ <WidgetContainer id="GuixGridBag">
+ <properties>
+ <property name="name" type="String"><value>gridSignals</value></property>
+ </properties>
+ <children>
+ <child>
+ <layout>
+ <property name="weighty" type="double"><value>0.0</value></property>
+ </layout>
+ <WidgetComponent id="GuixComboBox">
+ <properties>
+ <property name="name" type="String"><value>comboAllSignals</value></property>
+ </properties>
+ </WidgetComponent>
+ </child>
+ <child>
+ <layout>
+ <property name="weightx" type="double"><value>0.0</value></property>
+ <property name="weighty" type="double"><value>0.0</value></property>
+ <property name="x" type="int"><value>1</value></property>
+ </layout>
+ <WidgetComponent id="GuixButton">
+ <properties>
+ <property name="name" type="String"><value>addSignal</value></property>
+ <property name="text" type="String"><value>add</value></property>
+ </properties>
+ <signals>
+ <signal name="clicked" argument="false" handler="onAddSignal"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <layout>
+ <property name="x" type="int"><value>0</value></property>
+ <property name="y" type="int"><value>1</value></property>
+ <property name="width" type="int"><value>2</value></property>
+ </layout>
+ <WidgetContainer id="GuixScrollPane">
+ <properties>
+ <property name="name" type="String"><value>scrollSignals</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetComponent id="GuixTable">
+ <properties>
+ <property name="name" type="String"><value>tableSignals</value></property>
+ </properties>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <layout>
+ <property name="position" type="Enum"><value><enum type="String" select="0"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property>
+ </layout>
+ <WidgetContainer id="GuixGridBag">
+ <properties>
+ <property name="name" type="String"><value>GuixGridBag1</value></property>
+ </properties>
+ <children>
+ <child>
+ <layout>
+ <property name="weightx" type="double"><value>0.0</value></property>
+ <property name="weighty" type="double"><value>0.0</value></property>
+ </layout>
+ <WidgetComponent id="GuixButton">
+ <properties>
+ <property name="name" type="String"><value>GuixButton16</value></property>
+ <property name="text" type="String"><value>Selection</value></property>
+ </properties>
+ <signals>
+ <signal name="clicked" argument="false" handler="onSelectionButton"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <layout>
+ <property name="y" type="int"><value>1</value></property>
+ <property name="width" type="int"><value>2</value></property>
+ </layout>
+ <WidgetContainer id="GuixTabbedPane">
+ <properties>
+ <property name="name" type="String"><value>tabTools</value></property>
+ <property name="childCount" type="int"><value>4</value></property>
+ </properties>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <layout>
+ <property name="weighty" type="double"><value>0.0</value></property>
+ </layout>
+ <WidgetContainer id="GuixGrid">
+ <properties>
+ <property name="name" type="String"><value>toolbar</value></property>
+ </properties>
+ <children>
+ <child>
+ <layout>
+ <property name="x" type="int"><value>8</value></property>
+ </layout>
+ <WidgetComponent id="GuixCheckBox">
+ <properties>
+ <property name="name" type="String"><value>checkboxDesignTime</value></property>
+ <property name="text" type="String"><value>Design</value></property>
+ <property name="selected" type="boolean"><value>true</value></property>
+ </properties>
+ <signals>
+ <signal name="itemStateChanged" argument="true" handler="onDesignTime"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <layout>
+ <property name="y" type="int"><value>2</value></property>
+ <property name="weighty" type="double"><value>0.0</value></property>
+ </layout>
+ <WidgetComponent id="GuixLabel">
+ <properties>
+ <property name="name" type="String"><value>statusBar</value></property>
+ <property name="text" type="String"><value> </value></property>
+ </properties>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetWindow>
+ <WidgetWindow id="GuixWindowNG">
+ <properties>
+ <property name="name" type="String"><value>GuixWindowNG1</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetContainer id="GuixMenuBar">
+ <properties>
+ <property name="name" type="String"><value>MenuBar</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetContainer id="GuixMenu">
+ <properties>
+ <property name="name" type="String"><value>GuixMenu1</value></property>
+ <property name="text" type="String"><value>File</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem1</value></property>
+ <property name="text" type="String"><value>new</value></property>
+ <property name="icon" type="Resource"><value></value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onNew"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem2</value></property>
+ <property name="text" type="String"><value>load</value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onLoad"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem3</value></property>
+ <property name="text" type="String"><value>save</value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onSave"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem4</value></property>
+ <property name="text" type="String"><value>export</value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onExport"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem8</value></property>
+ <property name="text" type="String"><value>preview</value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onPreview"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <WidgetContainer id="GuixMenu">
+ <properties>
+ <property name="name" type="String"><value>GuixMenu2</value></property>
+ <property name="text" type="String"><value>Edit</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem5</value></property>
+ <property name="text" type="String"><value>ajouter le composant</value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onAddComponent"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem6</value></property>
+ <property name="text" type="String"><value>couper</value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onCouper"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem7</value></property>
+ <property name="text" type="String"><value>coller</value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onColler"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <WidgetContainer id="GuixMenu">
+ <properties>
+ <property name="name" type="String"><value>GuixMenu3</value></property>
+ <property name="text" type="String"><value>help</value></property>
+ </properties>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetWindow>
+</GuixApplication>
Copied: trunk/src/site/resources/models/exemple.topiaModel (from rev 719, trunk/src/site/fr/resources/models/exemple.topiaModel)
===================================================================
--- trunk/src/site/resources/models/exemple.topiaModel (rev 0)
+++ trunk/src/site/resources/models/exemple.topiaModel 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<topiaModel xmlns:topia="http://www.codelutin.org/topia/topiaModel">
+ <class name="Person" stereotype="entity" package="org.codelutin.test">
+ <attribute multiplicity="1" name="name" visibility="public" type="java.lang.String">
+ <tag name="mandatory" value="true"/>
+ <tag name="indexed" value="false"/>
+ <tag name="primaryKey" value="false"/>
+ <tag name="readonly" value="false"/>
+ </attribute>
+ <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Address">
+ <tag name="mandatory" value="true"/>
+ <tag name="indexed" value="false"/>
+ <tag name="primaryKey" value="false"/>
+ <tag name="readonly" value="false"/>
+ </attribute>
+ </class>
+ <class name="Employee" type="entity" extends="org.codelutin.test.Person" package="org.codelutin.test">
+ <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Company">
+ <tag name="mandatory" value="true"/>
+ <tag name="indexed" value="false"/>
+ <tag name="primaryKey" value="false"/>
+ <tag name="readonly" value="false"/>
+ </attribute>
+ </class>
+ <class name="Company" type="entity" package="org.codelutin.test">
+ <attribute multiplicity="1" name="name" visibility="public" type="java.lang.String">
+ <tag name="mandatory" value="true"/>
+ <tag name="indexed" value="false"/>
+ <tag name="primaryKey" value="false"/>
+ <tag name="readonly" value="false"/>
+ </attribute>
+ <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Address">
+ <tag name="mandatory" value="true"/>
+ <tag name="indexed" value="false"/>
+ <tag name="primaryKey" value="false"/>
+ <tag name="readonly" value="false"/>
+ </attribute>
+ <attribute multiplicity="n" name="address" visibility="public" type="org.codelutin.test.Employee">
+ <tag name="mandatory" value="true"/>
+ <tag name="indexed" value="false"/>
+ <tag name="primaryKey" value="false"/>
+ <tag name="readonly" value="false"/>
+ </attribute>
+ <operation name="getTime" visibility="public" returnType="int">
+ <parameter name="year" type="org.codelutin.Employee"/>
+ </operation>
+ </class>
+</topiaModel>
Copied: trunk/src/site/resources/xmi/ObjectModel.zuml (from rev 719, trunk/src/site/fr/resources/xmi/ObjectModel.zuml)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/xmi/objectmodel.zargo (from rev 719, trunk/src/site/fr/resources/xmi/objectmodel.zargo)
===================================================================
(Binary files differ)
Copied: trunk/src/site/rst/DevUIDoc.rst (from rev 719, trunk/src/site/fr/rst/DevUIDoc.rst)
===================================================================
--- trunk/src/site/rst/DevUIDoc.rst (rev 0)
+++ trunk/src/site/rst/DevUIDoc.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,103 @@
+=======
+UIModel
+=======
+
+:Authors: Aurelie MAZELIER
+:Revision: $Revision$
+:Date: $Date$
+
+
+.. contents::
+
+
+Model UIModel
+=============
+
+En parcourant un fichier xml, il est possible de construire un objet
+UIModel. Cet objet est défini par les interfaces suivantes.
+
+
+Interfaces
+----------
+
+- UIModel :
+
+ - version XML
+ - root de type UIModelObject
+ - le nom du package
+ - liste des objets du model
+
+- UIModelObject :
+
+ - nom
+ - type
+ - un UIModelObject parent
+ - un UIModel
+ - une liste d'arguments
+ - une liste de propriétés
+ - une liste d'évènements
+ - une liste d'enfants
+
+- UIModelArgument :
+
+ - une liste d'arguments
+
+- UIModelProperty :
+
+ - un nom
+ - une valeur (de différents type : int, float ...)
+ - un index
+
+- UIModelEvent :
+
+ - le nom de la addListenerMethod
+ - le nom de la listenerInterface
+ - le nom de la listenerMethod
+ - le nom du handler
+ - le nom de la eventProperty
+
+- UIModelChild :
+
+ - un enfant UIModelObject
+ - la contrainte de l'enfant de type UIModelConstraint
+
+- UIModelConstraint :
+
+ - une valeur de type Object ou String
+
+
+Implantations
+-------------
+
+Il existe deux implantations de ces interfaces.
+
+
+impl
+~~~~
+
+Cette première implantation permet d'obtenir un UIModel lors
+du parcours du fichier xml de type uimodel par le parser
+XMLParser.
+
+
+xml
+~~~
+
+Cette deuxième implantation permet d'obtenir un UIModel lors
+du parcours du fichier xml de type javaxml par le parser
+JavaXMLParser.
+
+
+JavaXMLParser
+-------------
+
+Ce parser permet de parcourir des fichiers javaxml afin d'obtenir un
+objet UIModel. Ce parser utilise dom4j.
+
+
+Générateurs
+===========
+
+- Génération d'objet UIModel (UIModelGenerator). Ce générateur utilise les classes précédentes afin d'obtenir un objet UIModel en fonction des fichiers xml. A partir de cet objet UIModel, il est possible de lancer la génération. Ces générateurs sont utilisées dans Topia pour générer les fichiers java à partir de l'objet UIModel.
+
+- Génération d'objet UIModel (UIModelGeneratorWithCapitalizeName). Ce générateur est une sous classe du premier. Il est possède une méthode permettant de mettre la première lettre en majuscule du nom d'un objet, d'une propriété...
Copied: trunk/src/site/rst/DiscussionSurTypeDeGeneration.rst (from rev 719, trunk/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst)
===================================================================
--- trunk/src/site/rst/DiscussionSurTypeDeGeneration.rst (rev 0)
+++ trunk/src/site/rst/DiscussionSurTypeDeGeneration.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,82 @@
+=========================
+Principe de la génération
+=========================
+
+Il y a deux façon de voir la génération.
+
+La première que l'on rencontre le plus
+souvent génère des fichiers avec des sections à
+modifier par le développeur. Ces sections sont marquées par des commentaires
+que le générateur interprète pour savoir qu'il n'a pas le droit de modifier
+cette partie de code.
+
+La deuxième qui à pour principe:
+
+- le générateur ne doit jamais modifier les fichiers de l'utilisateur.
+- l'utilisateur ne doit jamais modifier le code généré
+
+De cette façon les choses sont clairement séparé, et cela est possible sans
+utilisation d'artifice perturbant le développeur grâce au nouveau langage à
+objet et à l'héritage.
+
+La grosse différence n'est pas dans les générateurs eux même mais dans les
+templates de génération. Si tous les générateurs de la première catégorie
+peuvent très bien servir pour faire de la génération de la seconde,
+l'inverse n'est pas vrai. Car la seconde catégorie demande des générateurs
+beaucoup plus simple, ce qui est d'ailleur un avantage pour la maintenance.
+
+Code Lutin utilise un générateur du deuxième type: Eugene
+
+Quelques générateurs de la première catégorie:
+
+- Acceleo (Obeo)
+- Pragmatic (Argia)
+
+Les principes de Eugene
+=======================
+
+- le générateur ne doit jamais modifier les fichiers de l'utilisateur.
+- l'utilisateur ne doit jamais modifier le code généré
+- le modèle est toujours la source (pas de reverse, pas de modification du
+ modèle par le générateur
+- être le plus simple possible (simple à maintenir)
+- s'appuyer sur les normes (XMI)
+- pouvoir utiliser plusieurs fichiers XMI pour la même génération
+- ne pas mettre dans le modèle des choses techniques (ex: type pour la base de
+ données) mais dans un fichier de propriété à coté du modèle.
+- avoir une couche d'abstraction du XMI pour évité la modification des
+ templates si la version de XMI change (XMLObjectModel)
+- s'appuyer sur un modèle mémoire simple (ObjectModel écrit spécifiquement
+ car aucun modèle simple n'a été trouvé)
+- s'appuyer sur un langage puissant et connu des développeurs (Java)
+- ne jamais mélanger le code généré et le code utilisateur
+- pouvoir générer n'importe quelle type de fichier (XML, Java, texte, ...)
+- être facilement intégrable dans une phase de génération/compilation
+ (task ant, plugin maven)
+- être indépendant d'un outil de développement spécifique (chacun à le droit de
+ choisir l'éditeur qu'il souhaite).
+
+Défaut de la première solution
+==============================
+
+- il faut prévoir partout ou l'utilisateur pourrait souhaiter ajouter du
+ code. Par exemple dans Pragmatic, on ne peut pas utiliser les imports car il
+ n'y a pas de section utilisateur à cet endroit, il faut donc à chaque fois
+ écrire le package lorsque l'on souhaite utiliser une classe non encore
+ importée.
+
+- le développeur voit beaucoup de code qu'il n'a pas le droit de modifier
+ ce qui complexifie la vue du développeur pour rien
+
+Défaut des générateurs le plus souvent rencontré
+================================================
+
+- Les générateurs au lieu d'utiliser un langage et façon de faire que tous
+ les développeurs connaissent réinvente leur propre syntaxe et langage.
+
+Eugene lui utilise seulement du Java et les tags JSP (<%, <%=, %>).
+De cette façon le générateur reste simple pas de langage à développer et
+parser. L'utilisateur qui connait Java connait le langage de template. Et
+surtout l'utilisateur n'est pas limité par le langage développé
+spécifiquement pour les templates.
+
Copied: trunk/src/site/rst/FAQ.rst (from rev 719, trunk/src/site/fr/rst/FAQ.rst)
===================================================================
--- trunk/src/site/rst/FAQ.rst (rev 0)
+++ trunk/src/site/rst/FAQ.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,16 @@
+===
+FAQ
+===
+
+Comment convertir les modèles UML de Poseidon vers ArgoUML ?
+============================================================
+
+Il faut sauver le modèle sous Poseidon en XMI, on bien l'extraire du
+fichier .zmul qui est en fait un fichier zip::
+
+ xlstproc -o <argo-file>.xmi poseidon2argouml.xsl <poseidon-file>.xmi
+
+Ensuite dans ArgoUML ouvrez le fichier généré.
+
+Les diagrammes ne sont pas convertie, il faut donc les recréer a partir des
+classes en faisant du drag&drop.
Copied: trunk/src/site/rst/ObjectModel.rst (from rev 719, trunk/src/site/fr/rst/ObjectModel.rst)
===================================================================
--- trunk/src/site/rst/ObjectModel.rst (rev 0)
+++ trunk/src/site/rst/ObjectModel.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,92 @@
+===========
+ObjectModel
+===========
+
+:Authors: Arnaud Thimel, Florian Desbois
+:Contact: eugene-devel(a)list.nuiton.org ou eugene-users(a)list.nuiton.org
+:Revision: $Revision$
+:Date: $Date$
+
+
+.. contents::
+
+
+Introduction
+============
+
+Le générateur ObjectModelGenerator est prévu pour lire et analyser des modèles
+objets puis générer du code à partir de ceux-ci. En UML, un modèle objet est
+représenté par un diagramme de classe. Cette vision des modèles objet étant très
+répandue, elle sert de base à l'ObjectModelGenerator (il est à noter cependant
+que ce n'est pas obligatoire).
+
+Partons donc du principe que l'on dispose d'un modèle (diagramme de classe) créé
+à l'aide d'un outil de modélisation au format XMI (XML Metadata Interchange).
+
+La génération de code se fait ensuite en trois étapes :
+
+- Epuration du XMI en un code XML ne conservant que les informations utiles ;
+- Mise en mémoire du modèle simplifié ;
+- Application des templates / génération de code.
+
+
+Epuration du modèle XMI
+=======================
+
+La plupart des outils de modélisation décrivent leur modèle en XMI. Or le XMI
+est trop verbeux pour être compréhensible aisement.
+
+Eugene propose une tranformation XSLT permettant ainsi d'obtenir un XML
+épuré décrivant le modèle et ne conservant que l'essentiel des informations.
+
+Parmi les informations extraites, on peut citer :
+
+- Objets (classes, classes abtraites, interfaces)
+- Attributs (nom, type, visibilité, ...)
+- Relations entre les classes (toutes multiplicités, navigabilité, classes d'association, ...)
+- Opérations (nom, type de retour, noms et types des arguments, exceptions levées, ...)
+- Stéréotypes
+
+A partir du diagramme suivant :
+
+.. image:: images/Hotel.png
+
+On obtient un ObjectModel tel que :
+
+.. image:: images/Hotel.objectmodel.png
+
+
+Modèle mémoire
+==============
+
+Une fois le XMI ramené à un XML compréhensible, le modèle est chargé en
+mémoire afin de subir la génération.
+
+Ainsi, le modèle instancié est basé sur le diagramme de classes (méta-modèle) suivant :
+
+.. image:: images/ObjectModel.png
+
+Les interfaces disponibles pour les générateurs sont les suivantes :
+
+.. image:: images/ObjectModel_Interfaces.png
+
+ObjectModelGenerator :
+
+.. image:: images/ObjectModel_Generator.png
+
+Application des templates
+=========================
+
+Chaque template est à lui seul un générateur qui hérite de ObjectModelGenerator.
+Toute partie de ce générateur peut donc être surchargée permettant ainsi une
+forte personnalisation des générateurs. Le rôle de l'ObjectModelGenerator est
+donc de parcourir le modèle et à chaque élément clé du modèle, (model, classes
+interfaces, classifier) les méthodes correspondantes sont appelées. Par défaut,
+ces méthodes décrites dans le générateur de base sont vide, et il n'en ressort
+donc aucun code généré. Les templates ont donc pour but de surcharger ses
+méthodes et décrire le code qui va être généré.
+
+Les templates peuvent être de toutes sortes car ils peuvent générer un fichier
+différent par modèle, par interface, par classe ou encore par classifier (souche
+commune aux classes et interfaces). De plus, ils peuvent indifféremment générer
+du code Java / XML ou encore tout autre type de code (texte ou autre...).
Copied: trunk/src/site/rst/Todo.rst (from rev 719, trunk/src/site/fr/rst/Todo.rst)
===================================================================
--- trunk/src/site/rst/Todo.rst (rev 0)
+++ trunk/src/site/rst/Todo.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,115 @@
+====
+TODO
+====
+
+
+:Revision: $Revision$
+:Date: $Date$
+
+
+Idées ou choses à faire
+=======================
+
+- support des InnerClasses (en xmi argo: la classe est declarer dans une classe
+ dans un element UML:Namespace.ownedElement) (`Evolution #59`_ )
+
+- support des static (tout element declarer dans une class/interface: methode,
+ attribut, enumeration, class, ...)
+ (en xmi argo: ownerScope='classifier' ou ownerScope='instance') (`Evolution #58`_ )
+
+.. _Evolution #59: http://www.nuiton.org/issues/show/59
+.. _Evolution #58: http://www.nuiton.org/issues/show/58
+
+- peut-etre faire des tests unitaires avec http://juxy.tigris.org/ pour le xls
+
+- Permettre de faire du 'model to model' avant la generation
+
+Model to Model
+==============
+
+(2009-10-19 : En cours de developpement : `branches/1.0.1-javabuilder`_ )
+
+.. _branches/1.0.1-javabuilder: http://nuiton.org/repositories/browse/eugene/branches/1.0.1-Javabuilder
+
+Pour tout ce qui est génération de classe Java, le principe de base d'Eugene
+est de dire que le développeur écrit directement ce qu'il souhaite voir dans
+le fichier final.
+
+Cela pose quelques difficultés:
+
+- difficulté de prévoir les imports
+- difficulté d'éviter la génération de deux méthodes ayant le même nom
+
+L'idée serait alors de constuire la classe Java souhaitée au final en appelant
+des méthodes (addImport, addMethod, addAttribute, ...). Ceci nous donnerait
+alors un nouveau modèle mémoire dont on demanderait la génération à un
+générateur sans inteligence qui se contenterait d'écrire le code Java modélisé.
+
+L'avantage est que pour chaque méthode à ajouter on peut demander avant si elle
+n'a pas déjà été ajoutée et ainsi potentiellement la renomé avant de l'inclure.
+D'ajouter de façon automatique tous les imports des arguments des méthodes, ...
+
+Pour pouvoir faire cela, nous pourrions nous baser sur ObjectModel, mais des
+ajouter doivent être fait:
+
+- pouvoir indiquer sur une Class une série d'import.
+- pouvoir ajouter un message de licence
+- pouvoir ajouter sur une méthode sont code source
+
+Ce dernier élément est le plus problèmatique, car il deviendrait pénible de
+devoir instancier tout le code de la méthode en objet et on perdrait l'idée
+de départ d'Eugene.
+
+Dans eugène il est déjà possible de modifier la transformation des tags de
+génération '/\*{' et '}\*/' qui par défaut génère un 'ouput.write("...");'
+Dans notre cas, il faudrait quelque chose comme 'method.addCode("...");' ou
+encore plus simplement '"..." +' ce qui pourrait donner::
+
+ addImport(MonObject.class);
+ method.addCode(
+ /*{ int i = 0;
+ i = 1+2;
+ MonObject result = new MonObject(result);
+ return result;
+ }*/
+ );
+
+qui deviendrait::
+
+ addImport(MonObject.class);
+ method.addCode(
+ "int i = 0;\n" +
+ "i = 1+2;\n" +
+ "MonObject result = new MonObject(result);\n" +
+ "return result;\n"
+ );
+
+On garde la facilte d'écriture du code à générer et on permet d'ajouter
+facilement des imports dont on aurait besoin dans le coprs de la méthode. Aucun
+traitement complexe du code de la méthode n'est donc nécessaire.
+
+Ce nouveau mode de génération ne serait qu'une moyen complémentaire de la
+génération actuelle.
+
+Travail a faire:
+
+- ajout d'objet dans ObjectModel
+- ajout de méthode de modification dans ObjectModel
+- création d'un template de génération d'un POJO (génération direct d'un modèle)
+
+Il serait toute fois dommage d'ajouter tout un ensemnble de setter sur les
+interfaces d'ObjectModel qui le rendrait moins clair pour les générateurs.
+Il faut donc trouver une solution pour permettre l'instanciation et la
+modification de classe implantant l'ObjectModel sans pour autant les ajouter
+au interface.
+
+Une idée pourrait-être l'utilisation de Helper qui permette de créer et modifier
+le modèle::
+
+ ObjectModelClass clazz = ObjectModelHelper.createClass();
+ ObjectModelOperation method = ObjectModelHelper.addMethod(
+ clazz, "name", "typeRetour", "paramName", "typeParam");
+ ObjectModelHelper.addImport("java.util.List");
+ ObjectModelHelper.addCode(method,
+ /*{ blablabla
+ }*/
Copied: trunk/src/site/rst/index.rst (from rev 719, trunk/src/site/fr/rst/index.rst)
===================================================================
--- trunk/src/site/rst/index.rst (rev 0)
+++ trunk/src/site/rst/index.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,80 @@
+======
+Eugene
+======
+
+.. contents::
+
+
+Origine du projet
+-----------------
+
+Eugene est né à la suite d'une recherche de générateur de code basé sur
+un modèle mémoire simple qui s'est terminée par un échec.
+
+Les projets alors étudiés étaient alors entre autres :
+
+- Jostraca ;
+- EMF ;
+- ...
+
+Le choix de la génération de code par rapport à l'introspection a été fait car
+la génération code permet de passer par l'étape compilation et donc de
+validation du code généré. En effet, si le besoin était initialement porté sur
+de la génération de code Java, Eugene a été pensé pour générer tout type
+de code.
+
+
+Côté technique
+--------------
+
+Eugene permet l'utilisation d'un ensemble de générateurs. Ces
+générateurs sont abstraits de toute spécificité permettant ainsi de les adapter
+en fonction des besoins.
+
+Par défaut, Eugene propose trois implantations de ces générateurs :
+
+- ObjectModelGenerator (génération à partir d'un modèle objet) ;
+- StateModelGenerator (génération à partir d'un modèle d'états) ;
+- UIModelGenerator (génération à partir d'un modèle graphique).
+
+Chacun de ces modèles a ses propres spécificités liés à sa structure et son mode
+de fonctionnement...
+
+Cependant, ces générateurs sont inutiles sans des templates de génération. Les
+templates sont les fichiers qui vont permettre de déterminer quel sera le
+contenu généré en fonction du modèle initial. Grâce à NuitonProcessor_, ces
+templates sont écrit avec une sytaxe proche de la syntaxe JSP en imbriquant les
+portions de code Java avec les portions de code généré. Le rôle de
+NuitonProcessor_ est de transformer ces templates en remplaçant la syntaxe JSP par
+la syntaxe Java correpondante. Les classes Java obtenues peuvent donc être
+compilées et deviennent autonomes.
+
+.. _NuitonProcessor: http://maven-site.nuiton.org/processor/
+
+Règle ant
+---------
+
+Voici un exemple d'utilisation de la règle ant.
+
+::
+
+ <taskdef name="generator" classname="org.nuiton.eugene.GeneratorTask"
+ classpath="${compile.classpath}:${targetbuild}:${resources}" />
+
+ <target name="generate" description="generate">
+ <generator srcdir="${modelDir}" destdir="${targetgen}"
+ resolver="org.nuiton.exemple.ResourceResolver"
+ templates="org.nuiton.example.JavaBeanGenerator"
+ properties="defaultPackage=org.nuiton,fullPackagePath=org.nuiton,extraPackages=org.nuiton"
+ classpath="${compile.classpath}:${targetbuild}:${resources}" />
+ </target>
+
+Dans cette exemple, un template de génération sera apliqué sur tous les
+fichiers.
+
+Plugin maven
+------------
+
+Un plugin maven est disponnible à l'adresse suivante
+http://maven-site.nuiton.org/eugene/maven-eugene-plugin . Il permet l'utilisation
+depuis maven de Eugene.
Property changes on: trunk/src/site/rst/index.rst
___________________________________________________________________
Added: svn:mergeinfo
+
Copied: trunk/src/site/rst/maven-plugin.rst (from rev 719, trunk/src/site/fr/rst/maven-plugin.rst)
===================================================================
(Binary files differ)
Copied: trunk/src/site/rst/plugineclipse.rst (from rev 719, trunk/src/site/fr/rst/plugineclipse.rst)
===================================================================
--- trunk/src/site/rst/plugineclipse.rst (rev 0)
+++ trunk/src/site/rst/plugineclipse.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,44 @@
+Installation du plugin LutinGenerator
+=====================================
+
+Ce guide détail comment installer le plugin eclipse LutinGenerator via
+l'update site (assitant d'instalation de plugins).
+
+Installation
+------------
+
+Ouvrez l'assitant d'installation de plugin via le menu
+(Help/Software Updates/Find and install...).
+
+.. image:: images/plugin_menu.png
+
+Sur la fenêtre suivante sélectionnez "Search for new features to install".
+
+.. image:: images/plugin_typeinstall.png
+
+Une nouvelle fenêtre s'affiche, sélectionnez "New remote site" pour ajouter le
+dépot "LutinGenerator".
+
+L'adresse du dépot à utiliser est :
+
+::
+
+ http://lutingenerator.labs.libre-entreprise.org/eclipse/
+
+.. image:: images/plugin_newdepot.png
+
+
+Sélectionnez ensuite ce dépot et cliquez sur "Finish".
+
+Installez ensuite la dernière version disponible et redémarrez eclipse:
+
+.. image:: images/plugin_choix.png
+
+
+Utilisation
+-----------
+
+Pour disposer de la coloration des templates, cliquez droit sur un fichier
+source java et sélectionnez "Open with > / LutinGenerator Template Editor"
+
+.. image:: images/plugin_utilisation_editeur.png
\ No newline at end of file
Added: trunk/src/site/site.xml
===================================================================
--- trunk/src/site/site.xml (rev 0)
+++ trunk/src/site/site.xml 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="${project.name}">
+
+ <bannerLeft>
+ <name>${project.name}</name>
+ </bannerLeft>
+
+ <poweredBy>
+ <logo href="http://maven.apache.org" name="Maven" img="${project.url}/images/logos/maven-feather.png"/>
+ <logo href="http://maven-site.nuiton.org/jrst" name="JRst" img="${project.url}/images/jrst-logo.png"/>
+ <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" img="${project.url}/images/restructuredtext-logo.png"/>
+ </poweredBy>
+
+ <body>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html" />
+ </breadcrumbs>
+
+ <links>
+ <item name="Libre-Entreprise" href="http://www.libre-entreprise.org/" />
+ </links>
+
+ <menu name="Utilisateur">
+ <item href="index.html" name="Accueil"/>
+ <item href="DiscussionSurTypeDeGeneration.html" name="Génération"/>
+ <item href="maven-eugene-plugin/plugin-info.html" name="Plugin maven" />
+ <item href="FAQ.html" name="FAQ"/>
+ </menu>
+
+ <menu name="Développeur">
+ <item name="ObjectModel" href="ObjectModel.html"/>
+ <item name="UIModel" href="DevUIDoc.html"/>
+ <item name="Plugin Eclipse" href="plugineclipse.html"/>
+ <item name="Todo" href="Todo.html"/>
+ </menu>
+
+ <menu name="Liens">
+ <item href="en/index.html" name="EUGene project [ EN ]" />
+ <item href="http://${platform}/projects/list_files/eugene" name="Téléchargement" />
+ <item href="http://maven-site.nuiton.org/processor" name="Nuiton-processor" />
+ <item href="http://maven-site.nuiton.org/topia" name="ToPIA" />
+ </menu>
+
+ <menu name="Trackers">
+ <item name="Bugs" href="${project.issueManagement.url}?query_id=2"/>
+ <item name="Améliorations" href="${project.issueManagement.url}?query_id=1"/>
+ <item name="Aide" href="${project.issueManagement.url}?query_id=3"/>
+ </menu>
+
+ <menu ref="modules"/>
+
+ <menu ref="reports"/>
+
+ </body>
+</project>
Modified: trunk/src/site/site_en.xml
===================================================================
--- trunk/src/site/site_en.xml 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/site_en.xml 2009-11-25 11:37:26 UTC (rev 722)
@@ -6,9 +6,9 @@
</bannerLeft>
<poweredBy>
- <logo href="http://maven.apache.org" name="Maven" img="../../jrst/images/logos/maven-feather.png"/>
- <logo href="../../jrst" name="JRst" img="../../jrst/images/jrst-logo.png"/>
- <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" img="../../jrst/images/restructuredtext-logo.png"/>
+ <logo href="http://maven.apache.org" name="Maven" img="${project.url}/jrst/images/logos/maven-feather.png"/>
+ <logo href="http://maven-site.nuiton.org/jrst" name="JRst" img="${project.url}/jrst/images/jrst-logo.png"/>
+ <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" img="${project.url}/jrst/images/restructuredtext-logo.png"/>
</poweredBy>
<body>
@@ -27,11 +27,10 @@
</menu>
<menu name="Links">
- <item href="../fr/index.html" name="EUGene project [ FR ]" />
+ <item href="../index.html" name="EUGene project [ FR ]" />
<item href="http://${platform}/projects/list_files/eugene" name="Downloads" />
- <item href="../eugene/en/index.html" name="EUGene Module" title="Access to reports and javadoc for EUGene module" />
- <item href="../../processor" name="Nuiton-processor" />
- <item href="../../topia" name="ToPIA" />
+ <item href="http://maven-site.nuiton.org/processor" name="Nuiton-processor" />
+ <item href="http://maven-site.nuiton.org/topia" name="ToPIA" />
</menu>
<menu name="Trackers">
@@ -40,6 +39,11 @@
<item name="Help" href="${project.issueManagement.url}?query_id=3"/>
</menu>
+ <menu name="Modules">
+ <item href="../eugene/en/index.html" name="EUGene"/>
+ <item href="../maven-eugene-plugin/en/index.html" name="EUGene - plugin maven"/>
+ </menu>
+
<menu ref="reports"/>
</body>
Deleted: trunk/src/site/site_fr.xml
===================================================================
--- trunk/src/site/site_fr.xml 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/site_fr.xml 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="${project.name}">
-
- <bannerLeft>
- <name>${project.name}</name>
- </bannerLeft>
-
- <poweredBy>
- <logo href="http://maven.apache.org" name="Maven" img="${project.url}/images/logos/maven-feather.png"/>
- <logo href="../../jrst" name="JRst" img="${project.url}/images/jrst-logo.png"/>
- <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" img="${project.url}/images/restructuredtext-logo.png"/>
- </poweredBy>
-
- <body>
-
- <breadcrumbs>
- <item name="${project.name}" href="index.html" />
- </breadcrumbs>
-
- <links>
- <item name="Libre-Entreprise" href="http://www.libre-entreprise.org/" />
- </links>
-
- <menu name="Utilisateur">
- <item href="index.html" name="Accueil"/>
- <item href="DiscussionSurTypeDeGeneration.html" name="Génération"/>
- <item href="../maven-eugene-plugin/fr/plugin-info.html" name="Plugin maven" />
- <item href="FAQ.html" name="FAQ"/>
- </menu>
-
- <menu name="Développeur">
- <item name="ObjectModel" href="ObjectModel.html"/>
- <item name="UIModel" href="DevUIDoc.html"/>
- <item name="Plugin Eclipse" href="plugineclipse.html"/>
- <item name="Todo" href="Todo.html"/>
- </menu>
-
- <menu name="Liens">
- <item href="../en/index.html" name="EUGene project [ EN ]" />
- <item href="http://${platform}/projects/list_files/eugene" name="Téléchargement" />
- <item href="../eugene/fr/index.html" name="Module EUGene" title="Accès aux rapports et javadoc du module EUGene"/>
- <item href="../../processor" name="Nuiton-processor" />
- <item href="../../topia" name="ToPIA" />
- </menu>
-
- <menu name="Trackers">
- <item name="Bugs" href="${project.issueManagement.url}?query_id=2"/>
- <item name="Améliorations" href="${project.issueManagement.url}?query_id=1"/>
- <item name="Aide" href="${project.issueManagement.url}?query_id=3"/>
- </menu>
-
- <menu ref="modules"/>
-
- <menu ref="reports"/>
-
- </body>
-</project>
1
0
25 Nov '09
Author: fdesbois
Date: 2009-11-25 12:36:25 +0100 (Wed, 25 Nov 2009)
New Revision: 721
Added:
trunk/maven-eugene-plugin/src/site/rst/
Removed:
trunk/maven-eugene-plugin/src/site/fr/rst/
Modified:
trunk/maven-eugene-plugin/src/site/rst/index.rst
Log:
Change site hierarchy
Property changes on: trunk/maven-eugene-plugin/src/site/rst
___________________________________________________________________
Added: svn:mergeinfo
+
Modified: trunk/maven-eugene-plugin/src/site/rst/index.rst
===================================================================
--- trunk/maven-eugene-plugin/src/site/fr/rst/index.rst 2009-11-24 17:06:20 UTC (rev 719)
+++ trunk/maven-eugene-plugin/src/site/rst/index.rst 2009-11-25 11:36:25 UTC (rev 721)
@@ -8,4 +8,4 @@
Retour sur `EUGene`_
-.. _EUGene: ../../fr/index.html
\ No newline at end of file
+.. _EUGene: ../index.html
\ No newline at end of file
1
0
Author: fdesbois
Date: 2009-11-24 18:40:43 +0100 (Tue, 24 Nov 2009)
New Revision: 720
Modified:
trunk/src/site/site_en.xml
trunk/src/site/site_fr.xml
Log:
Change url for references other project nuiton site (topia, jrst, ...)
Modified: trunk/src/site/site_en.xml
===================================================================
--- trunk/src/site/site_en.xml 2009-11-24 17:06:20 UTC (rev 719)
+++ trunk/src/site/site_en.xml 2009-11-24 17:40:43 UTC (rev 720)
@@ -6,14 +6,15 @@
</bannerLeft>
<poweredBy>
- <logo href="http://maven-site.nuiton.org/jrst" name="JRst" img="http://maven-site.nuiton.org/jrst/images/jrst-logo.png"/>
- <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" img="http://maven-site.nuiton.org/jrst/images/restructuredtext-logo.png"/>
+ <logo href="http://maven.apache.org" name="Maven" img="../../jrst/images/logos/maven-feather.png"/>
+ <logo href="../../jrst" name="JRst" img="../../jrst/images/jrst-logo.png"/>
+ <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" img="../../jrst/images/restructuredtext-logo.png"/>
</poweredBy>
<body>
<breadcrumbs>
- <item name="${project.name}" href="${project.url}" />
+ <item name="${project.name}" href="index.html" />
</breadcrumbs>
<links>
@@ -27,10 +28,10 @@
<menu name="Links">
<item href="../fr/index.html" name="EUGene project [ FR ]" />
- <item name="Downloads" href="http://${platform}/projects/list_files/eugene" />
+ <item href="http://${platform}/projects/list_files/eugene" name="Downloads" />
<item href="../eugene/en/index.html" name="EUGene Module" title="Access to reports and javadoc for EUGene module" />
- <item name="Nuiton-processor" href="http://nuiton.org/projects/show/processor"/>
- <item name="ToPIA" href="http://nuiton.org/projects/show/topia"/>
+ <item href="../../processor" name="Nuiton-processor" />
+ <item href="../../topia" name="ToPIA" />
</menu>
<menu name="Trackers">
Modified: trunk/src/site/site_fr.xml
===================================================================
--- trunk/src/site/site_fr.xml 2009-11-24 17:06:20 UTC (rev 719)
+++ trunk/src/site/site_fr.xml 2009-11-24 17:40:43 UTC (rev 720)
@@ -6,8 +6,9 @@
</bannerLeft>
<poweredBy>
- <logo href="http://maven-site.nuiton.org/jrst" name="JRst" img="http://maven-site.nuiton.org/jrst/images/jrst-logo.png"/>
- <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" img="http://maven-site.nuiton.org/jrst/images/restructuredtext-logo.png"/>
+ <logo href="http://maven.apache.org" name="Maven" img="${project.url}/images/logos/maven-feather.png"/>
+ <logo href="../../jrst" name="JRst" img="${project.url}/images/jrst-logo.png"/>
+ <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" img="${project.url}/images/restructuredtext-logo.png"/>
</poweredBy>
<body>
@@ -38,8 +39,8 @@
<item href="../en/index.html" name="EUGene project [ EN ]" />
<item href="http://${platform}/projects/list_files/eugene" name="Téléchargement" />
<item href="../eugene/fr/index.html" name="Module EUGene" title="Accès aux rapports et javadoc du module EUGene"/>
- <item href="http://nuiton.org/projects/show/processor" name="Nuiton-processor"/>
- <item href="http://nuiton.org/projects/show/topia" name="ToPIA"/>
+ <item href="../../processor" name="Nuiton-processor" />
+ <item href="../../topia" name="ToPIA" />
</menu>
<menu name="Trackers">
1
0
24 Nov '09
Author: fdesbois
Date: 2009-11-24 18:06:20 +0100 (Tue, 24 Nov 2009)
New Revision: 719
Added:
trunk/maven-eugene-plugin/src/site/en/
trunk/maven-eugene-plugin/src/site/en/rst/
trunk/maven-eugene-plugin/src/site/en/rst/index.rst
trunk/maven-eugene-plugin/src/site/fr/
trunk/maven-eugene-plugin/src/site/fr/rst/
trunk/maven-eugene-plugin/src/site/fr/rst/index.rst
trunk/maven-eugene-plugin/src/site/site_en.xml
trunk/maven-eugene-plugin/src/site/site_fr.xml
trunk/src/site/en/
trunk/src/site/en/rst/
trunk/src/site/en/rst/generatorHelp.rst
trunk/src/site/en/rst/index.rst
trunk/src/site/en/rst/maven-plugin.rst
trunk/src/site/fr/
trunk/src/site/fr/resources/
trunk/src/site/fr/resources/images/
trunk/src/site/fr/resources/images/Hotel.objectmodel.png
trunk/src/site/fr/resources/images/Hotel.png
trunk/src/site/fr/resources/images/ObjectModel.png
trunk/src/site/fr/resources/images/ObjectModel_Generator.png
trunk/src/site/fr/resources/images/ObjectModel_Interfaces.png
trunk/src/site/fr/resources/images/StateModel.png
trunk/src/site/fr/resources/images/plugin_choix.png
trunk/src/site/fr/resources/images/plugin_menu.png
trunk/src/site/fr/resources/images/plugin_newdepot.png
trunk/src/site/fr/resources/images/plugin_typeinstall.png
trunk/src/site/fr/resources/images/plugin_utilisation_editeur.png
trunk/src/site/fr/resources/models/
trunk/src/site/fr/resources/models/buix.guix
trunk/src/site/fr/resources/models/exemple.topiaModel
trunk/src/site/fr/resources/xmi/
trunk/src/site/fr/resources/xmi/ObjectModel.zuml
trunk/src/site/fr/resources/xmi/objectmodel.zargo
trunk/src/site/fr/rst/
trunk/src/site/fr/rst/DevUIDoc.rst
trunk/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst
trunk/src/site/fr/rst/FAQ.rst
trunk/src/site/fr/rst/ObjectModel.rst
trunk/src/site/fr/rst/Todo.rst
trunk/src/site/fr/rst/index.rst
trunk/src/site/fr/rst/maven-plugin.rst
trunk/src/site/fr/rst/plugineclipse.rst
trunk/src/site/site_en.xml
trunk/src/site/site_fr.xml
Removed:
trunk/eugene/src/site/en/rst/generatorHelp.rst
trunk/eugene/src/site/fr/rst/DevUIDoc.rst
trunk/eugene/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst
trunk/eugene/src/site/fr/rst/FAQ.rst
trunk/eugene/src/site/fr/rst/ObjectModel.rst
trunk/eugene/src/site/fr/rst/Todo.rst
trunk/eugene/src/site/fr/rst/plugineclipse.rst
trunk/maven-eugene-plugin/src/site/site.xml
trunk/src/site/site.xml
Modified:
trunk/eugene/src/site/en/rst/index.rst
trunk/eugene/src/site/fr/rst/index.rst
trunk/eugene/src/site/site_en.xml
trunk/eugene/src/site/site_fr.xml
trunk/pom.xml
Log:
Refactor site for new mavenpom usage with two folders for languages
Deleted: trunk/eugene/src/site/en/rst/generatorHelp.rst
===================================================================
--- trunk/eugene/src/site/en/rst/generatorHelp.rst 2009-11-24 17:06:01 UTC (rev 718)
+++ trunk/eugene/src/site/en/rst/generatorHelp.rst 2009-11-24 17:06:20 UTC (rev 719)
@@ -1,89 +0,0 @@
-
-How to create a UML model for use with Eugene
----------------------------------------------
-
-In Poseidon,
- - Create an empty project
- - Rename root package to your application name (used by ???)
- - create a package hierarchy according to your company name and project organisation (eg : org.codelutin.jdevis.entities)
- - Create a class diagram is this package, so that classes you will define to it will belong to this package at creation.
- - Make a model of your entities :
- - All entities must be stereotyped 'entity'
- - You may use both class and interface
- - You may set several taggedValues on all items :
- - doc : documentation related to this item, used for javadoc comments (not used yet)
- - You may set several taggedValues on classes :
- - asText : OCL expression used as for toString() method generation (eg : this.firstName+" "+this.lastName)
- - You may set several taggedValues on attributes :
- - readonly : boolean that indicates if change must be made impossible on this attribute (used for setter generation)
- - mandatory : boolean that indicates if this attribute is mandatory (used to build a minimal not empty constructor)
- - defines : boolean that indicates if this attribute is needed for defining the class (used for default UIs)
- - primaryKey : boolean that indicates if this attribute is part of the primary key for the class (not used yet)
- - indexed : boolean that indicates if it must be possible to search items by this attribute (not used yet)
-
-
-
-TopiaUI :
----------
-
-<topiaUI xmlns="http://www.codelutin.org/topia/topiaUI" name="XXX">
- <content>
- <item>
- <containmentProperties>
- <property name="_containementPropertyName_" type="_containementPropertyType_">XXX</property>
- </containmentProperties>
- <widget name="XXX" type="_widgetType_">
- <properties>
- <property name="_propertyName_" type="_propertyType_">XXX</property>
- </properties>
- <signals>
- <signal name="_signalName_" handler="XXX"/>
- </signals>
- <content>
- <item>
- ...
- </item>
- ...
- </content>
- </widget>
- </item>
- ...
- </content>
-</topiaUI>
-
-widgetType :
- gridBag
- panel
- scrollPane
- table
- label
- textfield
- button
-
-properties :
- minimumWidth of type int
- minimumHeight of type int
- preferedWidth of type int
- preferedHeight of type int
- maximumWidth of type int
- maximumHeight of type int
- text of type String (default to "")
- editable of type boolean (default to true)
- borderType of type String = {"SoftBevelBorder", "EtchedBorder"}
- borderDepth of type String = {"LOWERED", "RAISED"}
- borderText of type String
-
-containmentProperties :
- gridX of type int (default to 0)
- gridY of type int (default to 0)
- gridWidth of type int (default to 1)
- gridHeight of type int (default to 1)
- anchor of type String = {"CENTER", "NORTH", "SOUTH", "EAST", "WEST", "NORTHEAST", "NORTHWEST", "SOUTHEAST", "SOUTHWEST"} (default to CENTER)
- fill of type String = {"HORIZONTAL", "VERTICAL", "BOTH", "NONE"} (default to BOTH)
- weightX of type double (default to 1.0)
- weightY of type double (default to 1.0)
- insetTop of type int (default to 2)
- insetBottom of type int (default to 2)
- insetLeft of type int (default to 2)
- insetRight of type int (default to 2)
-
Modified: trunk/eugene/src/site/en/rst/index.rst
===================================================================
--- trunk/eugene/src/site/en/rst/index.rst 2009-11-24 17:06:01 UTC (rev 718)
+++ trunk/eugene/src/site/en/rst/index.rst 2009-11-24 17:06:20 UTC (rev 719)
@@ -2,56 +2,6 @@
Eugene
======
-:Authors: Arnaud THIMEL
-:Contact: thimel(a)codelutin.com
-:Revision: $Revision$
-:Date: $Date$
+See details on `parent`_ site
-
-.. contents::
-
-
-Project origin
-==============
-
-Eugene was born after a research of an easy-to-use code generator
-oriented on "in memory" models. But the research ended by a failure.
-
-Analysed projects were :
-
-- Jostraca ;
-- EMF ;
-- ...
-
-Code Generation were chosen instead of Introspection because it allows to use
-the compilation processes and therefore to validate the generated code. Even if
-the initial need was to generate Java source code, Eugene is able to
-generate any type of code.
-
-
-
-Technical part
-==============
-
-Eugene allows using a set of generators. These generators are abstract
-of any specificity enabling to adapt them to indicidual needs.
-
-
-By default, Eugene has two implementations of these generators :
-
-- ObjectModelGenerator (generation from an object model) ;
-- UIModelGenerator (generation from a graphic model).
-
-Each of these models has its own specificities due to its strucure and working
-mode...
-
-Anyway, these generators are unuseful without generation templates. Templates
-are files allowing to determinate what will be the generated content according
-to the initial model. Thanks to LutinProcessor_, these templates are written
-with a syntax close to the JSP syntax mixing Java and generated code. The goal
-of LutinProcessor is to tranform the templates by replacing JSP code by the
-matching Java code. Obtained Java classes can be compiled and so become
-independants.
-
-
-.. _LutinProcessor: http://lutinprocessor.labs.libre-entreprise.org/
+.. _parent: ../../en/index.html
\ No newline at end of file
Deleted: trunk/eugene/src/site/fr/rst/DevUIDoc.rst
===================================================================
--- trunk/eugene/src/site/fr/rst/DevUIDoc.rst 2009-11-24 17:06:01 UTC (rev 718)
+++ trunk/eugene/src/site/fr/rst/DevUIDoc.rst 2009-11-24 17:06:20 UTC (rev 719)
@@ -1,103 +0,0 @@
-=======
-UIModel
-=======
-
-:Authors: Aurelie MAZELIER
-:Revision: $Revision$
-:Date: $Date$
-
-
-.. contents::
-
-
-Model UIModel
-=============
-
-En parcourant un fichier xml, il est possible de construire un objet
-UIModel. Cet objet est défini par les interfaces suivantes.
-
-
-Interfaces
-----------
-
-- UIModel :
-
- - version XML
- - root de type UIModelObject
- - le nom du package
- - liste des objets du model
-
-- UIModelObject :
-
- - nom
- - type
- - un UIModelObject parent
- - un UIModel
- - une liste d'arguments
- - une liste de propriétés
- - une liste d'évènements
- - une liste d'enfants
-
-- UIModelArgument :
-
- - une liste d'arguments
-
-- UIModelProperty :
-
- - un nom
- - une valeur (de différents type : int, float ...)
- - un index
-
-- UIModelEvent :
-
- - le nom de la addListenerMethod
- - le nom de la listenerInterface
- - le nom de la listenerMethod
- - le nom du handler
- - le nom de la eventProperty
-
-- UIModelChild :
-
- - un enfant UIModelObject
- - la contrainte de l'enfant de type UIModelConstraint
-
-- UIModelConstraint :
-
- - une valeur de type Object ou String
-
-
-Implantations
--------------
-
-Il existe deux implantations de ces interfaces.
-
-
-impl
-~~~~
-
-Cette première implantation permet d'obtenir un UIModel lors
-du parcours du fichier xml de type uimodel par le parser
-XMLParser.
-
-
-xml
-~~~
-
-Cette deuxième implantation permet d'obtenir un UIModel lors
-du parcours du fichier xml de type javaxml par le parser
-JavaXMLParser.
-
-
-JavaXMLParser
--------------
-
-Ce parser permet de parcourir des fichiers javaxml afin d'obtenir un
-objet UIModel. Ce parser utilise dom4j.
-
-
-Générateurs
-===========
-
-- Génération d'objet UIModel (UIModelGenerator). Ce générateur utilise les classes précédentes afin d'obtenir un objet UIModel en fonction des fichiers xml. A partir de cet objet UIModel, il est possible de lancer la génération. Ces générateurs sont utilisées dans Topia pour générer les fichiers java à partir de l'objet UIModel.
-
-- Génération d'objet UIModel (UIModelGeneratorWithCapitalizeName). Ce générateur est une sous classe du premier. Il est possède une méthode permettant de mettre la première lettre en majuscule du nom d'un objet, d'une propriété...
Deleted: trunk/eugene/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst
===================================================================
--- trunk/eugene/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst 2009-11-24 17:06:01 UTC (rev 718)
+++ trunk/eugene/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst 2009-11-24 17:06:20 UTC (rev 719)
@@ -1,82 +0,0 @@
-=========================
-Principe de la génération
-=========================
-
-Il y a deux façon de voir la génération.
-
-La première que l'on rencontre le plus
-souvent génère des fichiers avec des sections à
-modifier par le développeur. Ces sections sont marquées par des commentaires
-que le générateur interprète pour savoir qu'il n'a pas le droit de modifier
-cette partie de code.
-
-La deuxième qui à pour principe:
-
-- le générateur ne doit jamais modifier les fichiers de l'utilisateur.
-- l'utilisateur ne doit jamais modifier le code généré
-
-De cette façon les choses sont clairement séparé, et cela est possible sans
-utilisation d'artifice perturbant le développeur grâce au nouveau langage à
-objet et à l'héritage.
-
-La grosse différence n'est pas dans les générateurs eux même mais dans les
-templates de génération. Si tous les générateurs de la première catégorie
-peuvent très bien servir pour faire de la génération de la seconde,
-l'inverse n'est pas vrai. Car la seconde catégorie demande des générateurs
-beaucoup plus simple, ce qui est d'ailleur un avantage pour la maintenance.
-
-Code Lutin utilise un générateur du deuxième type: Eugene
-
-Quelques générateurs de la première catégorie:
-
-- Acceleo (Obeo)
-- Pragmatic (Argia)
-
-Les principes de Eugene
-=======================
-
-- le générateur ne doit jamais modifier les fichiers de l'utilisateur.
-- l'utilisateur ne doit jamais modifier le code généré
-- le modèle est toujours la source (pas de reverse, pas de modification du
- modèle par le générateur
-- être le plus simple possible (simple à maintenir)
-- s'appuyer sur les normes (XMI)
-- pouvoir utiliser plusieurs fichiers XMI pour la même génération
-- ne pas mettre dans le modèle des choses techniques (ex: type pour la base de
- données) mais dans un fichier de propriété à coté du modèle.
-- avoir une couche d'abstraction du XMI pour évité la modification des
- templates si la version de XMI change (XMLObjectModel)
-- s'appuyer sur un modèle mémoire simple (ObjectModel écrit spécifiquement
- car aucun modèle simple n'a été trouvé)
-- s'appuyer sur un langage puissant et connu des développeurs (Java)
-- ne jamais mélanger le code généré et le code utilisateur
-- pouvoir générer n'importe quelle type de fichier (XML, Java, texte, ...)
-- être facilement intégrable dans une phase de génération/compilation
- (task ant, plugin maven)
-- être indépendant d'un outil de développement spécifique (chacun à le droit de
- choisir l'éditeur qu'il souhaite).
-
-Défaut de la première solution
-==============================
-
-- il faut prévoir partout ou l'utilisateur pourrait souhaiter ajouter du
- code. Par exemple dans Pragmatic, on ne peut pas utiliser les imports car il
- n'y a pas de section utilisateur à cet endroit, il faut donc à chaque fois
- écrire le package lorsque l'on souhaite utiliser une classe non encore
- importée.
-
-- le développeur voit beaucoup de code qu'il n'a pas le droit de modifier
- ce qui complexifie la vue du développeur pour rien
-
-Défaut des générateurs le plus souvent rencontré
-================================================
-
-- Les générateurs au lieu d'utiliser un langage et façon de faire que tous
- les développeurs connaissent réinvente leur propre syntaxe et langage.
-
-Eugene lui utilise seulement du Java et les tags JSP (<%, <%=, %>).
-De cette façon le générateur reste simple pas de langage à développer et
-parser. L'utilisateur qui connait Java connait le langage de template. Et
-surtout l'utilisateur n'est pas limité par le langage développé
-spécifiquement pour les templates.
-
Deleted: trunk/eugene/src/site/fr/rst/FAQ.rst
===================================================================
--- trunk/eugene/src/site/fr/rst/FAQ.rst 2009-11-24 17:06:01 UTC (rev 718)
+++ trunk/eugene/src/site/fr/rst/FAQ.rst 2009-11-24 17:06:20 UTC (rev 719)
@@ -1,16 +0,0 @@
-===
-FAQ
-===
-
-Comment convertir les modèles UML de Poseidon vers ArgoUML ?
-============================================================
-
-Il faut sauver le modèle sous Poseidon en XMI, on bien l'extraire du
-fichier .zmul qui est en fait un fichier zip::
-
- xlstproc -o <argo-file>.xmi poseidon2argouml.xsl <poseidon-file>.xmi
-
-Ensuite dans ArgoUML ouvrez le fichier généré.
-
-Les diagrammes ne sont pas convertie, il faut donc les recréer a partir des
-classes en faisant du drag&drop.
Deleted: trunk/eugene/src/site/fr/rst/ObjectModel.rst
===================================================================
--- trunk/eugene/src/site/fr/rst/ObjectModel.rst 2009-11-24 17:06:01 UTC (rev 718)
+++ trunk/eugene/src/site/fr/rst/ObjectModel.rst 2009-11-24 17:06:20 UTC (rev 719)
@@ -1,92 +0,0 @@
-===========
-ObjectModel
-===========
-
-:Authors: Arnaud Thimel, Florian Desbois
-:Contact: eugene-devel(a)list.nuiton.org ou eugene-users(a)list.nuiton.org
-:Revision: $Revision$
-:Date: $Date$
-
-
-.. contents::
-
-
-Introduction
-============
-
-Le générateur ObjectModelGenerator est prévu pour lire et analyser des modèles
-objets puis générer du code à partir de ceux-ci. En UML, un modèle objet est
-représenté par un diagramme de classe. Cette vision des modèles objet étant très
-répandue, elle sert de base à l'ObjectModelGenerator (il est à noter cependant
-que ce n'est pas obligatoire).
-
-Partons donc du principe que l'on dispose d'un modèle (diagramme de classe) créé
-à l'aide d'un outil de modélisation au format XMI (XML Metadata Interchange).
-
-La génération de code se fait ensuite en trois étapes :
-
-- Epuration du XMI en un code XML ne conservant que les informations utiles ;
-- Mise en mémoire du modèle simplifié ;
-- Application des templates / génération de code.
-
-
-Epuration du modèle XMI
-=======================
-
-La plupart des outils de modélisation décrivent leur modèle en XMI. Or le XMI
-est trop verbeux pour être compréhensible aisement.
-
-Eugene propose une tranformation XSLT permettant ainsi d'obtenir un XML
-épuré décrivant le modèle et ne conservant que l'essentiel des informations.
-
-Parmi les informations extraites, on peut citer :
-
-- Objets (classes, classes abtraites, interfaces)
-- Attributs (nom, type, visibilité, ...)
-- Relations entre les classes (toutes multiplicités, navigabilité, classes d'association, ...)
-- Opérations (nom, type de retour, noms et types des arguments, exceptions levées, ...)
-- Stéréotypes
-
-A partir du diagramme suivant :
-
-.. image:: ../images/Hotel.png
-
-On obtient un ObjectModel tel que :
-
-.. image:: ../images/Hotel.objectmodel.png
-
-
-Modèle mémoire
-==============
-
-Une fois le XMI ramené à un XML compréhensible, le modèle est chargé en
-mémoire afin de subir la génération.
-
-Ainsi, le modèle instancié est basé sur le diagramme de classes (méta-modèle) suivant :
-
-.. image:: ../images/ObjectModel.png
-
-Les interfaces disponibles pour les générateurs sont les suivantes :
-
-.. image:: ../images/ObjectModel_Interfaces.png
-
-ObjectModelGenerator :
-
-.. image:: ../images/ObjectModel_Generator.png
-
-Application des templates
-=========================
-
-Chaque template est à lui seul un générateur qui hérite de ObjectModelGenerator.
-Toute partie de ce générateur peut donc être surchargée permettant ainsi une
-forte personnalisation des générateurs. Le rôle de l'ObjectModelGenerator est
-donc de parcourir le modèle et à chaque élément clé du modèle, (model, classes
-interfaces, classifier) les méthodes correspondantes sont appelées. Par défaut,
-ces méthodes décrites dans le générateur de base sont vide, et il n'en ressort
-donc aucun code généré. Les templates ont donc pour but de surcharger ses
-méthodes et décrire le code qui va être généré.
-
-Les templates peuvent être de toutes sortes car ils peuvent générer un fichier
-différent par modèle, par interface, par classe ou encore par classifier (souche
-commune aux classes et interfaces). De plus, ils peuvent indifféremment générer
-du code Java / XML ou encore tout autre type de code (texte ou autre...).
Deleted: trunk/eugene/src/site/fr/rst/Todo.rst
===================================================================
--- trunk/eugene/src/site/fr/rst/Todo.rst 2009-11-24 17:06:01 UTC (rev 718)
+++ trunk/eugene/src/site/fr/rst/Todo.rst 2009-11-24 17:06:20 UTC (rev 719)
@@ -1,115 +0,0 @@
-====
-TODO
-====
-
-
-:Revision: $Revision$
-:Date: $Date$
-
-
-Idées ou choses à faire
-=======================
-
-- support des InnerClasses (en xmi argo: la classe est declarer dans une classe
- dans un element UML:Namespace.ownedElement) (`Evolution #59`_ )
-
-- support des static (tout element declarer dans une class/interface: methode,
- attribut, enumeration, class, ...)
- (en xmi argo: ownerScope='classifier' ou ownerScope='instance') (`Evolution #58`_ )
-
-.. _Evolution #59: http://www.nuiton.org/issues/show/59
-.. _Evolution #58: http://www.nuiton.org/issues/show/58
-
-- peut-etre faire des tests unitaires avec http://juxy.tigris.org/ pour le xls
-
-- Permettre de faire du 'model to model' avant la generation
-
-Model to Model
-==============
-
-(2009-10-19 : En cours de developpement : `branches/1.0.1-javabuilder`_ )
-
-.. _branches/1.0.1-javabuilder: http://nuiton.org/repositories/browse/eugene/branches/1.0.1-Javabuilder
-
-Pour tout ce qui est génération de classe Java, le principe de base d'Eugene
-est de dire que le développeur écrit directement ce qu'il souhaite voir dans
-le fichier final.
-
-Cela pose quelques difficultés:
-
-- difficulté de prévoir les imports
-- difficulté d'éviter la génération de deux méthodes ayant le même nom
-
-L'idée serait alors de constuire la classe Java souhaitée au final en appelant
-des méthodes (addImport, addMethod, addAttribute, ...). Ceci nous donnerait
-alors un nouveau modèle mémoire dont on demanderait la génération à un
-générateur sans inteligence qui se contenterait d'écrire le code Java modélisé.
-
-L'avantage est que pour chaque méthode à ajouter on peut demander avant si elle
-n'a pas déjà été ajoutée et ainsi potentiellement la renomé avant de l'inclure.
-D'ajouter de façon automatique tous les imports des arguments des méthodes, ...
-
-Pour pouvoir faire cela, nous pourrions nous baser sur ObjectModel, mais des
-ajouter doivent être fait:
-
-- pouvoir indiquer sur une Class une série d'import.
-- pouvoir ajouter un message de licence
-- pouvoir ajouter sur une méthode sont code source
-
-Ce dernier élément est le plus problèmatique, car il deviendrait pénible de
-devoir instancier tout le code de la méthode en objet et on perdrait l'idée
-de départ d'Eugene.
-
-Dans eugène il est déjà possible de modifier la transformation des tags de
-génération '/\*{' et '}\*/' qui par défaut génère un 'ouput.write("...");'
-Dans notre cas, il faudrait quelque chose comme 'method.addCode("...");' ou
-encore plus simplement '"..." +' ce qui pourrait donner::
-
- addImport(MonObject.class);
- method.addCode(
- /*{ int i = 0;
- i = 1+2;
- MonObject result = new MonObject(result);
- return result;
- }*/
- );
-
-qui deviendrait::
-
- addImport(MonObject.class);
- method.addCode(
- "int i = 0;\n" +
- "i = 1+2;\n" +
- "MonObject result = new MonObject(result);\n" +
- "return result;\n"
- );
-
-On garde la facilte d'écriture du code à générer et on permet d'ajouter
-facilement des imports dont on aurait besoin dans le coprs de la méthode. Aucun
-traitement complexe du code de la méthode n'est donc nécessaire.
-
-Ce nouveau mode de génération ne serait qu'une moyen complémentaire de la
-génération actuelle.
-
-Travail a faire:
-
-- ajout d'objet dans ObjectModel
-- ajout de méthode de modification dans ObjectModel
-- création d'un template de génération d'un POJO (génération direct d'un modèle)
-
-Il serait toute fois dommage d'ajouter tout un ensemnble de setter sur les
-interfaces d'ObjectModel qui le rendrait moins clair pour les générateurs.
-Il faut donc trouver une solution pour permettre l'instanciation et la
-modification de classe implantant l'ObjectModel sans pour autant les ajouter
-au interface.
-
-Une idée pourrait-être l'utilisation de Helper qui permette de créer et modifier
-le modèle::
-
- ObjectModelClass clazz = ObjectModelHelper.createClass();
- ObjectModelOperation method = ObjectModelHelper.addMethod(
- clazz, "name", "typeRetour", "paramName", "typeParam");
- ObjectModelHelper.addImport("java.util.List");
- ObjectModelHelper.addCode(method,
- /*{ blablabla
- }*/
Modified: trunk/eugene/src/site/fr/rst/index.rst
===================================================================
--- trunk/eugene/src/site/fr/rst/index.rst 2009-11-24 17:06:01 UTC (rev 718)
+++ trunk/eugene/src/site/fr/rst/index.rst 2009-11-24 17:06:20 UTC (rev 719)
@@ -2,79 +2,6 @@
Eugene
======
-.. contents::
+Voir details sur le site `parent`_
-
-Origine du projet
------------------
-
-Eugene est né à la suite d'une recherche de générateur de code basé sur
-un modèle mémoire simple qui s'est terminée par un échec.
-
-Les projets alors étudiés étaient alors entre autres :
-
-- Jostraca ;
-- EMF ;
-- ...
-
-Le choix de la génération de code par rapport à l'introspection a été fait car
-la génération code permet de passer par l'étape compilation et donc de
-validation du code généré. En effet, si le besoin était initialement porté sur
-de la génération de code Java, Eugene a été pensé pour générer tout type
-de code.
-
-
-Côté technique
---------------
-
-Eugene permet l'utilisation d'un ensemble de générateurs. Ces
-générateurs sont abstraits de toute spécificité permettant ainsi de les adapter
-en fonction des besoins.
-
-Par défaut, Eugene propose trois implantations de ces générateurs :
-
-- ObjectModelGenerator (génération à partir d'un modèle objet) ;
-- StateModelGenerator (génération à partir d'un modèle d'états) ;
-- UIModelGenerator (génération à partir d'un modèle graphique).
-
-Chacun de ces modèles a ses propres spécificités liés à sa structure et son mode
-de fonctionnement...
-
-Cependant, ces générateurs sont inutiles sans des templates de génération. Les
-templates sont les fichiers qui vont permettre de déterminer quel sera le
-contenu généré en fonction du modèle initial. Grâce à NuitonProcessor_, ces
-templates sont écrit avec une sytaxe proche de la syntaxe JSP en imbriquant les
-portions de code Java avec les portions de code généré. Le rôle de
-NuitonProcessor_ est de transformer ces templates en remplaçant la syntaxe JSP par
-la syntaxe Java correpondante. Les classes Java obtenues peuvent donc être
-compilées et deviennent autonomes.
-
-.. _NuitonProcessor: http://maven-site.nuiton.org/processor/
-
-Règle ant
----------
-
-Voici un exemple d'utilisation de la règle ant.
-
-::
-
- <taskdef name="generator" classname="org.nuiton.eugene.GeneratorTask"
- classpath="${compile.classpath}:${targetbuild}:${resources}" />
-
- <target name="generate" description="generate">
- <generator srcdir="${modelDir}" destdir="${targetgen}"
- resolver="org.nuiton.exemple.ResourceResolver"
- templates="org.nuiton.example.JavaBeanGenerator"
- properties="defaultPackage=org.nuiton,fullPackagePath=org.nuiton,extraPackages=org.nuiton"
- classpath="${compile.classpath}:${targetbuild}:${resources}" />
- </target>
-
-Dans cette exemple, un template de génération sera apliqué sur tous les
-fichiers.
-
-Plugin maven
-------------
-
-Un plugin maven est disponnible à l'adresse suivante
-http://maven-site.nuiton.org/eugene/maven-eugene-plugin . Il permet l'utilisation
-depuis maven de Eugene.
+.. _parent: ../../fr/index.html
Deleted: trunk/eugene/src/site/fr/rst/plugineclipse.rst
===================================================================
--- trunk/eugene/src/site/fr/rst/plugineclipse.rst 2009-11-24 17:06:01 UTC (rev 718)
+++ trunk/eugene/src/site/fr/rst/plugineclipse.rst 2009-11-24 17:06:20 UTC (rev 719)
@@ -1,44 +0,0 @@
-Installation du plugin LutinGenerator
-=====================================
-
-Ce guide détail comment installer le plugin eclipse LutinGenerator via
-l'update site (assitant d'instalation de plugins).
-
-Installation
-------------
-
-Ouvrez l'assitant d'installation de plugin via le menu
-(Help/Software Updates/Find and install...).
-
-.. image:: ../images/plugin_menu.png
-
-Sur la fenêtre suivante sélectionnez "Search for new features to install".
-
-.. image:: ../images/plugin_typeinstall.png
-
-Une nouvelle fenêtre s'affiche, sélectionnez "New remote site" pour ajouter le
-dépot "LutinGenerator".
-
-L'adresse du dépot à utiliser est :
-
-::
-
- http://lutingenerator.labs.libre-entreprise.org/eclipse/
-
-.. image:: ../images/plugin_newdepot.png
-
-
-Sélectionnez ensuite ce dépot et cliquez sur "Finish".
-
-Installez ensuite la dernière version disponible et redémarrez eclipse:
-
-.. image:: ../images/plugin_choix.png
-
-
-Utilisation
------------
-
-Pour disposer de la coloration des templates, cliquez droit sur un fichier
-source java et sélectionnez "Open with > / LutinGenerator Template Editor"
-
-.. image:: ../images/plugin_utilisation_editeur.png
\ No newline at end of file
Modified: trunk/eugene/src/site/site_en.xml
===================================================================
--- trunk/eugene/src/site/site_en.xml 2009-11-24 17:06:01 UTC (rev 718)
+++ trunk/eugene/src/site/site_en.xml 2009-11-24 17:06:20 UTC (rev 719)
@@ -8,21 +8,9 @@
<body>
<breadcrumbs>
- <item name="${project.name}" href="${project.url}" />
+ <item name="${project.name}" href="index.html" />
</breadcrumbs>
-
- <links>
- <item name="Libre-Entreprise" href="http://www.libre-entreprise.org/" />
- <item name="[fr" href="../fr/index.html" />
- <item name="en]" href="index.html" />
- </links>
-
- <menu ref="parent"/>
- <menu name="User">
- <item href="index.html" name="Home"/>
- </menu>
-
<menu ref="reports"/>
</body>
Modified: trunk/eugene/src/site/site_fr.xml
===================================================================
--- trunk/eugene/src/site/site_fr.xml 2009-11-24 17:06:01 UTC (rev 718)
+++ trunk/eugene/src/site/site_fr.xml 2009-11-24 17:06:20 UTC (rev 719)
@@ -8,51 +8,9 @@
<body>
<breadcrumbs>
- <item name="${project.name}" href="${project.url}" />
+ <item name="${project.name}" href="index.html" />
</breadcrumbs>
- <links>
- <item name="Libre-Entreprise" href="http://www.libre-entreprise.org/" />
- <item name="[fr" href="index.html" />
- <item name="en]" href="../en/index.html" />
- </links>
-
- <menu ref="parent"/>
-
- <menu name="Utilisateur">
- <item href="index.html" name="Accueil"/>
- <item href="DiscussionSurTypeDeGeneration.html" name="Génération"/>
- <item href="FAQ.html" name="FAQ"/>
- </menu>
-
- <menu name="Developpeur">
- <item name="ObjectModel" href="ObjectModel.html"/>
- <item name="UIModel" href="DevUIDoc.html"/>
- <item name="Plugin Eclipse" href="plugineclipse.html"/>
- <item name="Todo" href="Todo.html"/>
- </menu>
-
- <menu name="Téléchargement">
- <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}.jar"
- name="Librairie (jar)"/>
- <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}-javadoc.jar"
- name="Javadoc (jar)"/>
- <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}-sources.jar"
- name="Sources (jar)"/>
- <item href="http://${platform}/projects/list_files/eugene" name="Archives" />
- </menu>
-
- <menu name="Trackers">
- <item name="Bugs" href="${project.issueManagement.url}?query_id=2"/>
- <item name="Améliorations" href="${project.issueManagement.url}?query_id=1"/>
- <item name="Aide" href="${project.issueManagement.url}?query_id=3"/>
- </menu>
-
- <menu name="Liens">
- <item name="Nuiton-processor" href="http://maven-site.nuiton.org/processor"/>
- <item name="ToPIA" href="http://maven-site.nuiton.org/topia"/>
- </menu>
-
<menu ref="reports"/>
</body>
Added: trunk/maven-eugene-plugin/src/site/en/rst/index.rst
===================================================================
--- trunk/maven-eugene-plugin/src/site/en/rst/index.rst (rev 0)
+++ trunk/maven-eugene-plugin/src/site/en/rst/index.rst 2009-11-24 17:06:20 UTC (rev 719)
@@ -0,0 +1,11 @@
+===================
+Maven EUGene plugin
+===================
+
+See `goals details`_
+
+.. _goals details: plugin-info.html
+
+Go back to `EUGene`_
+
+.. _EUGene: ../../en/index.html
\ No newline at end of file
Added: trunk/maven-eugene-plugin/src/site/fr/rst/index.rst
===================================================================
--- trunk/maven-eugene-plugin/src/site/fr/rst/index.rst (rev 0)
+++ trunk/maven-eugene-plugin/src/site/fr/rst/index.rst 2009-11-24 17:06:20 UTC (rev 719)
@@ -0,0 +1,11 @@
+===================
+Maven EUGene plugin
+===================
+
+Voir le détails des `goals`_
+
+.. _goals: plugin-info.html
+
+Retour sur `EUGene`_
+
+.. _EUGene: ../../fr/index.html
\ No newline at end of file
Deleted: trunk/maven-eugene-plugin/src/site/site.xml
===================================================================
--- trunk/maven-eugene-plugin/src/site/site.xml 2009-11-24 17:06:01 UTC (rev 718)
+++ trunk/maven-eugene-plugin/src/site/site.xml 2009-11-24 17:06:20 UTC (rev 719)
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="${project.name}">
-
- <bannerLeft>
- <name>${project.name}</name>
- </bannerLeft>
-
- <body>
- <links>
- <item name="Eugene" href="../eugene"/>
- </links>
-
- <breadcrumbs>
- <item name="${project.name}" href="${project.url}" />
- </breadcrumbs>
-
- <menu ref="parent"/>
-
- <menu name="Utilisateur">
- <item href="index.html" name="Accueil"/>
- <item name="Goals" href="plugin-info.html">
- <item name="zargo2xmi" href="zargo2xmi-mojo.html"/>
- <item name="xmi2statemodel" href="xmi2statemodel-mojo.html"/>
- <item name="xmi2objectmodel" href="xmi2objectmodel-mojo.html"/>
- <item name="generate" href="generate-mojo.html"/>
- <item name="copyVersionFiles" href="copyVersionFiles-mojo.html"/>
- <item name="help" href="help-mojo.html"/>
- </item>
- </menu>
-
- <menu name="Téléchargement">
- <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}.jar"
- name="Librairie (jar)"/>
- <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}-javadoc.jar"
- name="Javadoc (jar)"/>
- <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}-sources.jar"
- name="Sources (jar)"/>
- </menu>
-
- <menu ref="reports"/>
-
- </body>
-</project>
Added: trunk/maven-eugene-plugin/src/site/site_en.xml
===================================================================
--- trunk/maven-eugene-plugin/src/site/site_en.xml (rev 0)
+++ trunk/maven-eugene-plugin/src/site/site_en.xml 2009-11-24 17:06:20 UTC (rev 719)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="${project.name}">
+
+ <bannerLeft>
+ <name>${project.name}</name>
+ </bannerLeft>
+
+ <body>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html" />
+ </breadcrumbs>
+
+ <menu ref="reports"/>
+
+ </body>
+</project>
Added: trunk/maven-eugene-plugin/src/site/site_fr.xml
===================================================================
--- trunk/maven-eugene-plugin/src/site/site_fr.xml (rev 0)
+++ trunk/maven-eugene-plugin/src/site/site_fr.xml 2009-11-24 17:06:20 UTC (rev 719)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="${project.name}">
+
+ <bannerLeft>
+ <name>${project.name}</name>
+ </bannerLeft>
+
+ <body>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html" />
+ </breadcrumbs>
+
+ <menu ref="reports"/>
+
+ </body>
+</project>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2009-11-24 17:06:01 UTC (rev 718)
+++ trunk/pom.xml 2009-11-24 17:06:20 UTC (rev 719)
@@ -10,7 +10,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom</artifactId>
- <version>1.1.0</version>
+ <version>1.1.1-SNAPSHOT</version>
</parent>
<artifactId>eugene</artifactId>
@@ -245,14 +245,30 @@
<ant.version>1.7.1</ant.version>
<!--Multilanguage maven-site -->
- <maven.site.locales>es,en,fr</maven.site.locales>
+ <maven.site.locales>fr,en</maven.site.locales>
</properties>
<build>
<defaultGoal>install</defaultGoal>
-
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-helper-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-site-index</id>
+ <goals>
+ <goal>generate-site-index</goal>
+ </goals>
+ <configuration>
+ <locales>${maven.site.locales}</locales>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
<pluginManagement>
<plugins>
Copied: trunk/src/site/en/rst/generatorHelp.rst (from rev 694, trunk/eugene/src/site/en/rst/generatorHelp.rst)
===================================================================
--- trunk/src/site/en/rst/generatorHelp.rst (rev 0)
+++ trunk/src/site/en/rst/generatorHelp.rst 2009-11-24 17:06:20 UTC (rev 719)
@@ -0,0 +1,89 @@
+
+How to create a UML model for use with Eugene
+---------------------------------------------
+
+In Poseidon,
+ - Create an empty project
+ - Rename root package to your application name (used by ???)
+ - create a package hierarchy according to your company name and project organisation (eg : org.codelutin.jdevis.entities)
+ - Create a class diagram is this package, so that classes you will define to it will belong to this package at creation.
+ - Make a model of your entities :
+ - All entities must be stereotyped 'entity'
+ - You may use both class and interface
+ - You may set several taggedValues on all items :
+ - doc : documentation related to this item, used for javadoc comments (not used yet)
+ - You may set several taggedValues on classes :
+ - asText : OCL expression used as for toString() method generation (eg : this.firstName+" "+this.lastName)
+ - You may set several taggedValues on attributes :
+ - readonly : boolean that indicates if change must be made impossible on this attribute (used for setter generation)
+ - mandatory : boolean that indicates if this attribute is mandatory (used to build a minimal not empty constructor)
+ - defines : boolean that indicates if this attribute is needed for defining the class (used for default UIs)
+ - primaryKey : boolean that indicates if this attribute is part of the primary key for the class (not used yet)
+ - indexed : boolean that indicates if it must be possible to search items by this attribute (not used yet)
+
+
+
+TopiaUI :
+---------
+
+<topiaUI xmlns="http://www.codelutin.org/topia/topiaUI" name="XXX">
+ <content>
+ <item>
+ <containmentProperties>
+ <property name="_containementPropertyName_" type="_containementPropertyType_">XXX</property>
+ </containmentProperties>
+ <widget name="XXX" type="_widgetType_">
+ <properties>
+ <property name="_propertyName_" type="_propertyType_">XXX</property>
+ </properties>
+ <signals>
+ <signal name="_signalName_" handler="XXX"/>
+ </signals>
+ <content>
+ <item>
+ ...
+ </item>
+ ...
+ </content>
+ </widget>
+ </item>
+ ...
+ </content>
+</topiaUI>
+
+widgetType :
+ gridBag
+ panel
+ scrollPane
+ table
+ label
+ textfield
+ button
+
+properties :
+ minimumWidth of type int
+ minimumHeight of type int
+ preferedWidth of type int
+ preferedHeight of type int
+ maximumWidth of type int
+ maximumHeight of type int
+ text of type String (default to "")
+ editable of type boolean (default to true)
+ borderType of type String = {"SoftBevelBorder", "EtchedBorder"}
+ borderDepth of type String = {"LOWERED", "RAISED"}
+ borderText of type String
+
+containmentProperties :
+ gridX of type int (default to 0)
+ gridY of type int (default to 0)
+ gridWidth of type int (default to 1)
+ gridHeight of type int (default to 1)
+ anchor of type String = {"CENTER", "NORTH", "SOUTH", "EAST", "WEST", "NORTHEAST", "NORTHWEST", "SOUTHEAST", "SOUTHWEST"} (default to CENTER)
+ fill of type String = {"HORIZONTAL", "VERTICAL", "BOTH", "NONE"} (default to BOTH)
+ weightX of type double (default to 1.0)
+ weightY of type double (default to 1.0)
+ insetTop of type int (default to 2)
+ insetBottom of type int (default to 2)
+ insetLeft of type int (default to 2)
+ insetRight of type int (default to 2)
+
Copied: trunk/src/site/en/rst/index.rst (from rev 694, trunk/eugene/src/site/en/rst/index.rst)
===================================================================
--- trunk/src/site/en/rst/index.rst (rev 0)
+++ trunk/src/site/en/rst/index.rst 2009-11-24 17:06:20 UTC (rev 719)
@@ -0,0 +1,57 @@
+======
+Eugene
+======
+
+:Authors: Arnaud THIMEL
+:Contact: thimel(a)codelutin.com
+:Revision: $Revision$
+:Date: $Date$
+
+
+.. contents::
+
+
+Project origin
+==============
+
+Eugene was born after a research of an easy-to-use code generator
+oriented on "in memory" models. But the research ended by a failure.
+
+Analysed projects were :
+
+- Jostraca ;
+- EMF ;
+- ...
+
+Code Generation were chosen instead of Introspection because it allows to use
+the compilation processes and therefore to validate the generated code. Even if
+the initial need was to generate Java source code, Eugene is able to
+generate any type of code.
+
+
+
+Technical part
+==============
+
+Eugene allows using a set of generators. These generators are abstract
+of any specificity enabling to adapt them to indicidual needs.
+
+
+By default, Eugene has two implementations of these generators :
+
+- ObjectModelGenerator (generation from an object model) ;
+- UIModelGenerator (generation from a graphic model).
+
+Each of these models has its own specificities due to its strucure and working
+mode...
+
+Anyway, these generators are unuseful without generation templates. Templates
+are files allowing to determinate what will be the generated content according
+to the initial model. Thanks to LutinProcessor_, these templates are written
+with a syntax close to the JSP syntax mixing Java and generated code. The goal
+of LutinProcessor is to tranform the templates by replacing JSP code by the
+matching Java code. Obtained Java classes can be compiled and so become
+independants.
+
+
+.. _LutinProcessor: http://lutinprocessor.labs.libre-entreprise.org/
Added: trunk/src/site/en/rst/maven-plugin.rst
===================================================================
--- trunk/src/site/en/rst/maven-plugin.rst (rev 0)
+++ trunk/src/site/en/rst/maven-plugin.rst 2009-11-24 17:06:20 UTC (rev 719)
@@ -0,0 +1,10 @@
+===================
+Maven-eugene-plugin
+===================
+
+Usage in pom.xml
+----------------
+
+See `goals`_ details.
+
+.. _goals: plugin-info.html
\ No newline at end of file
Copied: trunk/src/site/fr/resources/images/Hotel.objectmodel.png (from rev 694, trunk/eugene/src/site/resources/images/Hotel.objectmodel.png)
===================================================================
(Binary files differ)
Property changes on: trunk/src/site/fr/resources/images/Hotel.objectmodel.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: svn:mergeinfo
+
Copied: trunk/src/site/fr/resources/images/Hotel.png (from rev 694, trunk/eugene/src/site/resources/images/Hotel.png)
===================================================================
(Binary files differ)
Property changes on: trunk/src/site/fr/resources/images/Hotel.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: svn:mergeinfo
+
Copied: trunk/src/site/fr/resources/images/ObjectModel.png (from rev 694, trunk/eugene/src/site/resources/images/ObjectModel.png)
===================================================================
(Binary files differ)
Property changes on: trunk/src/site/fr/resources/images/ObjectModel.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: svn:mergeinfo
+
Copied: trunk/src/site/fr/resources/images/ObjectModel_Generator.png (from rev 694, trunk/eugene/src/site/resources/images/ObjectModel_Generator.png)
===================================================================
(Binary files differ)
Property changes on: trunk/src/site/fr/resources/images/ObjectModel_Generator.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: svn:mergeinfo
+
Copied: trunk/src/site/fr/resources/images/ObjectModel_Interfaces.png (from rev 694, trunk/eugene/src/site/resources/images/ObjectModel_Interfaces.png)
===================================================================
(Binary files differ)
Property changes on: trunk/src/site/fr/resources/images/ObjectModel_Interfaces.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: svn:mergeinfo
+
Copied: trunk/src/site/fr/resources/images/StateModel.png (from rev 694, trunk/eugene/src/site/resources/images/StateModel.png)
===================================================================
(Binary files differ)
Property changes on: trunk/src/site/fr/resources/images/StateModel.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: svn:mergeinfo
+
Copied: trunk/src/site/fr/resources/images/plugin_choix.png (from rev 694, trunk/eugene/src/site/resources/images/plugin_choix.png)
===================================================================
(Binary files differ)
Property changes on: trunk/src/site/fr/resources/images/plugin_choix.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: svn:mergeinfo
+
Copied: trunk/src/site/fr/resources/images/plugin_menu.png (from rev 694, trunk/eugene/src/site/resources/images/plugin_menu.png)
===================================================================
(Binary files differ)
Property changes on: trunk/src/site/fr/resources/images/plugin_menu.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: svn:mergeinfo
+
Copied: trunk/src/site/fr/resources/images/plugin_newdepot.png (from rev 694, trunk/eugene/src/site/resources/images/plugin_newdepot.png)
===================================================================
(Binary files differ)
Property changes on: trunk/src/site/fr/resources/images/plugin_newdepot.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: svn:mergeinfo
+
Copied: trunk/src/site/fr/resources/images/plugin_typeinstall.png (from rev 694, trunk/eugene/src/site/resources/images/plugin_typeinstall.png)
===================================================================
(Binary files differ)
Property changes on: trunk/src/site/fr/resources/images/plugin_typeinstall.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: svn:mergeinfo
+
Copied: trunk/src/site/fr/resources/images/plugin_utilisation_editeur.png (from rev 694, trunk/eugene/src/site/resources/images/plugin_utilisation_editeur.png)
===================================================================
(Binary files differ)
Property changes on: trunk/src/site/fr/resources/images/plugin_utilisation_editeur.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: svn:mergeinfo
+
Copied: trunk/src/site/fr/resources/models/buix.guix (from rev 694, trunk/eugene/src/site/resources/models/buix.guix)
===================================================================
--- trunk/src/site/fr/resources/models/buix.guix (rev 0)
+++ trunk/src/site/fr/resources/models/buix.guix 2009-11-24 17:06:20 UTC (rev 719)
@@ -0,0 +1,409 @@
+<GuixApplication id="Application">
+ <properties>
+ <property name="name" type="String"><value>Buix Application</value></property>
+ </properties>
+ <WidgetWindow id="GuixWindow">
+ <properties>
+ <property name="name" type="String"><value>Buix</value></property>
+ <property name="title" type="String"><value>Application Buix</value></property>
+ <property name="x" type="int"><value>50</value></property>
+ <property name="y" type="int"><value>50</value></property>
+ <property name="width" type="int"><value>1000</value></property>
+ <property name="height" type="int"><value>800</value></property>
+ <property name="menubar" type="ComponentResource"><value>MenuBar</value></property>
+ </properties>
+ <signals>
+ <signal name="closing" argument="false" handler="onClosing"/>
+ </signals>
+ <children>
+ <child>
+ <WidgetContainer id="GuixGridBag">
+ <properties>
+ <property name="name" type="String"><value>vbox</value></property>
+ </properties>
+ <children>
+ <child>
+ <layout>
+ <property name="x" type="int"><value>0</value></property>
+ <property name="y" type="int"><value>1</value></property>
+ <property name="weightx" type="double"><value>1.0</value></property>
+ <property name="weighty" type="double"><value>1.0</value></property>
+ </layout>
+ <WidgetContainer id="GuixSpliter">
+ <properties>
+ <property name="name" type="String"><value>verticalSpliter</value></property>
+ <property name="orientation" type="Enum"><value><enum type="int" select="0"><item>0</item><item>1</item></enum></value></property>
+ <property name="dividerSize" type="int"><value>9</value></property>
+ <property name="express" type="boolean"><value>true</value></property>
+ </properties>
+ <children>
+ <child>
+ <layout>
+ <property name="position" type="Enum"><value><enum type="String" select="3"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property>
+ </layout>
+ <WidgetContainer id="GuixScrollPane">
+ <properties>
+ <property name="name" type="String"><value>scrollTree</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetComponent id="GuixTree">
+ <properties>
+ <property name="name" type="String"><value>tree</value></property>
+ </properties>
+ <signals>
+ <signal name="clicked" argument="false" handler="onTreeClicked"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <layout>
+ <property name="position" type="Enum"><value><enum type="String" select="2"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property>
+ </layout>
+ <WidgetContainer id="GuixSpliter">
+ <properties>
+ <property name="name" type="String"><value>horizontalSpliter</value></property>
+ <property name="orientation" type="Enum"><value><enum type="int" select="1"><item>0</item><item>1</item></enum></value></property>
+ <property name="dividerSize" type="int"><value>9</value></property>
+ <property name="express" type="boolean"><value>true</value></property>
+ </properties>
+ <children>
+ <child>
+ <layout>
+ <property name="position" type="Enum"><value><enum type="String" select="1"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property>
+ </layout>
+ <WidgetContainer id="GuixTabbedPane">
+ <properties>
+ <property name="name" type="String"><value>tabProperties</value></property>
+ <property name="childCount" type="int"><value>3</value></property>
+ </properties>
+ <children>
+ <child>
+ <layout>
+ <property name="text" type="String"><value>Properties</value></property>
+ <property name="position" type="int"><value>0</value></property>
+ </layout>
+ <WidgetContainer id="GuixScrollPane">
+ <properties>
+ <property name="name" type="String"><value>scrollProperties</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetComponent id="GuixTable">
+ <properties>
+ <property name="name" type="String"><value>tableProperties</value></property>
+ </properties>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <layout>
+ <property name="position" type="int"><value>1</value></property>
+ <property name="text" type="String"><value>Container Properties</value></property>
+ </layout>
+ <WidgetContainer id="GuixScrollPane">
+ <properties>
+ <property name="name" type="String"><value>scrollContainerProperties</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetComponent id="GuixTable">
+ <properties>
+ <property name="name" type="String"><value>tableContainerProperties</value></property>
+ </properties>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <layout>
+ <property name="text" type="String"><value>Signals</value></property>
+ <property name="position" type="int"><value>2</value></property>
+ </layout>
+ <WidgetContainer id="GuixGridBag">
+ <properties>
+ <property name="name" type="String"><value>gridSignals</value></property>
+ </properties>
+ <children>
+ <child>
+ <layout>
+ <property name="weighty" type="double"><value>0.0</value></property>
+ </layout>
+ <WidgetComponent id="GuixComboBox">
+ <properties>
+ <property name="name" type="String"><value>comboAllSignals</value></property>
+ </properties>
+ </WidgetComponent>
+ </child>
+ <child>
+ <layout>
+ <property name="weightx" type="double"><value>0.0</value></property>
+ <property name="weighty" type="double"><value>0.0</value></property>
+ <property name="x" type="int"><value>1</value></property>
+ </layout>
+ <WidgetComponent id="GuixButton">
+ <properties>
+ <property name="name" type="String"><value>addSignal</value></property>
+ <property name="text" type="String"><value>add</value></property>
+ </properties>
+ <signals>
+ <signal name="clicked" argument="false" handler="onAddSignal"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <layout>
+ <property name="x" type="int"><value>0</value></property>
+ <property name="y" type="int"><value>1</value></property>
+ <property name="width" type="int"><value>2</value></property>
+ </layout>
+ <WidgetContainer id="GuixScrollPane">
+ <properties>
+ <property name="name" type="String"><value>scrollSignals</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetComponent id="GuixTable">
+ <properties>
+ <property name="name" type="String"><value>tableSignals</value></property>
+ </properties>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <layout>
+ <property name="position" type="Enum"><value><enum type="String" select="0"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property>
+ </layout>
+ <WidgetContainer id="GuixGridBag">
+ <properties>
+ <property name="name" type="String"><value>GuixGridBag1</value></property>
+ </properties>
+ <children>
+ <child>
+ <layout>
+ <property name="weightx" type="double"><value>0.0</value></property>
+ <property name="weighty" type="double"><value>0.0</value></property>
+ </layout>
+ <WidgetComponent id="GuixButton">
+ <properties>
+ <property name="name" type="String"><value>GuixButton16</value></property>
+ <property name="text" type="String"><value>Selection</value></property>
+ </properties>
+ <signals>
+ <signal name="clicked" argument="false" handler="onSelectionButton"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <layout>
+ <property name="y" type="int"><value>1</value></property>
+ <property name="width" type="int"><value>2</value></property>
+ </layout>
+ <WidgetContainer id="GuixTabbedPane">
+ <properties>
+ <property name="name" type="String"><value>tabTools</value></property>
+ <property name="childCount" type="int"><value>4</value></property>
+ </properties>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <layout>
+ <property name="weighty" type="double"><value>0.0</value></property>
+ </layout>
+ <WidgetContainer id="GuixGrid">
+ <properties>
+ <property name="name" type="String"><value>toolbar</value></property>
+ </properties>
+ <children>
+ <child>
+ <layout>
+ <property name="x" type="int"><value>8</value></property>
+ </layout>
+ <WidgetComponent id="GuixCheckBox">
+ <properties>
+ <property name="name" type="String"><value>checkboxDesignTime</value></property>
+ <property name="text" type="String"><value>Design</value></property>
+ <property name="selected" type="boolean"><value>true</value></property>
+ </properties>
+ <signals>
+ <signal name="itemStateChanged" argument="true" handler="onDesignTime"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <layout>
+ <property name="y" type="int"><value>2</value></property>
+ <property name="weighty" type="double"><value>0.0</value></property>
+ </layout>
+ <WidgetComponent id="GuixLabel">
+ <properties>
+ <property name="name" type="String"><value>statusBar</value></property>
+ <property name="text" type="String"><value> </value></property>
+ </properties>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetWindow>
+ <WidgetWindow id="GuixWindowNG">
+ <properties>
+ <property name="name" type="String"><value>GuixWindowNG1</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetContainer id="GuixMenuBar">
+ <properties>
+ <property name="name" type="String"><value>MenuBar</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetContainer id="GuixMenu">
+ <properties>
+ <property name="name" type="String"><value>GuixMenu1</value></property>
+ <property name="text" type="String"><value>File</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem1</value></property>
+ <property name="text" type="String"><value>new</value></property>
+ <property name="icon" type="Resource"><value></value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onNew"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem2</value></property>
+ <property name="text" type="String"><value>load</value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onLoad"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem3</value></property>
+ <property name="text" type="String"><value>save</value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onSave"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem4</value></property>
+ <property name="text" type="String"><value>export</value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onExport"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem8</value></property>
+ <property name="text" type="String"><value>preview</value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onPreview"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <WidgetContainer id="GuixMenu">
+ <properties>
+ <property name="name" type="String"><value>GuixMenu2</value></property>
+ <property name="text" type="String"><value>Edit</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem5</value></property>
+ <property name="text" type="String"><value>ajouter le composant</value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onAddComponent"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem6</value></property>
+ <property name="text" type="String"><value>couper</value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onCouper"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem7</value></property>
+ <property name="text" type="String"><value>coller</value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onColler"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <WidgetContainer id="GuixMenu">
+ <properties>
+ <property name="name" type="String"><value>GuixMenu3</value></property>
+ <property name="text" type="String"><value>help</value></property>
+ </properties>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetWindow>
+</GuixApplication>
Copied: trunk/src/site/fr/resources/models/exemple.topiaModel (from rev 694, trunk/eugene/src/site/resources/models/exemple.topiaModel)
===================================================================
--- trunk/src/site/fr/resources/models/exemple.topiaModel (rev 0)
+++ trunk/src/site/fr/resources/models/exemple.topiaModel 2009-11-24 17:06:20 UTC (rev 719)
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<topiaModel xmlns:topia="http://www.codelutin.org/topia/topiaModel">
+ <class name="Person" stereotype="entity" package="org.codelutin.test">
+ <attribute multiplicity="1" name="name" visibility="public" type="java.lang.String">
+ <tag name="mandatory" value="true"/>
+ <tag name="indexed" value="false"/>
+ <tag name="primaryKey" value="false"/>
+ <tag name="readonly" value="false"/>
+ </attribute>
+ <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Address">
+ <tag name="mandatory" value="true"/>
+ <tag name="indexed" value="false"/>
+ <tag name="primaryKey" value="false"/>
+ <tag name="readonly" value="false"/>
+ </attribute>
+ </class>
+ <class name="Employee" type="entity" extends="org.codelutin.test.Person" package="org.codelutin.test">
+ <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Company">
+ <tag name="mandatory" value="true"/>
+ <tag name="indexed" value="false"/>
+ <tag name="primaryKey" value="false"/>
+ <tag name="readonly" value="false"/>
+ </attribute>
+ </class>
+ <class name="Company" type="entity" package="org.codelutin.test">
+ <attribute multiplicity="1" name="name" visibility="public" type="java.lang.String">
+ <tag name="mandatory" value="true"/>
+ <tag name="indexed" value="false"/>
+ <tag name="primaryKey" value="false"/>
+ <tag name="readonly" value="false"/>
+ </attribute>
+ <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Address">
+ <tag name="mandatory" value="true"/>
+ <tag name="indexed" value="false"/>
+ <tag name="primaryKey" value="false"/>
+ <tag name="readonly" value="false"/>
+ </attribute>
+ <attribute multiplicity="n" name="address" visibility="public" type="org.codelutin.test.Employee">
+ <tag name="mandatory" value="true"/>
+ <tag name="indexed" value="false"/>
+ <tag name="primaryKey" value="false"/>
+ <tag name="readonly" value="false"/>
+ </attribute>
+ <operation name="getTime" visibility="public" returnType="int">
+ <parameter name="year" type="org.codelutin.Employee"/>
+ </operation>
+ </class>
+</topiaModel>
Copied: trunk/src/site/fr/resources/xmi/ObjectModel.zuml (from rev 694, trunk/eugene/src/site/resources/xmi/ObjectModel.zuml)
===================================================================
(Binary files differ)
Copied: trunk/src/site/fr/resources/xmi/objectmodel.zargo (from rev 694, trunk/eugene/src/site/resources/xmi/objectmodel.zargo)
===================================================================
(Binary files differ)
Property changes on: trunk/src/site/fr/resources/xmi/objectmodel.zargo
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: svn:mergeinfo
+
Copied: trunk/src/site/fr/rst/DevUIDoc.rst (from rev 694, trunk/eugene/src/site/fr/rst/DevUIDoc.rst)
===================================================================
--- trunk/src/site/fr/rst/DevUIDoc.rst (rev 0)
+++ trunk/src/site/fr/rst/DevUIDoc.rst 2009-11-24 17:06:20 UTC (rev 719)
@@ -0,0 +1,103 @@
+=======
+UIModel
+=======
+
+:Authors: Aurelie MAZELIER
+:Revision: $Revision$
+:Date: $Date$
+
+
+.. contents::
+
+
+Model UIModel
+=============
+
+En parcourant un fichier xml, il est possible de construire un objet
+UIModel. Cet objet est défini par les interfaces suivantes.
+
+
+Interfaces
+----------
+
+- UIModel :
+
+ - version XML
+ - root de type UIModelObject
+ - le nom du package
+ - liste des objets du model
+
+- UIModelObject :
+
+ - nom
+ - type
+ - un UIModelObject parent
+ - un UIModel
+ - une liste d'arguments
+ - une liste de propriétés
+ - une liste d'évènements
+ - une liste d'enfants
+
+- UIModelArgument :
+
+ - une liste d'arguments
+
+- UIModelProperty :
+
+ - un nom
+ - une valeur (de différents type : int, float ...)
+ - un index
+
+- UIModelEvent :
+
+ - le nom de la addListenerMethod
+ - le nom de la listenerInterface
+ - le nom de la listenerMethod
+ - le nom du handler
+ - le nom de la eventProperty
+
+- UIModelChild :
+
+ - un enfant UIModelObject
+ - la contrainte de l'enfant de type UIModelConstraint
+
+- UIModelConstraint :
+
+ - une valeur de type Object ou String
+
+
+Implantations
+-------------
+
+Il existe deux implantations de ces interfaces.
+
+
+impl
+~~~~
+
+Cette première implantation permet d'obtenir un UIModel lors
+du parcours du fichier xml de type uimodel par le parser
+XMLParser.
+
+
+xml
+~~~
+
+Cette deuxième implantation permet d'obtenir un UIModel lors
+du parcours du fichier xml de type javaxml par le parser
+JavaXMLParser.
+
+
+JavaXMLParser
+-------------
+
+Ce parser permet de parcourir des fichiers javaxml afin d'obtenir un
+objet UIModel. Ce parser utilise dom4j.
+
+
+Générateurs
+===========
+
+- Génération d'objet UIModel (UIModelGenerator). Ce générateur utilise les classes précédentes afin d'obtenir un objet UIModel en fonction des fichiers xml. A partir de cet objet UIModel, il est possible de lancer la génération. Ces générateurs sont utilisées dans Topia pour générer les fichiers java à partir de l'objet UIModel.
+
+- Génération d'objet UIModel (UIModelGeneratorWithCapitalizeName). Ce générateur est une sous classe du premier. Il est possède une méthode permettant de mettre la première lettre en majuscule du nom d'un objet, d'une propriété...
Copied: trunk/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst (from rev 694, trunk/eugene/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst)
===================================================================
--- trunk/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst (rev 0)
+++ trunk/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst 2009-11-24 17:06:20 UTC (rev 719)
@@ -0,0 +1,82 @@
+=========================
+Principe de la génération
+=========================
+
+Il y a deux façon de voir la génération.
+
+La première que l'on rencontre le plus
+souvent génère des fichiers avec des sections à
+modifier par le développeur. Ces sections sont marquées par des commentaires
+que le générateur interprète pour savoir qu'il n'a pas le droit de modifier
+cette partie de code.
+
+La deuxième qui à pour principe:
+
+- le générateur ne doit jamais modifier les fichiers de l'utilisateur.
+- l'utilisateur ne doit jamais modifier le code généré
+
+De cette façon les choses sont clairement séparé, et cela est possible sans
+utilisation d'artifice perturbant le développeur grâce au nouveau langage à
+objet et à l'héritage.
+
+La grosse différence n'est pas dans les générateurs eux même mais dans les
+templates de génération. Si tous les générateurs de la première catégorie
+peuvent très bien servir pour faire de la génération de la seconde,
+l'inverse n'est pas vrai. Car la seconde catégorie demande des générateurs
+beaucoup plus simple, ce qui est d'ailleur un avantage pour la maintenance.
+
+Code Lutin utilise un générateur du deuxième type: Eugene
+
+Quelques générateurs de la première catégorie:
+
+- Acceleo (Obeo)
+- Pragmatic (Argia)
+
+Les principes de Eugene
+=======================
+
+- le générateur ne doit jamais modifier les fichiers de l'utilisateur.
+- l'utilisateur ne doit jamais modifier le code généré
+- le modèle est toujours la source (pas de reverse, pas de modification du
+ modèle par le générateur
+- être le plus simple possible (simple à maintenir)
+- s'appuyer sur les normes (XMI)
+- pouvoir utiliser plusieurs fichiers XMI pour la même génération
+- ne pas mettre dans le modèle des choses techniques (ex: type pour la base de
+ données) mais dans un fichier de propriété à coté du modèle.
+- avoir une couche d'abstraction du XMI pour évité la modification des
+ templates si la version de XMI change (XMLObjectModel)
+- s'appuyer sur un modèle mémoire simple (ObjectModel écrit spécifiquement
+ car aucun modèle simple n'a été trouvé)
+- s'appuyer sur un langage puissant et connu des développeurs (Java)
+- ne jamais mélanger le code généré et le code utilisateur
+- pouvoir générer n'importe quelle type de fichier (XML, Java, texte, ...)
+- être facilement intégrable dans une phase de génération/compilation
+ (task ant, plugin maven)
+- être indépendant d'un outil de développement spécifique (chacun à le droit de
+ choisir l'éditeur qu'il souhaite).
+
+Défaut de la première solution
+==============================
+
+- il faut prévoir partout ou l'utilisateur pourrait souhaiter ajouter du
+ code. Par exemple dans Pragmatic, on ne peut pas utiliser les imports car il
+ n'y a pas de section utilisateur à cet endroit, il faut donc à chaque fois
+ écrire le package lorsque l'on souhaite utiliser une classe non encore
+ importée.
+
+- le développeur voit beaucoup de code qu'il n'a pas le droit de modifier
+ ce qui complexifie la vue du développeur pour rien
+
+Défaut des générateurs le plus souvent rencontré
+================================================
+
+- Les générateurs au lieu d'utiliser un langage et façon de faire que tous
+ les développeurs connaissent réinvente leur propre syntaxe et langage.
+
+Eugene lui utilise seulement du Java et les tags JSP (<%, <%=, %>).
+De cette façon le générateur reste simple pas de langage à développer et
+parser. L'utilisateur qui connait Java connait le langage de template. Et
+surtout l'utilisateur n'est pas limité par le langage développé
+spécifiquement pour les templates.
+
Copied: trunk/src/site/fr/rst/FAQ.rst (from rev 694, trunk/eugene/src/site/fr/rst/FAQ.rst)
===================================================================
--- trunk/src/site/fr/rst/FAQ.rst (rev 0)
+++ trunk/src/site/fr/rst/FAQ.rst 2009-11-24 17:06:20 UTC (rev 719)
@@ -0,0 +1,16 @@
+===
+FAQ
+===
+
+Comment convertir les modèles UML de Poseidon vers ArgoUML ?
+============================================================
+
+Il faut sauver le modèle sous Poseidon en XMI, on bien l'extraire du
+fichier .zmul qui est en fait un fichier zip::
+
+ xlstproc -o <argo-file>.xmi poseidon2argouml.xsl <poseidon-file>.xmi
+
+Ensuite dans ArgoUML ouvrez le fichier généré.
+
+Les diagrammes ne sont pas convertie, il faut donc les recréer a partir des
+classes en faisant du drag&drop.
Copied: trunk/src/site/fr/rst/ObjectModel.rst (from rev 694, trunk/eugene/src/site/fr/rst/ObjectModel.rst)
===================================================================
--- trunk/src/site/fr/rst/ObjectModel.rst (rev 0)
+++ trunk/src/site/fr/rst/ObjectModel.rst 2009-11-24 17:06:20 UTC (rev 719)
@@ -0,0 +1,92 @@
+===========
+ObjectModel
+===========
+
+:Authors: Arnaud Thimel, Florian Desbois
+:Contact: eugene-devel(a)list.nuiton.org ou eugene-users(a)list.nuiton.org
+:Revision: $Revision$
+:Date: $Date$
+
+
+.. contents::
+
+
+Introduction
+============
+
+Le générateur ObjectModelGenerator est prévu pour lire et analyser des modèles
+objets puis générer du code à partir de ceux-ci. En UML, un modèle objet est
+représenté par un diagramme de classe. Cette vision des modèles objet étant très
+répandue, elle sert de base à l'ObjectModelGenerator (il est à noter cependant
+que ce n'est pas obligatoire).
+
+Partons donc du principe que l'on dispose d'un modèle (diagramme de classe) créé
+à l'aide d'un outil de modélisation au format XMI (XML Metadata Interchange).
+
+La génération de code se fait ensuite en trois étapes :
+
+- Epuration du XMI en un code XML ne conservant que les informations utiles ;
+- Mise en mémoire du modèle simplifié ;
+- Application des templates / génération de code.
+
+
+Epuration du modèle XMI
+=======================
+
+La plupart des outils de modélisation décrivent leur modèle en XMI. Or le XMI
+est trop verbeux pour être compréhensible aisement.
+
+Eugene propose une tranformation XSLT permettant ainsi d'obtenir un XML
+épuré décrivant le modèle et ne conservant que l'essentiel des informations.
+
+Parmi les informations extraites, on peut citer :
+
+- Objets (classes, classes abtraites, interfaces)
+- Attributs (nom, type, visibilité, ...)
+- Relations entre les classes (toutes multiplicités, navigabilité, classes d'association, ...)
+- Opérations (nom, type de retour, noms et types des arguments, exceptions levées, ...)
+- Stéréotypes
+
+A partir du diagramme suivant :
+
+.. image:: images/Hotel.png
+
+On obtient un ObjectModel tel que :
+
+.. image:: images/Hotel.objectmodel.png
+
+
+Modèle mémoire
+==============
+
+Une fois le XMI ramené à un XML compréhensible, le modèle est chargé en
+mémoire afin de subir la génération.
+
+Ainsi, le modèle instancié est basé sur le diagramme de classes (méta-modèle) suivant :
+
+.. image:: images/ObjectModel.png
+
+Les interfaces disponibles pour les générateurs sont les suivantes :
+
+.. image:: images/ObjectModel_Interfaces.png
+
+ObjectModelGenerator :
+
+.. image:: images/ObjectModel_Generator.png
+
+Application des templates
+=========================
+
+Chaque template est à lui seul un générateur qui hérite de ObjectModelGenerator.
+Toute partie de ce générateur peut donc être surchargée permettant ainsi une
+forte personnalisation des générateurs. Le rôle de l'ObjectModelGenerator est
+donc de parcourir le modèle et à chaque élément clé du modèle, (model, classes
+interfaces, classifier) les méthodes correspondantes sont appelées. Par défaut,
+ces méthodes décrites dans le générateur de base sont vide, et il n'en ressort
+donc aucun code généré. Les templates ont donc pour but de surcharger ses
+méthodes et décrire le code qui va être généré.
+
+Les templates peuvent être de toutes sortes car ils peuvent générer un fichier
+différent par modèle, par interface, par classe ou encore par classifier (souche
+commune aux classes et interfaces). De plus, ils peuvent indifféremment générer
+du code Java / XML ou encore tout autre type de code (texte ou autre...).
Copied: trunk/src/site/fr/rst/Todo.rst (from rev 694, trunk/eugene/src/site/fr/rst/Todo.rst)
===================================================================
--- trunk/src/site/fr/rst/Todo.rst (rev 0)
+++ trunk/src/site/fr/rst/Todo.rst 2009-11-24 17:06:20 UTC (rev 719)
@@ -0,0 +1,115 @@
+====
+TODO
+====
+
+
+:Revision: $Revision$
+:Date: $Date$
+
+
+Idées ou choses à faire
+=======================
+
+- support des InnerClasses (en xmi argo: la classe est declarer dans une classe
+ dans un element UML:Namespace.ownedElement) (`Evolution #59`_ )
+
+- support des static (tout element declarer dans une class/interface: methode,
+ attribut, enumeration, class, ...)
+ (en xmi argo: ownerScope='classifier' ou ownerScope='instance') (`Evolution #58`_ )
+
+.. _Evolution #59: http://www.nuiton.org/issues/show/59
+.. _Evolution #58: http://www.nuiton.org/issues/show/58
+
+- peut-etre faire des tests unitaires avec http://juxy.tigris.org/ pour le xls
+
+- Permettre de faire du 'model to model' avant la generation
+
+Model to Model
+==============
+
+(2009-10-19 : En cours de developpement : `branches/1.0.1-javabuilder`_ )
+
+.. _branches/1.0.1-javabuilder: http://nuiton.org/repositories/browse/eugene/branches/1.0.1-Javabuilder
+
+Pour tout ce qui est génération de classe Java, le principe de base d'Eugene
+est de dire que le développeur écrit directement ce qu'il souhaite voir dans
+le fichier final.
+
+Cela pose quelques difficultés:
+
+- difficulté de prévoir les imports
+- difficulté d'éviter la génération de deux méthodes ayant le même nom
+
+L'idée serait alors de constuire la classe Java souhaitée au final en appelant
+des méthodes (addImport, addMethod, addAttribute, ...). Ceci nous donnerait
+alors un nouveau modèle mémoire dont on demanderait la génération à un
+générateur sans inteligence qui se contenterait d'écrire le code Java modélisé.
+
+L'avantage est que pour chaque méthode à ajouter on peut demander avant si elle
+n'a pas déjà été ajoutée et ainsi potentiellement la renomé avant de l'inclure.
+D'ajouter de façon automatique tous les imports des arguments des méthodes, ...
+
+Pour pouvoir faire cela, nous pourrions nous baser sur ObjectModel, mais des
+ajouter doivent être fait:
+
+- pouvoir indiquer sur une Class une série d'import.
+- pouvoir ajouter un message de licence
+- pouvoir ajouter sur une méthode sont code source
+
+Ce dernier élément est le plus problèmatique, car il deviendrait pénible de
+devoir instancier tout le code de la méthode en objet et on perdrait l'idée
+de départ d'Eugene.
+
+Dans eugène il est déjà possible de modifier la transformation des tags de
+génération '/\*{' et '}\*/' qui par défaut génère un 'ouput.write("...");'
+Dans notre cas, il faudrait quelque chose comme 'method.addCode("...");' ou
+encore plus simplement '"..." +' ce qui pourrait donner::
+
+ addImport(MonObject.class);
+ method.addCode(
+ /*{ int i = 0;
+ i = 1+2;
+ MonObject result = new MonObject(result);
+ return result;
+ }*/
+ );
+
+qui deviendrait::
+
+ addImport(MonObject.class);
+ method.addCode(
+ "int i = 0;\n" +
+ "i = 1+2;\n" +
+ "MonObject result = new MonObject(result);\n" +
+ "return result;\n"
+ );
+
+On garde la facilte d'écriture du code à générer et on permet d'ajouter
+facilement des imports dont on aurait besoin dans le coprs de la méthode. Aucun
+traitement complexe du code de la méthode n'est donc nécessaire.
+
+Ce nouveau mode de génération ne serait qu'une moyen complémentaire de la
+génération actuelle.
+
+Travail a faire:
+
+- ajout d'objet dans ObjectModel
+- ajout de méthode de modification dans ObjectModel
+- création d'un template de génération d'un POJO (génération direct d'un modèle)
+
+Il serait toute fois dommage d'ajouter tout un ensemnble de setter sur les
+interfaces d'ObjectModel qui le rendrait moins clair pour les générateurs.
+Il faut donc trouver une solution pour permettre l'instanciation et la
+modification de classe implantant l'ObjectModel sans pour autant les ajouter
+au interface.
+
+Une idée pourrait-être l'utilisation de Helper qui permette de créer et modifier
+le modèle::
+
+ ObjectModelClass clazz = ObjectModelHelper.createClass();
+ ObjectModelOperation method = ObjectModelHelper.addMethod(
+ clazz, "name", "typeRetour", "paramName", "typeParam");
+ ObjectModelHelper.addImport("java.util.List");
+ ObjectModelHelper.addCode(method,
+ /*{ blablabla
+ }*/
Added: trunk/src/site/fr/rst/index.rst
===================================================================
--- trunk/src/site/fr/rst/index.rst (rev 0)
+++ trunk/src/site/fr/rst/index.rst 2009-11-24 17:06:20 UTC (rev 719)
@@ -0,0 +1,80 @@
+======
+Eugene
+======
+
+.. contents::
+
+
+Origine du projet
+-----------------
+
+Eugene est né à la suite d'une recherche de générateur de code basé sur
+un modèle mémoire simple qui s'est terminée par un échec.
+
+Les projets alors étudiés étaient alors entre autres :
+
+- Jostraca ;
+- EMF ;
+- ...
+
+Le choix de la génération de code par rapport à l'introspection a été fait car
+la génération code permet de passer par l'étape compilation et donc de
+validation du code généré. En effet, si le besoin était initialement porté sur
+de la génération de code Java, Eugene a été pensé pour générer tout type
+de code.
+
+
+Côté technique
+--------------
+
+Eugene permet l'utilisation d'un ensemble de générateurs. Ces
+générateurs sont abstraits de toute spécificité permettant ainsi de les adapter
+en fonction des besoins.
+
+Par défaut, Eugene propose trois implantations de ces générateurs :
+
+- ObjectModelGenerator (génération à partir d'un modèle objet) ;
+- StateModelGenerator (génération à partir d'un modèle d'états) ;
+- UIModelGenerator (génération à partir d'un modèle graphique).
+
+Chacun de ces modèles a ses propres spécificités liés à sa structure et son mode
+de fonctionnement...
+
+Cependant, ces générateurs sont inutiles sans des templates de génération. Les
+templates sont les fichiers qui vont permettre de déterminer quel sera le
+contenu généré en fonction du modèle initial. Grâce à NuitonProcessor_, ces
+templates sont écrit avec une sytaxe proche de la syntaxe JSP en imbriquant les
+portions de code Java avec les portions de code généré. Le rôle de
+NuitonProcessor_ est de transformer ces templates en remplaçant la syntaxe JSP par
+la syntaxe Java correpondante. Les classes Java obtenues peuvent donc être
+compilées et deviennent autonomes.
+
+.. _NuitonProcessor: http://maven-site.nuiton.org/processor/
+
+Règle ant
+---------
+
+Voici un exemple d'utilisation de la règle ant.
+
+::
+
+ <taskdef name="generator" classname="org.nuiton.eugene.GeneratorTask"
+ classpath="${compile.classpath}:${targetbuild}:${resources}" />
+
+ <target name="generate" description="generate">
+ <generator srcdir="${modelDir}" destdir="${targetgen}"
+ resolver="org.nuiton.exemple.ResourceResolver"
+ templates="org.nuiton.example.JavaBeanGenerator"
+ properties="defaultPackage=org.nuiton,fullPackagePath=org.nuiton,extraPackages=org.nuiton"
+ classpath="${compile.classpath}:${targetbuild}:${resources}" />
+ </target>
+
+Dans cette exemple, un template de génération sera apliqué sur tous les
+fichiers.
+
+Plugin maven
+------------
+
+Un plugin maven est disponnible à l'adresse suivante
+http://maven-site.nuiton.org/eugene/maven-eugene-plugin . Il permet l'utilisation
+depuis maven de Eugene.
Copied: trunk/src/site/fr/rst/maven-plugin.rst (from rev 694, trunk/maven-eugene-plugin/src/site/rst/index.rst)
===================================================================
(Binary files differ)
Copied: trunk/src/site/fr/rst/plugineclipse.rst (from rev 694, trunk/eugene/src/site/fr/rst/plugineclipse.rst)
===================================================================
--- trunk/src/site/fr/rst/plugineclipse.rst (rev 0)
+++ trunk/src/site/fr/rst/plugineclipse.rst 2009-11-24 17:06:20 UTC (rev 719)
@@ -0,0 +1,44 @@
+Installation du plugin LutinGenerator
+=====================================
+
+Ce guide détail comment installer le plugin eclipse LutinGenerator via
+l'update site (assitant d'instalation de plugins).
+
+Installation
+------------
+
+Ouvrez l'assitant d'installation de plugin via le menu
+(Help/Software Updates/Find and install...).
+
+.. image:: images/plugin_menu.png
+
+Sur la fenêtre suivante sélectionnez "Search for new features to install".
+
+.. image:: images/plugin_typeinstall.png
+
+Une nouvelle fenêtre s'affiche, sélectionnez "New remote site" pour ajouter le
+dépot "LutinGenerator".
+
+L'adresse du dépot à utiliser est :
+
+::
+
+ http://lutingenerator.labs.libre-entreprise.org/eclipse/
+
+.. image:: images/plugin_newdepot.png
+
+
+Sélectionnez ensuite ce dépot et cliquez sur "Finish".
+
+Installez ensuite la dernière version disponible et redémarrez eclipse:
+
+.. image:: images/plugin_choix.png
+
+
+Utilisation
+-----------
+
+Pour disposer de la coloration des templates, cliquez droit sur un fichier
+source java et sélectionnez "Open with > / LutinGenerator Template Editor"
+
+.. image:: images/plugin_utilisation_editeur.png
\ No newline at end of file
Deleted: trunk/src/site/site.xml
===================================================================
--- trunk/src/site/site.xml 2009-11-24 17:06:01 UTC (rev 718)
+++ trunk/src/site/site.xml 2009-11-24 17:06:20 UTC (rev 719)
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="${project.name}">
-
- <bannerLeft>
- <name>${project.name}</name>
- <href>/</href>
- </bannerLeft>
-
- <poweredBy>
- <logo href="http://maven.apache.org" name="Maven" img="${project.url}/images/logos/maven-feather.png"/>
- <logo href="http://jrst.labs.libre-entreprise.org" name="JRst" img="${project.url}/images/jrst-logo.png"/>
- <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" img="${project.url}/images/restructuredtext-logo.png"/>
- </poweredBy>
-
- <body>
-
- <breadcrumbs>
- <item name="${project.name}" href="${project.url}" />
- </breadcrumbs>
-
- <menu ref="modules"/>
-
- <menu ref="reports"/>
- </body>
-</project>
Copied: trunk/src/site/site_en.xml (from rev 694, trunk/eugene/src/site/site_en.xml)
===================================================================
--- trunk/src/site/site_en.xml (rev 0)
+++ trunk/src/site/site_en.xml 2009-11-24 17:06:20 UTC (rev 719)
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="${project.name}">
+
+ <bannerLeft>
+ <name>${project.name}</name>
+ </bannerLeft>
+
+ <poweredBy>
+ <logo href="http://maven-site.nuiton.org/jrst" name="JRst" img="http://maven-site.nuiton.org/jrst/images/jrst-logo.png"/>
+ <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" img="http://maven-site.nuiton.org/jrst/images/restructuredtext-logo.png"/>
+ </poweredBy>
+
+ <body>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="${project.url}" />
+ </breadcrumbs>
+
+ <links>
+ <item name="Libre-Entreprise" href="http://www.libre-entreprise.org/" />
+ </links>
+
+ <menu name="User">
+ <item href="index.html" name="Home"/>
+ <item href="../maven-eugene-plugin/en/plugin-info.html" name="Maven plugin" />
+ </menu>
+
+ <menu name="Links">
+ <item href="../fr/index.html" name="EUGene project [ FR ]" />
+ <item name="Downloads" href="http://${platform}/projects/list_files/eugene" />
+ <item href="../eugene/en/index.html" name="EUGene Module" title="Access to reports and javadoc for EUGene module" />
+ <item name="Nuiton-processor" href="http://nuiton.org/projects/show/processor"/>
+ <item name="ToPIA" href="http://nuiton.org/projects/show/topia"/>
+ </menu>
+
+ <menu name="Trackers">
+ <item name="Bugs" href="${project.issueManagement.url}?query_id=2"/>
+ <item name="Evolutions" href="${project.issueManagement.url}?query_id=1"/>
+ <item name="Help" href="${project.issueManagement.url}?query_id=3"/>
+ </menu>
+
+ <menu ref="reports"/>
+
+ </body>
+</project>
Property changes on: trunk/src/site/site_en.xml
___________________________________________________________________
Added: svn:mergeinfo
+
Copied: trunk/src/site/site_fr.xml (from rev 694, trunk/eugene/src/site/site_fr.xml)
===================================================================
--- trunk/src/site/site_fr.xml (rev 0)
+++ trunk/src/site/site_fr.xml 2009-11-24 17:06:20 UTC (rev 719)
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="${project.name}">
+
+ <bannerLeft>
+ <name>${project.name}</name>
+ </bannerLeft>
+
+ <poweredBy>
+ <logo href="http://maven-site.nuiton.org/jrst" name="JRst" img="http://maven-site.nuiton.org/jrst/images/jrst-logo.png"/>
+ <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" img="http://maven-site.nuiton.org/jrst/images/restructuredtext-logo.png"/>
+ </poweredBy>
+
+ <body>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html" />
+ </breadcrumbs>
+
+ <links>
+ <item name="Libre-Entreprise" href="http://www.libre-entreprise.org/" />
+ </links>
+
+ <menu name="Utilisateur">
+ <item href="index.html" name="Accueil"/>
+ <item href="DiscussionSurTypeDeGeneration.html" name="Génération"/>
+ <item href="../maven-eugene-plugin/fr/plugin-info.html" name="Plugin maven" />
+ <item href="FAQ.html" name="FAQ"/>
+ </menu>
+
+ <menu name="Développeur">
+ <item name="ObjectModel" href="ObjectModel.html"/>
+ <item name="UIModel" href="DevUIDoc.html"/>
+ <item name="Plugin Eclipse" href="plugineclipse.html"/>
+ <item name="Todo" href="Todo.html"/>
+ </menu>
+
+ <menu name="Liens">
+ <item href="../en/index.html" name="EUGene project [ EN ]" />
+ <item href="http://${platform}/projects/list_files/eugene" name="Téléchargement" />
+ <item href="../eugene/fr/index.html" name="Module EUGene" title="Accès aux rapports et javadoc du module EUGene"/>
+ <item href="http://nuiton.org/projects/show/processor" name="Nuiton-processor"/>
+ <item href="http://nuiton.org/projects/show/topia" name="ToPIA"/>
+ </menu>
+
+ <menu name="Trackers">
+ <item name="Bugs" href="${project.issueManagement.url}?query_id=2"/>
+ <item name="Améliorations" href="${project.issueManagement.url}?query_id=1"/>
+ <item name="Aide" href="${project.issueManagement.url}?query_id=3"/>
+ </menu>
+
+ <menu ref="modules"/>
+
+ <menu ref="reports"/>
+
+ </body>
+</project>
Property changes on: trunk/src/site/site_fr.xml
___________________________________________________________________
Added: svn:mergeinfo
+
1
0
r718 - in trunk: eugene/src/site maven-eugene-plugin/src/site
by fdesbois@users.nuiton.org 24 Nov '09
by fdesbois@users.nuiton.org 24 Nov '09
24 Nov '09
Author: fdesbois
Date: 2009-11-24 18:06:01 +0100 (Tue, 24 Nov 2009)
New Revision: 718
Removed:
trunk/eugene/src/site/resources/
trunk/maven-eugene-plugin/src/site/rst/
Log:
Refactor site for new mavenpom usage with two folders for languages
1
0
r717 - branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene
by fdesbois@users.nuiton.org 24 Nov '09
by fdesbois@users.nuiton.org 24 Nov '09
24 Nov '09
Author: fdesbois
Date: 2009-11-24 11:21:54 +0100 (Tue, 24 Nov 2009)
New Revision: 717
Modified:
branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ObjectModelGenerator.java
Log:
Add TODO for npe problem with model name
Modified: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ObjectModelGenerator.java
===================================================================
--- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ObjectModelGenerator.java 2009-11-13 13:24:38 UTC (rev 716)
+++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ObjectModelGenerator.java 2009-11-24 10:21:54 UTC (rev 717)
@@ -282,6 +282,7 @@
* @return
*/
public String getFilenameForModel(ObjectModel model) {
+ // TODO throw exception when model.getName() == null or empty
return model.getName();
}
1
0
r716 - in branches/eugene-2.0: eugene/src/main/java/org/nuiton/eugene eugene-test/src/main/java/org/nuiton/eugene/test/generator
by fdesbois@users.nuiton.org 13 Nov '09
by fdesbois@users.nuiton.org 13 Nov '09
13 Nov '09
Author: fdesbois
Date: 2009-11-13 14:24:38 +0100 (Fri, 13 Nov 2009)
New Revision: 716
Modified:
branches/eugene-2.0/eugene-test/src/main/java/org/nuiton/eugene/test/generator/Megatron.java
branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/Transformer.java
Log:
- Suppress initInputModel
- Add previous Transformer managment to transform the input model before starting the real current transformation
Modified: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/Transformer.java
===================================================================
--- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/Transformer.java 2009-11-13 13:00:23 UTC (rev 715)
+++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/Transformer.java 2009-11-13 13:24:38 UTC (rev 716)
@@ -47,6 +47,11 @@
protected Template<O> outputTemplate;
/**
+ * Previous transformer to modify input model
+ */
+ protected Transformer<I, I> previousTransformer;
+
+ /**
* Output model.
*/
protected O outputModel;
@@ -71,21 +76,15 @@
* @since 2.0.0
*/
protected void init(I model) {
- this.model = initInputModel(model);
+ this.model = model;
+ this.previousTransformer = initPreviousTransformer();
this.outputTemplate = initOutputTemplate();
this.outputTemplate.setProperties(getOutputProperties());
this.outputModel = initOutputModel();
}
- /**
- * Initialization of the Input model. By default, this method do nothing. You have
- * to override it if you want to do some transformation of the input model.
- * @param model input Model from Reader
- * @return the input Model
- * @since 2.0.0
- */
- protected I initInputModel(I model) {
- return model;
+ protected Transformer<I, I> initPreviousTransformer() {
+ return null;
}
/**
@@ -145,10 +144,11 @@
/**
- * Transform an input model and use destination directory to put generated files for output generator.
- * This method initialize the transformer then transform the input model into an other model
- * with ${@link #transform(org.nuiton.eugene.models.Model) method and finally generate from
- * the output model, using the output generator and the destination directory.
+ * This method apply the current transformation. You can use an other transformer for previous transformation
+ * by overriding {@link #initPreviousTransformer} method. In this case, the current transformation will be apply
+ * on the output model of the previous one. In the simple other case, the current transformation transform the input model
+ * into an output model. You must override {@link #initOutputModel} and {@link #initOutputTemplate } methods to initialize
+ * output model and output template to apply (generally a generator).
* @param model input model to transform and generate
* @param destDir destination directory to put generated files
* @throws IOException
@@ -156,12 +156,22 @@
*/
@Override
public void applyTemplate(I model, File destDir) throws IOException {
- transform(model);
+ // previous transformation
+ if (previousTransformer != null) {
+ // transformation only, no application of next template
+ previousTransformer.transform(model);
+ // current transformation
+ transform(previousTransformer.getOutputModel());
+ } else {
+ // current transformation
+ transform(model);
+ }
+ // after template application
getOutputTemplate().applyTemplate(getOutputModel(), destDir);
}
/**
- * Transformation method from an input Model. This method also initialize input model, output model
+ * Transformation method from an input Model. This method also initialize previous transformer, output model
* and output generator with ${@link #init(org.nuiton.eugene.models.Model) } method.
* @param model input model
* @since 2.0.0
@@ -172,7 +182,7 @@
}
/**
- * Method to override for the transformation. Initialization (InputModel, OutputModel, OutputGenerator)
+ * Method to override for the transformation. Initialization (PreviousTransformer, OutputModel, OutputGenerator)
* is made before transformation call. This method only transform an input model into an output model.
* No generation is done neither outputGenerator call.
* @since 2.0.0
Modified: branches/eugene-2.0/eugene-test/src/main/java/org/nuiton/eugene/test/generator/Megatron.java
===================================================================
--- branches/eugene-2.0/eugene-test/src/main/java/org/nuiton/eugene/test/generator/Megatron.java 2009-11-13 13:00:23 UTC (rev 715)
+++ branches/eugene-2.0/eugene-test/src/main/java/org/nuiton/eugene/test/generator/Megatron.java 2009-11-13 13:24:38 UTC (rev 716)
@@ -25,14 +25,12 @@
/*
CAS modele de sortie vide : modele d'entree transformee par BeanTransformer
+ */
+ @Override
+ protected ObjectModelTransformerToJava initPreviousTransformer() {
+ return new BeanTransformer();
+ }
- @Override
- protected ObjectModel initInputModel(ObjectModel model) { // preparation du modele d'entrée
- BeanTransformer beanTransformer = new BeanTransformer();
- beanTransformer.transform(model);
- return beanTransformer.getOutputModel();
- }*/
-
@Override
public void transformFromClass(ObjectModelClass clazz) {
1
0