r1259 - trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml
Author: agiraudet Date: 2013-05-27 16:38:32 +0200 (Mon, 27 May 2013) New Revision: 1259 Url: http://nuiton.org/projects/eugene/repository/revisions/1259 Log: Gestion des imports internes pour les attributs et les classes d'association 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-26 06:50:33 UTC (rev 1258) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/YamlToObjectModel.java 2013-05-27 14:38:32 UTC (rev 1259) @@ -90,51 +90,23 @@ //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 //TODO: mettre les valeurs par défaut en dur dans le code - //TODO: gérer les imports sous forme de List et récuperer le type + //TODOK: gérer les imports sous forme de List et récuperer le type //TODO: pre-charger les noms et paquetages des classes pour les imports - //if(valeur == null) -> charger valeur par defaut -charger celles de l'utilisateur ou celles du programme ou rien + //TODO: 1/ instancier les objets et les attributs de niveau 1 (name, package...) (et charger les imports vers les classes du modele) 2/ charger les objets de niveau 2 (attributes, operations...) + /* + * nouvelle implémentation : contraintes : labels, valeurs par défaut, parser des chaines (imports internes/externes) + * + */ public void loadFile(File file, ObjectModel model) throws IOException { - /*//test - log - //chargement du fichier contenant les valeurs par defaut + //TODO: valeurs par defaut, faire interface ? ou simple map ? + mots clefs ? 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 - - //TODO: valeurs par defaut, faire interface ? ou simple map ? - defaultValues = new LinkedHashMap<String, String>(); - ObjectModelImpl modelOM = (ObjectModelImpl) model; InputStream inputModel = new FileInputStream(file); Object modelYAML = yaml.load(inputModel); inputModel.close(); List<String> ignore = new LinkedList<String>(); - //ignore.add(IMPORTS); ignore.add(TAG_VALUES); browseKeySetToLowerCase(modelYAML, ignore); @@ -213,6 +185,24 @@ } } + //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)); + for(Object objectYAML : objectsYAML) + { + if(objectYAML instanceof List) + { + Object importNameYAML = collectElement((List) objectYAML, NAME); + //Object importPackageYAML = collectElement((List) objectYAML, PACKAGE); + imports.put(String.valueOf(importNameYAML),packageOM+"."+String.valueOf(importNameYAML)); + log("import="+imports.get(String.valueOf(importNameYAML))); + log(imports.toString()); + } + } + //test imports objets modele + List classesYAML = collectAllElements((List) modelYAML, CLASS); for (Object classYAML : classesYAML) { ObjectModelClassImpl classOM = new ObjectModelClassImpl(); @@ -425,8 +415,13 @@ if (nameYAML == null) { ; } else { - participantOM.setName(String.valueOf(nameYAML)); - log("name="+String.valueOf(nameYAML)); + String name = String.valueOf(nameYAML); + if (imports.containsKey(name)) { + participantOM.setName(imports.get(name)); + } else { + participantOM.setName(name); + } + log("name="+name); } Object attributeYAML = collectElement((List) participantYAML, ATTRIBUTE); @@ -566,8 +561,13 @@ if (associationClassNameYAML == null) { ; } else { - attributeOM.setAssociationClassName(String.valueOf(associationClassNameYAML)); - log("associationClassName="+String.valueOf(associationClassNameYAML)); + String associationClassName = String.valueOf(associationClassNameYAML); + if (imports.containsKey(associationClassName)) { + attributeOM.setAssociationClassName(imports.get(associationClassName)); + } else { + attributeOM.setAssociationClassName(associationClassName); + } + log("associationClassName="+associationClassName); } Object reverseAttributeNameYAML = collectElement((List) attributeYAML, REVERSE_ATTRIBUTE_NAME);
participants (1)
-
agiraudet@users.nuiton.org