Bonjour à tous,
J'ai créé un MetaModel dans un projet EMF, à partir duquel j'ai généré le code et l'éditeur pour ce modèle. EMF fait tout ça très bien.
Si j'utilise cet éditeur pour créer un nouveau modèle, le stockage physique des informations de celui-ci (ce que j'apelle persistance), se fait par défaut en XMI. En gros, le fichier géré par l'éditeur est un fichier XMI.
Moi je voudrais pouvoir le faire dans un autre format (fichier Excel dans mon cas mais peu importe).
J'ai créé un plugin Eclipse qui ouvre cet éditeur et donc cela me permet de gérer moi-même mon objet Resource (en charge de la persistance).
Voici le code :
Je précise (après avoir étudié le code) que la méthode createResource() renvoie un objet de type ResourceImpl qui implémente l'interface Resource, d'où le fait qu'il soit vu que comme une Resource.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 //Définition de ma ressource ResourceSet resourceSet = new ResourceSetImpl(); Resource resource = resourceSet.createResource(fileURI); //Ouverture de mon éditeur (en réalité dans le try/catch qui va bien) page.openEditor ( new FileEditorInput(modelFile), workbench.getEditorRegistry().getDefaultEditor( modelFile.getFullPath().toString() ).getId() );
C'est cet objet ResourceImpl qui va ensuite sauvegarder et lire au format XMI.
Afin de commencer doucement, je souhaite comprendre et utiliser une autre implémentation de Resource faite par EMF qui est BinaryResourceImpl. Celle-ci fonctionne différement puisque selon le livre EMF Second Edition, ça se déclare comme cela :
En gros on ne passe pas par un objet ResourceSet mais on crée directement notre Resource.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Resource resource = new BinaryResourceImpl(fileURI);
J'ai fait cela, mais mon éditeur refuse de s'ouvrir et renvoie une MalformedByteSequenceException.
Au niveau du principe, il me semble qu'on peut à la fois conserver la vue arborescente offerte par l'éditeur généré par EMF (que j’appellerai Vue Logique) et avoir une persistance autre que XMI (que j’appellerai Vue Physique).
Me trompe-je ?
Merci à ceux qui connaissent EMF, qui m'auraient compris et qui pourront éventuellement m'aider... !
Antoine
Partager