Search in sources :

Example 1 with XMLResourceFactoryImpl

use of org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl in project archi-modelrepository-plugin by archi-contribs.

the class GraficoModelImporter method importAsModel.

/**
 * Import the grafico XML files as a IArchimateModel
 * @throws IOException
 */
public IArchimateModel importAsModel() throws IOException {
    // Create folders for model and images
    File modelFolder = new File(fLocalRepoFolder, IGraficoConstants.MODEL_FOLDER);
    modelFolder.mkdirs();
    File imagesFolder = new File(fLocalRepoFolder, IGraficoConstants.IMAGES_FOLDER);
    imagesFolder.mkdirs();
    // If the top folder.xml does not exist then there is nothing to import, so return null
    if (!(new File(modelFolder, IGraficoConstants.FOLDER_XML)).isFile()) {
        return null;
    }
    // Create ResourceSet
    fResourceSet = new ResourceSetImpl();
    // $NON-NLS-1$
    fResourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new XMLResourceFactoryImpl());
    // Reset the ID -> Object lookup table
    fIDLookup = new HashMap<String, IIdentifier>();
    // Load the Model from files (it will contain unresolved proxies)
    fModel = loadModel(modelFolder);
    // Remove model from its resource (needed to save it back to a .archimate file)
    fResourceSet.getResource(URI.createFileURI((new File(modelFolder, IGraficoConstants.FOLDER_XML)).getAbsolutePath()), true).getContents().remove(fModel);
    // Resolve proxies
    fUnresolvedObjects = null;
    resolveProxies();
    // Load images
    loadImages(imagesFolder);
    return fModel;
}
Also used : ResourceSetImpl(org.eclipse.emf.ecore.resource.impl.ResourceSetImpl) XMLResourceFactoryImpl(org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl) IIdentifier(com.archimatetool.model.IIdentifier) File(java.io.File)

Example 2 with XMLResourceFactoryImpl

use of org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl in project mylyn.docs by eclipse.

the class Publication method registerOPFResourceFactory.

/**
 * Registers a new resource factory for OPF data structures. This is normally done through Eclipse extension points
 * but we also need to be able to create this factory without the Eclipse runtime.
 */
private void registerOPFResourceFactory() {
    // Register package so that it is available even without the Eclipse runtime
    @SuppressWarnings("unused") OPFPackage packageInstance = OPFPackage.eINSTANCE;
    // Register the file suffix
    Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put(OPF_FILE_SUFFIX, new XMLResourceFactoryImpl() {

        @Override
        public Resource createResource(URI uri) {
            OPFResourceImpl xmiResource = new OPFResourceImpl(uri) {

                @Override
                protected XMLHelper createXMLHelper() {
                    EPUBXMLHelperImp xmlHelper = new EPUBXMLHelperImp();
                    return xmlHelper;
                }
            };
            Map<Object, Object> loadOptions = xmiResource.getDefaultLoadOptions();
            Map<Object, Object> saveOptions = xmiResource.getDefaultSaveOptions();
            // We use extended metadata
            saveOptions.put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
            loadOptions.put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
            // Required in order to correctly read in attributes
            loadOptions.put(XMLResource.OPTION_LAX_FEATURE_PROCESSING, Boolean.TRUE);
            // Treat "href" attributes as features
            loadOptions.put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
            // UTF-8 encoding is required per specification
            saveOptions.put(XMLResource.OPTION_ENCODING, XML_ENCODING);
            // Do not download any external DTDs.
            Map<String, Object> parserFeatures = new HashMap<String, Object>();
            // $NON-NLS-1$
            parserFeatures.put("http://xml.org/sax/features/validation", Boolean.FALSE);
            // $NON-NLS-1$
            parserFeatures.put(// $NON-NLS-1$
            "http://apache.org/xml/features/nonvalidating/load-external-dtd", Boolean.FALSE);
            loadOptions.put(XMLResource.OPTION_PARSER_FEATURES, parserFeatures);
            return xmiResource;
        }
    });
}
Also used : XMLResourceFactoryImpl(org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl) OPFResourceImpl(org.eclipse.mylyn.docs.epub.opf.util.OPFResourceImpl) Resource(org.eclipse.emf.ecore.resource.Resource) XMLResource(org.eclipse.emf.ecore.xmi.XMLResource) URI(org.eclipse.emf.common.util.URI) EPUBXMLHelperImp(org.eclipse.mylyn.docs.epub.internal.EPUBXMLHelperImp) EObject(org.eclipse.emf.ecore.EObject) XMLHelper(org.eclipse.emf.ecore.xmi.XMLHelper) OPFPackage(org.eclipse.mylyn.docs.epub.opf.OPFPackage) Map(java.util.Map) HashMap(java.util.HashMap)

Example 3 with XMLResourceFactoryImpl

use of org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl in project BIMserver by opensourceBIM.

the class Express2EMF method writeEMF.

public void writeEMF(String fileName) {
    ResourceSet metaResourceSet = new ResourceSetImpl();
    metaResourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("ecore", new XMLResourceFactoryImpl());
    URI resUri = URI.createURI(fileName);
    Resource metaResource = metaResourceSet.createResource(resUri);
    metaResource.getContents().add(schemaPack);
    try {
        metaResource.save(null);
    } catch (Exception e) {
        LOGGER.error("", e);
    }
}
Also used : ResourceSetImpl(org.eclipse.emf.ecore.resource.impl.ResourceSetImpl) XMLResourceFactoryImpl(org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl) Resource(org.eclipse.emf.ecore.resource.Resource) ResourceSet(org.eclipse.emf.ecore.resource.ResourceSet) URI(org.eclipse.emf.common.util.URI) FileNotFoundException(java.io.FileNotFoundException)

Example 4 with XMLResourceFactoryImpl

use of org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl in project BIMserver by opensourceBIM.

the class XSDSchemaReader method writeEMF.

public void writeEMF(String fileName) {
    ResourceSet metaResourceSet = new ResourceSetImpl();
    metaResourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("ecore", new XMLResourceFactoryImpl());
    URI resUri = URI.createURI(fileName);
    Resource metaResource = metaResourceSet.createResource(resUri);
    metaResource.getContents().add(ePackage);
    try {
        metaResource.save(null);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Also used : ResourceSetImpl(org.eclipse.emf.ecore.resource.impl.ResourceSetImpl) XMLResourceFactoryImpl(org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl) Resource(org.eclipse.emf.ecore.resource.Resource) ResourceSet(org.eclipse.emf.ecore.resource.ResourceSet) URI(org.eclipse.emf.common.util.URI) SAXException(org.xml.sax.SAXException)

Example 5 with XMLResourceFactoryImpl

use of org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl in project archi-modelrepository-plugin by archi-contribs.

the class GraficoModelExporter method exportModel.

/**
 * Export the IArchimateModel as Grafico files
 * @throws IOException
 */
public void exportModel() throws IOException {
    // Define target folders for model and images
    // Delete them and re-create them (remark: FileUtils.deleteFolder() does sanity checks)
    File modelFolder = new File(fLocalRepoFolder, IGraficoConstants.MODEL_FOLDER);
    FileUtils.deleteFolder(modelFolder);
    modelFolder.mkdirs();
    File imagesFolder = new File(fLocalRepoFolder, IGraficoConstants.IMAGES_FOLDER);
    FileUtils.deleteFolder(imagesFolder);
    imagesFolder.mkdirs();
    // Save model images (if any): this has to be done on original model (not a copy)
    saveImages();
    // Create ResourceSet
    fResourceSet = new ResourceSetImpl();
    // $NON-NLS-1$
    fResourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new XMLResourceFactoryImpl());
    // Add a URIConverter that will be used to map full filenames to logical names
    fResourceSet.setURIConverter(new ExtensibleURIConverterImpl());
    // Now work on a copy
    IArchimateModel copy = EcoreUtil.copy(fModel);
    // Create directory structure and prepare all Resources
    createAndSaveResourceForFolder(copy, modelFolder);
    // Now save all Resources
    int maxThreads = ModelRepositoryPlugin.INSTANCE.getPreferenceStore().getInt(IPreferenceConstants.PREFS_EXPORT_MAX_THREADS);
    // $NON-NLS-1$
    JobGroup jobgroup = new JobGroup("GraficoModelExporter", maxThreads, 1);
    final ExceptionProgressMonitor pm = new ExceptionProgressMonitor();
    for (Resource resource : fResourceSet.getResources()) {
        Job job = new // $NON-NLS-1$
        Job(// $NON-NLS-1$
        "Resource Save Job") {

            @Override
            protected IStatus run(IProgressMonitor monitor) {
                try {
                    resource.save(null);
                } catch (IOException ex) {
                    pm.catchException(ex);
                }
                return Status.OK_STATUS;
            }
        };
        job.setJobGroup(jobgroup);
        job.schedule();
    }
    BusyIndicator.showWhile(Display.getDefault(), new Runnable() {

        @Override
        public void run() {
            try {
                jobgroup.join(0, pm);
            } catch (OperationCanceledException | InterruptedException ex) {
            }
        }
    });
    // Throw on any exception
    if (pm.ex != null) {
        throw pm.ex;
    }
}
Also used : JobGroup(org.eclipse.core.runtime.jobs.JobGroup) ResourceSetImpl(org.eclipse.emf.ecore.resource.impl.ResourceSetImpl) XMLResourceFactoryImpl(org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl) XMLResource(org.eclipse.emf.ecore.xmi.XMLResource) Resource(org.eclipse.emf.ecore.resource.Resource) IOException(java.io.IOException) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) ExtensibleURIConverterImpl(org.eclipse.emf.ecore.resource.impl.ExtensibleURIConverterImpl) Job(org.eclipse.core.runtime.jobs.Job) File(java.io.File) IArchimateModel(com.archimatetool.model.IArchimateModel)

Aggregations

XMLResourceFactoryImpl (org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl)6 Resource (org.eclipse.emf.ecore.resource.Resource)5 URI (org.eclipse.emf.common.util.URI)4 ResourceSetImpl (org.eclipse.emf.ecore.resource.impl.ResourceSetImpl)4 XMLResource (org.eclipse.emf.ecore.xmi.XMLResource)3 File (java.io.File)2 HashMap (java.util.HashMap)2 Map (java.util.Map)2 ResourceSet (org.eclipse.emf.ecore.resource.ResourceSet)2 IArchimateModel (com.archimatetool.model.IArchimateModel)1 IIdentifier (com.archimatetool.model.IIdentifier)1 FileNotFoundException (java.io.FileNotFoundException)1 IOException (java.io.IOException)1 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)1 Job (org.eclipse.core.runtime.jobs.Job)1 JobGroup (org.eclipse.core.runtime.jobs.JobGroup)1 EObject (org.eclipse.emf.ecore.EObject)1 ExtensibleURIConverterImpl (org.eclipse.emf.ecore.resource.impl.ExtensibleURIConverterImpl)1 XMLHelper (org.eclipse.emf.ecore.xmi.XMLHelper)1 EPUBXMLHelperImp (org.eclipse.mylyn.docs.epub.internal.EPUBXMLHelperImp)1