Come posso scorrere il mio modello fem da un editor di GMF, senza l'analisi del file XML del modello?

StackOverflow https://stackoverflow.com/questions/4398541

Domanda

Ho creato un editor di GMF che disegna modelli in base alla mia EMF model.What ho voluto fare è per scorrere del mio modello eclasses .Can questo essere raggiunto in fase di esecuzione attraverso il mio codice del plugin, senza dover leggere il file XML che l'editor GMF crea? c'è una tale API da campi elettromagnetici?

È stato utile?

Soluzione

Quando si genera il codice di prova dal file genmodel poi all'interno della XYZ.test plug-in non è tale tipo di codice che ero traverse searching.It attraverso il file XMI del modello

// Create a resource set to hold the resources.
    //
    ResourceSet resourceSet = new ResourceSetImpl();

    // Register the appropriate resource factory to handle all file extensions.
    //
    resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put
        (Resource.Factory.Registry.DEFAULT_EXTENSION, 
         new XMIResourceFactoryImpl());

    // Register the package to ensure it is available during loading.
    //
    resourceSet.getPackageRegistry().put
        (XYZmetamodelPackage.eNS_URI, 
         XYZmetamodelPackage.eINSTANCE);

    // If there are no arguments, emit an appropriate usage message.
    //
    if (args.length == 0) {
        System.out.println("Enter a list of file paths or URIs that have content like this:");
        try {
            Resource resource = resourceSet.createResource(URI.createURI("http:///My.metamodel"));
            ModelObject root = atagmetamodelFactory.eINSTANCE.createModelObject();
            resource.getContents().add(root);
            resource.save(System.out, null);
        }
        catch (IOException exception) {
            exception.printStackTrace();
        }
    }
    else {
        // Iterate over all the arguments.
        //
        for (int i = 0; i < args.length; ++i) {
            // Construct the URI for the instance file.
            // The argument is treated as a file path only if it denotes an existing file.
            // Otherwise, it's directly treated as a URL.
            //
            File file = new File(args[i]);
            URI uri = file.isFile() ? URI.createFileURI(file.getAbsolutePath()): URI.createURI(args[i]);

            try {
                // Demand load resource for this file.
                //
                Resource resource = resourceSet.getResource(uri, true);
                System.out.println("Loaded " + uri);

                // Validate the contents of the loaded resource.
                //
                for (EObject eObject : resource.getContents()) {
                    Diagnostic diagnostic = Diagnostician.INSTANCE.validate(eObject);
                    if (diagnostic.getSeverity() != Diagnostic.OK) {
                        printDiagnostic(diagnostic, "");
                    }
                }
            }
            catch (RuntimeException exception) {
                System.out.println("Problem loading " + uri);
                exception.printStackTrace();
            }
        }
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top