r1249 - trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml
Author: agiraudet Date: 2013-05-22 15:51:42 +0200 (Wed, 22 May 2013) New Revision: 1249 Url: http://nuiton.org/projects/eugene/repository/revisions/1249 Log: ajout d'une nouvelle fonctionnalit?\195?\169 ?\195?\160 YamlToObjectModel.java : g?\195?\168re les valeurs par d?\195?\169faut saisis dans un fichier externe 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-16 16:01:22 UTC (rev 1248) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlToObjectModel.java 2013-05-22 13:51:42 UTC (rev 1249) @@ -15,54 +15,59 @@ * Time: 11:15 */ -//TODO: gestion des labels - public class YamlToObjectModel { protected Yaml yaml; protected String packageOM; protected Map<String, String> imports; + protected Map<String, String> defaultValues; + protected boolean defaultVoid; //mots clefs - public static final String IMPORTS = "imports"; - public static final String PACKAGE = "package"; - public static final String VERSION = "version"; - public static final String NAME = "name"; + public static final String FILE_DEFAULT_VALUES = "yamlobjectmodel.default"; + public static final String DEFAULT = "default"; + public static final String SEPARATOR = "."; + + public static final String ABSTRACT = "abstract"; + 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 INTERFACE = "interface"; public static final String CLASS_ASSOCIATION = "classassociation"; + 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 STATIC = "static"; - public static final String DOCUMENTATION = "documentation"; - public static final String TAG_VALUES = "tagvalues"; - public static final String COMMENTS = "comments"; - public static final String STEREOTYPES = "stereotypes"; 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 TYPE = "type"; - public static final String ATTRIBUTE = "attribute"; + 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 SUPER_INTERFACES = "superinterfaces"; - public static final String SUPER_CLASSES = "superclasses"; + public static final String ORDERED = "ordered"; public static final String ORDERING = "ordering"; - public static final String DEFAULT_VALUE = "defaultvalue"; - public static final String MIN_MULTIPLICITY = "minmultiplicity"; - public static final String MAX_MULTIPLICITY = "maxmultiplicity"; - public static final String ORDERED = "ordered"; - public static final String UNIQUE = "unique"; - public static final String NAVIGABLE = "navigable"; - public static final String ASSOCIATION_TYPE = "associationtype"; - public static final String FINAL = "final"; - public static final String ASSOCIATION_CLASS_NAME = "associationclassname"; + 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 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 ABSTRACT = "abstract"; - public static final String PARAMETER = "parameter"; - public static final String RETURN_PARAMETER = "returnparameter"; - public static final String BODY_CODE = "bodeycode"; - public static final String PARTICIPANT = "participant"; - public static final String LITERAL = "literal"; + public static final String ELEMENT = "element"; private boolean _loginit = true; private void log(String str) { @@ -85,14 +90,46 @@ yaml = new Yaml(); } - //TODO: retourner boolean sur reussite chargement ? ou lever excpetions ? - //TODO: charger valeurs par defaut en fonction de la version de la syntaxe yaml (syntaxe: version), charger les valeurs à partir d'un fichier ou d'une classe ? + //TODO: gestion des labels ? -> non pas pour le moment (plutot pour la syntaxe "user friendly") + //TODO: retourner boolean sur reussite chargement ? ou lever excpetions ? -> aucun des deux pour le moment + //TODO: charger valeurs par defaut en fonction de la version de la syntaxe yaml (syntaxe: version), charger les valeurs à partir d'un fichier ou d'une classe ? -> a partir d'un fichier YAML //if(valeur == null) -> charger valeur par defaut -charger celles de l'utilisateur ou celles du programme ou rien public void loadFile(File file, ObjectModel model) throws IOException { + //test - log + //chargement du fichier contenant les valeurs par defaut + defaultValues = new LinkedHashMap<String, String>(); + String defaultValuesPATH = file.getParent()+File.separator+FILE_DEFAULT_VALUES; + File defaultValuesFILE = new File(defaultValuesPATH); + if(defaultValuesFILE.isFile() && defaultValuesFILE.canRead()) + { + InputStream defaultValuesIN = new FileInputStream(defaultValuesPATH); + Object defaultValuesYAML = yaml.load(defaultValuesIN); + defaultValuesIN.close(); + if(defaultValuesYAML instanceof Map) + { + for(Object entry : ((Map) defaultValuesYAML).entrySet()) + { + defaultValues.put(String.valueOf(((Map.Entry) entry).getKey()),String.valueOf(((Map.Entry) entry).getValue())); + log("default=[key="+String.valueOf(((Map.Entry) entry).getKey())+" value="+String.valueOf(((Map.Entry) entry).getValue())+"]"); + } + } + } + //charges les valeurs par defaut du logiciel si false ou ne fait rien si true + if(defaultValues.get(DEFAULT) == null) + { + defaultVoid = false; + + } + else + { + defaultVoid = Boolean.valueOf(String.valueOf(defaultValues.get(DEFAULT))); + } + //test - log + ObjectModelImpl modelOM = (ObjectModelImpl) model; - InputStream input = new FileInputStream(file); - Object modelYAML = yaml.load(input); - input.close(); + InputStream inputModel = new FileInputStream(file); + Object modelYAML = yaml.load(inputModel); + inputModel.close(); List<String> ignore = new LinkedList<String>(); ignore.add(IMPORTS); @@ -141,21 +178,42 @@ //load package Object packageYAML = collectElement((List) modelYAML, PACKAGE); if (packageYAML == null) { - ; + if(defaultValues.containsKey(PACKAGE)) + { + packageOM = defaultValues.get(PACKAGE); + } + else + { + ; + } } else { packageOM = String.valueOf(packageYAML); } Object nameYAML = collectElement((List) modelYAML, NAME); if (nameYAML == null) { - ; + if(defaultValues.containsKey(NAME)) + { + modelOM.setName(defaultValues.get(NAME)); + } + else + { + ; + } } else { modelOM.setName(String.valueOf(nameYAML)); } Object versionYAML = collectElement((List) modelYAML, VERSION); if (versionYAML == null) { - ; + if(defaultValues.containsKey(VERSION)) + { + modelOM.setVersion(defaultValues.get(VERSION)); + } + else + { + ; + } } else { modelOM.setVersion(String.valueOf(versionYAML)); } @@ -207,14 +265,31 @@ Object nameYAML = collectElement((List) elementYAML, NAME); if (nameYAML == null) { - ; + if(defaultValues.containsKey(ELEMENT+SEPARATOR+NAME)) + { + elementOM.setName(defaultValues.get(ELEMENT+SEPARATOR+NAME)); + } + else + { + ; + } } else { elementOM.setName(String.valueOf(nameYAML)); } Object staticYAML = collectElement((List) elementYAML, STATIC); if (staticYAML == null) { - ; + if(defaultValues.containsKey(ELEMENT+SEPARATOR+STATIC)) + { + elementOM.setStatic(Boolean.valueOf(defaultValues.get(ELEMENT+SEPARATOR+STATIC))); + //log + log("default value loaded "+ELEMENT+SEPARATOR+STATIC+"="+defaultValues.containsKey(ELEMENT+SEPARATOR+STATIC)); + //log + } + else + { + ; + } } else { elementOM.setStatic(Boolean.valueOf(String.valueOf(staticYAML))); } @@ -333,7 +408,8 @@ Object superClassesYAML = collectElement((List) classYAML, SUPER_CLASSES); if (superClassesYAML instanceof List) { for (Object superClass : (List) superClassesYAML) { - ObjectModelImplRef superClassOM = new ObjectModelImplRef(); + ObjectModelImplSuperClassRef superClassOM = new ObjectModelImplSuperClassRef(); + //ObjectModelImplRef superClassOM = new ObjectModelImplRef(); superClassOM.setName(String.valueOf(superClass)); classOM.addSuperclass(superClassOM); }
participants (1)
-
agiraudet@users.nuiton.org