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 0000000000000000000000000000000000000000..6c9dd89b43f28ba67b9252cdb668608a444836a6 --- /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 0000000000000000000000000000000000000000..c72038bd54c730f5145d4c2f1172f958ecc0c056 --- /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); + } + } + +}