Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » GMF (Graphical Modeling Framework) » (headless) load domain model from diagram file
(headless) load domain model from diagram file [message #178530] Fri, 21 March 2008 00:06 Go to next message
Jelle Herold is currently offline Jelle HeroldFriend
Messages: 42
Registered: July 2009
Member
What would be the best way to load the EMF domain model from a diagram (same file for
both view and domain models) in a (headless) application?

Preferably using just EMF dependencies.

Currently I took some code from the generated classes, this fails to create the
EditingDomain (application exits without throwing any exceptions). The idea is
to grab the domain from the diagram using Diagram.getElement() or similar.

public Diagram loadDiagram(File file)
{
EditingDomain domain = DiagramEditingDomainFactory.getInstance().createEditingDomai n();
URI uri = URI.createFileURI(file.getAbsolutePath());
Resource resource = domain.getResourceSet().getResource(uri.trimFragment(), false);

if (resource == null)
resource = domain.getResourceSet().createResource(uri.trimFragment());

if (!resource.isLoaded())
{
// @see 171060
Map options = new HashMap(GMFResourceFactory.getDefaultLoadOptions());
options.put(XMLResource.OPTION_RECORD_UNKNOWN_FEATURE, Boolean.TRUE);

resource.load(options);
}

if (uri.fragment() != null)
{
EObject rootElement = resource.getEObject(uri.fragment());
if(rootElement instanceof Diagram)
return (Diagram) rootElement;
}
else
for(Object rootElement : resource.getContents())
if(rootElement instanceof Diagram)
return (Diagram) rootElement;

// failed
}

Any tips are more than welcome.

Regards,
Jelle
Re: (headless) load domain model from diagram file [message #178958 is a reply to message #178530] Tue, 25 March 2008 17:45 Go to previous message
Alexander Shatalin is currently offline Alexander ShatalinFriend
Messages: 2928
Registered: July 2009
Senior Member
Hello Jelle,

> Resource resource =
> domain.getResourceSet().getResource(uri.trimFragment(), false);
Try to define new instance of ResourceSetImple and use it instead of the
one created implicitly inside EditingDomain (simply do not use EditingDomain):

ResourceSet resourceSet = new ResourceSetImpl();
Resource resource = resourceSet.getResource(uri.trimFragment(), false);

-----------------
Alex Shatalin
Previous Topic:Creating shape at the position of the mouse
Next Topic:dinamic shapes
Goto Forum:
  


Current Time: Fri Apr 19 22:25:52 GMT 2024

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

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

Back to the top