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