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
r1269 - trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml
by agiraudet@users.nuiton.org 09 Jun '13
by agiraudet@users.nuiton.org 09 Jun '13
09 Jun '13
Author: agiraudet
Date: 2013-06-10 00:07:36 +0200 (Mon, 10 Jun 2013)
New Revision: 1269
Url: http://nuiton.org/projects/eugene/repository/revisions/1269
Log:
correction d'un probl?\195?\168me de parsage et d'import des participants des classes d'association
Modified:
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/Parser.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/Parser.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/Parser.java 2013-06-07 15:58:50 UTC (rev 1268)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/Parser.java 2013-06-09 22:07:36 UTC (rev 1269)
@@ -430,8 +430,57 @@
log("name="+classPARSE.get(0));
}
+ //participant
if(value instanceof Map)
{
+ if(((Map) value).containsKey(PARTICIPANT))
+ {
+ if(((Map) value).get(PARTICIPANT) instanceof Map)
+ {
+ for(Object entry : ((Map) ((Map) value).get(PARTICIPANT)).entrySet())
+ {
+ if(entry instanceof Map.Entry)
+ {
+ //name attribute "value":
+
+ List<String> participantPARSE = YamlUtil.charParse(String.valueOf(((Map.Entry) entry).getKey()),' ');
+ YamlObject participantYAMLO = new YamlObject();
+ if(participantPARSE.contains("\""+YamlUtil.extract('"',String.valueOf(((Map.Entry) entry).getKey()))+"\""))
+ {
+ String label = YamlUtil.extract('"',String.valueOf(((Map.Entry) entry).getKey()));
+
+ participantYAMLO.addStringToMap(LABEL,label);
+
+ participantPARSE.remove("\""+YamlUtil.extract('"',String.valueOf(((Map.Entry) entry).getKey()))+"\"");
+ }
+
+ if(participantPARSE.size() > 0)//ajout type
+ {
+ participantYAMLO.addStringToMap(NAME,participantPARSE.get(0));
+ }
+ if(participantPARSE.size() > 1)//ajout name
+ {
+ participantYAMLO.addStringToMap(ATTRIBUTE,participantPARSE.get(1));
+ }
+ associationClassYAMLO.addYamlObjectToMap(PARTICIPANT,participantYAMLO);
+
+ /*YamlObject participantYAMLO = new YamlObject();
+ participantYAMLO.addStringToMap(NAME, String.valueOf(((Map.Entry) entry).getKey()));
+ if(((Map.Entry) entry).getValue() != null)
+ {
+ participantYAMLO.addStringToMap(ATTRIBUTE,String.valueOf(((Map.Entry) entry).getValue()));
+ }
+ associationClassYAMLO.addYamlObjectToMap(PARTICIPANT,participantYAMLO);*/
+ }
+ }
+ }
+ ((Map) value).remove(PARTICIPANT);
+ }
+ }
+ //participant
+
+ if(value instanceof Map)
+ {
for(Object entry : ((Map) value).entrySet())
{
if(entry instanceof Map.Entry)
@@ -482,51 +531,6 @@
/*
FACTORISER LE CODE !
*/
- if(value instanceof Map)
- {
- if(((Map) value).containsKey(PARTICIPANT))
- {
- if(((Map) value).get(PARTICIPANT) instanceof Map)
- {
- for(Object entry : ((Map) ((Map) value).get(PARTICIPANT)).entrySet())
- {
- if(entry instanceof Map.Entry)
- {
- //name attribute "value":
-
- List<String> participantPARSE = YamlUtil.charParse(String.valueOf(((Map.Entry) entry).getKey()),' ');
- YamlObject participantYAMLO = new YamlObject();
- if(participantPARSE.contains("\""+YamlUtil.extract('"',String.valueOf(((Map.Entry) entry).getKey()))+"\""))
- {
- String label = YamlUtil.extract('"',String.valueOf(((Map.Entry) entry).getKey()));
-
- participantYAMLO.addStringToMap(LABEL,label);
-
- participantPARSE.remove("\""+YamlUtil.extract('"',String.valueOf(((Map.Entry) entry).getKey()))+"\"");
- }
-
- if(participantPARSE.size() > 0)//ajout type
- {
- participantYAMLO.addStringToMap(NAME,participantPARSE.get(0));
- }
- if(participantPARSE.size() > 1)//ajout name
- {
- participantYAMLO.addStringToMap(ATTRIBUTE,participantPARSE.get(1));
- }
- associationClassYAMLO.addYamlObjectToMap(PARTICIPANT,participantYAMLO);
-
- /*YamlObject participantYAMLO = new YamlObject();
- participantYAMLO.addStringToMap(NAME, String.valueOf(((Map.Entry) entry).getKey()));
- if(((Map.Entry) entry).getValue() != null)
- {
- participantYAMLO.addStringToMap(ATTRIBUTE,String.valueOf(((Map.Entry) entry).getValue()));
- }
- associationClassYAMLO.addYamlObjectToMap(PARTICIPANT,participantYAMLO);*/
- }
- }
- }
- }
- }
}
public void parseEnumeration(String key, Object value, YamlObject enumerationYAMLO)
@@ -1161,7 +1165,8 @@
if(labelisable.containsKeyMapStringListString(NAME))
{
log("5");
- reverseAttribute.addStringToMap(ASSOCIATION_CLASS_NAME,labelisable.getFirstMapStringListString(NAME));
+ //tester package
+ reverseAttribute.addStringToMap(ASSOCIATION_CLASS_NAME,modelYAMLO.getFirstMapStringListString(PACKAGE)+"."+labelisable.getFirstMapStringListString(NAME));
}
}
}
1
0
r1268 - in trunk: eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml eugene-plantuml-templates/src/main/java/org/nuiton/eugene/plantuml
by agiraudet@users.nuiton.org 07 Jun '13
by agiraudet@users.nuiton.org 07 Jun '13
07 Jun '13
Author: agiraudet
Date: 2013-06-07 17:58:50 +0200 (Fri, 07 Jun 2013)
New Revision: 1268
Url: http://nuiton.org/projects/eugene/repository/revisions/1268
Log:
am?\195?\169lioration du parser de la syntaxe "user friendly" ()
am?\195?\169lioration du template PlantUML
Modified:
trunk/eugene-plantuml-templates/src/main/java/org/nuiton/eugene/plantuml/PlantumlTemplatesGenerator.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/KeyWords.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/Parser.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/KeyWords.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/KeyWords.java 2013-06-07 09:30:56 UTC (rev 1267)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/KeyWords.java 2013-06-07 15:58:50 UTC (rev 1268)
@@ -49,6 +49,7 @@
public static final String TRANSIENT = "transient";
public static final String TYPE = "type";
public static final String UNIQUE = "unique";
+ public static final String UNORDERED = "unordered";
public static final String VERSION = "version";
public static final String VISIBILITY = "visibility";
public static final String ELEMENT = "element";
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/Parser.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/Parser.java 2013-06-07 09:30:56 UTC (rev 1267)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/Parser.java 2013-06-07 15:58:50 UTC (rev 1268)
@@ -359,11 +359,131 @@
//
public void parseAssociationClass(String key, Object value, YamlObject associationClassYAMLO)//declarer participant attribut ?
{
- parseClass(key,value,associationClassYAMLO);//non fonctionnel (remplacer CLASS par ASSOCIATION_CLASS)
+ //
- //degolass'
+ /*
+ FACTORISER LE CODE !
+ */
+ List<String> classPARSE = YamlUtil.charParseIgnore(key,' ','<','>');
+ if(classPARSE.contains(ASSOCIATION_CLASS))
+ {
+ classPARSE.remove(classPARSE.indexOf(ASSOCIATION_CLASS));
+ }
+ if(classPARSE.contains(ABSTRACT))
+ {
+ associationClassYAMLO.addStringToMap(ABSTRACT, String.valueOf(true));
+ classPARSE.remove(classPARSE.indexOf(ABSTRACT));
+ }
+ if(classPARSE.contains(STATIC))
+ {
+ associationClassYAMLO.addStringToMap(STATIC, String.valueOf(true));
+ classPARSE.remove(classPARSE.indexOf(STATIC));
+ }
+ if(classPARSE.contains(EXTERN))
+ {
+ associationClassYAMLO.addStringToMap(EXTERN, String.valueOf(true));
+ classPARSE.remove(classPARSE.indexOf(EXTERN));
+ }
+ if(classPARSE.contains(INNER))
+ {
+ associationClassYAMLO.addStringToMap(INNER, String.valueOf(true));
+ classPARSE.remove(classPARSE.indexOf(INNER));
+ }
+ if(classPARSE.contains(PUBLIC))
+ {
+ associationClassYAMLO.addStringToMap(VISIBILITY, PUBLIC);
+ classPARSE.remove(classPARSE.indexOf(PUBLIC));
+ }
+ else if(classPARSE.contains(PRIVATE))
+ {
+ associationClassYAMLO.addStringToMap(VISIBILITY, PRIVATE);
+ classPARSE.remove(classPARSE.indexOf(PRIVATE));
+ }
+ else if(classPARSE.contains(PROTECTED))
+ {
+ associationClassYAMLO.addStringToMap(VISIBILITY, PROTECTED);
+ classPARSE.remove(classPARSE.indexOf(PROTECTED));
+ }
+
+ for(String tmp1 : classPARSE)
+ {
+ if(tmp1.contains("<<") && tmp1.contains(">>"))
+ {
+ List<Character> targets = new LinkedList<Character>();
+ targets.add('<');
+ targets.add('>');
+ String tmp2 = YamlUtil.removeMultiChar(tmp1, targets);
+ targets = new LinkedList<Character>();
+ targets.add(' ');
+ targets.add(',');
+ List<String> tmp3 = YamlUtil.multiCharParse(tmp2, targets);
+ for(String tmp4 : tmp3)
+ {
+ associationClassYAMLO.addStringToMap(STEREOTYPES, tmp4);
+ log("stereotype="+tmp4);
+ }
+ }
+ }
+ if(classPARSE.size() > 0)//prend compte de l'ordre : nom avant stereotypes
+ {
+ associationClassYAMLO.addStringToMap(NAME, classPARSE.get(0));
+ log("name="+classPARSE.get(0));
+ }
+
if(value instanceof Map)
{
+ for(Object entry : ((Map) value).entrySet())
+ {
+ if(entry instanceof Map.Entry)
+ {
+ String keyP = String.valueOf(((Map.Entry) entry).getKey());
+ Object valueP = ((Map.Entry) entry).getValue();
+
+ if(keyP.equals(SUPER_CLASSES))
+ {
+ if(valueP instanceof List)
+ {
+ for(Object superClass : (List) valueP)
+ {
+ //TODO: superClasses sur une ligne
+ associationClassYAMLO.addStringToMap(SUPER_CLASSES, String.valueOf(superClass));
+ }
+ }
+ }
+ else if(keyP.equals(SUPER_INTERFACES))
+ {
+ if(valueP instanceof List)
+ {
+ for(Object superInterface : (List) valueP)
+ {
+ //TODO: superInterfaces sur une ligne
+ associationClassYAMLO.addStringToMap(SUPER_INTERFACES, String.valueOf(superInterface));
+ }
+ }
+ }
+ else
+ {
+ if(keyP.contains("(") && keyP.contains(")"))
+ {
+ YamlObject operationYAMLO = new YamlObject();
+ parseOperation(keyP,valueP,operationYAMLO);
+ associationClassYAMLO.addYamlObjectToMap(OPERATION, operationYAMLO);
+ }
+ else
+ {
+ YamlObject attributeYAMLO = new YamlObject();
+ parseAttribute(keyP,valueP,attributeYAMLO);
+ associationClassYAMLO.addYamlObjectToMap(ATTRIBUTE, attributeYAMLO);
+ }
+ }
+ }
+ }
+ }
+ /*
+ FACTORISER LE CODE !
+ */
+ if(value instanceof Map)
+ {
if(((Map) value).containsKey(PARTICIPANT))
{
if(((Map) value).get(PARTICIPANT) instanceof Map)
@@ -372,14 +492,36 @@
{
if(entry instanceof Map.Entry)
{
- //name: attribute
+ //name attribute "value":
+
+ List<String> participantPARSE = YamlUtil.charParse(String.valueOf(((Map.Entry) entry).getKey()),' ');
YamlObject participantYAMLO = new YamlObject();
+ if(participantPARSE.contains("\""+YamlUtil.extract('"',String.valueOf(((Map.Entry) entry).getKey()))+"\""))
+ {
+ String label = YamlUtil.extract('"',String.valueOf(((Map.Entry) entry).getKey()));
+
+ participantYAMLO.addStringToMap(LABEL,label);
+
+ participantPARSE.remove("\""+YamlUtil.extract('"',String.valueOf(((Map.Entry) entry).getKey()))+"\"");
+ }
+
+ if(participantPARSE.size() > 0)//ajout type
+ {
+ participantYAMLO.addStringToMap(NAME,participantPARSE.get(0));
+ }
+ if(participantPARSE.size() > 1)//ajout name
+ {
+ participantYAMLO.addStringToMap(ATTRIBUTE,participantPARSE.get(1));
+ }
+ associationClassYAMLO.addYamlObjectToMap(PARTICIPANT,participantYAMLO);
+
+ /*YamlObject participantYAMLO = new YamlObject();
participantYAMLO.addStringToMap(NAME, String.valueOf(((Map.Entry) entry).getKey()));
if(((Map.Entry) entry).getValue() != null)
{
participantYAMLO.addStringToMap(ATTRIBUTE,String.valueOf(((Map.Entry) entry).getValue()));
}
- associationClassYAMLO.addYamlObjectToMap(PARTICIPANT,participantYAMLO);
+ associationClassYAMLO.addYamlObjectToMap(PARTICIPANT,participantYAMLO);*/
}
}
}
@@ -482,8 +624,53 @@
attributePARSE.remove(attributePARSE.indexOf(PUBLIC));
}
- for(String tmp1 : attributePARSE)
+ if(attributePARSE.contains(ORDERED))
{
+ attributeYAMLO.addStringToMap(ORDERING,ORDERED);
+ attributePARSE.remove(attributePARSE.indexOf(ORDERED));
+ }
+ else if(attributePARSE.contains(UNORDERED))
+ {
+ attributeYAMLO.addStringToMap(ORDERING,UNORDERED);
+ attributePARSE.remove(attributePARSE.indexOf(UNORDERED));
+ }
+
+ if(attributePARSE.contains("\""+YamlUtil.extract('"',key)+"\""))
+ {
+ String label = YamlUtil.extract('"',key);
+ attributeYAMLO.addStringToMap(LABEL,label);
+ attributePARSE.remove("\""+YamlUtil.extract('"',key)+"\"");
+ }
+
+ if(attributePARSE.contains("["+YamlUtil.extract('[',']',key)+"]"))
+ {
+ String multiplicity = YamlUtil.extract('[',']',key);
+ if(multiplicity.equals("*"))
+ {
+ attributeYAMLO.addStringToMap(MIN_MULTIPLICITY,"0");
+ attributeYAMLO.addStringToMap(MAX_MULTIPLICITY,"-1");
+ }
+ else if(multiplicity.contains(".."))
+ {
+ String min = YamlUtil.beforeChar(multiplicity,'.');
+ String max = YamlUtil.afterChar(multiplicity, '.');
+ if(min.equals("*"))
+ {
+ min = "-1";
+ }
+ if(max.equals("*"))
+ {
+ max = "-1";
+ }
+ attributeYAMLO.addStringToMap(MIN_MULTIPLICITY,min);
+ attributeYAMLO.addStringToMap(MAX_MULTIPLICITY,max);
+ }
+ attributePARSE.remove("["+YamlUtil.extract('[',']',key)+"]");
+ }
+
+ //extraire directement car pas de suppression
+ /*for(String tmp1 : attributePARSE)
+ {
log("tmp1="+tmp1);
if(tmp1.contains("\""))//tester deux occurrences ?//remplacer label par reverseMultiplicity si lien unidirectionnel
{
@@ -517,29 +704,29 @@
}
//attributePARSE.remove(tmp1);
}
- }
-
+ }*/
+ //name: type ?
if(attributePARSE.size() > 0)//ajout type
{
attributeYAMLO.addStringToMap(TYPE,attributePARSE.get(0));
}
- /*if(attributePARSE.size() > 1)//ajout name
+ if(attributePARSE.size() > 1)//ajout name
{
attributeYAMLO.addStringToMap(NAME,attributePARSE.get(1));
- }*/
+ }
- if(value != null)
+ /*if(value != null)//defaultValue
{
//attributeYAMLO.addStringToMap(DEFAULT_VALUE,String.valueOf(value));
- attributeYAMLO.addStringToMap(NAME,String.valueOf(value));
- }
+ attributeYAMLO.addStringToMap(TYPE,String.valueOf(value));
+ }*/
//on parcours le reste on recherche les [] (multiplicity) et les "" (label)
}
//OK, fonctionnel : yeah ninja flex
- //TODO: return Parameter après les : (value) ?
+ //TODO: return Parameter après les : (value) ? name: value
public void parseOperation(String key, Object value, YamlObject operationYAMLO)
{
log("operation=" + key);
@@ -576,31 +763,40 @@
operationYAMLO.addStringToMap(VISIBILITY,PRIVATE);
operationPARSE.remove(operationPARSE.indexOf(PRIVATE));
}
- if(operationPARSE.size() > 1)
+
+ for(String tmp : operationPARSE)
{
- YamlObject returnParameterYAMLO = new YamlObject();
- returnParameterYAMLO.addStringToMap(TYPE,operationPARSE.get(0));
- operationYAMLO.addYamlObjectToMap(RETURN_PARAMETER,returnParameterYAMLO);
-
- for(String tmp : operationPARSE)
+ if(tmp.contains("(") && tmp.contains(")"))
{
- if(tmp.contains("(") && tmp.contains(")"))
+ operationYAMLO.addStringToMap(NAME,YamlUtil.beforeChar(tmp,'('));
+ for(String tmp1 : YamlUtil.charParseIgnore(YamlUtil.extract('(', ')', tmp), ',', '<', '>'))
{
- operationYAMLO.addStringToMap(NAME,YamlUtil.beforeChar(tmp,'('));
- for(String tmp1 : YamlUtil.charParseIgnore(YamlUtil.extract('(', ')', tmp), ',', '<', '>'))
+ List<String> tmp2 = YamlUtil.charParse(tmp1,' ');
+ if(tmp2.size() == 2)
{
- List<String> tmp2 = YamlUtil.charParse(tmp1,' ');
- if(tmp2.size() == 2)
- {
- YamlObject parameterYAMLO = new YamlObject();
- parameterYAMLO.addStringToMap(TYPE, tmp2.get(0));
- parameterYAMLO.addStringToMap(NAME, tmp2.get(1));
- operationYAMLO.addYamlObjectToMap(PARAMETER, parameterYAMLO);
- }
+ YamlObject parameterYAMLO = new YamlObject();
+ parameterYAMLO.addStringToMap(TYPE, tmp2.get(0));
+ parameterYAMLO.addStringToMap(NAME, tmp2.get(1));
+ operationYAMLO.addYamlObjectToMap(PARAMETER, parameterYAMLO);
}
}
+ //operationPARSE.remove(tmp);
}
}
+
+ /*if(operationPARSE.size() > 1)
+ {
+ YamlObject returnParameterYAMLO = new YamlObject();
+ returnParameterYAMLO.addStringToMap(TYPE,operationPARSE.get(0));
+ operationYAMLO.addYamlObjectToMap(RETURN_PARAMETER,returnParameterYAMLO);
+ }*/
+
+ if(value != null)
+ {
+ YamlObject returnParameterYAMLO = new YamlObject();
+ returnParameterYAMLO.addStringToMap(TYPE,String.valueOf(value));
+ operationYAMLO.addYamlObjectToMap(RETURN_PARAMETER,returnParameterYAMLO);
+ }
}
public static void resolveImports(YamlObject modelYAMLO)
@@ -725,9 +921,18 @@
}
}
}
- if(importable.containsKeyMapStringListString(PARTICIPANT))
+ if(importable.containsKeyYamlMapStringListYamlObject(PARTICIPANT))
{
- ;//TODO
+ log("0");
+ for(YamlObject participantYAMLO : importable.getMapStringListYamlObject(PARTICIPANT))
+ {
+ log("1");
+ if(participantYAMLO.containsKeyMapStringListString(NAME))
+ {
+ log("2");
+ participantYAMLO.setMapStringListString(NAME,participantYAMLO.getFirstMapStringListString(NAME),resolveType(participantYAMLO.getFirstMapStringListString(NAME),imports));
+ }
+ }
}
}
}
@@ -736,7 +941,6 @@
//OK
public static String browseType(String type, Map<String,String> imports)
{
- //List<Map<String,List<Integer>>>
StringBuilder res = new StringBuilder();
boolean first = true;
for(String tmp : YamlUtil.charParseIgnore(type,',','<','>'))
@@ -793,7 +997,7 @@
//recuperer toyus les attributs dans une seule liste au lieu d'aller les chercher a chaque fois
public static void resolveLabels(YamlObject modelYAMLO)//reverseAttribute + Labels
{
- //test
+ //test variable global
Map<String,String> imports = new LinkedHashMap<String, String>();
String packageM = null;
if(modelYAMLO.containsKeyMapStringListString(PACKAGE))
@@ -894,17 +1098,14 @@
attribute.addStringToMap(REVERSE_ATTRIBUTE_NAME,reverseAttribute.getFirstMapStringListString(NAME));
}
}
- //methode getReverseAttribute(mode,type,label)
- //recuperer le reverse attribute
- //TODO
- //modelYAMLO.getFirstMapStringListYamlObject(YamlUtil.afterChar(type,'.')).get
- //for()
}
else//unidirectionnel
{
+ log("unidirectionnel");
YamlObject reverseObject = getReverseObject(modelYAMLO,YamlUtil.afterChar(type,'.'));
if(reverseObject != null)
{
+ log("reverseObject != null");
YamlObject reverseAttribute = new YamlObject();
reverseAttribute.addStringToMap(NAVIGABLE,String.valueOf(false));
reverseAttribute.addStringToMap(TYPE,imports.get(labelisable.getFirstMapStringListString(NAME)));
@@ -916,6 +1117,13 @@
{
reverseAttribute.addStringToMap(REVERSE_ATTRIBUTE_NAME,attribute.getFirstMapStringListString(NAME));
}
+ if(attribute.containsKeyMapStringListString(ORDERING))
+ {
+ reverseAttribute.addStringToMap(ORDERING,attribute.getFirstMapStringListString(ORDERING));
+ }
+ reverseObject.addYamlObjectToMap(ATTRIBUTE,reverseAttribute);
+
+ attribute.addStringToMap(NAVIGABLE,String.valueOf(true));
}
}
}
@@ -930,6 +1138,37 @@
}
}
}
+ if(labelisable.containsKeyYamlMapStringListYamlObject(PARTICIPANT))
+ {
+ log("0");
+ for(YamlObject participant : labelisable.getMapStringListYamlObject(PARTICIPANT))
+ {
+ if(participant.containsKeyMapStringListString(NAME))
+ {
+ log("1");
+ String name = participant.getFirstMapStringListString(NAME);
+ if(importsI.contains(name))//refClassifier
+ {
+ log("2");
+ if(participant.containsKeyMapStringListString(LABEL))
+ {
+ log("3");
+ String label = participant.getFirstMapStringListString(LABEL);
+ YamlObject reverseAttribute = getReverseAttribute(modelYAMLO,YamlUtil.afterChar(name,'.'),label);
+ if(reverseAttribute != null)
+ {
+ log("4");
+ if(labelisable.containsKeyMapStringListString(NAME))
+ {
+ log("5");
+ reverseAttribute.addStringToMap(ASSOCIATION_CLASS_NAME,labelisable.getFirstMapStringListString(NAME));
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
}
}
@@ -992,7 +1231,7 @@
imports.put("Map","java.util.Map");
String type = "Map<List<String>,List<String>>";
System.out.println(resolveType(type,imports));*/
- List<String> test = new LinkedList<String>();
+ /*List<String> test = new LinkedList<String>();
test.add("test1");
test.add("test2");
test.add("\"test3\"");
@@ -1000,6 +1239,6 @@
for(String str : test)
{
System.out.println(str);
- }
+ }*/
}
}
Modified: trunk/eugene-plantuml-templates/src/main/java/org/nuiton/eugene/plantuml/PlantumlTemplatesGenerator.java
===================================================================
--- trunk/eugene-plantuml-templates/src/main/java/org/nuiton/eugene/plantuml/PlantumlTemplatesGenerator.java 2013-06-07 09:30:56 UTC (rev 1267)
+++ trunk/eugene-plantuml-templates/src/main/java/org/nuiton/eugene/plantuml/PlantumlTemplatesGenerator.java 2013-06-07 15:58:50 UTC (rev 1268)
@@ -1,65 +1,24 @@
package org.nuiton.eugene.plantuml;
-/*
- * #%L
- * EUGene :: PlantUML templates
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2013 CodeLutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
import net.sourceforge.plantuml.GeneratedImage;
import net.sourceforge.plantuml.SourceFileReader;
-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.ObjectModelEnumeration;
-import org.nuiton.eugene.models.object.ObjectModelGenerator;
-import org.nuiton.eugene.models.object.ObjectModelInterface;
-import org.nuiton.eugene.models.object.ObjectModelOperation;
-import org.nuiton.eugene.models.object.ObjectModelParameter;
+import org.nuiton.eugene.models.object.*;
+import org.nuiton.eugene.models.object.xml.ObjectModelAssociationClassImpl;
+import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.Writer;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
+import java.io.*;
+import java.util.*;
-/**
- * TODO
- *
- * @author agiraudet
- * @plexus.component role="org.nuiton.eugene.Template" role-hint="org.nuiton.eugene.plantuml.PlantumlTemplatesGenerator"
- * @since 2.6.3
- */
+// http://maven-site.nuiton.org/eugene/objectmodel/ObjectModel_Interfaces.png
+//TODO : Plexus ?
+
public class PlantumlTemplatesGenerator extends ObjectModelGenerator {
private boolean _loginit = true;
-
private void log(String str) {
try {
FileWriter log;
- String path = "/tmp/log.yaml.txt";
+ String path = "/tmp/log.plantuml.txt";
if (_loginit) {
log = new FileWriter(path, false);
@@ -69,9 +28,7 @@
log = new FileWriter(path, true);
log.write("[LOG] " + str + "\n");
log.close();
- } catch (IOException e) {
- ;
- }
+ } catch (IOException e) {;}
}
@Override
@@ -81,167 +38,263 @@
// utiliser le systeme de templates a l'avenir
- Map<ObjectModelAttribute, ObjectModelClassifier> linksOME = new LinkedHashMap<ObjectModelAttribute, ObjectModelClassifier>();
+ Map<ObjectModelAttribute,ObjectModelClassifier> linksOME = new LinkedHashMap<ObjectModelAttribute, ObjectModelClassifier>();
// debut du fichier
output.write("@startuml\n\n");
// parcours des classes
- for (ObjectModelClass class_tmp : input.getClasses()) {
- // sale
+ for(ObjectModelClass class_tmp : input.getClasses())
+ {
String classStereotype = "";
- if (class_tmp.getStereotypes().size() > 0) {
+ if(class_tmp.getStereotypes().size()>0)
+ {
classStereotype = "<<";
boolean first = true;
- for (String str : class_tmp.getStereotypes()) {
- if (first) {
- classStereotype = classStereotype + str;
+ for(String str : class_tmp.getStereotypes())
+ {
+ if(first)
+ {
+ classStereotype = classStereotype+str;
first = false;
- } else {
- classStereotype = classStereotype + " ," + str;
}
+ else
+ {
+ classStereotype = classStereotype+" ,"+str;
+ }
}
- classStereotype = classStereotype + ">>";
+ classStereotype = classStereotype+">>";
}
- /*if(class_tmp.getStereotypes().contains("entity"))
- {
- classStereotype = " <<entity>>";
- }*/
String className = class_tmp.getName();
// ajout de la classe
- output.write("class " + className + classStereotype + " {\n");
+ output.write("class "+className+classStereotype+" {\n");
// parcours des attributs de la classe
- for (ObjectModelAttribute attribute_tmp : class_tmp.getAttributes()) {
+ for(ObjectModelAttribute attribute_tmp : class_tmp.getAttributes())
+ {
String attributeName = attribute_tmp.getName();
//String attributeType = afterLastPoint(attribute_tmp.getType());
String attributeType = attribute_tmp.getType();
// si l'attribut n'est lie a aucune classe
- if (attribute_tmp.referenceClassifier()) {
+ if(attribute_tmp.referenceClassifier())
+ {
// ajout du lien
- linksOME.put(attribute_tmp, class_tmp);
- } else {
+ linksOME.put(attribute_tmp,class_tmp);
+ }
+ else
+ {
// ajout de l'attribut
- output.write(" -" + attributeName + " : " + attributeType + "\n");
+ output.write(" -"+attributeName+" : "+attributeType+"\n");
}
}
// parcours des operations
- for (ObjectModelOperation operation_tmp : class_tmp.getOperations()) {
+ for(ObjectModelOperation operation_tmp : class_tmp.getOperations())
+ {
String operationName = operation_tmp.getName();
//String operationReturnType = afterLastPoint(operation_tmp.getReturnType());
String operationReturnType = operation_tmp.getReturnType();
// ajout de l'operation
- output.write(" +" + operationName + "(");
+ output.write(" +"+operationName+"(");
// parcours des parametres
boolean first = true;
- for (ObjectModelParameter param : operation_tmp.getParameters()) {
+ for(ObjectModelParameter param : operation_tmp.getParameters())
+ {
String parameterName = param.getName();
//String parameterType = afterLastPoint(param.getType());
String parameterType = param.getType();
- if (first) {
+ if(first)
+ {
first = false;
- } else {
+ }
+ else
+ {
output.write(", ");
}
// ajout du parametre
- output.write(parameterName + " : " + parameterType);
+ output.write(parameterName+" : "+parameterType);
}
// ajout du type de retour
- output.write(") : " + operationReturnType + "\n");// attention aux listes !
+ output.write(") : "+operationReturnType+"\n");// attention aux listes !
}
output.write("}\n\n");
}
// parcours des enumerations
- for (ObjectModelEnumeration enumeration_tmp : input.getEnumerations()) {
+ for(ObjectModelEnumeration enumeration_tmp : input.getEnumerations())
+ {
String enumerationName = enumeration_tmp.getName();
String enumerationStereotype = "";
- if (enumeration_tmp.getStereotypes().contains("entity")) {
- enumerationStereotype = " <<entity>>";
+ if(enumeration_tmp.getStereotypes().size()>0)
+ {
+ enumerationStereotype = "<<";
+ boolean first = true;
+ for(String str : enumeration_tmp.getStereotypes())
+ {
+ if(first)
+ {
+ enumerationStereotype = enumerationStereotype+str;
+ first = false;
+ }
+ else
+ {
+ enumerationStereotype = enumerationStereotype+" ,"+str;
+ }
+ }
+ enumerationStereotype = enumerationStereotype+">>";
}
// ajout de l'enumeration
- output.write("enum " + enumerationName + enumerationStereotype + " {\n");
+ output.write("enum "+enumerationName+enumerationStereotype+" {\n");
+ for(String literalOM : enumeration_tmp.getLiterals())
+ {
+ output.write(" "+literalOM.toUpperCase()+"\n");
+ }
output.write("}\n\n");
}
// parcours des interfaces
- for (ObjectModelInterface interface_tmp : input.getInterfaces()) {
+ for(ObjectModelInterface interface_tmp : input.getInterfaces())
+ {
String interfaceName = interface_tmp.getName();
String interfaceStereotype = "";
- if (interface_tmp.getStereotypes().contains("entity")) {
- interfaceStereotype = " <<entity>>";
+ if(interface_tmp.getStereotypes().size()>0)
+ {
+ interfaceStereotype = "<<";
+ boolean first = true;
+ for(String str : interface_tmp.getStereotypes())
+ {
+ if(first)
+ {
+ interfaceStereotype = interfaceStereotype+str;
+ first = false;
+ }
+ else
+ {
+ interfaceStereotype = interfaceStereotype+" ,"+str;
+ }
+ }
+ interfaceStereotype = interfaceStereotype+">>";
}
// ajout de l'interface
- output.write("interface " + interfaceName + interfaceStereotype + " {\n");
+ output.write("interface "+interfaceName+interfaceStereotype+" {\n");
// ajout des methodes
output.write("}\n\n");
}
//liaisons
- for (ObjectModelAttribute attribute_tmp : linksOME.keySet()) {
- if (attribute_tmp.isComposite() && attribute_tmp.referenceClassifier()) {
- output.write(linksOME.get(attribute_tmp).getName() + " *-- " + attribute_tmp.getClassifier().getName() + "\n");
- } else if (attribute_tmp.isAggregate() && attribute_tmp.referenceClassifier())//else if
+ for(ObjectModelAttribute attribute_tmp : linksOME.keySet())
+ {
+ //if(attribute_tmp.isNavigable())
{
- output.write(linksOME.get(attribute_tmp).getName() + " o-- " + attribute_tmp.getClassifier().getName() + "\n");
- } else if (!attribute_tmp.isNavigable() && attribute_tmp.referenceClassifier())//probleme avec les compositions et aggregations -> double lien
+ if(attribute_tmp.isComposite() && attribute_tmp.referenceClassifier())
+ {
+ output.write(linksOME.get(attribute_tmp).getName()+" *-- "+attribute_tmp.getClassifier().getName()+"\n");
+ }
+ else if(attribute_tmp.isAggregate() && attribute_tmp.referenceClassifier())//else if
+ {
+ output.write(linksOME.get(attribute_tmp).getName()+" o-- "+attribute_tmp.getClassifier().getName()+"\n");
+ }
+ else if(!attribute_tmp.isNavigable() && attribute_tmp.referenceClassifier())//probleme avec les compositions et aggregations -> double lien
+ {
+ output.write(attribute_tmp.getClassifier().getName()+" --> "+linksOME.get(attribute_tmp).getName()+"\n");
+ }
+ else if(attribute_tmp.isNavigable() && attribute_tmp.referenceClassifier())
+ {
+ output.write(attribute_tmp.getClassifier().getName()+" -- "+linksOME.get(attribute_tmp).getName()+"\n");
+ }
+ }
+ }
+
+ /*//test
+ for(ObjectModelClassifier class_tmp : input.getClassifiers())
+ {
+ log("name="+class_tmp.getName());
+ for(ObjectModelDependency dependency : class_tmp.getDependencies())
{
- output.write(attribute_tmp.getClassifier().getName() + " --> " + linksOME.get(attribute_tmp).getName() + "\n");
- } else if (attribute_tmp.isNavigable() && attribute_tmp.referenceClassifier()) {
- output.write(attribute_tmp.getClassifier().getName() + " -- " + linksOME.get(attribute_tmp).getName() + "\n");
+ log("dependency="+dependency.getName()+" client="+ dependency.getClient().getName()+" supplier="+dependency.getSupplier().getName());
}
+ if(class_tmp.getDeclaringElement() != null)
+ {
+ log("declaringElement="+class_tmp.getDeclaringElement().getName());
+ }
}
+ *///test
//classes d'association
- Map<String, LinkedList<String>> associationClass = new LinkedHashMap<String, LinkedList<String>>();
- for (ObjectModelClassifier classifier : input.getClassifiers()) {
- for (ObjectModelAttribute attribute : classifier.getAttributes()) {
- if (attribute.hasAssociationClass()) {
+ Map<String,LinkedList<String>> associationClass = new LinkedHashMap<String, LinkedList<String>>();
+ for(ObjectModelClassifier classifier : input.getClassifiers())
+ {
+ for(ObjectModelAttribute attribute : classifier.getAttributes())
+ {
+ if(attribute.hasAssociationClass())
+ {
String key = attribute.getAssociationClass().getName();
String value = classifier.getName();
- if (associationClass.containsKey(key)) {
+ if(associationClass.containsKey(key))
+ {
associationClass.get(key).add(value);
- } else {
- associationClass.put(key, new LinkedList<String>());
+ }
+ else
+ {
+ associationClass.put(key,new LinkedList<String>());
associationClass.get(key).add(value);
}
}
}
}
- for (Map.Entry<String, LinkedList<String>> entry : associationClass.entrySet()) {
+ for(Map.Entry<String,LinkedList<String>> entry : associationClass.entrySet())
+ {
boolean first = true;
output.write("(");
- for (String value : entry.getValue()) {
- if (first) {
+ for(String value : entry.getValue())
+ {
+ if(first)
+ {
output.write(value);
first = false;
- } else {
- output.write(", " + value);
+ }else
+ {
+ output.write(", "+value);
}
}
- output.write(") .. " + entry.getKey() + "\n");
+ output.write(") .. "+entry.getKey()+"\n");
}
//extensions/generalisations (heritage)
- for (ObjectModelClass classOM : input.getClasses()) {
- for (ObjectModelClass superClassOM : classOM.getSuperclasses()) {
- output.write(superClassOM.getName() + " <|-- " + classOM.getName());
+ for(ObjectModelClass classOM : input.getClasses())
+ {
+ for(ObjectModelClass superClassOM : classOM.getSuperclasses())
+ {
+ output.write(superClassOM.getName()+" <|-- "+classOM.getName()+"\n");
}
}
+ //realisations
+ for(ObjectModelClass classOM : input.getClasses())
+ {
+ for(ObjectModelInterface superInterfaceOM : classOM.getInterfaces())
+ {
+ output.write(superInterfaceOM.getName()+" <|.. "+classOM.getName()+"\n");
+ }
+ }
+
// fin du fichier
output.write("\n@enduml");
}
// exemple : afterLastPoint("org.nuiton.testeugene.generator") return "generator"
- public static String afterLastPoint(String input) {
+ public static String afterLastPoint(String input)
+ {
String str = new StringBuffer(input).reverse().toString();
String res = "";
- for (Character car : str.toCharArray()) {
- if (car.equals('.')) {
+ for(Character car : str.toCharArray())
+ {
+ if(car.equals('.'))
+ {
return res;
- } else {
- res = car.toString() + res;
}
+ else
+ {
+ res = car.toString()+res;
+ }
}
return res;
}
@@ -250,10 +303,10 @@
public void applyTemplate(ObjectModel model, File destDir) throws IOException {
super.applyTemplate(model, destDir);
try {
- File plantuml = new File(destDir + File.separator + this.getFilenameForModel(model));
+ File plantuml = new File(destDir+File.separator+this.getFilenameForModel(model));
SourceFileReader reader = new SourceFileReader(plantuml);
List<GeneratedImage> lst = reader.getGeneratedImages();
- new File(lst.get(0).getPngFile(), destDir + File.separator + model.getName() + ".png");
+ new File(lst.get(0).getPngFile(), destDir+File.separator+model.getName()+".png");
} catch (InterruptedException e) {
e.printStackTrace();
}
@@ -261,6 +314,6 @@
@Override
public String getFilenameForModel(ObjectModel model) {
- return model.getName() + ".plantuml";
+ return model.getName()+".plantuml";
}
}
1
0
r1267 - trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml
by agiraudet@users.nuiton.org 07 Jun '13
by agiraudet@users.nuiton.org 07 Jun '13
07 Jun '13
Author: agiraudet
Date: 2013-06-07 11:30:56 +0200 (Fri, 07 Jun 2013)
New Revision: 1267
Url: http://nuiton.org/projects/eugene/repository/revisions/1267
Log:
impl?\195?\169mentation de la syntaxe YAML user friendly (test)
Added:
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/Parser.java
Modified:
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/KeyWords.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/SyntaxePureYaml.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/TestLoadObjectModel.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/TestLoadYamlFile.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlObject.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlUtil.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/KeyWords.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/KeyWords.java 2013-05-31 15:50:13 UTC (rev 1266)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/KeyWords.java 2013-06-07 09:30:56 UTC (rev 1267)
@@ -22,6 +22,7 @@
public static final String IMPORTS = "imports";
public static final String INNER = "inner";
public static final String INTERFACE = "interface";
+ public static final String LABEL = "label";
public static final String LITERAL = "literal";
public static final String MAX_MULTIPLICITY = "maxmultiplicity";
public static final String MIN_MULTIPLICITY = "minmultiplicity";
@@ -33,6 +34,9 @@
public static final String PACKAGE = "package";
public static final String PARAMETER = "parameter";
public static final String PARTICIPANT = "participant";
+ public static final String PRIVATE = "private";
+ public static final String PROTECTED = "protected";
+ public static final String PUBLIC = "public";
public static final String RETURN_PARAMETER = "returnparameter";
public static final String REVERSE_ATTRIBUTE_NAME = "reverseattributename";
public static final String REVERSE_MAX_MULTIPLICITY = "reversemaxmultiplicity";
Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/Parser.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/Parser.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/Parser.java 2013-06-07 09:30:56 UTC (rev 1267)
@@ -0,0 +1,1005 @@
+package org.nuiton.eugene.models.object.reader.yaml;
+
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * User: agiraudet
+ * Date: 03/06/13
+ * Time: 09:56
+ */
+
+/**
+ * principe : recuperer Object, retourner YamlObject et resoudre YamlObject
+ *
+ * methode1 : syntaxe stricte, recuperer element en fonction de leur emplacement dans la liste et avec des contains ex: get(indexOf(truc)) ?
+ * methode2 : syntaxe moins restrictive, supprimer les élément et en déduir les restant
+ * methode3 : la methode3 (ninja hybride)
+ */
+public class Parser extends KeyWords {
+
+ private static boolean _loginit = true;
+ private static void log(String str) {
+ try {
+ FileWriter log;
+ String path = "/tmp/log.parser.txt";
+
+ if (_loginit) {
+ log = new FileWriter(path, false);
+ log.close();
+ _loginit = false;
+ }
+ log = new FileWriter(path, true);
+ log.write("[LOG] " + str + "\n");
+ log.close();
+ } catch (IOException e) {;}
+ }
+
+ public Parser()
+ {
+ ;
+ }
+
+ //TODO: ajouter le nom des Objects aux imports ! lors du parsage (imports internes)
+ //TODO: ajouter "imports" Map.Entity<Strign,List<String>>
+ //TODO: resoudre labels avant imports
+ //retourner YAMLO ou modifier YAMLO ?
+ //charger class, interface, associationClass ou enumeration
+ //it work !
+ public YamlObject parseModel(Object modelYAML, YamlObject modelYAMLO)
+ {
+ if(modelYAML instanceof Map)
+ {
+ for(Object entry : ((Map) modelYAML).entrySet())
+ {
+ if(entry instanceof Map.Entry)
+ {
+ String key = String.valueOf(((Map.Entry) entry).getKey());
+ Object value = ((Map.Entry) entry).getValue();
+ //TODO: 1/ containsKey + remove & for() sur le reste
+ if(key.equals(PACKAGE))
+ {
+ modelYAMLO.addStringToMap(PACKAGE,String.valueOf(value));
+ }
+
+ if(key.equals(NAME))
+ {
+ modelYAMLO.addStringToMap(NAME,String.valueOf(value));
+ }
+
+ if(key.equals(VERSION))
+ {
+ modelYAMLO.addStringToMap(VERSION,String.valueOf(value));
+ }
+
+ if(key.equals(IMPORTS))
+ {
+ if(value instanceof List)
+ {
+ for(Object imp : (List) value)
+ {
+ modelYAMLO.addStringToMap(IMPORTS,String.valueOf(imp));
+ }
+ }
+ }
+
+ List<String> tmp = YamlUtil.charParseIgnore(key,' ','<','>');
+ if(tmp.contains(CLASS))
+ { YamlObject classYAMLO = new YamlObject();
+ parseClass(key,value,classYAMLO);
+ modelYAMLO.addYamlObjectToMap(CLASS,classYAMLO);
+ }
+ else if(tmp.contains(INTERFACE))
+ {
+ YamlObject interfaceYAMLO = new YamlObject();
+ parseInterface(key,value,interfaceYAMLO);
+ modelYAMLO.addYamlObjectToMap(INTERFACE,interfaceYAMLO);
+ }
+ else if(tmp.contains(ASSOCIATION_CLASS))
+ {
+ YamlObject associationClassYAMLO = new YamlObject();
+ parseAssociationClass(key,value,associationClassYAMLO);
+ modelYAMLO.addYamlObjectToMap(ASSOCIATION_CLASS,associationClassYAMLO);
+ }
+ else if(tmp.contains(ENUMERATION))
+ {
+ YamlObject enumerationYAMLO = new YamlObject();
+ parseEnumeration(key,value,enumerationYAMLO);
+ modelYAMLO.addYamlObjectToMap(ENUMERATION,enumerationYAMLO);
+ }
+ }
+ }
+ }
+ return modelYAMLO;
+ }
+
+ //name, abstract, static, stereotypes, extern inner, atribute, operation et super classes et super interfaces
+ public void parseClass(String key, Object value, YamlObject classYAMLO)//classYAMLO
+ {
+ List<String> classPARSE = YamlUtil.charParseIgnore(key,' ','<','>');
+ if(classPARSE.contains(CLASS))
+ {
+ classPARSE.remove(classPARSE.indexOf(CLASS));
+ }
+ if(classPARSE.contains(ABSTRACT))
+ {
+ classYAMLO.addStringToMap(ABSTRACT,String.valueOf(true));
+ classPARSE.remove(classPARSE.indexOf(ABSTRACT));
+ }
+ if(classPARSE.contains(STATIC))
+ {
+ classYAMLO.addStringToMap(STATIC,String.valueOf(true));
+ classPARSE.remove(classPARSE.indexOf(STATIC));
+ }
+ if(classPARSE.contains(EXTERN))
+ {
+ classYAMLO.addStringToMap(EXTERN,String.valueOf(true));
+ classPARSE.remove(classPARSE.indexOf(EXTERN));
+ }
+ if(classPARSE.contains(INNER))
+ {
+ classYAMLO.addStringToMap(INNER,String.valueOf(true));
+ classPARSE.remove(classPARSE.indexOf(INNER));
+ }
+ if(classPARSE.contains(PUBLIC))
+ {
+ classYAMLO.addStringToMap(VISIBILITY,PUBLIC);
+ classPARSE.remove(classPARSE.indexOf(PUBLIC));
+ }
+ else if(classPARSE.contains(PRIVATE))
+ {
+ classYAMLO.addStringToMap(VISIBILITY,PRIVATE);
+ classPARSE.remove(classPARSE.indexOf(PRIVATE));
+ }
+ else if(classPARSE.contains(PROTECTED))
+ {
+ classYAMLO.addStringToMap(VISIBILITY,PROTECTED);
+ classPARSE.remove(classPARSE.indexOf(PROTECTED));
+ }
+
+ for(String tmp1 : classPARSE)
+ {
+ if(tmp1.contains("<<") && tmp1.contains(">>"))
+ {
+ List<Character> targets = new LinkedList<Character>();
+ targets.add('<');
+ targets.add('>');
+ String tmp2 = YamlUtil.removeMultiChar(tmp1, targets);
+ targets = new LinkedList<Character>();
+ targets.add(' ');
+ targets.add(',');
+ List<String> tmp3 = YamlUtil.multiCharParse(tmp2, targets);
+ for(String tmp4 : tmp3)
+ {
+ classYAMLO.addStringToMap(STEREOTYPES,tmp4);
+ log("stereotype="+tmp4);
+ }
+ }
+ }
+ if(classPARSE.size() > 0)//prend compte de l'ordre : nom avant stereotypes
+ {
+ classYAMLO.addStringToMap(NAME,classPARSE.get(0));
+ log("name="+classPARSE.get(0));
+ }
+
+ if(value instanceof Map)
+ {
+ for(Object entry : ((Map) value).entrySet())
+ {
+ if(entry instanceof Map.Entry)
+ {
+ String keyP = String.valueOf(((Map.Entry) entry).getKey());
+ Object valueP = ((Map.Entry) entry).getValue();
+
+ if(keyP.equals(SUPER_CLASSES))
+ {
+ if(valueP instanceof List)
+ {
+ for(Object superClass : (List) valueP)
+ {
+ //TODO: superClasses sur une ligne
+ classYAMLO.addStringToMap(SUPER_CLASSES,String.valueOf(superClass));
+ }
+ }
+ }
+ else if(keyP.equals(SUPER_INTERFACES))
+ {
+ if(valueP instanceof List)
+ {
+ for(Object superInterface : (List) valueP)
+ {
+ //TODO: superInterfaces sur une ligne
+ classYAMLO.addStringToMap(SUPER_INTERFACES,String.valueOf(superInterface));
+ }
+ }
+ }
+ else
+ {
+ if(keyP.contains("(") && keyP.contains(")"))
+ {
+ YamlObject operationYAMLO = new YamlObject();
+ parseOperation(keyP,valueP,operationYAMLO);
+ classYAMLO.addYamlObjectToMap(OPERATION,operationYAMLO);
+ }
+ else
+ {
+ YamlObject attributeYAMLO = new YamlObject();
+ parseAttribute(keyP,valueP,attributeYAMLO);
+ classYAMLO.addYamlObjectToMap(ATTRIBUTE,attributeYAMLO);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public void parseInterface(String key, Object value, YamlObject interfaceYAMLO)//enlever superflu
+ {
+ List<String> classPARSE = YamlUtil.charParseIgnore(key,' ','<','>');
+ if(classPARSE.contains(INTERFACE))
+ {
+ classPARSE.remove(classPARSE.indexOf(INTERFACE));
+ }
+ if(classPARSE.contains(ABSTRACT))
+ {
+ interfaceYAMLO.addStringToMap(ABSTRACT, String.valueOf(true));
+ classPARSE.remove(classPARSE.indexOf(ABSTRACT));
+ }
+ if(classPARSE.contains(STATIC))
+ {
+ interfaceYAMLO.addStringToMap(STATIC, String.valueOf(true));
+ classPARSE.remove(classPARSE.indexOf(STATIC));
+ }
+ if(classPARSE.contains(EXTERN))
+ {
+ interfaceYAMLO.addStringToMap(EXTERN, String.valueOf(true));
+ classPARSE.remove(classPARSE.indexOf(EXTERN));
+ }
+ if(classPARSE.contains(INNER))
+ {
+ interfaceYAMLO.addStringToMap(INNER, String.valueOf(true));
+ classPARSE.remove(classPARSE.indexOf(INNER));
+ }
+ if(classPARSE.contains(PUBLIC))
+ {
+ interfaceYAMLO.addStringToMap(VISIBILITY, PUBLIC);
+ classPARSE.remove(classPARSE.indexOf(PUBLIC));
+ }
+ else if(classPARSE.contains(PRIVATE))
+ {
+ interfaceYAMLO.addStringToMap(VISIBILITY, PRIVATE);
+ classPARSE.remove(classPARSE.indexOf(PRIVATE));
+ }
+ else if(classPARSE.contains(PROTECTED))
+ {
+ interfaceYAMLO.addStringToMap(VISIBILITY, PROTECTED);
+ classPARSE.remove(classPARSE.indexOf(PROTECTED));
+ }
+
+ for(String tmp1 : classPARSE)
+ {
+ if(tmp1.contains("<<") && tmp1.contains(">>"))
+ {
+ List<Character> targets = new LinkedList<Character>();
+ targets.add('<');
+ targets.add('>');
+ String tmp2 = YamlUtil.removeMultiChar(tmp1, targets);
+ targets = new LinkedList<Character>();
+ targets.add(' ');
+ targets.add(',');
+ List<String> tmp3 = YamlUtil.multiCharParse(tmp2, targets);
+ for(String tmp4 : tmp3)
+ {
+ interfaceYAMLO.addStringToMap(STEREOTYPES, tmp4);
+ log("stereotype="+tmp4);
+ }
+ }
+ }
+ if(classPARSE.size() > 0)//prend compte de l'ordre : nom avant stereotypes
+ {
+ interfaceYAMLO.addStringToMap(NAME, classPARSE.get(0));
+ log("name="+classPARSE.get(0));
+ }
+
+ if(value instanceof Map)
+ {
+ for(Object entry : ((Map) value).entrySet())
+ {
+ if(entry instanceof Map.Entry)
+ {
+ String keyP = String.valueOf(((Map.Entry) entry).getKey());
+ Object valueP = ((Map.Entry) entry).getValue();
+
+ if(keyP.equals(SUPER_CLASSES))
+ {
+ if(valueP instanceof List)
+ {
+ for(Object superClass : (List) valueP)
+ {
+ //TODO: superClasses sur une ligne
+ interfaceYAMLO.addStringToMap(SUPER_CLASSES, String.valueOf(superClass));
+ }
+ }
+ }
+ else if(keyP.equals(SUPER_INTERFACES))
+ {
+ if(valueP instanceof List)
+ {
+ for(Object superInterface : (List) valueP)
+ {
+ //TODO: superInterfaces sur une ligne
+ interfaceYAMLO.addStringToMap(SUPER_INTERFACES, String.valueOf(superInterface));
+ }
+ }
+ }
+ else
+ {
+ if(keyP.contains("(") && keyP.contains(")"))
+ {
+ YamlObject operationYAMLO = new YamlObject();
+ parseOperation(keyP,valueP,operationYAMLO);
+ interfaceYAMLO.addYamlObjectToMap(OPERATION, operationYAMLO);
+ }
+ else
+ {
+ YamlObject attributeYAMLO = new YamlObject();
+ parseAttribute(keyP,valueP,attributeYAMLO);
+ interfaceYAMLO.addYamlObjectToMap(ATTRIBUTE, attributeYAMLO);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ //
+ public void parseAssociationClass(String key, Object value, YamlObject associationClassYAMLO)//declarer participant attribut ?
+ {
+ parseClass(key,value,associationClassYAMLO);//non fonctionnel (remplacer CLASS par ASSOCIATION_CLASS)
+
+ //degolass'
+ if(value instanceof Map)
+ {
+ if(((Map) value).containsKey(PARTICIPANT))
+ {
+ if(((Map) value).get(PARTICIPANT) instanceof Map)
+ {
+ for(Object entry : ((Map) ((Map) value).get(PARTICIPANT)).entrySet())
+ {
+ if(entry instanceof Map.Entry)
+ {
+ //name: attribute
+ YamlObject participantYAMLO = new YamlObject();
+ participantYAMLO.addStringToMap(NAME, String.valueOf(((Map.Entry) entry).getKey()));
+ if(((Map.Entry) entry).getValue() != null)
+ {
+ participantYAMLO.addStringToMap(ATTRIBUTE,String.valueOf(((Map.Entry) entry).getValue()));
+ }
+ associationClassYAMLO.addYamlObjectToMap(PARTICIPANT,participantYAMLO);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public void parseEnumeration(String key, Object value, YamlObject enumerationYAMLO)
+ {
+ List<String> enumerationPARSE = YamlUtil.charParseIgnore(key,' ','<','>');
+ if(enumerationPARSE.contains(ENUMERATION))
+ {
+ enumerationPARSE.remove(enumerationPARSE.indexOf(ENUMERATION));
+ }
+ if(enumerationPARSE.contains(STATIC))
+ {
+ enumerationYAMLO.addStringToMap(STATIC,String.valueOf(true));
+ enumerationPARSE.remove(enumerationPARSE.indexOf(STATIC));
+ }
+
+ for(String tmp1 : enumerationPARSE)
+ {
+ if(tmp1.contains("<<") && tmp1.contains(">>"))
+ {
+ List<Character> targets = new LinkedList<Character>();
+ targets.add('<');
+ targets.add('>');
+ String tmp2 = YamlUtil.removeMultiChar(tmp1, targets);
+ targets = new LinkedList<Character>();
+ targets.add(' ');
+ targets.add(',');
+ List<String> tmp3 = YamlUtil.multiCharParse(tmp2, targets);
+ for(String tmp4 : tmp3)
+ {
+ enumerationYAMLO.addStringToMap(STEREOTYPES,tmp4);
+ log("stereotype="+tmp4);
+ }
+ }
+ }
+ if(enumerationPARSE.size() > 0)//prend compte de l'ordre : nom avant stereotypes
+ {
+ enumerationYAMLO.addStringToMap(NAME,enumerationPARSE.get(0));
+ log("name=" + enumerationPARSE.get(0));
+ }
+
+
+ ;//literal
+ }
+
+ //~ok, fonctionnel
+ public void parseAttribute(String key, Object value, YamlObject attributeYAMLO)
+ {
+ //TODO: defaultValue, multiplicity, associationType, reverse(multiplicity & attributeName)
+ List<String> attributePARSE = YamlUtil.charParseIgnore(key,' ','<','>');
+ log("key="+key);
+ log("keyPARSE="+attributePARSE);
+ if(attributePARSE.contains(STATIC))
+ {
+ attributeYAMLO.addStringToMap(STATIC,String.valueOf(true));
+ attributePARSE.remove(attributePARSE.indexOf(STATIC));
+ }
+ if(attributePARSE.contains(FINAL))
+ {
+ attributeYAMLO.addStringToMap(FINAL,String.valueOf(true));
+ attributePARSE.remove(attributePARSE.indexOf(FINAL));
+ }
+ if(attributePARSE.contains(ORDERED))
+ {
+ attributeYAMLO.addStringToMap(ORDERED,String.valueOf(true));
+ attributePARSE.remove(attributePARSE.indexOf(ORDERED));
+ }
+ if(attributePARSE.contains(UNIQUE))
+ {
+ attributeYAMLO.addStringToMap(UNIQUE,String.valueOf(true));
+ attributePARSE.remove(attributePARSE.indexOf(UNIQUE));
+ }
+ if(attributePARSE.contains(NAVIGABLE))
+ {
+ attributeYAMLO.addStringToMap(NAVIGABLE,String.valueOf(true));
+ attributePARSE.remove(attributePARSE.indexOf(NAVIGABLE));
+ }
+ if(attributePARSE.contains(TRANSIENT))
+ {
+ attributeYAMLO.addStringToMap(TRANSIENT,String.valueOf(true));
+ attributePARSE.remove(attributePARSE.indexOf(TRANSIENT));
+ }
+ if(attributePARSE.contains(PUBLIC))
+ {
+ attributeYAMLO.addStringToMap(VISIBILITY,PUBLIC);
+ attributePARSE.remove(attributePARSE.indexOf(PUBLIC));
+ }
+ else if(attributePARSE.contains(PROTECTED))
+ {
+ attributeYAMLO.addStringToMap(VISIBILITY,PROTECTED);
+ attributePARSE.remove(attributePARSE.indexOf(PUBLIC));
+ }
+ else if(attributePARSE.contains(PRIVATE))
+ {
+ attributeYAMLO.addStringToMap(VISIBILITY,PRIVATE);
+ attributePARSE.remove(attributePARSE.indexOf(PUBLIC));
+ }
+
+ for(String tmp1 : attributePARSE)
+ {
+ log("tmp1="+tmp1);
+ if(tmp1.contains("\""))//tester deux occurrences ?//remplacer label par reverseMultiplicity si lien unidirectionnel
+ {
+ String label = YamlUtil.extract('"',tmp1);
+ attributeYAMLO.addStringToMap(LABEL,label);
+ //attributePARSE.remove(tmp1);
+ log("label="+label);
+ }
+ else if(tmp1.contains("[") && tmp1.contains("]"))
+ {
+ String multiplicity = YamlUtil.extract('[',']',tmp1);
+ if(multiplicity.equals("*"))
+ {
+ attributeYAMLO.addStringToMap(MIN_MULTIPLICITY,"0");
+ attributeYAMLO.addStringToMap(MAX_MULTIPLICITY,"-1");
+ }
+ else if(multiplicity.contains(".."))
+ {
+ String min = YamlUtil.beforeChar(multiplicity,'.');
+ String max = YamlUtil.afterChar(multiplicity, '.');
+ if(min.equals("*"))
+ {
+ min = "-1";
+ }
+ if(max.equals("*"))
+ {
+ max = "-1";
+ }
+ attributeYAMLO.addStringToMap(MIN_MULTIPLICITY,min);
+ attributeYAMLO.addStringToMap(MAX_MULTIPLICITY,max);
+ }
+ //attributePARSE.remove(tmp1);
+ }
+ }
+
+ if(attributePARSE.size() > 0)//ajout type
+ {
+ attributeYAMLO.addStringToMap(TYPE,attributePARSE.get(0));
+ }
+ /*if(attributePARSE.size() > 1)//ajout name
+ {
+ attributeYAMLO.addStringToMap(NAME,attributePARSE.get(1));
+ }*/
+
+ if(value != null)
+ {
+ //attributeYAMLO.addStringToMap(DEFAULT_VALUE,String.valueOf(value));
+ attributeYAMLO.addStringToMap(NAME,String.valueOf(value));
+ }
+
+ //on parcours le reste on recherche les [] (multiplicity) et les "" (label)
+
+ }
+
+ //OK, fonctionnel : yeah ninja flex
+ //TODO: return Parameter après les : (value) ?
+ public void parseOperation(String key, Object value, YamlObject operationYAMLO)
+ {
+ log("operation=" + key);
+ List<Character> ignoreStart = new LinkedList<Character>();
+ ignoreStart.add('(');
+ ignoreStart.add('<');
+ List<Character> ignoreEnd = new LinkedList<Character>();
+ ignoreEnd.add(')');
+ ignoreEnd.add('>');
+ List<String> operationPARSE = YamlUtil.charParseMultiIgnore(key,' ',ignoreStart,ignoreEnd);
+
+ if(operationPARSE.contains(STATIC))
+ {
+ operationYAMLO.addStringToMap(STATIC,String.valueOf(true));
+ operationPARSE.remove(operationPARSE.indexOf(STATIC));
+ }
+ if(operationPARSE.contains(ABSTRACT))
+ {
+ operationYAMLO.addStringToMap(ABSTRACT,String.valueOf(true));
+ operationPARSE.remove(operationPARSE.indexOf(ABSTRACT));
+ }
+ if(operationPARSE.contains(PUBLIC))
+ {
+ operationYAMLO.addStringToMap(VISIBILITY,PUBLIC);
+ operationPARSE.remove(operationPARSE.indexOf(PUBLIC));
+ }
+ else if(operationPARSE.contains(PROTECTED))
+ {
+ operationYAMLO.addStringToMap(VISIBILITY,PROTECTED);
+ operationPARSE.remove(operationPARSE.indexOf(PROTECTED));
+ }
+ else if(operationPARSE.contains(PRIVATE))
+ {
+ operationYAMLO.addStringToMap(VISIBILITY,PRIVATE);
+ operationPARSE.remove(operationPARSE.indexOf(PRIVATE));
+ }
+ if(operationPARSE.size() > 1)
+ {
+ YamlObject returnParameterYAMLO = new YamlObject();
+ returnParameterYAMLO.addStringToMap(TYPE,operationPARSE.get(0));
+ operationYAMLO.addYamlObjectToMap(RETURN_PARAMETER,returnParameterYAMLO);
+
+ for(String tmp : operationPARSE)
+ {
+ if(tmp.contains("(") && tmp.contains(")"))
+ {
+ operationYAMLO.addStringToMap(NAME,YamlUtil.beforeChar(tmp,'('));
+ for(String tmp1 : YamlUtil.charParseIgnore(YamlUtil.extract('(', ')', tmp), ',', '<', '>'))
+ {
+ List<String> tmp2 = YamlUtil.charParse(tmp1,' ');
+ if(tmp2.size() == 2)
+ {
+ YamlObject parameterYAMLO = new YamlObject();
+ parameterYAMLO.addStringToMap(TYPE, tmp2.get(0));
+ parameterYAMLO.addStringToMap(NAME, tmp2.get(1));
+ operationYAMLO.addYamlObjectToMap(PARAMETER, parameterYAMLO);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public static void resolveImports(YamlObject modelYAMLO)
+ {
+ //List<String> imports = new LinkedList<String>();
+ Map<String,String> imports = new LinkedHashMap<String, String>();
+ if(modelYAMLO.containsKeyMapStringListString(IMPORTS))
+ {
+ for(String imp : modelYAMLO.getMapStringListString(IMPORTS))
+ {
+ imports.put(YamlUtil.afterChar(imp,'.'),imp);
+ }
+ }
+ //Objects importés: Attribute.Type SuperClasses SuperInterfaces AssociationClass.Participant.Name Parameter.Type(Operation(Class, AssociationClass(Classifier))
+ //recursivité pour Parameter et attribute ? Yeah
+ String packageM = null;
+ if(modelYAMLO.containsKeyMapStringListString(PACKAGE))
+ {
+ packageM = modelYAMLO.getFirstMapStringListString(PACKAGE);
+ }
+ for(Map.Entry<String,List<YamlObject>> entry : modelYAMLO.getMapStringListYamlObject().entrySet())
+ {
+ for(YamlObject importable : entry.getValue())
+ {
+ if(importable.containsKeyMapStringListString(NAME))
+ {
+ String name = importable.getFirstMapStringListString(NAME);
+ if(importable.containsKeyMapStringListString(PACKAGE))
+ {
+ imports.put(name,importable.getFirstMapStringListString(PACKAGE)+"."+name);
+ }
+ else if(packageM != null)
+ {
+ imports.put(name,packageM+"."+name);
+ }
+ }
+ }
+ }
+ for(Map.Entry<String,String> imp : imports.entrySet())
+ {
+ log("import="+imp.getKey()+":"+imp.getValue());
+ }
+
+ //remplacer types par imports complets
+ for(Map.Entry<String,List<YamlObject>> entry : modelYAMLO.getMapStringListYamlObject().entrySet())
+ {
+ for(YamlObject importable : entry.getValue())
+ {
+ if(importable.containsKeyMapStringListString(SUPER_CLASSES))
+ {
+ for(String value : importable.getMapStringListString(SUPER_CLASSES))
+ {
+ if(imports.containsKey(value))
+ {
+ importable.setMapStringListString(SUPER_CLASSES,value,imports.get(value));
+ log("imported="+value+":"+imports.get(value));
+ }
+ }
+ }
+ if(importable.containsKeyMapStringListString(SUPER_INTERFACES))
+ {
+ for(String value : importable.getMapStringListString(SUPER_INTERFACES))
+ {
+ if(imports.containsKey(value))
+ {
+ importable.setMapStringListString(SUPER_INTERFACES,value,imports.get(value));
+ log("imported="+value+":"+imports.get(value));
+ }
+ }
+ }
+ if(importable.containsKeyYamlMapStringListYamlObject(ATTRIBUTE))
+ {
+ log(" contains attributes");
+ for(YamlObject attributeYAMLO : importable.getMapStringListYamlObject(ATTRIBUTE))
+ {
+ log(" browse attributes");
+ if(attributeYAMLO.containsKeyMapStringListString(TYPE))
+ {
+ log(" contains type");
+ //if(imports.containsKey(attributeYAMLO.getFirstMapStringListString(TYPE)))
+ {
+ //attributeYAMLO.setMapStringListString(TYPE,attributeYAMLO.getFirstMapStringListString(TYPE),resolveType(imports.get(attributeYAMLO.getFirstMapStringListString(TYPE)),imports));
+ attributeYAMLO.setMapStringListString(TYPE,attributeYAMLO.getFirstMapStringListString(TYPE),resolveType(attributeYAMLO.getFirstMapStringListString(TYPE),imports));
+ log("imported=" + attributeYAMLO.getFirstMapStringListString(TYPE) + ":" + imports.get(attributeYAMLO.getFirstMapStringListString(TYPE)));//retourne null car la clef vient juste d'etre modifiee
+ }
+ }
+ }
+ }
+ if(importable.containsKeyYamlMapStringListYamlObject(OPERATION))
+ {
+ for(YamlObject operationYAMLO : importable.getMapStringListYamlObject(OPERATION))
+ {
+ if(operationYAMLO.containsKeyYamlMapStringListYamlObject(PARAMETER))
+ {
+ for(YamlObject parameterYAMLO : operationYAMLO.getMapStringListYamlObject(PARAMETER))
+ {
+ if(parameterYAMLO.containsKeyMapStringListString(TYPE))
+ {
+ //if(imports.containsKey(parameterYAMLO.getFirstMapStringListString(TYPE)))
+ {
+ //parameterYAMLO.setMapStringListString(TYPE,parameterYAMLO.getFirstMapStringListString(TYPE),resolveType(imports.get(parameterYAMLO.getFirstMapStringListString(TYPE)),imports));
+ parameterYAMLO.setMapStringListString(TYPE,parameterYAMLO.getFirstMapStringListString(TYPE),resolveType(parameterYAMLO.getFirstMapStringListString(TYPE),imports));
+
+ }
+ }
+ }
+ }
+ if(operationYAMLO.containsKeyYamlMapStringListYamlObject(RETURN_PARAMETER))
+ {
+ for(YamlObject parameterYAMLO : operationYAMLO.getMapStringListYamlObject(RETURN_PARAMETER))
+ {
+ if(parameterYAMLO.containsKeyMapStringListString(TYPE))
+ {
+ //if(imports.containsKey(parameterYAMLO.getFirstMapStringListString(TYPE)))
+ {
+ //parameterYAMLO.setMapStringListString(TYPE,parameterYAMLO.getFirstMapStringListString(TYPE),resolveType(imports.get(parameterYAMLO.getFirstMapStringListString(TYPE)),imports));
+ parameterYAMLO.setMapStringListString(TYPE,parameterYAMLO.getFirstMapStringListString(TYPE),resolveType(parameterYAMLO.getFirstMapStringListString(TYPE),imports));
+
+ }
+ }
+ }
+ }
+ }
+ }
+ if(importable.containsKeyMapStringListString(PARTICIPANT))
+ {
+ ;//TODO
+ }
+ }
+ }
+ }
+
+ //OK
+ public static String browseType(String type, Map<String,String> imports)
+ {
+ //List<Map<String,List<Integer>>>
+ StringBuilder res = new StringBuilder();
+ boolean first = true;
+ for(String tmp : YamlUtil.charParseIgnore(type,',','<','>'))
+ {
+ if(first)//String || List<>
+ {
+ first = false;
+ }
+ else
+ {
+ res.append(",");
+ }
+ if(tmp.contains("<") && tmp.contains(">"))
+ {
+ String ninja = YamlUtil.beforeChar(tmp,'<');
+ if(imports.containsKey(ninja))
+ {
+ res.append(imports.get(ninja));
+ }
+ else
+ {
+ res.append(tmp);
+ }
+ res.append("<");
+ res.append(browseType(YamlUtil.extract('<','>',tmp),imports));
+ res.append(">");
+ }
+ else
+ {
+ if(imports.containsKey(tmp))
+ {
+ res.append(imports.get(tmp));
+ }
+ else
+ {
+ res.append(tmp);
+ }
+ }
+ }
+ return res.toString();
+ /*String ninja = YamlUtil.beforeChar(type,'<');
+ String flex = browseType(YamlUtil.extract('<','>',type),imports);
+ return ninja+flex;//gerer ',' multi parse fuck yeah*/
+ }
+ //OK
+ public static String resolveType(String type, Map<String,String> imports)
+ {
+ List<Character> ignore = new LinkedList<Character>();
+ ignore.add(' ');
+ String typePARSE = YamlUtil.removeMultiChar(type,ignore);
+ return browseType(typePARSE,imports);
+ }
+
+ //recuperer toyus les attributs dans une seule liste au lieu d'aller les chercher a chaque fois
+ public static void resolveLabels(YamlObject modelYAMLO)//reverseAttribute + Labels
+ {
+ //test
+ Map<String,String> imports = new LinkedHashMap<String, String>();
+ String packageM = null;
+ if(modelYAMLO.containsKeyMapStringListString(PACKAGE))
+ {
+ packageM = modelYAMLO.getFirstMapStringListString(PACKAGE);
+ }
+ for(Map.Entry<String,List<YamlObject>> entry : modelYAMLO.getMapStringListYamlObject().entrySet())
+ {
+ for(YamlObject importable : entry.getValue())
+ {
+ if(importable.containsKeyMapStringListString(NAME))
+ {
+ String name = importable.getFirstMapStringListString(NAME);
+ if(importable.containsKeyMapStringListString(PACKAGE))
+ {
+ imports.put(name,importable.getFirstMapStringListString(PACKAGE)+"."+name);
+ }
+ else if(packageM != null)
+ {
+ imports.put(name,packageM+"."+name);
+ }
+ }
+ }
+ }
+ //test
+
+
+ List<String> importsI = new LinkedList<String>();
+ //String packageM = null;
+ if(modelYAMLO.containsKeyMapStringListString(PACKAGE))
+ {
+ packageM = modelYAMLO.getFirstMapStringListString(PACKAGE);
+ }
+ for(Map.Entry<String,List<YamlObject>> entry : modelYAMLO.getMapStringListYamlObject().entrySet())
+ {
+ for(YamlObject importable : entry.getValue())
+ {
+ if(importable.containsKeyMapStringListString(NAME))
+ {
+ String name = importable.getFirstMapStringListString(NAME);
+ if(importable.containsKeyMapStringListString(PACKAGE))
+ {
+ importsI.add(importable.getFirstMapStringListString(PACKAGE)+"."+name);
+ }
+ else if(packageM != null)
+ {
+ importsI.add(packageM+"."+name);
+ }
+ }
+ }
+ }
+
+ //recuperer imports internes
+ //if reference class interne et navigable (ou ! navigable=false)
+ //if label -> chercher reverse attribute
+ //else ajouter attribut navigable=false
+ //+ bricoler nom
+ for(List<YamlObject> objectYAMLO : modelYAMLO.getMapStringListYamlObject().values())
+ {
+ for(YamlObject labelisable : objectYAMLO)
+ {
+ if(labelisable.containsKeyYamlMapStringListYamlObject(ATTRIBUTE))
+ {
+ for(YamlObject attribute : labelisable.getMapStringListYamlObject(ATTRIBUTE))
+ {
+ if(attribute.containsKeyMapStringListString(TYPE))
+ {
+ String type = attribute.getFirstMapStringListString(TYPE);
+ log("type="+type);
+ if(importsI.contains(type))//refClassifier
+ {
+ //pas encore passé par la//osef composite
+ if(!attribute.containsKeyMapStringListString(NAVIGABLE))
+ {
+ if(attribute.containsKeyMapStringListString(LABEL))//bidirectionnel, recup reverse maxMultiplicity, reverseAttributeName et setNavigable(true)
+ {
+ String label = attribute.getFirstMapStringListString(LABEL);
+ log("label="+label);
+ YamlObject reverseAttribute = getReverseAttribute(modelYAMLO,YamlUtil.afterChar(type,'.'),label);
+ if(reverseAttribute != null)
+ {
+ attribute.addStringToMap(NAVIGABLE,String.valueOf(true));
+ reverseAttribute.addStringToMap(NAVIGABLE,String.valueOf(true));
+ if(attribute.containsKeyMapStringListString(MAX_MULTIPLICITY))
+ {
+ reverseAttribute.addStringToMap(REVERSE_MAX_MULTIPLICITY,attribute.getFirstMapStringListString(MAX_MULTIPLICITY));
+ }
+ if(reverseAttribute.containsKeyMapStringListString(MAX_MULTIPLICITY))
+ {
+ attribute.addStringToMap(REVERSE_MAX_MULTIPLICITY,reverseAttribute.getFirstMapStringListString(MAX_MULTIPLICITY));
+ }
+ if(attribute.containsKeyMapStringListString(NAME))
+ {
+ reverseAttribute.addStringToMap(REVERSE_ATTRIBUTE_NAME,attribute.getFirstMapStringListString(NAME));
+ }
+ if(reverseAttribute.containsKeyMapStringListString(NAME))
+ {
+ attribute.addStringToMap(REVERSE_ATTRIBUTE_NAME,reverseAttribute.getFirstMapStringListString(NAME));
+ }
+ }
+ //methode getReverseAttribute(mode,type,label)
+ //recuperer le reverse attribute
+ //TODO
+ //modelYAMLO.getFirstMapStringListYamlObject(YamlUtil.afterChar(type,'.')).get
+ //for()
+ }
+ else//unidirectionnel
+ {
+ YamlObject reverseObject = getReverseObject(modelYAMLO,YamlUtil.afterChar(type,'.'));
+ if(reverseObject != null)
+ {
+ YamlObject reverseAttribute = new YamlObject();
+ reverseAttribute.addStringToMap(NAVIGABLE,String.valueOf(false));
+ reverseAttribute.addStringToMap(TYPE,imports.get(labelisable.getFirstMapStringListString(NAME)));
+ if(attribute.containsKeyMapStringListString(MAX_MULTIPLICITY))
+ {
+ reverseAttribute.addStringToMap(REVERSE_MAX_MULTIPLICITY,attribute.getFirstMapStringListString(MAX_MULTIPLICITY));
+ }
+ if(attribute.containsKeyMapStringListString(NAME))
+ {
+ reverseAttribute.addStringToMap(REVERSE_ATTRIBUTE_NAME,attribute.getFirstMapStringListString(NAME));
+ }
+ }
+ }
+ }
+ }
+ else//simple attribut
+ {
+ ;//ou gerer par valeurs par defaut ?
+ //associationType="composite"//default eugene
+ //minMultiplicity="1"//default eugene
+ //maxMultiplicity="1"//default eugene
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public static YamlObject getReverseAttribute(YamlObject model, String type, String label)
+ {
+ for(List<YamlObject> objectsYAMLO : model.getMapStringListYamlObject().values())
+ {
+ for(YamlObject objectYAMLO : objectsYAMLO)
+ {
+ if(objectYAMLO.containsKeyMapStringListString(NAME))
+ {
+ String name = objectYAMLO.getFirstMapStringListString(NAME);
+ if(name.equals(type))
+ {
+ if(objectYAMLO.containsKeyYamlMapStringListYamlObject(ATTRIBUTE))
+ {
+ for(YamlObject attributeYAMLO : objectYAMLO.getMapStringListYamlObject(ATTRIBUTE))
+ {
+ if(attributeYAMLO.containsKeyMapStringListString(LABEL))
+ {
+ String reverseLabel = attributeYAMLO.getFirstMapStringListString(LABEL);
+ if(reverseLabel.equals(label))
+ {
+ return attributeYAMLO;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ public static YamlObject getReverseObject(YamlObject model, String type)
+ {
+ for(List<YamlObject> objectsYAMLO : model.getMapStringListYamlObject().values())
+ {
+ for(YamlObject objectYAMLO : objectsYAMLO)
+ {
+ if(objectYAMLO.containsKeyMapStringListString(NAME))
+ {
+ String name = objectYAMLO.getFirstMapStringListString(NAME);
+ if(name.equals(type))
+ {
+ return objectYAMLO;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ public static void main(String[] args) {
+ /*Map<String,String> imports = new LinkedHashMap<String, String>();
+ imports.put("String","java.lang.String");
+ imports.put("List","java.util.List");
+ imports.put("Map","java.util.Map");
+ String type = "Map<List<String>,List<String>>";
+ System.out.println(resolveType(type,imports));*/
+ List<String> test = new LinkedList<String>();
+ test.add("test1");
+ test.add("test2");
+ test.add("\"test3\"");
+ test.remove(test.indexOf("test2"));
+ for(String str : test)
+ {
+ System.out.println(str);
+ }
+ }
+}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/SyntaxePureYaml.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/SyntaxePureYaml.java 2013-05-31 15:50:13 UTC (rev 1266)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/SyntaxePureYaml.java 2013-06-07 09:30:56 UTC (rev 1267)
@@ -13,19 +13,19 @@
//TODO: interface Syntaxe ou classe abstraite (appel l'operation suivante : charger l'ObjectModel)
//key.toLowerCase() ?
public class SyntaxePureYaml {
-
+ /*
public static void loadModelYaml(Object modelYAML, YamlObject modelYAMLO)
{
- loadYamlObject(modelYAML, modelYAMLO, "model");
+ loadYamlObject(modelYAML, modelYAMLO);
}
-
- public static void loadYamlObject(Object objectYaml, YamlObject modelYaml, String previous)
+ */
+ public static void loadYamlObject(Object objectYaml, YamlObject modelYaml)
{
if(objectYaml instanceof List)
{
for(Object tmp1 : (List) objectYaml)
{
- loadYamlObject(tmp1, modelYaml, previous);
+ loadYamlObject(tmp1, modelYaml);
}
}
else if(objectYaml instanceof Map)
@@ -35,7 +35,7 @@
if(((Map.Entry) tmp1).getValue() instanceof List || ((Map.Entry) tmp1).getValue() instanceof Map)
{
YamlObject tmp2 = new YamlObject();
- loadYamlObject(((Map.Entry) tmp1).getValue(),tmp2,String.valueOf(((Map.Entry) tmp1).getKey()).toLowerCase());
+ loadYamlObject(((Map.Entry) tmp1).getValue(),tmp2);
modelYaml.addYamlObjectToMap(String.valueOf(((Map.Entry) tmp1).getKey()).toLowerCase(),tmp2);
}
else
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/TestLoadObjectModel.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/TestLoadObjectModel.java 2013-05-31 15:50:13 UTC (rev 1266)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/TestLoadObjectModel.java 2013-06-07 09:30:56 UTC (rev 1267)
@@ -263,10 +263,10 @@
List<String> superInterfacesYAMLO = classifierYAMLO.getMapStringListString(SUPER_INTERFACES);
for(String superInterfaceYAMLO : superInterfacesYAMLO)
{
- log(" SUPER_INTERFACE");
ObjectModelImplRef superInterfaceOM = new ObjectModelImplRef();
superInterfaceOM.setName(superInterfaceYAMLO);
classifierOM.addInterface(superInterfaceOM);
+ log("superInterface="+superInterfaceYAMLO);
}
}
@@ -288,10 +288,10 @@
List<String> superClassesYAMLO = classYAMLO.getMapStringListString(SUPER_CLASSES);
for(String superClassYAMLO : superClassesYAMLO)
{
- ObjectModelImplRef superClassOM = new ObjectModelImplRef();
+ ObjectModelImplSuperClassRef superClassOM = new ObjectModelImplSuperClassRef();
superClassOM.setName(superClassYAMLO);
- classOM.addInterface(superClassOM);
- log("superClasses="+classOM.getSuperclasses());
+ classOM.addSuperclass(superClassOM);
+ log("superClasses="+superClassYAMLO);
}
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/TestLoadYamlFile.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/TestLoadYamlFile.java 2013-05-31 15:50:13 UTC (rev 1266)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/TestLoadYamlFile.java 2013-06-07 09:30:56 UTC (rev 1267)
@@ -25,6 +25,23 @@
String syntaxeVersion;//version de la synatxe
String defaultVersion;//version des valeurs par defaut
+ private boolean _loginit = true;
+ private void log(String str) {
+ try {
+ FileWriter log;
+ String path = "/tmp/log.loadfile.txt";
+
+ if (_loginit) {
+ log = new FileWriter(path, false);
+ log.close();
+ _loginit = false;
+ }
+ log = new FileWriter(path, true);
+ log.write("[LOG] " + str + "\n");
+ log.close();
+ } catch (IOException e) {;}
+ }
+
public TestLoadYamlFile()
{
yaml = new Yaml();
@@ -38,33 +55,57 @@
inputModel.close();
//chercher version et charger en conséquent
- syntaxeVersion="1";
- defaultVersion="0";
+ Object version = null;
if(modelYAML instanceof List)
{
- Object version = YamlUtil.collectElement((List) modelYAML, SYNTAXE);
- if(version != null)
- {
- syntaxeVersion = YamlUtil.beforeChar(String.valueOf(version),'.');
- defaultVersion = YamlUtil.afterChar(String.valueOf(version),'.');
- }
+ version = YamlUtil.collectElementList((List) modelYAML, SYNTAXE);
+ syntaxeVersion = "1";
+ defaultVersion = "0";
+ log("modelYAML instanceof List");
}
+ if(modelYAML instanceof Map)
+ {
+ version = YamlUtil.collectElementMap((Map) modelYAML, SYNTAXE);
+ syntaxeVersion = "2";
+ defaultVersion = "0";
+ log("modelYAML instanceof Map");
+ }
+ else
+ {
+ syntaxeVersion = "0";
+ defaultVersion = "0";
+ log("modelYAML instanceof unknow");
+ }
+ if(version != null)
+ {
+ syntaxeVersion = YamlUtil.beforeChar(String.valueOf(version),'.');
+ defaultVersion = YamlUtil.afterChar(String.valueOf(version),'.');
+ log("version="+syntaxeVersion+"."+defaultVersion);
+ }
+
if(syntaxeVersion.equals("1"))
{
- SyntaxePureYaml.loadModelYaml(modelYAML, modelYAMLO);
+ SyntaxePureYaml.loadYamlObject(modelYAML, modelYAMLO);
+ log("load SyntaxePureYaml");
}
else if(syntaxeVersion.equals("2"))
{
- ;//syntaxe user firendly : coming soon
+ //syntaxe user firendly : coming soon
+ Parser test = new Parser();
+ test.parseModel(modelYAML, modelYAMLO);
+ Parser.resolveImports(modelYAMLO);
+ Parser.resolveLabels(modelYAMLO);
+ log("load SyntaxeUserFriendly");
}
else
{
;//syntaxe par defaut, si version syntaxe non reconnue
- SyntaxePureYaml.loadModelYaml(modelYAML, modelYAMLO);
+ SyntaxePureYaml.loadYamlObject(modelYAML, modelYAMLO);
}
TestLoadObjectModel test = new TestLoadObjectModel();
test.loadModel(modelYAMLO,modelOM);
+ log("END");
//TODO: charger ObjectModel avec les valeurs par defaut en fonction de la version (ajouter parametre à loadModel)
}
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlObject.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlObject.java 2013-05-31 15:50:13 UTC (rev 1266)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlObject.java 2013-06-07 09:30:56 UTC (rev 1267)
@@ -146,6 +146,32 @@
return mapStringListString;
}
+ public boolean setMapStringListString(String key, String value, String element)
+ {
+ if(mapStringListString.containsKey(key))
+ {
+ if(mapStringListString.get(key).contains(value))
+ {
+ mapStringListString.get(key).set(mapStringListString.get(key).indexOf(value),element);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public boolean setMapStringListYamlObject(String key, YamlObject value, YamlObject element)
+ {
+ if(mapStringListYamlObject.containsKey(key))
+ {
+ if(mapStringListYamlObject.get(key).contains(value))
+ {
+ mapStringListYamlObject.get(key).set(mapStringListYamlObject.get(key).indexOf(value),element);
+ return true;
+ }
+ }
+ return false;
+ }
+
public boolean removeMapStringListString(String key, String value)
{
if(mapStringListString.containsKey(key))
@@ -214,7 +240,12 @@
{
for(YamlObject yobj : entry.getValue())
{
- res.append(indentation).append(entry.getKey()).append(":\n").append(yobj.toString( " "+indentation)).append("\n");
+ //test temporaire
+ if(yobj != null)
+ {
+ res.append(indentation).append(entry.getKey()).append(":\n").append(yobj.toString( " "+indentation)).append("\n");
+ }
+ //test
}
}
return res.toString();
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlUtil.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlUtil.java 2013-05-31 15:50:13 UTC (rev 1266)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlUtil.java 2013-06-07 09:30:56 UTC (rev 1267)
@@ -61,7 +61,7 @@
return out.reverse().toString();
}
- public static Object collectElement(List data, Object key) {
+ public static Object collectElementList(List data, Object key) {
for (Object obj : data) {
if (obj instanceof Map) {
if (((Map) obj).containsKey(key)) {
@@ -72,7 +72,7 @@
return null;
}
- public static List<Object> collectAllElements(List data, Object key) {
+ public static List<Object> collectAllElementsList(List data, Object key) {
List<Object> res = new LinkedList<Object>();
for (Object obj : data) {
if (obj instanceof Map) {
@@ -83,4 +83,250 @@
}
return res;
}
+
+ public static Object collectElementMap(Map data, Object key)
+ {
+ if(data.containsKey(key))
+ {
+ return data.get(key);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ // fonctionnel/robuste/optimise
+ public static List<String> charParse(String str, Character target)
+ {
+ LinkedList<String> res = new LinkedList<String>();
+ StringBuilder tmp = new StringBuilder(str.length()+1);//+1 utile en Java ? != C
+ boolean pre = false;
+ for(Character c : str.toCharArray())
+ {
+ if(c.equals(target))
+ {
+ if(pre)
+ {
+ res.add(tmp.toString());
+ }
+ tmp.delete(0,tmp.length());
+ pre = false;
+ }
+ else
+ {
+ tmp.append(c);
+ pre = true;
+ }
+ }
+ if(pre)
+ {
+ res.add(tmp.toString());
+ }
+ return res;
+ }
+
+ // fonctionnel/robuste/optimise
+ public static List<String> multiCharParse(String str, List<Character> targets)
+ {
+ LinkedList<String> res = new LinkedList<String>();
+ StringBuilder tmp = new StringBuilder(str.length()+1);//+1 utile en Java ? != C
+ boolean pre = false;
+ for(Character c : str.toCharArray())
+ {
+ if(targets.contains(c))
+ {
+ if(pre)
+ {
+ res.add(tmp.toString());
+ }
+ tmp.delete(0,tmp.length());
+ pre = false;
+ }
+ else
+ {
+ tmp.append(c);
+ pre = true;
+ }
+ }
+ if(pre)
+ {
+ res.add(tmp.toString());
+ }
+ return res;
+ }
+
+ public static List<String> charParseIgnore(String str, Character target, Character ignoreStart, Character ignoreEnd)
+ {
+ LinkedList<String> res = new LinkedList<String>();
+ StringBuilder tmp = new StringBuilder(str.length()+1);//+1 utile en Java ? != C
+ boolean pre = false;
+ int ign = 0;//parentheses ouvertes
+ for(Character c : str.toCharArray())
+ {
+ if(c.equals(ignoreStart))
+ {
+ ign++;
+ tmp.append(c);
+ }
+ else if(c.equals(ignoreEnd))
+ {
+ ign--;
+ tmp.append(c);
+ }
+ else if(c.equals(target) && ign < 1)
+ {
+ if(pre)
+ {
+ res.add(tmp.toString());
+ }
+ tmp.delete(0,tmp.length());
+ pre = false;
+ }
+ else
+ {
+ tmp.append(c);
+ pre = true;
+ }
+ }
+ if(pre)
+ {
+ res.add(tmp.toString());
+ }
+ return res;
+ }
+
+ public static List<String> charParseMultiIgnore(String str, Character target, List<Character> ignoreStart, List<Character> ignoreEnd)
+ {
+ LinkedList<String> res = new LinkedList<String>();
+ StringBuilder tmp = new StringBuilder(str.length()+1);//+1 utile en Java ? != C
+ boolean pre = false;
+ int ign = 0;//parentheses ouvertes
+ for(Character c : str.toCharArray())
+ {
+ if(ignoreStart.contains(c))
+ {
+ ign++;
+ tmp.append(c);
+ }
+ else if(ignoreEnd.contains(c))
+ {
+ ign--;
+ tmp.append(c);
+ }
+ else if(c.equals(target) && ign < 1)
+ {
+ if(pre)
+ {
+ res.add(tmp.toString());
+ }
+ tmp.delete(0,tmp.length());
+ pre = false;
+ }
+ else
+ {
+ tmp.append(c);
+ pre = true;
+ }
+ }
+ if(pre)
+ {
+ res.add(tmp.toString());
+ }
+ return res;
+ }
+
+ public static String removeMultiChar(String str, List<Character> targets)
+ {
+ StringBuilder res = new StringBuilder(str.length()+1);
+ for(Character c : str.toCharArray())
+ {
+ if(!targets.contains(c))
+ {
+ res.append(c);
+ }
+ }
+ return res.toString();
+ }
+
+ public static String extract(Character start, Character end, String str)
+ {
+ StringBuilder tmp = new StringBuilder(str.length()+1);
+ boolean start_end = false;
+ int count = 0;
+ for(Character c : str.toCharArray())
+ {
+ if(!start_end && c.equals(start))
+ {
+ start_end = true;
+ }
+ else if(start_end && c.equals(start))
+ {
+ count++;
+ tmp.append(c);
+ }
+ else if(start_end && c.equals(end))
+ {
+ if(count>0)
+ {
+ count--;
+ tmp.append(c);
+ }
+ else
+ {
+ return tmp.toString();
+ }
+ }
+ else if(start_end)
+ {
+ tmp.append(c);
+ }
+ }
+ return null;
+ }
+
+ public static String extract(Character startend, String str)
+ {
+ StringBuilder tmp = new StringBuilder(str.length()+1);
+ boolean start_end = false;
+ for(Character c : str.toCharArray())
+ {
+ if(!start_end && c.equals(startend))
+ {
+ start_end = true;
+ }
+ else if(start_end && c.equals(startend))
+ {
+ return tmp.toString();
+ }
+ else if(start_end)
+ {
+ tmp.append(c);
+ }
+ }
+ return null;
+ }
+
+ public static void main(String[] args) {
+ /*List<Character> ignoreStart = new LinkedList<Character>();
+ ignoreStart.add('(');
+ ignoreStart.add('<');
+ List<Character> ignoreEnd = new LinkedList<Character>();
+ ignoreEnd.add(')');
+ ignoreEnd.add('>');
+ List<String> tmp = charParseMultiIgnore("public Map<Integer, String> Somme(List<String> bonjour, int y)",' ',ignoreStart,ignoreEnd);
+ for(String str : tmp)
+ {
+ System.out.println(str);
+ }*/
+ //System.out.println(beforeChar("11..**",'.'));
+ //System.out.println(afterChar("11..**",'.'));
+ //System.out.println(afterChar("java.lang.String",'.'));
+ List<String> test = charParseIgnore("Map<String,String,String>",',','<','>');
+ for(String str : test)
+ {
+ System.out.println(str);
+ }
+ System.out.println(extract('<','>',"<<<>>>"));
+ }
}
1
0
r1266 - in trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader: . yaml
by agiraudet@users.nuiton.org 31 May '13
by agiraudet@users.nuiton.org 31 May '13
31 May '13
Author: agiraudet
Date: 2013-05-31 17:50:13 +0200 (Fri, 31 May 2013)
New Revision: 1266
Url: http://nuiton.org/projects/eugene/repository/revisions/1266
Log:
impl?\195?\169mentation d'une nouvelle architecture pour g?\195?\169n?\195?\169rer l'ObjectModel ?\195?\160 partir d'un fichier YAML (plus modulaire)
ajout du YamlObject: objet de transition entre le fichier YAML et l'ObjectModel
Added:
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/KeyWords.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/SyntaxePureYaml.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/SyntaxeUserFriendly.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/TestLoadObjectModel.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/TestLoadYamlFile.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlObject.java
Modified:
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/YamlObjectModelReader.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlToObjectModel.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlUtil.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/YamlObjectModelReader.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/YamlObjectModelReader.java 2013-05-29 10:08:59 UTC (rev 1265)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/YamlObjectModelReader.java 2013-05-31 15:50:13 UTC (rev 1266)
@@ -29,6 +29,7 @@
import org.apache.commons.logging.LogFactory;
import org.nuiton.eugene.ModelHelper;
import org.nuiton.eugene.models.object.ObjectModel;
+import org.nuiton.eugene.models.object.reader.yaml.TestLoadYamlFile;
import org.nuiton.eugene.models.object.reader.yaml.YamlToObjectModel;
import org.yaml.snakeyaml.error.YAMLException;
@@ -45,7 +46,8 @@
public class YamlObjectModelReader extends AbstractObjectModelReader {
private static final Log log = LogFactory.getLog(YamlObjectModelReader.class);
- protected YamlToObjectModel yamlToObjectModel;
+ //protected YamlToObjectModel yamlToObjectModel;
+ protected TestLoadYamlFile test;
@Override
public String getInputType() {
@@ -55,13 +57,15 @@
@Override
protected void beforeReadFile(File... files) {
super.beforeReadFile(files);
- yamlToObjectModel = new YamlToObjectModel();
+ //yamlToObjectModel = new YamlToObjectModel();
+ test = new TestLoadYamlFile();
}
@Override
protected void readFileToModel(File file, ObjectModel model) throws IOException {
try {
- yamlToObjectModel.loadFile(file,model);
+ //yamlToObjectModel.loadFile(file,model);
+ test.LoadYamlFile(file,model);
} catch (YAMLException e) {
throw new IOException("Unable to parse ObjectModel input file : " + file, e);
}
Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/KeyWords.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/KeyWords.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/KeyWords.java 2013-05-31 15:50:13 UTC (rev 1266)
@@ -0,0 +1,51 @@
+package org.nuiton.eugene.models.object.reader.yaml;
+
+/**
+ * User: agiraudet
+ * Date: 30/05/13
+ * Time: 10:10
+ */
+public class KeyWords {
+ public static final String ABSTRACT = "abstract";
+ public static final String ASSOCIATION_CLASS = "associationclass";
+ public static final String ASSOCIATION_CLASS_NAME = "associationclassname";
+ public static final String ASSOCIATION_TYPE = "associationtype";
+ public static final String ATTRIBUTE = "attribute";
+ public static final String BODY_CODE = "bodeycode";
+ public static final String CLASS = "class";
+ public static final String COMMENTS = "comments";
+ public static final String DEFAULT_VALUE = "defaultvalue";
+ public static final String DOCUMENTATION = "documentation";
+ public static final String ENUMERATION = "enumeration";
+ public static final String EXTERN = "extern";
+ public static final String FINAL = "final";
+ public static final String IMPORTS = "imports";
+ public static final String INNER = "inner";
+ public static final String INTERFACE = "interface";
+ public static final String LITERAL = "literal";
+ public static final String MAX_MULTIPLICITY = "maxmultiplicity";
+ public static final String MIN_MULTIPLICITY = "minmultiplicity";
+ public static final String NAME = "name";
+ public static final String NAVIGABLE = "navigable";
+ public static final String OPERATION = "operation";
+ public static final String ORDERED = "ordered";
+ public static final String ORDERING = "ordering";
+ public static final String PACKAGE = "package";
+ public static final String PARAMETER = "parameter";
+ public static final String PARTICIPANT = "participant";
+ public static final String RETURN_PARAMETER = "returnparameter";
+ public static final String REVERSE_ATTRIBUTE_NAME = "reverseattributename";
+ public static final String REVERSE_MAX_MULTIPLICITY = "reversemaxmultiplicity";
+ public static final String STATIC = "static";
+ public static final String STEREOTYPES = "stereotypes";
+ public static final String SUPER_CLASSES = "superclasses";
+ public static final String SUPER_INTERFACES = "superinterfaces";
+ public static final String SYNTAXE = "syntaxe";
+ public static final String TAG_VALUES = "tagvalues";
+ public static final String TRANSIENT = "transient";
+ public static final String TYPE = "type";
+ public static final String UNIQUE = "unique";
+ public static final String VERSION = "version";
+ public static final String VISIBILITY = "visibility";
+ public static final String ELEMENT = "element";
+}
Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/SyntaxePureYaml.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/SyntaxePureYaml.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/SyntaxePureYaml.java 2013-05-31 15:50:13 UTC (rev 1266)
@@ -0,0 +1,52 @@
+package org.nuiton.eugene.models.object.reader.yaml;
+
+import org.nuiton.eugene.models.object.ObjectModel;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * User: agiraudet
+ * Date: 30/05/13
+ * Time: 11:23
+ */
+//TODO: interface Syntaxe ou classe abstraite (appel l'operation suivante : charger l'ObjectModel)
+//key.toLowerCase() ?
+public class SyntaxePureYaml {
+
+ public static void loadModelYaml(Object modelYAML, YamlObject modelYAMLO)
+ {
+ loadYamlObject(modelYAML, modelYAMLO, "model");
+ }
+
+ public static void loadYamlObject(Object objectYaml, YamlObject modelYaml, String previous)
+ {
+ if(objectYaml instanceof List)
+ {
+ for(Object tmp1 : (List) objectYaml)
+ {
+ loadYamlObject(tmp1, modelYaml, previous);
+ }
+ }
+ else if(objectYaml instanceof Map)
+ {
+ for(Object tmp1 : ((Map) objectYaml).entrySet())
+ {
+ if(((Map.Entry) tmp1).getValue() instanceof List || ((Map.Entry) tmp1).getValue() instanceof Map)
+ {
+ YamlObject tmp2 = new YamlObject();
+ loadYamlObject(((Map.Entry) tmp1).getValue(),tmp2,String.valueOf(((Map.Entry) tmp1).getKey()).toLowerCase());
+ modelYaml.addYamlObjectToMap(String.valueOf(((Map.Entry) tmp1).getKey()).toLowerCase(),tmp2);
+ }
+ else
+ {
+ modelYaml.addStringToMap(String.valueOf(((Map.Entry) tmp1).getKey()).toLowerCase(),String.valueOf(((Map.Entry) tmp1).getValue()));
+ }
+ }
+ }
+ /*else
+ {
+ modelYaml.addStringToMap(previous,String.valueOf(objectYaml));
+ }*/
+ }
+}
Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/SyntaxeUserFriendly.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/SyntaxeUserFriendly.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/SyntaxeUserFriendly.java 2013-05-31 15:50:13 UTC (rev 1266)
@@ -0,0 +1,10 @@
+package org.nuiton.eugene.models.object.reader.yaml;
+
+/**
+ * User: agiraudet
+ * Date: 30/05/13
+ * Time: 11:24
+ */
+//TODO: interface Syntaxe pour futures syntaxes
+public class SyntaxeUserFriendly {
+}
Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/TestLoadObjectModel.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/TestLoadObjectModel.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/TestLoadObjectModel.java 2013-05-31 15:50:13 UTC (rev 1266)
@@ -0,0 +1,606 @@
+package org.nuiton.eugene.models.object.reader.yaml;
+
+import org.nuiton.eugene.models.object.*;
+import org.nuiton.eugene.models.object.xml.*;
+
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.*;
+
+/**
+ * User: agiraudet
+ * Date: 30/05/13
+ * Time: 11:58
+ */
+public class TestLoadObjectModel extends KeyWords {
+ List<String> imports;
+ String packageL;//package local
+
+ private boolean _loginit = true;
+ private void log(String str) {
+ try {
+ FileWriter log;
+ String path = "/tmp/log.yamlobject.txt";
+
+ if (_loginit) {
+ log = new FileWriter(path, false);
+ log.close();
+ _loginit = false;
+ }
+ log = new FileWriter(path, true);
+ log.write("[LOG] " + str + "\n");
+ log.close();
+ } catch (IOException e) {;}
+ }
+
+ //precondition: labels et imports resolus
+ //TODO: valeurs par defaut
+ public TestLoadObjectModel(/*YamlObject modelYAMLO, ObjectModelImpl modelOM*/)
+ {
+ ;//loadModel(modelYAMLO,modelOM);
+ }
+
+ public void loadModel(YamlObject modelYAMLO, ObjectModelImpl modelOM) {
+
+ //log
+ log(modelYAMLO.toString());
+ log(" MODEL");
+ //log
+
+ String packageYAMLO = modelYAMLO.getFirstMapStringListString(PACKAGE);
+ if(packageYAMLO == null)
+ {
+ packageL = "";
+ }
+ else
+ {
+ packageL = packageYAMLO;
+ }
+ log("package="+packageL);
+
+ String nameYAMLO = modelYAMLO.getFirstMapStringListString(NAME);
+ if(nameYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ modelOM.setName(nameYAMLO);
+ log("name="+modelOM.getName());
+ }
+
+ String versionYAMLO = modelYAMLO.getFirstMapStringListString(VERSION);
+ if(versionYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ modelOM.setVersion(versionYAMLO);
+ log("version="+modelOM.getVersion());
+ }
+
+ //tagvalues
+ YamlObject tagValues = modelYAMLO.getFirstMapStringListYamlObject(TAG_VALUES);
+ if(tagValues != null)
+ {
+ for(Map.Entry<String,List<String>> tagValue :tagValues.getMapStringListString().entrySet())
+ {
+ if(!tagValue.getValue().isEmpty())//taille strictement = 1
+ {
+ modelOM.addTagValue(tagValue.getKey(),tagValue.getValue().get(0));
+ }
+ }
+ log("tagValues="+modelOM.getTagValues());
+ }
+
+ //classes
+ for(YamlObject classYAMLO : modelYAMLO.getMapStringListYamlObject(CLASS))
+ {
+ log(" CLASS");
+ ObjectModelClassImpl classOM = new ObjectModelClassImpl();
+ loadClass(classYAMLO,classOM);
+ modelOM.addClass(classOM);
+ }
+ //interfaces
+ for(YamlObject interfaceYAMLO : modelYAMLO.getMapStringListYamlObject(INTERFACE))
+ {
+ log(" INTERFACE");
+ ObjectModelInterfaceImpl interfaceOM = new ObjectModelInterfaceImpl();
+ loadInterface(interfaceYAMLO,interfaceOM);
+ modelOM.addInterface(interfaceOM);
+ }
+ //classes d'association
+ for(YamlObject associationClassYAMLO : modelYAMLO.getMapStringListYamlObject(ASSOCIATION_CLASS))
+ {
+ log(" ASSOCIATION_CLASS");
+ ObjectModelAssociationClassImpl associationClassOM = new ObjectModelAssociationClassImpl();
+ loadAssociationClass(associationClassYAMLO,associationClassOM);
+ modelOM.addAssociationClass(associationClassOM);
+ }
+ //enumerations
+ for(YamlObject enumerationYAMLO : modelYAMLO.getMapStringListYamlObject(ENUMERATION))
+ {
+ log(" ENUMERATION");
+ ObjectModelEnumerationImpl enumerationOM = new ObjectModelEnumerationImpl();
+ loadEnumeration(enumerationYAMLO,enumerationOM);
+ modelOM.addEnumeration(enumerationOM);
+ }
+ }
+
+ public void loadElement(YamlObject elementYAMLO, ObjectModelElementImpl elementOM)
+ {
+ String nameYAMLO = elementYAMLO.getFirstMapStringListString(NAME);
+ if(nameYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ elementOM.setName(nameYAMLO);
+ log("name="+elementOM.getName());
+ }
+
+ String staticYAMLO = elementYAMLO.getFirstMapStringListString(STATIC);
+ if(staticYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ elementOM.setStatic(Boolean.valueOf(staticYAMLO));
+ log("static="+elementOM.isStatic());
+ }
+
+ String documentationYAMLO = elementYAMLO.getFirstMapStringListString(DOCUMENTATION);
+ if(documentationYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ elementOM.setDocumentation(documentationYAMLO);
+ log("documentation="+elementOM.getDocumentation());
+ }
+
+ YamlObject tagValues = elementYAMLO.getFirstMapStringListYamlObject(TAG_VALUES);
+ if(tagValues != null)
+ {
+ for(Map.Entry<String,List<String>> tagValue :tagValues.getMapStringListString().entrySet())
+ {
+ if(!tagValue.getValue().isEmpty())//taille strictement = 1
+ {
+ elementOM.addTagValue(tagValue.getKey(),tagValue.getValue().get(0));
+ }
+ }
+ log("tagValues="+elementOM.getTagValues());
+ }
+
+ List<String> comments = elementYAMLO.getMapStringListString(COMMENTS);
+ for(String comment : comments)
+ {
+ elementOM.addComment(comment);
+ log("comments="+elementOM.getComments());
+ }
+
+ List<String> stereotypes = elementYAMLO.getMapStringListString(STEREOTYPES);
+ for(String stereotype : stereotypes)
+ {
+ ObjectModelImplRef stereotypeOM = new ObjectModelImplRef();
+ stereotypeOM.setName(stereotype);
+ elementOM.addStereotype(stereotypeOM);
+ log("stereotype="+elementOM.getStereotypes());
+ }
+ }
+
+ public void loadClassifier(YamlObject classifierYAMLO, ObjectModelClassifierImpl classifierOM)
+ {
+ loadElement(classifierYAMLO, classifierOM);
+
+ String packageYAMLO = classifierYAMLO.getFirstMapStringListString(PACKAGE);
+ if(packageYAMLO == null)
+ {
+ //TODO: tester packageL == null
+ classifierOM.setPackage(packageL);
+ }
+ else
+ {
+ classifierOM.setPackage(packageYAMLO);
+ }
+ log("package="+classifierOM.getPackageName());
+
+
+ String externYAMLO = classifierYAMLO.getFirstMapStringListString(EXTERN);
+ if(externYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ classifierOM.setExtern(Boolean.valueOf(externYAMLO));
+ log("extern="+classifierOM.isExtern());
+
+ }
+
+ String innerYAMLO = classifierYAMLO.getFirstMapStringListString(INNER);
+ if(innerYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ classifierOM.setInner(Boolean.valueOf(innerYAMLO));
+ log("inner="+classifierOM.isInner());
+ }
+
+ String typeYAMLO = classifierYAMLO.getFirstMapStringListString(TYPE);
+ if(typeYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ classifierOM.setType(typeYAMLO);
+ log("type="+typeYAMLO);//getType ?
+ }
+
+ for(YamlObject attributeYAMLO : classifierYAMLO.getMapStringListYamlObject(ATTRIBUTE))
+ {
+ log(" ATTRIBUTE");
+ ObjectModelAttributeImpl attributeOM = new ObjectModelAttributeImpl();
+ loadAttribute(attributeYAMLO,attributeOM);
+ classifierOM.addAttribute(attributeOM);
+ }
+
+ for(YamlObject operationYAMLO : classifierYAMLO.getMapStringListYamlObject(OPERATION))
+ {
+ log(" OPERATION");
+ ObjectModelOperationImpl operationOM = new ObjectModelOperationImpl();
+ loadOperation(operationYAMLO,operationOM);
+ classifierOM.addOperation(operationOM);
+ }
+
+ List<String> superInterfacesYAMLO = classifierYAMLO.getMapStringListString(SUPER_INTERFACES);
+ for(String superInterfaceYAMLO : superInterfacesYAMLO)
+ {
+ log(" SUPER_INTERFACE");
+ ObjectModelImplRef superInterfaceOM = new ObjectModelImplRef();
+ superInterfaceOM.setName(superInterfaceYAMLO);
+ classifierOM.addInterface(superInterfaceOM);
+ }
+ }
+
+ public void loadClass(YamlObject classYAMLO, ObjectModelClassImpl classOM)
+ {
+ loadClassifier(classYAMLO, classOM);
+
+ String abstractYAMLO = classYAMLO.getFirstMapStringListString(ABSTRACT);
+ if(abstractYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ classOM.setAbstract(Boolean.valueOf(abstractYAMLO));
+ log("abstract="+classOM.isAbstract());
+ }
+
+ List<String> superClassesYAMLO = classYAMLO.getMapStringListString(SUPER_CLASSES);
+ for(String superClassYAMLO : superClassesYAMLO)
+ {
+ ObjectModelImplRef superClassOM = new ObjectModelImplRef();
+ superClassOM.setName(superClassYAMLO);
+ classOM.addInterface(superClassOM);
+ log("superClasses="+classOM.getSuperclasses());
+ }
+ }
+
+ public void loadInterface(YamlObject interfaceYAMLO, ObjectModelInterfaceImpl interfaceOM)
+ {
+ loadClassifier(interfaceYAMLO,interfaceOM);
+ }
+
+ public void loadAssociationClass(YamlObject associationClassYAML, ObjectModelAssociationClassImpl associationClassOM)
+ {
+ loadClass(associationClassYAML, associationClassOM);
+
+ //TODO: remplacer name par type et attribute par name ?
+ for(YamlObject participantYAMLO : associationClassYAML.getMapStringListYamlObject(PARTICIPANT))
+ {
+ log(" PARTICIPANT");
+ ObjectModeImplAssociationClassParticipant participantOM = new ObjectModeImplAssociationClassParticipant();
+ participantOM.setAssociationClass(associationClassOM);
+
+ String nameYAMLO = participantYAMLO.getFirstMapStringListString(NAME);
+ if(nameYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ participantOM.setName(nameYAMLO);
+ log("name="+participantOM.getName());
+ }
+
+ String attributeYAMLO = participantYAMLO.getFirstMapStringListString(ATTRIBUTE);
+ if(attributeYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ participantOM.setAttribute(attributeYAMLO);
+ log("attribute="+participantOM.getAttributeName());
+ }
+
+ associationClassOM.addParticipant(participantOM);
+ }
+ }
+
+ public void loadEnumeration(YamlObject enumerationYAMLO, ObjectModelEnumerationImpl enumerationOM)
+ {
+ loadElement(enumerationYAMLO, enumerationOM);
+
+ //TODO: remplacer LITERAL par LITERALS (List)
+ List<String> literalsYAMLO = enumerationYAMLO.getMapStringListString(LITERAL);
+ for(String literalYAMLO : literalsYAMLO)
+ {
+ ObjectModelImplRef literalOM = new ObjectModelImplRef();
+ literalOM.setName(literalYAMLO);
+ enumerationOM.addLiteral(literalOM);
+ log("literals="+enumerationOM.getLiterals());
+ }
+
+ String packageYAMLO = enumerationYAMLO.getFirstMapStringListString(PACKAGE);
+ if(packageYAMLO == null)
+ {
+ enumerationOM.setPackage(packageL);
+ }
+ else
+ {
+ enumerationOM.setPackage(packageYAMLO);
+ }
+ log("package="+enumerationOM.getPackageName());
+ }
+
+ public void loadParameter(YamlObject parameterYAMLO, ObjectModelParameterImpl parameterOM)
+ {
+ loadElement(parameterYAMLO,parameterOM);
+
+ String orderingYAMLO = parameterYAMLO.getFirstMapStringListString(ORDERING);
+ if(orderingYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ parameterOM.setOrdering(orderingYAMLO);
+ log("ordering="+orderingYAMLO);//getOrdering ?
+ }
+
+ String typeYAMLO = parameterYAMLO.getFirstMapStringListString(TYPE);
+ if(typeYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ parameterOM.setType(typeYAMLO);
+ log("type="+parameterOM.getType());
+ }
+
+ String defaultValueYAMLO = parameterYAMLO.getFirstMapStringListString(DEFAULT_VALUE);
+ if(defaultValueYAMLO == null)
+ {
+ ;//default
+ }
+ else
+ {
+ parameterOM.setDefaultValue(defaultValueYAMLO);
+ log("defaultValue="+parameterOM.getDefaultValue());
+ }
+
+ String minMultiplicityYAMLO = parameterYAMLO.getFirstMapStringListString(MIN_MULTIPLICITY);
+ if(minMultiplicityYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ parameterOM.setMinMultiplicity(Integer.valueOf(minMultiplicityYAMLO));
+ log("minMultiplicity="+parameterOM.getMinMultiplicity());
+ }
+
+ String maxMultiplicityYAMLO = parameterYAMLO.getFirstMapStringListString(MAX_MULTIPLICITY);
+ if(maxMultiplicityYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ parameterOM.setMaxMultiplicity(Integer.valueOf(maxMultiplicityYAMLO));
+ log("maxMultiplicity="+parameterOM.getMaxMultiplicity());
+
+ }
+
+ String orderedYAMLO = parameterYAMLO.getFirstMapStringListString(ORDERED);
+ if(orderedYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ parameterOM.setOrdered(Boolean.valueOf(orderedYAMLO));
+ log("ordered="+parameterOM.isOrdered());
+ }
+
+ String uniqueYAMLO = parameterYAMLO.getFirstMapStringListString(UNIQUE);
+ if(uniqueYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ parameterOM.setUnique(Boolean.valueOf(uniqueYAMLO));
+ log("unique="+parameterOM.isUnique());
+ }
+ }
+
+ public void loadAttribute(YamlObject attributeYAMLO, ObjectModelAttributeImpl attributeOM)
+ {
+ loadParameter(attributeYAMLO,attributeOM);
+
+ String navigableYAMLO = attributeYAMLO.getFirstMapStringListString(NAVIGABLE);
+ if(navigableYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ attributeOM.setNavigable(Boolean.valueOf(navigableYAMLO));
+ log("navigable="+attributeOM.isNavigable());
+ }
+
+ String associationTypeYAMLO = attributeYAMLO.getFirstMapStringListString(ASSOCIATION_TYPE);
+ if(associationTypeYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ attributeOM.setAssociationType(associationTypeYAMLO);
+ log("associationType="+associationTypeYAMLO);//getAssociationType ?
+ }
+
+ String finalYAMLO = attributeYAMLO.getFirstMapStringListString(FINAL);
+ if(finalYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ attributeOM.setFinal(Boolean.valueOf(finalYAMLO));
+ log("final="+attributeOM.isFinal());
+ }
+
+ String staticYAMLO = attributeYAMLO.getFirstMapStringListString(STATIC);
+ if(staticYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ attributeOM.setStatic(Boolean.valueOf(staticYAMLO));
+ log("static="+attributeOM.isStatic());
+ }
+
+ String associationClassNameYAMLO = attributeYAMLO.getFirstMapStringListString(ASSOCIATION_CLASS_NAME);
+ if(associationClassNameYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ attributeOM.setAssociationClassName(associationClassNameYAMLO);
+ log("associationClassName="+associationClassNameYAMLO);
+ }
+
+ String reverseAttributeNameYAMLO = attributeYAMLO.getFirstMapStringListString(REVERSE_ATTRIBUTE_NAME);
+ if(reverseAttributeNameYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ attributeOM.setReverseAttributeName(reverseAttributeNameYAMLO);
+ log("reverseAttributeName="+attributeOM.getReverseAttributeName());
+ }
+
+ String reverseMaxMultiplicityYAMLO = attributeYAMLO.getFirstMapStringListString(REVERSE_MAX_MULTIPLICITY);
+ if(reverseMaxMultiplicityYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ attributeOM.setReverseMaxMultiplicity(Integer.valueOf(reverseMaxMultiplicityYAMLO));
+ log("reverseMaxMultiplicity="+attributeOM.getReverseMaxMultiplicity());
+ }
+
+ String transientYAMLO = attributeYAMLO.getFirstMapStringListString(TRANSIENT);
+ if(transientYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ attributeOM.setTransient(Boolean.valueOf(transientYAMLO));
+ log("transient="+attributeOM.isTransient());
+ }
+
+ String visibilityYAMLO = attributeYAMLO.getFirstMapStringListString(VISIBILITY);
+ if(visibilityYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ attributeOM.setVisibility(visibilityYAMLO);
+ log("visibility="+attributeOM.getVisibility());
+ }
+ }
+
+ public void loadOperation(YamlObject operationYAMLO, ObjectModelOperationImpl operationOM)
+ {
+ loadElement(operationYAMLO,operationOM);
+
+ String abstractYAMLO = operationYAMLO.getFirstMapStringListString(ABSTRACT);
+ if(abstractYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ operationOM.setAbstract(Boolean.valueOf(abstractYAMLO));
+ log("abstract="+operationOM.isAbstract());
+ }
+
+ String visibilityYAMLO = operationYAMLO.getFirstMapStringListString(VISIBILITY);
+ if(visibilityYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ operationOM.setVisibility(visibilityYAMLO);
+ log("visibility="+operationOM.getVisibility());
+ }
+
+ for(YamlObject returnParameterYAMLO : operationYAMLO.getMapStringListYamlObject(RETURN_PARAMETER))
+ {
+ log(" RETURN_PARAMETER");
+ ObjectModelParameterImpl returnParameterOM = new ObjectModelAttributeImpl();
+ loadParameter(returnParameterYAMLO,returnParameterOM);
+ operationOM.setReturnParameter(returnParameterOM);
+ }
+
+ for(YamlObject parameterYAMLO : operationYAMLO.getMapStringListYamlObject(PARAMETER))
+ {
+ log(" PARAMETER");
+ ObjectModelParameterImpl parameterOM = new ObjectModelAttributeImpl();
+ loadParameter(parameterYAMLO,parameterOM);
+ operationOM.addParameter(parameterOM);
+ }
+
+ String bodyCodeYAMLO = operationYAMLO.getFirstMapStringListString(BODY_CODE);
+ if(bodyCodeYAMLO == null)
+ {
+ ;//valeur par defaut
+ }
+ else
+ {
+ operationOM.setBodyCode(bodyCodeYAMLO);
+ log("bodyCode="+operationOM.getBodyCode());
+ }
+ }
+}
Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/TestLoadYamlFile.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/TestLoadYamlFile.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/TestLoadYamlFile.java 2013-05-31 15:50:13 UTC (rev 1266)
@@ -0,0 +1,70 @@
+package org.nuiton.eugene.models.object.reader.yaml;
+
+import org.nuiton.eugene.models.object.ObjectModel;
+import org.nuiton.eugene.models.object.xml.ObjectModelImpl;
+import org.yaml.snakeyaml.Yaml;
+
+import java.io.*;
+import java.util.*;
+
+/**
+ * User: agiraudet
+ * Date: 28/05/13
+ * Time: 16:35
+ *
+ * Rôle: parser le fichier YAML et le transformer en YAMLobject
+ *
+ * parser si besoin et charger le YAMLobject
+ * parse en fonction de la version
+ */
+public class TestLoadYamlFile extends KeyWords {
+ Yaml yaml;
+ ObjectModelImpl modelOM;
+ YamlObject modelYAMLO;
+ Object modelYAML;
+ String syntaxeVersion;//version de la synatxe
+ String defaultVersion;//version des valeurs par defaut
+
+ public TestLoadYamlFile()
+ {
+ yaml = new Yaml();
+ }
+
+ public void LoadYamlFile(File fileYAML, ObjectModel model) throws IOException {
+ modelOM = (ObjectModelImpl) model;
+ modelYAMLO = new YamlObject();
+ InputStream inputModel = new FileInputStream(fileYAML);
+ modelYAML = yaml.load(inputModel);
+ inputModel.close();
+
+ //chercher version et charger en conséquent
+ syntaxeVersion="1";
+ defaultVersion="0";
+ if(modelYAML instanceof List)
+ {
+ Object version = YamlUtil.collectElement((List) modelYAML, SYNTAXE);
+ if(version != null)
+ {
+ syntaxeVersion = YamlUtil.beforeChar(String.valueOf(version),'.');
+ defaultVersion = YamlUtil.afterChar(String.valueOf(version),'.');
+ }
+ }
+ if(syntaxeVersion.equals("1"))
+ {
+ SyntaxePureYaml.loadModelYaml(modelYAML, modelYAMLO);
+ }
+ else if(syntaxeVersion.equals("2"))
+ {
+ ;//syntaxe user firendly : coming soon
+ }
+ else
+ {
+ ;//syntaxe par defaut, si version syntaxe non reconnue
+ SyntaxePureYaml.loadModelYaml(modelYAML, modelYAMLO);
+ }
+
+ TestLoadObjectModel test = new TestLoadObjectModel();
+ test.loadModel(modelYAMLO,modelOM);
+ //TODO: charger ObjectModel avec les valeurs par defaut en fonction de la version (ajouter parametre à loadModel)
+ }
+}
Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlObject.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlObject.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlObject.java 2013-05-31 15:50:13 UTC (rev 1266)
@@ -0,0 +1,222 @@
+package org.nuiton.eugene.models.object.reader.yaml;
+
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * User: agiraudet
+ * Date: 28/05/13
+ * Time: 16:41
+ */
+public class YamlObject {
+ protected Map<String,List<String>> mapStringListString;
+ protected Map<String, List<YamlObject>> mapStringListYamlObject;
+ //TODO: améliorer nom méthodes
+
+ public YamlObject()
+ {
+ mapStringListString = new LinkedHashMap<String, List<String>>();
+ mapStringListYamlObject = new LinkedHashMap<String, List<YamlObject>>();
+ }
+
+ public void addYamlObjectToMap(String key, YamlObject value)
+ {
+ if(mapStringListYamlObject.containsKey(key))
+ {
+ mapStringListYamlObject.get(key).add(value);
+ }
+ else
+ {
+ List<YamlObject> tmp = new LinkedList<YamlObject>();
+ tmp.add(value);
+ mapStringListYamlObject.put(key,tmp);
+ }
+ }
+
+ public void addStringToMap(String key, String value)
+ {
+ if(mapStringListString.containsKey(key))
+ {
+ mapStringListString.get(key).add(value);
+ }
+ else
+ {
+ List<String> tmp = new LinkedList<String>();
+ tmp.add(value);
+ mapStringListString.put(key,tmp);
+ }
+ }
+
+ public YamlObject getFirstMapStringListYamlObject(String key)
+ {
+ if(mapStringListYamlObject.containsKey(key))
+ {
+ if(!mapStringListYamlObject.isEmpty())
+ {
+ return mapStringListYamlObject.get(key).get(0);
+ }
+ }
+ return null; }
+
+ public String getFirstMapStringListString(String key)
+ {
+ if( mapStringListString.containsKey(key))
+ {
+ if(! mapStringListString.isEmpty())
+ {
+ return mapStringListString.get(key).get(0);
+ }
+ }
+ return null;
+ }
+
+ public boolean isUniqueMapStringListYamlObject(String key)
+ {
+ return (sizeOfMapStringListYamlObject(key) == 1);
+ }
+
+ public boolean isUniqueMapStringListString(String key)
+ {
+ return (sizeOfMapStringListString(key) == 1);
+ }
+
+ public boolean containsKeyYamlMapStringListYamlObject(String key)
+ {
+ return mapStringListYamlObject.containsKey(key);
+ }
+
+ public boolean containsKeyMapStringListString(String key)
+ {
+ return mapStringListString.containsKey(key);
+ }
+
+ public List<YamlObject> getMapStringListYamlObject(String key)
+ {
+ if(mapStringListYamlObject.containsKey(key))
+ {
+ if(!mapStringListYamlObject.isEmpty())
+ {
+ return mapStringListYamlObject.get(key);
+ }
+ }
+ //return null;
+ return new LinkedList<YamlObject>();
+ }
+
+ public List<String> getMapStringListString(String key)
+ {
+ if(mapStringListString.containsKey(key))
+ {
+ if(!mapStringListString.isEmpty())
+ {
+ return mapStringListString.get(key);
+ }
+ }
+ //return null;
+ return new LinkedList<String>();
+ }
+
+ public int sizeOfMapStringListYamlObject(String key)
+ {
+ if(mapStringListYamlObject.containsKey(key))
+ {
+ return mapStringListYamlObject.get(key).size();
+ }
+ return 0;//-1
+ }
+
+ public int sizeOfMapStringListString(String key)
+ {
+ if(mapStringListString.containsKey(key))
+ {
+ return mapStringListString.get(key).size();
+ }
+ return 0;//-1
+ }
+
+ public Map<String, List<YamlObject>> getMapStringListYamlObject()
+ {
+ return mapStringListYamlObject;
+ }
+
+ public Map<String, List<String>> getMapStringListString()
+ {
+ return mapStringListString;
+ }
+
+ public boolean removeMapStringListString(String key, String value)
+ {
+ if(mapStringListString.containsKey(key))
+ {
+ return mapStringListString.get(key).remove(value);
+ }
+ return false;
+ }
+
+ public boolean removeMapStringString(String key)
+ {
+ if(mapStringListString.containsKey(key))
+ {
+ mapStringListString.remove(key);
+ return true;
+ }
+ return false;
+ }
+
+ public boolean removeMapStringListYamlObject(String key, YamlObject value)
+ {
+ if(mapStringListYamlObject.containsKey(key))
+ {
+ return mapStringListYamlObject.get(key).remove(value);
+ }
+ return false;
+ }
+
+ public boolean removeMapStringListYamlObject(String key)
+ {
+ if(mapStringListYamlObject.containsKey(key))
+ {
+ mapStringListYamlObject.remove(key);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if(o instanceof YamlObject)
+ {
+ return (mapStringListYamlObject.equals(((YamlObject) o).getMapStringListYamlObject()) && mapStringListString.equals(((YamlObject) o).getMapStringListString()));
+ }
+ return false;
+ }
+
+ @Override
+ public String toString()
+ {
+ return toString("- ");
+ }
+
+ public String toString(String indentation)
+ {
+ StringBuilder res = new StringBuilder();
+
+ for(Map.Entry<String,List<String>> entry : mapStringListString.entrySet())
+ {
+ for(String str : entry.getValue())
+ {
+ res.append(indentation).append(entry.getKey()).append(": ").append(str).append("\n");
+ }
+ }
+ for(Map.Entry<String,List<YamlObject>> entry : mapStringListYamlObject.entrySet())
+ {
+ for(YamlObject yobj : entry.getValue())
+ {
+ res.append(indentation).append(entry.getKey()).append(":\n").append(yobj.toString( " "+indentation)).append("\n");
+ }
+ }
+ return res.toString();
+ }
+}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlToObjectModel.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlToObjectModel.java 2013-05-29 10:08:59 UTC (rev 1265)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlToObjectModel.java 2013-05-31 15:50:13 UTC (rev 1266)
@@ -1,29 +1,5 @@
package org.nuiton.eugene.models.object.reader.yaml;
-/*
- * #%L
- * EUGene :: EUGene
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2004 - 2013 CodeLutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
import org.nuiton.eugene.models.object.*;
import org.nuiton.eugene.models.object.xml.*;
import org.yaml.snakeyaml.Yaml;
@@ -121,6 +97,7 @@
* nouvelle implémentation : contraintes : labels, valeurs par défaut, parser des chaines (imports internes/externes)
*
*/
+ //http://demo.codelutin.com/pollen/poll/summary/23f361a09411482eb6be219ddf4ab5dc:bf4068a19c27436c844980c2f095e079
public void loadFile(File file, ObjectModel model) throws IOException {
//TODO: valeurs par defaut, faire interface ? ou simple map ? + mots clefs ?
defaultValues = new LinkedHashMap<String, String>();
@@ -209,8 +186,8 @@
}
}
- //test imports objets modele
- List<Object> objectsYAML = collectAllElements((List) modelYAML, CLASS);
+ /*//test imports objets modele
+ /*List<Object> objectsYAML = collectAllElements((List) modelYAML, CLASS);
objectsYAML.addAll(collectAllElements((List) modelYAML, INTERFACE));
objectsYAML.addAll(collectAllElements((List) modelYAML, CLASS_ASSOCIATION));
objectsYAML.addAll(collectAllElements((List) modelYAML, ENUMERATION));
@@ -225,7 +202,7 @@
log(imports.toString());
}
}
- //test imports objets modele
+ *///test imports objets modele
List classesYAML = collectAllElements((List) modelYAML, CLASS);
for (Object classYAML : classesYAML) {
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlUtil.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlUtil.java 2013-05-29 10:08:59 UTC (rev 1265)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlUtil.java 2013-05-31 15:50:13 UTC (rev 1266)
@@ -1,29 +1,5 @@
package org.nuiton.eugene.models.object.reader.yaml;
-/*
- * #%L
- * EUGene :: EUGene
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2004 - 2013 CodeLutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
import java.util.*;
/**
@@ -31,6 +7,9 @@
* Date: 14/05/13
* Time: 11:53
*/
+
+//TODO: faire classes dédiée au parser ?
+
public class YamlUtil {
//TODO: caster proprement
public static void keySetToLowerCase(Map<Object, Object> map) {
@@ -81,4 +60,27 @@
StringBuilder out = new StringBuilder(beforeChar(in.reverse().toString(), target));
return out.reverse().toString();
}
+
+ public static Object collectElement(List data, Object key) {
+ for (Object obj : data) {
+ if (obj instanceof Map) {
+ if (((Map) obj).containsKey(key)) {
+ return ((Map) obj).get(key);
+ }
+ }
+ }
+ return null;
+ }
+
+ public static List<Object> collectAllElements(List data, Object key) {
+ List<Object> res = new LinkedList<Object>();
+ for (Object obj : data) {
+ if (obj instanceof Map) {
+ if (((Map) obj).containsKey(key)) {
+ res.add(((Map) obj).get(key));
+ }
+ }
+ }
+ return res;
+ }
}
1
0
r1265 - in trunk: . eugene eugene-java-templates eugene-maven-plugin eugene-plantuml-templates
by maven-release@users.nuiton.org 29 May '13
by maven-release@users.nuiton.org 29 May '13
29 May '13
Author: maven-release
Date: 2013-05-29 12:08:59 +0200 (Wed, 29 May 2013)
New Revision: 1265
Url: http://nuiton.org/projects/eugene/repository/revisions/1265
Log:
[maven-release-plugin] prepare for next development iteration
Modified:
trunk/eugene-java-templates/pom.xml
trunk/eugene-maven-plugin/pom.xml
trunk/eugene-plantuml-templates/pom.xml
trunk/eugene/pom.xml
trunk/pom.xml
Modified: trunk/eugene/pom.xml
===================================================================
--- trunk/eugene/pom.xml 2013-05-29 10:08:57 UTC (rev 1264)
+++ trunk/eugene/pom.xml 2013-05-29 10:08:59 UTC (rev 1265)
@@ -32,7 +32,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>eugene</artifactId>
- <version>2.6.3</version>
+ <version>2.6.4-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.eugene</groupId>
Modified: trunk/eugene-java-templates/pom.xml
===================================================================
--- trunk/eugene-java-templates/pom.xml 2013-05-29 10:08:57 UTC (rev 1264)
+++ trunk/eugene-java-templates/pom.xml 2013-05-29 10:08:59 UTC (rev 1265)
@@ -29,7 +29,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>eugene</artifactId>
- <version>2.6.3</version>
+ <version>2.6.4-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.eugene</groupId>
Modified: trunk/eugene-maven-plugin/pom.xml
===================================================================
--- trunk/eugene-maven-plugin/pom.xml 2013-05-29 10:08:57 UTC (rev 1264)
+++ trunk/eugene-maven-plugin/pom.xml 2013-05-29 10:08:59 UTC (rev 1265)
@@ -33,7 +33,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>eugene</artifactId>
- <version>2.6.3</version>
+ <version>2.6.4-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.eugene</groupId>
Modified: trunk/eugene-plantuml-templates/pom.xml
===================================================================
--- trunk/eugene-plantuml-templates/pom.xml 2013-05-29 10:08:57 UTC (rev 1264)
+++ trunk/eugene-plantuml-templates/pom.xml 2013-05-29 10:08:59 UTC (rev 1265)
@@ -29,7 +29,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>eugene</artifactId>
- <version>2.6.3</version>
+ <version>2.6.4-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.eugene</groupId>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-05-29 10:08:57 UTC (rev 1264)
+++ trunk/pom.xml 2013-05-29 10:08:59 UTC (rev 1265)
@@ -36,7 +36,7 @@
</parent>
<artifactId>eugene</artifactId>
- <version>2.6.3</version>
+ <version>2.6.4-SNAPSHOT</version>
<modules>
<module>eugene</module>
@@ -385,11 +385,11 @@
<!-- Source control management. -->
<scm>
- <connection>scm:svn:http://svn.nuiton.org/svn/eugene/tags/eugene-2.6.3</connection>
+ <connection>scm:svn:http://svn.nuiton.org/svn/eugene/trunk</connection>
<developerConnection>
- scm:svn:http://svn.nuiton.org/svn/eugene/tags/eugene-2.6.3
+ scm:svn:http://svn.nuiton.org/svn/eugene/trunk
</developerConnection>
- <url>http://nuiton.org/projects/eugene/repository/show/tags/eugene-2.6.3</url>
+ <url>http://nuiton.org/projects/eugene/repository/show/trunk</url>
</scm>
<distributionManagement>
1
0
Author: maven-release
Date: 2013-05-29 12:08:57 +0200 (Wed, 29 May 2013)
New Revision: 1264
Url: http://nuiton.org/projects/eugene/repository/revisions/1264
Log:
[maven-release-plugin] copy for tag eugene-2.6.3
Added:
tags/eugene-2.6.3/
Property changes on: tags/eugene-2.6.3
___________________________________________________________________
Added: svn:ignore
+ target
.settings
bin
.classpath
.project
*.iml
*.ipr
*.iws
.idea
Added: svn:mergeinfo
+ /branches/1.0.1-Javabuilder:641-651
/branches/1.1.0-Javabuilder:652-681
/branches/eugene-2.0:682-754
/branches/eugene-2.4.3:1151-1173
1
0
r1263 - in trunk: . eugene eugene-java-templates eugene-maven-plugin eugene-plantuml-templates
by maven-release@users.nuiton.org 29 May '13
by maven-release@users.nuiton.org 29 May '13
29 May '13
Author: maven-release
Date: 2013-05-29 12:08:55 +0200 (Wed, 29 May 2013)
New Revision: 1263
Url: http://nuiton.org/projects/eugene/repository/revisions/1263
Log:
[maven-release-plugin] prepare release eugene-2.6.3
Modified:
trunk/eugene-java-templates/pom.xml
trunk/eugene-maven-plugin/pom.xml
trunk/eugene-plantuml-templates/pom.xml
trunk/eugene/pom.xml
trunk/pom.xml
Modified: trunk/eugene/pom.xml
===================================================================
--- trunk/eugene/pom.xml 2013-05-29 10:06:05 UTC (rev 1262)
+++ trunk/eugene/pom.xml 2013-05-29 10:08:55 UTC (rev 1263)
@@ -32,7 +32,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>eugene</artifactId>
- <version>2.6.3-SNAPSHOT</version>
+ <version>2.6.3</version>
</parent>
<groupId>org.nuiton.eugene</groupId>
Modified: trunk/eugene-java-templates/pom.xml
===================================================================
--- trunk/eugene-java-templates/pom.xml 2013-05-29 10:06:05 UTC (rev 1262)
+++ trunk/eugene-java-templates/pom.xml 2013-05-29 10:08:55 UTC (rev 1263)
@@ -29,7 +29,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>eugene</artifactId>
- <version>2.6.3-SNAPSHOT</version>
+ <version>2.6.3</version>
</parent>
<groupId>org.nuiton.eugene</groupId>
Modified: trunk/eugene-maven-plugin/pom.xml
===================================================================
--- trunk/eugene-maven-plugin/pom.xml 2013-05-29 10:06:05 UTC (rev 1262)
+++ trunk/eugene-maven-plugin/pom.xml 2013-05-29 10:08:55 UTC (rev 1263)
@@ -33,7 +33,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>eugene</artifactId>
- <version>2.6.3-SNAPSHOT</version>
+ <version>2.6.3</version>
</parent>
<groupId>org.nuiton.eugene</groupId>
Modified: trunk/eugene-plantuml-templates/pom.xml
===================================================================
--- trunk/eugene-plantuml-templates/pom.xml 2013-05-29 10:06:05 UTC (rev 1262)
+++ trunk/eugene-plantuml-templates/pom.xml 2013-05-29 10:08:55 UTC (rev 1263)
@@ -29,7 +29,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>eugene</artifactId>
- <version>2.6.3-SNAPSHOT</version>
+ <version>2.6.3</version>
</parent>
<groupId>org.nuiton.eugene</groupId>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-05-29 10:06:05 UTC (rev 1262)
+++ trunk/pom.xml 2013-05-29 10:08:55 UTC (rev 1263)
@@ -36,7 +36,7 @@
</parent>
<artifactId>eugene</artifactId>
- <version>2.6.3-SNAPSHOT</version>
+ <version>2.6.3</version>
<modules>
<module>eugene</module>
@@ -385,11 +385,11 @@
<!-- Source control management. -->
<scm>
- <connection>scm:svn:http://svn.nuiton.org/svn/eugene/trunk</connection>
+ <connection>scm:svn:http://svn.nuiton.org/svn/eugene/tags/eugene-2.6.3</connection>
<developerConnection>
- scm:svn:http://svn.nuiton.org/svn/eugene/trunk
+ scm:svn:http://svn.nuiton.org/svn/eugene/tags/eugene-2.6.3
</developerConnection>
- <url>http://nuiton.org/projects/eugene/repository/show/trunk</url>
+ <url>http://nuiton.org/projects/eugene/repository/show/tags/eugene-2.6.3</url>
</scm>
<distributionManagement>
1
0
r1262 - in trunk: eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml eugene-plantuml-templates eugene-plantuml-templates/src/main/java/org/nuiton/eugene/plantuml src/site/rst
by tchemit@users.nuiton.org 29 May '13
by tchemit@users.nuiton.org 29 May '13
29 May '13
Author: tchemit
Date: 2013-05-29 12:06:05 +0200 (Wed, 29 May 2013)
New Revision: 1262
Url: http://nuiton.org/projects/eugene/repository/revisions/1262
Log:
prepare release
Modified:
trunk/eugene-plantuml-templates/LICENSE.txt
trunk/eugene-plantuml-templates/README.txt
trunk/eugene-plantuml-templates/changelog.txt
trunk/eugene-plantuml-templates/pom.xml
trunk/eugene-plantuml-templates/src/main/java/org/nuiton/eugene/plantuml/PlantumlTemplatesGenerator.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlToObjectModel.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlUtil.java
trunk/src/site/rst/index.rst
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlToObjectModel.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlToObjectModel.java 2013-05-28 13:49:26 UTC (rev 1261)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlToObjectModel.java 2013-05-29 10:06:05 UTC (rev 1262)
@@ -1,5 +1,29 @@
package org.nuiton.eugene.models.object.reader.yaml;
+/*
+ * #%L
+ * EUGene :: EUGene
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2004 - 2013 CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
import org.nuiton.eugene.models.object.*;
import org.nuiton.eugene.models.object.xml.*;
import org.yaml.snakeyaml.Yaml;
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlToObjectModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlUtil.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlUtil.java 2013-05-28 13:49:26 UTC (rev 1261)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlUtil.java 2013-05-29 10:06:05 UTC (rev 1262)
@@ -1,5 +1,29 @@
package org.nuiton.eugene.models.object.reader.yaml;
+/*
+ * #%L
+ * EUGene :: EUGene
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2004 - 2013 CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
import java.util.*;
/**
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlUtil.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/eugene-plantuml-templates/LICENSE.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/eugene-plantuml-templates/README.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/eugene-plantuml-templates/changelog.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/eugene-plantuml-templates/pom.xml
===================================================================
--- trunk/eugene-plantuml-templates/pom.xml 2013-05-28 13:49:26 UTC (rev 1261)
+++ trunk/eugene-plantuml-templates/pom.xml 2013-05-29 10:06:05 UTC (rev 1262)
@@ -3,7 +3,7 @@
#%L
EUGene :: EUGene
- $HeadURL: http://svn.nuiton.org/svn/eugene/trunk/eugene-java-templates/pom.xml $
+ $HeadURL$
%%
Copyright (C) 2004 - 2010 CodeLutin
%%
Property changes on: trunk/eugene-plantuml-templates/pom.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/eugene-plantuml-templates/src/main/java/org/nuiton/eugene/plantuml/PlantumlTemplatesGenerator.java
===================================================================
--- trunk/eugene-plantuml-templates/src/main/java/org/nuiton/eugene/plantuml/PlantumlTemplatesGenerator.java 2013-05-28 13:49:26 UTC (rev 1261)
+++ trunk/eugene-plantuml-templates/src/main/java/org/nuiton/eugene/plantuml/PlantumlTemplatesGenerator.java 2013-05-29 10:06:05 UTC (rev 1262)
@@ -1,19 +1,61 @@
package org.nuiton.eugene.plantuml;
+/*
+ * #%L
+ * EUGene :: PlantUML templates
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2013 CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
import net.sourceforge.plantuml.GeneratedImage;
import net.sourceforge.plantuml.SourceFileReader;
-import org.nuiton.eugene.models.object.*;
-import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl;
+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.ObjectModelEnumeration;
+import org.nuiton.eugene.models.object.ObjectModelGenerator;
+import org.nuiton.eugene.models.object.ObjectModelInterface;
+import org.nuiton.eugene.models.object.ObjectModelOperation;
+import org.nuiton.eugene.models.object.ObjectModelParameter;
-import java.io.*;
-import java.util.*;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Writer;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
-// http://maven-site.nuiton.org/eugene/objectmodel/ObjectModel_Interfaces.png
-//TODO : Plexus ?
-
+/**
+ * TODO
+ *
+ * @author agiraudet
+ * @plexus.component role="org.nuiton.eugene.Template" role-hint="org.nuiton.eugene.plantuml.PlantumlTemplatesGenerator"
+ * @since 2.6.3
+ */
public class PlantumlTemplatesGenerator extends ObjectModelGenerator {
private boolean _loginit = true;
+
private void log(String str) {
try {
FileWriter log;
@@ -27,7 +69,9 @@
log = new FileWriter(path, true);
log.write("[LOG] " + str + "\n");
log.close();
- } catch (IOException e) {;}
+ } catch (IOException e) {
+ ;
+ }
}
@Override
@@ -37,32 +81,26 @@
// utiliser le systeme de templates a l'avenir
- Map<ObjectModelAttribute,ObjectModelClassifier> linksOME = new LinkedHashMap<ObjectModelAttribute, ObjectModelClassifier>();
+ Map<ObjectModelAttribute, ObjectModelClassifier> linksOME = new LinkedHashMap<ObjectModelAttribute, ObjectModelClassifier>();
// debut du fichier
output.write("@startuml\n\n");
// parcours des classes
- for(ObjectModelClass class_tmp : input.getClasses())
- {
+ for (ObjectModelClass class_tmp : input.getClasses()) {
// sale
String classStereotype = "";
- if(class_tmp.getStereotypes().size()>0)
- {
+ if (class_tmp.getStereotypes().size() > 0) {
classStereotype = "<<";
boolean first = true;
- for(String str : class_tmp.getStereotypes())
- {
- if(first)
- {
- classStereotype = classStereotype+str;
+ for (String str : class_tmp.getStereotypes()) {
+ if (first) {
+ classStereotype = classStereotype + str;
first = false;
+ } else {
+ classStereotype = classStereotype + " ," + str;
}
- else
- {
- classStereotype = classStereotype+" ,"+str;
- }
}
- classStereotype = classStereotype+">>";
+ classStereotype = classStereotype + ">>";
}
/*if(class_tmp.getStereotypes().contains("entity"))
{
@@ -70,154 +108,123 @@
}*/
String className = class_tmp.getName();
// ajout de la classe
- output.write("class "+className+classStereotype+" {\n");
+ output.write("class " + className + classStereotype + " {\n");
// parcours des attributs de la classe
- for(ObjectModelAttribute attribute_tmp : class_tmp.getAttributes())
- {
+ for (ObjectModelAttribute attribute_tmp : class_tmp.getAttributes()) {
String attributeName = attribute_tmp.getName();
//String attributeType = afterLastPoint(attribute_tmp.getType());
String attributeType = attribute_tmp.getType();
// si l'attribut n'est lie a aucune classe
- if(attribute_tmp.referenceClassifier())
- {
+ if (attribute_tmp.referenceClassifier()) {
// ajout du lien
- linksOME.put(attribute_tmp,class_tmp);
- }
- else
- {
+ linksOME.put(attribute_tmp, class_tmp);
+ } else {
// ajout de l'attribut
- output.write(" -"+attributeName+" : "+attributeType+"\n");
+ output.write(" -" + attributeName + " : " + attributeType + "\n");
}
}
// parcours des operations
- for(ObjectModelOperation operation_tmp : class_tmp.getOperations())
- {
+ for (ObjectModelOperation operation_tmp : class_tmp.getOperations()) {
String operationName = operation_tmp.getName();
//String operationReturnType = afterLastPoint(operation_tmp.getReturnType());
String operationReturnType = operation_tmp.getReturnType();
// ajout de l'operation
- output.write(" +"+operationName+"(");
+ output.write(" +" + operationName + "(");
// parcours des parametres
boolean first = true;
- for(ObjectModelParameter param : operation_tmp.getParameters())
- {
+ for (ObjectModelParameter param : operation_tmp.getParameters()) {
String parameterName = param.getName();
//String parameterType = afterLastPoint(param.getType());
String parameterType = param.getType();
- if(first)
- {
+ if (first) {
first = false;
- }
- else
- {
+ } else {
output.write(", ");
}
// ajout du parametre
- output.write(parameterName+" : "+parameterType);
+ output.write(parameterName + " : " + parameterType);
}
// ajout du type de retour
- output.write(") : "+operationReturnType+"\n");// attention aux listes !
+ output.write(") : " + operationReturnType + "\n");// attention aux listes !
}
output.write("}\n\n");
}
// parcours des enumerations
- for(ObjectModelEnumeration enumeration_tmp : input.getEnumerations())
- {
+ for (ObjectModelEnumeration enumeration_tmp : input.getEnumerations()) {
String enumerationName = enumeration_tmp.getName();
String enumerationStereotype = "";
- if(enumeration_tmp.getStereotypes().contains("entity"))
- {
+ if (enumeration_tmp.getStereotypes().contains("entity")) {
enumerationStereotype = " <<entity>>";
}
// ajout de l'enumeration
- output.write("enum "+enumerationName+enumerationStereotype+" {\n");
+ output.write("enum " + enumerationName + enumerationStereotype + " {\n");
output.write("}\n\n");
}
// parcours des interfaces
- for(ObjectModelInterface interface_tmp : input.getInterfaces())
- {
+ for (ObjectModelInterface interface_tmp : input.getInterfaces()) {
String interfaceName = interface_tmp.getName();
String interfaceStereotype = "";
- if(interface_tmp.getStereotypes().contains("entity"))
- {
+ if (interface_tmp.getStereotypes().contains("entity")) {
interfaceStereotype = " <<entity>>";
}
// ajout de l'interface
- output.write("interface "+interfaceName+interfaceStereotype+" {\n");
+ output.write("interface " + interfaceName + interfaceStereotype + " {\n");
// ajout des methodes
output.write("}\n\n");
}
//liaisons
- for(ObjectModelAttribute attribute_tmp : linksOME.keySet())
- {
- if(attribute_tmp.isComposite() && attribute_tmp.referenceClassifier())
+ for (ObjectModelAttribute attribute_tmp : linksOME.keySet()) {
+ if (attribute_tmp.isComposite() && attribute_tmp.referenceClassifier()) {
+ output.write(linksOME.get(attribute_tmp).getName() + " *-- " + attribute_tmp.getClassifier().getName() + "\n");
+ } else if (attribute_tmp.isAggregate() && attribute_tmp.referenceClassifier())//else if
{
- output.write(linksOME.get(attribute_tmp).getName()+" *-- "+attribute_tmp.getClassifier().getName()+"\n");
- }
- else if(attribute_tmp.isAggregate() && attribute_tmp.referenceClassifier())//else if
+ output.write(linksOME.get(attribute_tmp).getName() + " o-- " + attribute_tmp.getClassifier().getName() + "\n");
+ } else if (!attribute_tmp.isNavigable() && attribute_tmp.referenceClassifier())//probleme avec les compositions et aggregations -> double lien
{
- output.write(linksOME.get(attribute_tmp).getName()+" o-- "+attribute_tmp.getClassifier().getName()+"\n");
+ output.write(attribute_tmp.getClassifier().getName() + " --> " + linksOME.get(attribute_tmp).getName() + "\n");
+ } else if (attribute_tmp.isNavigable() && attribute_tmp.referenceClassifier()) {
+ output.write(attribute_tmp.getClassifier().getName() + " -- " + linksOME.get(attribute_tmp).getName() + "\n");
}
- else if(!attribute_tmp.isNavigable() && attribute_tmp.referenceClassifier())//probleme avec les compositions et aggregations -> double lien
- {
- output.write(attribute_tmp.getClassifier().getName()+" --> "+linksOME.get(attribute_tmp).getName()+"\n");
- }
- else if(attribute_tmp.isNavigable() && attribute_tmp.referenceClassifier())
- {
- output.write(attribute_tmp.getClassifier().getName()+" -- "+linksOME.get(attribute_tmp).getName()+"\n");
- }
}
//classes d'association
- Map<String,LinkedList<String>> associationClass = new LinkedHashMap<String, LinkedList<String>>();
- for(ObjectModelClassifier classifier : input.getClassifiers())
- {
- for(ObjectModelAttribute attribute : classifier.getAttributes())
- {
- if(attribute.hasAssociationClass())
- {
+ Map<String, LinkedList<String>> associationClass = new LinkedHashMap<String, LinkedList<String>>();
+ for (ObjectModelClassifier classifier : input.getClassifiers()) {
+ for (ObjectModelAttribute attribute : classifier.getAttributes()) {
+ if (attribute.hasAssociationClass()) {
String key = attribute.getAssociationClass().getName();
String value = classifier.getName();
- if(associationClass.containsKey(key))
- {
+ if (associationClass.containsKey(key)) {
associationClass.get(key).add(value);
- }
- else
- {
- associationClass.put(key,new LinkedList<String>());
+ } else {
+ associationClass.put(key, new LinkedList<String>());
associationClass.get(key).add(value);
}
}
}
}
- for(Map.Entry<String,LinkedList<String>> entry : associationClass.entrySet())
- {
+ for (Map.Entry<String, LinkedList<String>> entry : associationClass.entrySet()) {
boolean first = true;
output.write("(");
- for(String value : entry.getValue())
- {
- if(first)
- {
+ for (String value : entry.getValue()) {
+ if (first) {
output.write(value);
first = false;
- }else
- {
- output.write(", "+value);
+ } else {
+ output.write(", " + value);
}
}
- output.write(") .. "+entry.getKey()+"\n");
+ output.write(") .. " + entry.getKey() + "\n");
}
//extensions/generalisations (heritage)
- for(ObjectModelClass classOM : input.getClasses())
- {
- for(ObjectModelClass superClassOM : classOM.getSuperclasses())
- {
- output.write(superClassOM.getName()+" <|-- "+classOM.getName());
+ for (ObjectModelClass classOM : input.getClasses()) {
+ for (ObjectModelClass superClassOM : classOM.getSuperclasses()) {
+ output.write(superClassOM.getName() + " <|-- " + classOM.getName());
}
}
@@ -226,20 +233,15 @@
}
// exemple : afterLastPoint("org.nuiton.testeugene.generator") return "generator"
- public static String afterLastPoint(String input)
- {
+ public static String afterLastPoint(String input) {
String str = new StringBuffer(input).reverse().toString();
String res = "";
- for(Character car : str.toCharArray())
- {
- if(car.equals('.'))
- {
+ for (Character car : str.toCharArray()) {
+ if (car.equals('.')) {
return res;
+ } else {
+ res = car.toString() + res;
}
- else
- {
- res = car.toString()+res;
- }
}
return res;
}
@@ -248,10 +250,10 @@
public void applyTemplate(ObjectModel model, File destDir) throws IOException {
super.applyTemplate(model, destDir);
try {
- File plantuml = new File(destDir+File.separator+this.getFilenameForModel(model));
+ File plantuml = new File(destDir + File.separator + this.getFilenameForModel(model));
SourceFileReader reader = new SourceFileReader(plantuml);
List<GeneratedImage> lst = reader.getGeneratedImages();
- new File(lst.get(0).getPngFile(), destDir+File.separator+model.getName()+".png");
+ new File(lst.get(0).getPngFile(), destDir + File.separator + model.getName() + ".png");
} catch (InterruptedException e) {
e.printStackTrace();
}
@@ -259,6 +261,6 @@
@Override
public String getFilenameForModel(ObjectModel model) {
- return model.getName()+".plantuml";
+ return model.getName() + ".plantuml";
}
}
Property changes on: trunk/eugene-plantuml-templates/src/main/java/org/nuiton/eugene/plantuml/PlantumlTemplatesGenerator.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/src/site/rst/index.rst
===================================================================
--- trunk/src/site/rst/index.rst 2013-05-28 13:49:26 UTC (rev 1261)
+++ trunk/src/site/rst/index.rst 2013-05-29 10:06:05 UTC (rev 1262)
@@ -51,10 +51,11 @@
.. _Generator: 07-glossaire.html
.. _FAQ: 08-FAQ.html
-EUGene is divided into 3 modules :
+EUGene is divided into 4 modules :
* `eugene-api`_ (EUGene Api)
* `eugene-java-templates`_ (Templates pour générer des classes java)
+ * `eugene-plantuml-templates`_ (depuis la version 2.7) (Templates pour générer des diagrammes plantumlclasses java)
* `eugene-maven-plugin`_ (Maven Plugin to generate stuff using EUGene)
.. _eugene-api: eugene/index.html
1
0
r1261 - trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml
by agiraudet@users.nuiton.org 28 May '13
by agiraudet@users.nuiton.org 28 May '13
28 May '13
Author: agiraudet
Date: 2013-05-28 15:49:26 +0200 (Tue, 28 May 2013)
New Revision: 1261
Url: http://nuiton.org/projects/eugene/repository/revisions/1261
Log:
refs #2685: correction d'un bug emp?\195?\170chant les r?\195?\169f?\195?\169rences vers les ?\195?\169num?\195?\169rations d'un m?\195?\170me mod?\195?\168le (attribut package non initialis?\195?\169)
Modified:
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlToObjectModel.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlToObjectModel.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlToObjectModel.java 2013-05-28 10:06:25 UTC (rev 1260)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlToObjectModel.java 2013-05-28 13:49:26 UTC (rev 1261)
@@ -451,6 +451,14 @@
log("literal="+String.valueOf(literalsYAML));
}
}
+
+ Object packageYAML = collectElement((List) enumerationYAML, PACKAGE);
+ if (packageYAML == null) {
+ enumerationOM.setPackage(packageOM);
+ } else {
+ enumerationOM.setPackage(String.valueOf(packageYAML));
+ log("package="+String.valueOf(packageYAML));
+ }
}
}
@@ -572,7 +580,7 @@
Object reverseAttributeNameYAML = collectElement((List) attributeYAML, REVERSE_ATTRIBUTE_NAME);
if (reverseAttributeNameYAML == null) {
- attributeOM.setReverseAttributeName("");//test
+ ;// attributeOM.setReverseAttributeName("");//test
} else {
attributeOM.setReverseAttributeName(String.valueOf(reverseAttributeNameYAML));
log("reverseAttributeName="+String.valueOf(reverseAttributeNameYAML));
1
0
r1260 - trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml
by agiraudet@users.nuiton.org 28 May '13
by agiraudet@users.nuiton.org 28 May '13
28 May '13
Author: agiraudet
Date: 2013-05-28 12:06:25 +0200 (Tue, 28 May 2013)
New Revision: 1260
Url: http://nuiton.org/projects/eugene/repository/revisions/1260
Log:
correction d'un bug: initialise l'attribut reverseAttributeName des des attributs de l'ObjectModel ?\195?\160 la cha?\195?\174ne vide
Modified:
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlToObjectModel.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlToObjectModel.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlToObjectModel.java 2013-05-27 14:38:32 UTC (rev 1259)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlToObjectModel.java 2013-05-28 10:06:25 UTC (rev 1260)
@@ -572,7 +572,7 @@
Object reverseAttributeNameYAML = collectElement((List) attributeYAML, REVERSE_ATTRIBUTE_NAME);
if (reverseAttributeNameYAML == null) {
- ;//attributeOM.setReverseAttributeName("");
+ attributeOM.setReverseAttributeName("");//test
} else {
attributeOM.setReverseAttributeName(String.valueOf(reverseAttributeNameYAML));
log("reverseAttributeName="+String.valueOf(reverseAttributeNameYAML));
1
0