r588 - in testEugeneUML-YAML: . testeugene testeugene/src testeugene/src/main testeugene/src/test testeugene/testgenerator testeugene/testgenerator/src testeugene/testgenerator/src/main testeugene/testgenerator/src/main/java testeugene/testgenerator/src/main/java/org testeugene/testgenerator/src/main/java/org/nuiton testeugene/testgenerator/src/main/java/org/nuiton/testeugene testeugene/testgenerator/src/main/java/org/nuiton/testeugene/generator testeugene/testgenerator/src/test testeugene
Author: agiraudet Date: 2013-04-18 12:33:01 +0200 (Thu, 18 Apr 2013) New Revision: 588 Url: http://nuiton.org/projects/sandbox/repository/revisions/588 Log: ajout du projet maven testeugen : permet de generer un diagramme avec plantuml a partir d'un objectmodel, a tester avec le module testpollen (pollen.zargo -> objectmodel -> pollen.plantuml -> pollen.png) Added: testEugeneUML-YAML/testeugene/ testEugeneUML-YAML/testeugene/pom.xml testEugeneUML-YAML/testeugene/src/ testEugeneUML-YAML/testeugene/src/main/ testEugeneUML-YAML/testeugene/src/main/java/ testEugeneUML-YAML/testeugene/src/main/resources/ testEugeneUML-YAML/testeugene/src/test/ testEugeneUML-YAML/testeugene/src/test/java/ testEugeneUML-YAML/testeugene/testgenerator/ testEugeneUML-YAML/testeugene/testgenerator/pom.xml testEugeneUML-YAML/testeugene/testgenerator/src/ testEugeneUML-YAML/testeugene/testgenerator/src/main/ testEugeneUML-YAML/testeugene/testgenerator/src/main/java/ testEugeneUML-YAML/testeugene/testgenerator/src/main/java/org/ testEugeneUML-YAML/testeugene/testgenerator/src/main/java/org/nuiton/ testEugeneUML-YAML/testeugene/testgenerator/src/main/java/org/nuiton/testeugene/ testEugeneUML-YAML/testeugene/testgenerator/src/main/java/org/nuiton/testeugene/generator/ testEugeneUML-YAML/testeugene/testgenerator/src/main/java/org/nuiton/testeugene/generator/PlantumlGenerator.java testEugeneUML-YAML/testeugene/testgenerator/src/main/resources/ testEugeneUML-YAML/testeugene/testgenerator/src/test/ testEugeneUML-YAML/testeugene/testgenerator/src/test/java/ testEugeneUML-YAML/testeugene/testgenerator/testgenerator.iml testEugeneUML-YAML/testeugene/testpollen/ testEugeneUML-YAML/testeugene/testpollen/pom.xml testEugeneUML-YAML/testeugene/testpollen/src/ testEugeneUML-YAML/testeugene/testpollen/src/main/ testEugeneUML-YAML/testeugene/testpollen/src/main/java/ testEugeneUML-YAML/testeugene/testpollen/src/main/resources/ testEugeneUML-YAML/testeugene/testpollen/src/main/xmi/ testEugeneUML-YAML/testeugene/testpollen/src/main/xmi/pollen.zargo testEugeneUML-YAML/testeugene/testpollen/src/test/ testEugeneUML-YAML/testeugene/testpollen/src/test/java/ testEugeneUML-YAML/testeugene/testpollen/testpollen.iml Added: testEugeneUML-YAML/testeugene/pom.xml =================================================================== --- testEugeneUML-YAML/testeugene/pom.xml (rev 0) +++ testEugeneUML-YAML/testeugene/pom.xml 2013-04-18 10:33:01 UTC (rev 588) @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>org.nuiton</groupId> + <artifactId>testeugene</artifactId> + <packaging>pom</packaging> + <version>1.0-SNAPSHOT</version> + <modules> + <module>testgenerator</module> + <module>testpollen</module> + </modules> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + </properties> + +</project> \ No newline at end of file Added: testEugeneUML-YAML/testeugene/testgenerator/pom.xml =================================================================== --- testEugeneUML-YAML/testeugene/testgenerator/pom.xml (rev 0) +++ testEugeneUML-YAML/testeugene/testgenerator/pom.xml 2013-04-18 10:33:01 UTC (rev 588) @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>testeugene</artifactId> + <groupId>org.nuiton</groupId> + <version>1.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + + <groupId>org.nuiton.testeugene</groupId> + <artifactId>testgenerator</artifactId> + + <properties> + <eugenePluginVersion>2.6.2</eugenePluginVersion> + </properties> + + <dependencies> + <dependency> + <groupId>org.nuiton.eugene</groupId> + <artifactId>eugene</artifactId> + <version>2.6.2</version> + </dependency> + <dependency> + <groupId>org.yaml</groupId> + <artifactId>snakeyaml</artifactId> + <version>1.12</version> + </dependency> + <dependency> + <groupId>net.sourceforge.plantuml</groupId> + <artifactId>plantuml</artifactId> + <version>7962</version> + </dependency> + </dependencies> + +</project> \ No newline at end of file Added: testEugeneUML-YAML/testeugene/testgenerator/src/main/java/org/nuiton/testeugene/generator/PlantumlGenerator.java =================================================================== --- testEugeneUML-YAML/testeugene/testgenerator/src/main/java/org/nuiton/testeugene/generator/PlantumlGenerator.java (rev 0) +++ testEugeneUML-YAML/testeugene/testgenerator/src/main/java/org/nuiton/testeugene/generator/PlantumlGenerator.java 2013-04-18 10:33:01 UTC (rev 588) @@ -0,0 +1,242 @@ +package org.nuiton.testeugene.generator; + +import net.sourceforge.plantuml.GeneratedImage; +import net.sourceforge.plantuml.SourceFileReader; +import org.nuiton.eugene.models.object.*; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.Writer; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +// voir org.nuiton.eugene.java.JavaGenerator +// afficher seulement les "entity" + +public class PlantumlGenerator extends ObjectModelGenerator { + + @Override + public void generateFromModel(Writer output, ObjectModel input) throws IOException { + /*//log + FileWriter log = new FileWriter("/tmp/generateFromModel.PlantumlGenerator.log.txt"); + log.write("\n### Classes\n"); + for(ObjectModelElement OME : input.getClasses()) + { + log.write(OME.getStereotypes()+" : "+OME.getName()+"\n"); + } + log.write("\n### Interfaces\n"); + for(ObjectModelElement OME : input.getInterfaces()) + { + log.write(OME.getStereotypes()+" : "+OME.getName()+"\n"); + } + log.write("\n### Enumerations\n"); + for(ObjectModelElement OME : input.getEnumerations()) + { + log.write(OME.getStereotypes()+" : "+OME.getName()+"\n"); + } + log.write("\n### Classifiers\n"); + for(ObjectModelElement OME : input.getClassifiers()) + { + log.write(OME.getStereotypes()+" : "+OME.getName()+"\n"); + } + log.write("\n### Attributes\n"); + for(ObjectModelClassifier classifer : input.getClassifiers()) + { + log.write("\n--- "+classifer.getName()+" ---\n"); + for(ObjectModelAttribute attribute : classifer.getAttributes()) + { + //log.write("getComments : "+attribute.getComments()+"\n");//NullPointerException + //log.write("getDeclaringElement : "+attribute.getDeclaringElement()+"\n");//NullPointerException + //log.write("getDescription : "+attribute.getDescription()+"\n");//NullPointerException + log.write("getDocumentation : "+attribute.getDocumentation()+"\n"); + log.write("getName : "+attribute.getName()+"\n"); + //log.write("getSourceDocumentation : "+attribute.getSourceDocumentation()+"\//NullPointerException + log.write("getStereotypes : "+attribute.getStereotypes()+"\n"); + log.write("getTagValues : "+attribute.getTagValues()+"\n"); + log.write("isStatic : "+attribute.isStatic()+"\n"); + log.write("getDefaultValue : "+attribute.getDefaultValue()+"\n"); + log.write("getMaxMultiplicity : "+attribute.getMaxMultiplicity()+"\n"); + log.write("getMinMultiplicity : "+attribute.getMinMultiplicity()+"\n"); + log.write("getType : "+attribute.getType()+"\n"); + log.write("isOrdered : "+attribute.isOrdered()+"\n"); + log.write("isUnique : "+attribute.isUnique()+"\n"); + log.write("getAssociationClass : "+attribute.getAssociationClass()+"\n"); + log.write("attribute.getClassifier : "+attribute.getClassifier()+"\n"); + log.write("getReverseAttribute : "+attribute.getReverseAttribute()+"\n"); + log.write("getReverseMaxMultiplicity : "+attribute.getReverseMaxMultiplicity()+"\n"); + log.write("getType : "+attribute.getType()+"\n"); + log.write("getVisibility : "+attribute.getVisibility()+"\n"); + log.write("hasAssociationClass : "+attribute.hasAssociationClass()+"\n"); + log.write("isAggregate : "+attribute.isAggregate()+"\n"); + log.write("isComposite : "+attribute.isComposite()+"\n"); + log.write("isFinal : "+attribute.isFinal()+"\n"); + log.write("isNavigable : "+attribute.isNavigable()+"\n"); + log.write("isStatic : "+attribute.isStatic()+"\n"); + log.write("referenceClassifier : "+attribute.referenceClassifier()+"\n"); + log.write("\n\n"); + // isIndexed() not implemented ? + } + } + log.close(); + //log*/ + + + List<String> namesEntity = new LinkedList<String>(); + Map<String,LinkedList<String>> linksEntity = new HashMap<String,LinkedList<String>>(); + + // preparation des noms des classes et interfaces pour les liaisons + for(ObjectModelElement OME : input.getClassifiers()) + { + //if(OME.getStereotypes().contains("entity")) + namesEntity.add(OME.getName()); + } + // preparation des noms des enumerations pour les liaisons + for(ObjectModelElement OME : input.getEnumerations()) + { + //if(OME.getStereotypes().contains("")) + namesEntity.add(OME.getName()); + } + + // utiliser le systeme de templates + + // debut du fichier + output.write("@startuml\n\n"); + // parcours des classes + for(ObjectModelClass clazz : input.getClasses()) + { + //String classStereotype = clazz.getStereotypes().toString(); + //if(classStereotype.contains("entity")) + String className = clazz.getName(); + // ajout de la classe + output.write("class "+className+" {\n"); + // parcours des attributs de la classe + for(ObjectModelAttribute attr : clazz.getAttributes()) + { + String attributeName = attr.getName(); + String attributeType = afterLastPoint(attr.getType()); + // ajout d'un lien + if(namesEntity.contains(attributeType)) + { + if(linksEntity.containsKey(className)) + { + linksEntity.get(className).add(attributeType); + } + else + { + linksEntity.put(className,new LinkedList<String>()); + linksEntity.get(className).add(attributeType); + } + } + else + { + // ajout de l'attribut + output.write(" -"+attributeName+" : "+attributeType+"\n"); + //output.write(attr.getVisibility()+"\n");//test + } + } + // parcours des operations + for(ObjectModelOperation oper : clazz.getOperations()) + { + String operationName = oper.getName(); + String operationReturnType = afterLastPoint(oper.getReturnType()); + // ajout de l'operation + output.write(" +"+operationName+"("); + // parcours des parametres + boolean first = true; + for(ObjectModelParameter param : oper.getParameters()) + { + String parameterName = param.getName(); + String parameterType = afterLastPoint(param.getType()); + if(first) + { + first = false; + } + else + { + output.write(", "); + } + // ajout du parametre + output.write(parameterName+" : "+parameterType); + } + // ajout du type de retour + output.write(") : "+operationReturnType+"\n");// attention aux listes ! + } + output.write("}\n\n"); + + } + + // parcours des enumerations + for(ObjectModelEnumeration enumer : input.getEnumerations()) + { + String enumerationName = enumer.getName(); + // ajout de l'enumeration + output.write("enum "+enumerationName+" {\n"); + output.write("}\n\n"); + } + + // parcours des interfaces + for(ObjectModelInterface inter : input.getInterfaces()) + { + String interfaceName = inter.getName(); + // ajout de l'interface + output.write("interface "+interfaceName+" {\n"); + // ajout des methodes + output.write("}\n\n"); + } + + //liaisons + //voir isComposite/isAgregate... + for(String keyOME : linksEntity.keySet()) + { + for(String nameOME : linksEntity.get(keyOME)) + { + output.write(keyOME+" -- "+nameOME+"\n"); + } + } + + // fin du fichier + output.write("\n@enduml"); + } + + // exemple : afterLastPoint("org.nuiton.testeugene.generator") return "generator" + public static String afterLastPoint(String input) + { + String str = new StringBuffer(input).reverse().toString(); + String res = ""; + for(Character car : str.toCharArray()) + { + if(car.equals('.')) + { + return res; + } + else + { + res = car.toString()+res; + } + } + return res; + } + + @Override + public void applyTemplate(ObjectModel model, File destDir) throws IOException { + super.applyTemplate(model, destDir); + try { + File plantuml = new File(destDir+"/"+this.getFilenameForModel(model)); + SourceFileReader reader = new SourceFileReader(plantuml); + List<GeneratedImage> lst = null; + lst = reader.getGeneratedImages(); + File diagram = new File(destDir+"/"+model.getName()+".png"); + diagram = lst.get(0).getPngFile(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + @Override + public String getFilenameForModel(ObjectModel model) { + return model.getName()+".plantuml"; + } +} Added: testEugeneUML-YAML/testeugene/testgenerator/testgenerator.iml =================================================================== --- testEugeneUML-YAML/testeugene/testgenerator/testgenerator.iml (rev 0) +++ testEugeneUML-YAML/testeugene/testgenerator/testgenerator.iml 2013-04-18 10:33:01 UTC (rev 588) @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> + <component name="NewModuleRootManager" inherit-compiler-output="false"> + <output url="file://$MODULE_DIR$/target/classes" /> + <output-test url="file://$MODULE_DIR$/target/test-classes" /> + <content url="file://$MODULE_DIR$"> + <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/resources" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> + <excludeFolder url="file://$MODULE_DIR$/target" /> + </content> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + <orderEntry type="library" name="Maven: org.nuiton.eugene:eugene:2.6.2" level="project" /> + <orderEntry type="library" name="Maven: org.nuiton:nuiton-utils:2.6.5" level="project" /> + <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.1" level="project" /> + <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.1" level="project" /> + <orderEntry type="library" name="Maven: commons-primitives:commons-primitives:1.0" level="project" /> + <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" /> + <orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" /> + <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.8.3" level="project" /> + <orderEntry type="library" name="Maven: commons-jxpath:commons-jxpath:1.3" level="project" /> + <orderEntry type="library" name="Maven: org.nuiton.i18n:nuiton-i18n:2.5" level="project" /> + <orderEntry type="library" name="Maven: com.google.guava:guava:14.0" level="project" /> + <orderEntry type="library" name="Maven: org.apache.commons:commons-digester3:3.2" level="project" /> + <orderEntry type="library" name="Maven: cglib:cglib:2.2.2" level="project" /> + <orderEntry type="library" name="Maven: asm:asm:3.3.1" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: xerces:xercesImpl:2.10.0" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: net.sourceforge.saxon:saxon:9.1.0.8" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: xml-apis:xml-apis:1.4.01" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: jaxen:jaxen:1.1.4" level="project" /> + <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.12" level="project" /> + <orderEntry type="library" name="Maven: net.sourceforge.plantuml:plantuml:7962" level="project" /> + </component> +</module> + Added: testEugeneUML-YAML/testeugene/testpollen/pom.xml =================================================================== --- testEugeneUML-YAML/testeugene/testpollen/pom.xml (rev 0) +++ testEugeneUML-YAML/testeugene/testpollen/pom.xml 2013-04-18 10:33:01 UTC (rev 588) @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>testeugene</artifactId> + <groupId>org.nuiton</groupId> + <version>1.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + + <groupId>org.nuiton.testpollen</groupId> + <artifactId>testpollen</artifactId> + + <properties> + <eugenePluginVersion>2.6</eugenePluginVersion> + </properties> + + <build> + <plugins> + <plugin> + <groupId>org.nuiton.eugene</groupId> + <artifactId>eugene-maven-plugin</artifactId> + <version>2.6.2-SNAPSHOT</version> + <executions> + <execution> + <phase>generate-sources</phase> + <id>generate-entities</id> + <configuration> + <inputs>zargo</inputs> + <resolver>org.nuiton.util.FasterCachedResourceResolver</resolver> + <fullPackagePath>org.chorem.pollen</fullPackagePath> + <defaultPackage>org.chorem.pollen</defaultPackage> + <templates> + org.nuiton.testeugene.generator.PlantumlGenerator + </templates> + </configuration> + <goals> + <goal>generate</goal> + </goals> + </execution> + </executions> + <dependencies> + <dependency> + <groupId>org.nuiton.testeugene</groupId> + <artifactId>testgenerator</artifactId> + <version>${project.version}</version> + <scope>compile</scope> + </dependency> + </dependencies> + </plugin> + </plugins> + </build> + +</project> \ No newline at end of file Added: testEugeneUML-YAML/testeugene/testpollen/src/main/xmi/pollen.zargo =================================================================== (Binary files differ) Property changes on: testEugeneUML-YAML/testeugene/testpollen/src/main/xmi/pollen.zargo ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: testEugeneUML-YAML/testeugene/testpollen/testpollen.iml =================================================================== --- testEugeneUML-YAML/testeugene/testpollen/testpollen.iml (rev 0) +++ testEugeneUML-YAML/testeugene/testpollen/testpollen.iml 2013-04-18 10:33:01 UTC (rev 588) @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> + <component name="NewModuleRootManager" inherit-compiler-output="false"> + <output url="file://$MODULE_DIR$/target/classes" /> + <output-test url="file://$MODULE_DIR$/target/test-classes" /> + <content url="file://$MODULE_DIR$"> + <sourceFolder url="file://$MODULE_DIR$/target/generated-sources/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/target/generated-sources/models" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/target/generated-sources/xmi" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/resources" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> + </content> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + </component> +</module> +
participants (1)
-
agiraudet@users.nuiton.org