From d67f99c57f0cde47c375ca673b8a9380e762c8ba Mon Sep 17 00:00:00 2001 From: Fabian Wiesner <s_wiesne@ira.uka.de> Date: Sun, 10 Mar 2013 13:51:00 +0000 Subject: [PATCH] Added ModelServiceCHILD git-svn-id: https://se1.informatik.uni-wuerzburg.de/usvn/svn/code/code/DMM/trunk@10728 9e42b895-fcda-4063-8a3b-11be15eb1bbd --- .../Move 'plugin.xml' from 'src-gen' here.txt | 1 + .../CompositediagramModelServiceCHILD.java | 69 +++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/Move 'plugin.xml' from 'src-gen' here.txt create mode 100644 edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramModelServiceCHILD.java diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/Move 'plugin.xml' from 'src-gen' here.txt b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/Move 'plugin.xml' from 'src-gen' here.txt new file mode 100644 index 00000000..6c9dd89b --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/Move 'plugin.xml' from 'src-gen' here.txt @@ -0,0 +1 @@ +Do it \ No newline at end of file diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramModelServiceCHILD.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramModelServiceCHILD.java new file mode 100644 index 00000000..c72038bd --- /dev/null +++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramModelServiceCHILD.java @@ -0,0 +1,69 @@ +package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.diagram; + +import java.io.IOException; + +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.graphiti.dt.IDiagramTypeProvider; +import org.eclipse.graphiti.mm.pictograms.Diagram; + +import edu.kit.ipd.descartes.mm.applicationlevel.repository.Repository; +import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory; + +/** + * @author Katharina + * + */ +public class CompositediagramModelServiceCHILD extends CompositediagramModelService { + + protected CompositediagramModelServiceCHILD(IDiagramTypeProvider dtp) { + super(dtp); + // TODO Auto-generated constructor stub + } + + /** + * Creates the domain model element and store it in the file. Overwrite to set required properties on creation. + */ + public Repository createModel(Repository model, URI modelURI) { + final Diagram diagram = dtp.getDiagram(); + try { + createModelResourceAndAddModel(model, modelURI); + peService.setPropertyValue(diagram, PROPERTY_URI, EcoreUtil.getURI(model).toString()); + // link the diagram with the model element + dtp.getFeatureProvider().link(diagram, model); + return model; + } catch (CoreException e) { + e.printStackTrace(); + return null; + } catch (IOException e) { + e.printStackTrace(); + return null; + } + } + + protected void createModelResourceAndAddModel(final Repository model, final URI modelURI) throws CoreException, IOException { + final Diagram diagram = dtp.getDiagram(); + URI uri = modelURI;//TODO: vorher diagram URI + uri = uri.trimFragment(); + uri = uri.trimFileExtension(); + uri = uri.appendFileExtension(FILE_EXTENSION); + ResourceSet rSet = diagram.eResource().getResourceSet(); + final IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot(); + IResource file = workspaceRoot.findMember(uri.toPlatformString(true)); + if (file == null || !file.exists()) { + Resource resource = rSet.createResource(uri); + resource.setTrackingModification(true); + resource.getContents().add(model); + } else { + final Resource resource = rSet.getResource(uri, true); + resource.getContents().add(model); + } + } + +} -- GitLab