diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceFactoryImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceFactoryImpl.java index e518baae2725780d5cfc9c01889dc24d1a0babd7..79b2fea0e7fe7eb808588456e2bc4b11d1599009 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceFactoryImpl.java +++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceFactoryImpl.java @@ -21,12 +21,12 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd.util; import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.resource.Resource; - import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl; import org.eclipse.emf.ecore.xmi.XMLResource; +import fr.centralesupelec.edf.riseclipse.util.IRiseClipseResourceFactory; + /** * <!-- begin-user-doc --> * The <b>Resource Factory</b> associated with the package. @@ -34,7 +34,7 @@ import org.eclipse.emf.ecore.xmi.XMLResource; * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdResourceImpl * @generated */ -public class NsdResourceFactoryImpl extends ResourceFactoryImpl { +public class NsdResourceFactoryImpl extends ResourceFactoryImpl implements IRiseClipseResourceFactory { /** * Creates an instance of the resource factory. * <!-- begin-user-doc --> @@ -52,8 +52,8 @@ public class NsdResourceFactoryImpl extends ResourceFactoryImpl { * @generated */ @Override - public Resource createResource( URI uri ) { - XMLResource result = new NsdResourceImpl( uri ); + public NsdResourceImpl createResource( URI uri ) { + NsdResourceImpl result = new NsdResourceImpl( uri ); result.getDefaultSaveOptions().put( XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE ); result.getDefaultLoadOptions().put( XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE ); diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetImpl.java index 956b24f6db5072d78de059e852ef6249cccd3c43..db39d9c18a5ce42935615aafcbc9ae6b155c09b9 100644 --- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetImpl.java +++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetImpl.java @@ -26,6 +26,7 @@ import java.util.Map; import java.util.Optional; import java.util.stream.Stream; +import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.resource.Resource; import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc; @@ -34,8 +35,10 @@ import fr.centralesupelec.edf.riseclipse.iec61850.nsd.LNClass; import fr.centralesupelec.edf.riseclipse.iec61850.nsd.LNClasses; import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS; import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc; +import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage; import fr.centralesupelec.edf.riseclipse.util.AbstractRiseClipseConsole; import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole; +import fr.centralesupelec.edf.riseclipse.util.RiseClipseMetamodel; import fr.centralesupelec.edf.riseclipse.util.AbstractRiseClipseResourceSet; @@ -43,12 +46,23 @@ public class NsdResourceSetImpl extends AbstractRiseClipseResourceSet { private Map< String, NS > nsdResources; private Map< String, NSDoc > nsdocResources; + private NsdResourceFactoryImpl resourceFactory; public NsdResourceSetImpl( boolean strictContent, IRiseClipseConsole console ) { super( strictContent, console ); nsdResources = new HashMap<>(); nsdocResources = new HashMap<>(); + resourceFactory = new NsdResourceFactoryImpl(); + } + + @Override + protected NsdResourceImpl createRiseClipseResource( URI uri, String contentType ) { + Optional< String > metamodel = RiseClipseMetamodel.findMetamodelFor( uri ); + if( metamodel.isPresent() && NsdPackage.eNS_URI.equals( metamodel.get() )) { + return resourceFactory.createResource( uri ); + } + return null; } @Override