Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » Dynamic Ecore from Xsd
Dynamic Ecore from Xsd [message #1038210] Wed, 10 April 2013 14:53 Go to next message
Ayoub El Barji is currently offline Ayoub El BarjiFriend
Messages: 15
Registered: April 2013
Junior Member
Hi,

I want to generate a dynamic Ecore model from a loaded xsd model and be able to view it with TreeViewer. I am new in EMF technology and i try to write this java code but i have some problems with "parent" and "ComposedAdapterFactory(factories)".
1)parent cannot be resolved to a variable
2)The constructor ComposedAdapterFactory(List<Object>) is undefined

I home someone can help me Confused
And if you have some others solution to achieve this or another easy way?; I thank you in advance.

Ayoub

public class DynamicXsdToEcore {

public static void main(String[] args) {
DynamicXsdToEcore dx2e = new DynamicXsdToEcore();
dx2e.build("C:/Users/uidw3743/Documents/STAGE/MemStack/SPARC_MemStack.xsd", "C:/Users/uidw3743/Documents/STAGE/MemStack/SPARC_MemStack.xml");
}

public void build(String xsdsource, String xmltarget){

System.out.println("START...");
//Loading of XSD and converting it to ecore model
XSDEcoreBuilder xsdEcoreBuilder = new XSDEcoreBuilder();
ResourceSet resourceSet = new ResourceSetImpl();
Collection<EObject> eCorePackages = xsdEcoreBuilder.generate(URI.createFileURI(xsdsource));

//Registration of loaded Ecore to package registry
for (Iterator<EObject> iter = eCorePackages.iterator(); iter.hasNext()Wink {
EPackage element = (EPackage) iter.next();
resourceSet.getPackageRegistry().put(element.getNsURI(), element);
}

//Laod an XML into the ECORE
//HashMap options = new HashMap();
//options.put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xml", new XMLResourceFactoryImpl());
Resource resource = resourceSet.createResource(URI.createFileURI(xmltarget));
//resource.load(options);
for (Iterator<EObject> iter = eCorePackages.iterator(); iter.hasNext()Wink {
EPackage element = (EPackage) iter.next();
resource.getContents().add(element);
}

System.out.println("FINISHED...");

//Display using a TreeViewer
List<Object> factories = new ArrayList<Object>();
factories.add(new ResourceItemProviderAdapterFactory());
factories.add(new ReflectiveItemProviderAdapterFactory());

ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(factories);
//Tree parent = null;
TreeViewer tViewer = new TreeViewer(parent);
tViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
tViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
tViewer.setInput(resourceSet);
//return parent;
//tViewer.expandAll();


}

}
Re: Dynamic Ecore from Xsd [message #1039387 is a reply to message #1038210] Fri, 12 April 2013 05:33 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33107
Registered: July 2009
Senior Member
Ayoub,

Comments below.

On 11/04/2013 2:37 PM, Ayoub El Barji wrote:
> Hi,
>
> I want to generate a dynamic Ecore model from a loaded xsd model and
> be able to view it with TreeViewer. I am new in EMF technology and i
> try to write this java code but i have some problems with "parent" and
> "ComposedAdapterFactory(factories)".
> 1)parent cannot be resolved to a variable
> 2)The constructor ComposedAdapterFactory(List<Object>) is undefined
I'd suggest trying the tutorial where you generate a model from the XSD
and then adapt the code you see generated.
>
> I home someone can help me :? And if you have some others solution to
> achieve this or another easy way?; I thank you in advance.
>
> Ayoub
>
> public class DynamicXsdToEcore {
>
> public static void main(String[] args) {
> DynamicXsdToEcore dx2e = new DynamicXsdToEcore();
> dx2e.build("C:/Users/uidw3743/Documents/STAGE/MemStack/SPARC_MemStack.xsd",
> "C:/Users/uidw3743/Documents/STAGE/MemStack/SPARC_MemStack.xml");
> }
>
> public void build(String xsdsource, String xmltarget){
>
> System.out.println("START...");
> //Loading of XSD and converting it to ecore model
> XSDEcoreBuilder xsdEcoreBuilder = new XSDEcoreBuilder();
> ResourceSet resourceSet = new ResourceSetImpl();
> Collection<EObject> eCorePackages =
> xsdEcoreBuilder.generate(URI.createFileURI(xsdsource));
>
> //Registration of loaded Ecore to package registry
> for (Iterator<EObject> iter = eCorePackages.iterator();
> iter.hasNext();) {
> EPackage element = (EPackage) iter.next();
> resourceSet.getPackageRegistry().put(element.getNsURI(), element);
> }
>
> //Laod an XML into the ECORE
> //HashMap options = new HashMap();
> //options.put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
> resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xml",
> new XMLResourceFactoryImpl());
> Resource resource =
> resourceSet.createResource(URI.createFileURI(xmltarget));
> //resource.load(options);
> for (Iterator<EObject> iter = eCorePackages.iterator();
> iter.hasNext();) {
> EPackage element = (EPackage) iter.next();
> resource.getContents().add(element);
> }
> System.out.println("FINISHED...");
>
> //Display using a TreeViewer
> List<Object> factories = new ArrayList<Object>();
> factories.add(new ResourceItemProviderAdapterFactory());
> factories.add(new ReflectiveItemProviderAdapterFactory());
> ComposedAdapterFactory adapterFactory = new
> ComposedAdapterFactory(factories); //Tree parent = null;
> TreeViewer tViewer = new TreeViewer(parent);
> tViewer.setContentProvider(new
> AdapterFactoryContentProvider(adapterFactory));
> tViewer.setLabelProvider(new
> AdapterFactoryLabelProvider(adapterFactory));
> tViewer.setInput(resourceSet);
> //return parent;
> //tViewer.expandAll();
>
> }
>
> }


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Dynamic Ecore from Xsd [message #1041494 is a reply to message #1039387] Mon, 15 April 2013 07:09 Go to previous messageGo to next message
Ayoub El Barji is currently offline Ayoub El BarjiFriend
Messages: 15
Registered: April 2013
Junior Member
Hi Ed,

First Thank you for your suggestion, i will try it.
Actualy i want to make a generic xml editor(eclipse plugin) based on my XSD files. And i'm searching the best technology to read my XSD and XML models. First i'm trying de use the EMF technology with a dynamic EMF models from XSD; i have another track make a Meta-metaModel Ecore corresponding to my XSD Files.
What do you think?

Ayoub
Re: Dynamic Ecore from Xsd [message #1041505 is a reply to message #1041494] Mon, 15 April 2013 07:23 Go to previous message
Ed Merks is currently offline Ed MerksFriend
Messages: 33107
Registered: July 2009
Senior Member
Ayoub,

Comments below.

On 15/04/2013 9:09 AM, Ayoub El Barji wrote:
> Hi Ed,
>
> First Thank you for your suggestion, i will try it.
> Actualy i want to make a generic xml editor(eclipse plugin) based on
> my XSD files. And i'm searching the best technology to read my XSD and
> XML models.
Do the XSDs change constantly and in such a dynamic way that generating
a model from them doesn't make sense?
> First i'm trying de use the EMF technology with a dynamic EMF models
> from XSD; i have another track make a Meta-metaModel Ecore
> corresponding to my XSD Files.
There is already an XML Schema model if that's what you mean...
> What do you think?
It's not clear if your problem is really so dynamic...
>
> Ayoub


Ed Merks
Professional Support: https://www.macromodeling.com/
Previous Topic:Hibernate constraints - HowTo?
Next Topic:Xcore and OCL
Goto Forum:
  


Current Time: Tue Mar 19 06:26:55 GMT 2024

Powered by FUDForum. Page generated in 0.02255 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top