IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Eclipse Modeling Discussion :

Manipulation des transformations QVTO


Sujet :

Eclipse Modeling

  1. #1
    Futur Membre du Club
    Homme Profil pro
    JAVA
    Inscrit en
    Février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Algérie

    Informations professionnelles :
    Activité : JAVA
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 4
    Points : 9
    Points
    9
    Par défaut Manipulation des transformations QVTO
    Bonjour,

    J'essaie d'exécuter une transformation, essentiellement via le code donné ici : http://wiki.eclipse.org/QVTOML/Examples/InvokeInJava.

    Cela fonctionne pour mes ressources:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
        URI transformationURI = URI.createURI("platform:/resource/tests/transforms/ecore2uml.qvto");
        TransformationExecutor executor = new TransformationExecutor(transformationURI);
     
        ResourceSet resourceSet = new ResourceSetImpl();
        Resource inResource = resourceSet.getResource(URI.createURI("platform:/resource/tests/model/Model1.ecore"), true);        
        EList<EObject> inObjects = inResource.getContents();
     
        ModelExtent input = new BasicModelExtent(inObjects);        
        ModelExtent output = new BasicModelExtent();
     
        ExecutionContextImpl context = new ExecutionContextImpl();
        context.setConfigProperty("keepModeling",true);
     
        ExecutionDiagnostic result = executor.execute(context, input, output);
     
        if(result.getSeverity() == Diagnostic.OK) {
            // the output objects got captured in the output extent
            List<EObject> outObjects = output.getContents();
            // let's persist them using a resource 
            ResourceSet resourceSet2 = new ResourceSetImpl();
            Resource outResource = resourceSet2.getResource(URI.createURI("platform:/resource/tests/model/Model2.uml"), true);
    Mais un message d'erreur se produit lorsque j'exécute cette transformation qvto :
    Exception in thread "main" java.lang.RuntimeException: Cannot create a resource for 'platform:/resource/tests/model/Model1.ecore'; a registered resource factory is needed
    at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource (ResourceSetImpl.java:394) :
    Ce qu'il a déclaré lors de la ressource est nul.

    Je suis habitué d'une ressource .ecore.

    Quelqu'un saurait-il m'expliquer ce qui ne va pas ?

    Merci d'avance pour votre aide.

  2. #2
    Membre émérite
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Inscrit en
    Juillet 2008
    Messages
    1 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 469
    Points : 2 997
    Points
    2 997
    Par défaut
    En fait avec EMF, tu enregistres une resource factory par type de fichier/extension. La tu manipules des .uml et EMF ne connait pas ce format .uml. Donc il te demande de lui specifier la factory a utiliser pour lire le fichier. Cce doit etre une UMLFactory j'imagine.
    Il faudrait que tu sois sur que le plugin qui gere UML soit dans ton classpath, et qu'il enregistre bien sa factory pour l'extension .uml. Sinon, tu enregistres la UMLFactory pour le .uml par toi meme. Le point d'extension dont tu reves est org.eclipse.emf.ecore.extension_parser
    Pour du HTML, CSS, JavaScript, TypeScript, JSon, Yaml, Node... dans Eclipse IDE, installe Eclipse Wild Web Developer
    Pour du Rust dans Eclipse IDE, installe Eclipse Corrosion
    Follow me on twitter

  3. #3
    Futur Membre du Club
    Homme Profil pro
    JAVA
    Inscrit en
    Février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Algérie

    Informations professionnelles :
    Activité : JAVA
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 4
    Points : 9
    Points
    9
    Par défaut
    Merci pour votre aide mais ça n'a pas marché, voici la partie complète du code qui génère l'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    package classes;
     
     
     
    import java.io.IOException;
    import java.util.Collections;
    import java.util.List;
    import java.util.Map;
     
    import javax.swing.SwingUtilities;
    import javax.swing.UIManager;
     
    import org.eclipse.core.runtime.IStatus;
    import org.eclipse.emf.common.notify.Notifier;
    import org.eclipse.emf.common.util.BasicDiagnostic;
    import org.eclipse.emf.common.util.Diagnostic;
    import org.eclipse.emf.common.util.EList;
    import org.eclipse.emf.common.util.TreeIterator;
    import org.eclipse.emf.common.util.URI;
    import org.eclipse.emf.ecore.EObject;
    import org.eclipse.emf.ecore.resource.Resource;
    import org.eclipse.emf.ecore.resource.ResourceSet;
    import org.eclipse.emf.ecore.resource.Resource.Factory;
    import org.eclipse.emf.ecore.resource.Resource.Factory.Registry;
    import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
    import org.eclipse.emf.ecore.resource.impl.ResourceFactoryRegistryImpl;
    import org.eclipse.emf.ecore.resource.impl.ResourceImpl;
    import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
    import org.eclipse.m2m.qvt.oml.BasicModelExtent;
    import org.eclipse.m2m.qvt.oml.ExecutionContextImpl;
    import org.eclipse.m2m.qvt.oml.ExecutionDiagnostic;
    import org.eclipse.m2m.qvt.oml.ModelExtent;
    import org.eclipse.m2m.qvt.oml.TransformationExecutor;
     
     
     
     
     
     
    public class onto2smd {
     
    	public onto2smd(){	
     
    	URI transformationURI = URI.createURI("platform:/resource/tests/transforms/OntoL_ecore_2_SMDuml.qvto");
     
    	TransformationExecutor executor = new TransformationExecutor(transformationURI);
     
    	ResourceSet resourceSet = new ResourceSetImpl();
     
    	URI inURI = URI.createURI("platform:/resource/tests/model/M.ecore",true);
     
     
    	Resource inResource = new ResourceImpl(inURI);		
     
         EList<EObject> inObjects = inResource.getContents();
     
    	ModelExtent input = new BasicModelExtent(inObjects);
     
    	ModelExtent output = new BasicModelExtent();
     
     
    	ExecutionContextImpl context = new ExecutionContextImpl();
    	context.setConfigProperty("keepModeling",true);
     
    	ExecutionDiagnostic result = executor.execute(context, input, output);
     
     
    	if(result.getSeverity()== Diagnostic.OK) {
     
     
    	 List<EObject> outObjects = output.getContents();
     
    	        ResourceSet resourceSet2 = new ResourceSetImpl();
     
    		Resource outResource = resourceSet2.getResource(
    				URI.createURI("platform:/resource/tests/model/M.uml"), true);
     
    		outResource.getContents().addAll(outObjects);
    		try {
    			outResource.save(Collections.emptyMap());
    		} catch (IOException e) {
     
    			e.printStackTrace();	
    		}
    	} else {
     
     
    		IStatus status = BasicDiagnostic.toIStatus(result);
     
    		System.err.println("ERREUR chargement du mod���le ");
    	}
    	}
     
     
    	public static void main(String[] args) {
    		    try {
    		      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    		    }
    		    catch(Exception e) {
    		      e.printStackTrace();
    		    }
    		    new onto2smd();
    		  }
     
    }
    L'erreur produite lors de l'execution du programme dans cette ligne (ligne 65) est:

    ExecutionDiagnostic result = executor.execute(context, input,output);
    Si vous pouvez voire encore une fois le code et aider moi SVP !!
    MERCI d'avance

Discussions similaires

  1. [xml]manipuler des données xml sous Oracle9i
    Par crazy dans le forum SQL
    Réponses: 7
    Dernier message: 28/02/2004, 11h40
  2. Manipuler des dates...
    Par Ti Jen-tsie dans le forum Langage
    Réponses: 4
    Dernier message: 26/06/2003, 11h46
  3. Manipulation des handle contexte
    Par rockbiker dans le forum DirectX
    Réponses: 1
    Dernier message: 09/05/2003, 18h51
  4. Fonctions de manipulation des chaines et des dates
    Par Fares BELHAOUAS dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2002, 22h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo