KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > emf > mapping > ecore2ecore > presentation > Ecore2EcoreEditor


1 /**
2  * <copyright>
3  *
4  * Copyright (c) 2004-2005 IBM Corporation and others.
5  * All rights reserved. This program and the accompanying materials
6  * are made available under the terms of the Eclipse Public License v1.0
7  * which accompanies this distribution, and is available at
8  * http://www.eclipse.org/legal/epl-v10.html
9  *
10  * Contributors:
11  * IBM - Initial API and implementation
12  *
13  * </copyright>
14  *
15  * $Id: Ecore2EcoreEditor.java,v 1.3 2005/06/08 06:23:41 nickb Exp $
16  */

17 package org.eclipse.emf.mapping.ecore2ecore.presentation;
18
19
20 import org.eclipse.core.resources.IFile;
21 import org.eclipse.core.runtime.Path;
22 import org.eclipse.emf.common.command.BasicCommandStack;
23 import org.eclipse.emf.common.command.Command;
24 import org.eclipse.emf.common.command.CommandStack;
25 import org.eclipse.emf.common.notify.AdapterFactory;
26 import org.eclipse.emf.common.util.URI;
27 import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory;
28 import org.eclipse.emf.ecore.resource.Resource;
29 import org.eclipse.emf.edit.command.InitializeCopyCommand;
30 import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
31 import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
32 import org.eclipse.emf.mapping.MappingRoot;
33 import org.eclipse.emf.mapping.command.InitializeCopyOverrideCommand;
34 import org.eclipse.emf.mapping.domain.AdapterFactoryMappingDomain;
35 import org.eclipse.emf.mapping.domain.MappingDomain;
36 import org.eclipse.emf.mapping.domain.PluginAdapterFactoryMappingDomain;
37 import org.eclipse.emf.mapping.ecore2ecore.Ecore2EcoreFactory;
38 import org.eclipse.emf.mapping.ecore2ecore.provider.Ecore2EcoreItemProviderAdapterFactory;
39 import org.eclipse.emf.mapping.presentation.MappingEditor;
40 import org.eclipse.emf.mapping.provider.MappingItemProviderAdapterFactory;
41 import org.eclipse.ui.part.FileEditorInput;
42
43
44 /**
45  * This is an example of a Ecore2Ecore model editor.
46  * @generated NOT
47  */

48 public class Ecore2EcoreEditor extends MappingEditor
49 {
50   public Ecore2EcoreEditor()
51   {
52     topLabel = Ecore2EcoreEditorPlugin.INSTANCE.getString("_UI_InputEcore_label"); //$NON-NLS-1$
53
bottomLabel = Ecore2EcoreEditorPlugin.INSTANCE.getString("_UI_OutputEcore_label"); //$NON-NLS-1$
54
}
55
56   public static class Ecore2EcoreInitializeCopyOverrideCommand extends InitializeCopyOverrideCommand
57   {
58
59     public Ecore2EcoreInitializeCopyOverrideCommand(MappingDomain domain, InitializeCopyCommand initializeCommand)
60     {
61       super(domain, initializeCommand);
62     }
63
64     public void execute()
65     {
66       super.execute();
67     }
68   }
69
70   public static class Ecore2EcoreMappingDomain extends PluginAdapterFactoryMappingDomain
71   {
72
73     public Ecore2EcoreMappingDomain(
74       AdapterFactory mappingDomainAdapterFactory,
75       AdapterFactory topDomainAdapterFactory,
76       AdapterFactory bottomDomainAdapterFactory,
77       CommandStack commandStack,
78       String JavaDoc mappingDomainKey)
79     {
80       super(mappingDomainAdapterFactory, topDomainAdapterFactory, bottomDomainAdapterFactory, commandStack, mappingDomainKey);
81
82       setMappingEnablementFlags(MappingDomain.ENABLE_ALL);
83     }
84
85     protected Command createInitializeCopyOverrideCommand(InitializeCopyCommand initializeCopyCommand)
86     {
87       if (!isSameEditingDomainAdapterFactory)
88       {
89         return new Ecore2EcoreInitializeCopyOverrideCommand(this, initializeCopyCommand);
90       }
91
92       return null;
93     }
94   }
95
96   protected AdapterFactoryMappingDomain createMappingDomain()
97   {
98     AdapterFactory mappingAdapterFactory = new ComposedAdapterFactory(new AdapterFactory[]
99       {
100         new ResourceItemProviderAdapterFactory(),
101         new MappingItemProviderAdapterFactory(),
102         new Ecore2EcoreItemProviderAdapterFactory()
103       });
104     AdapterFactory ecoreAdapterFactory = new EcoreItemProviderAdapterFactory();
105
106     return new Ecore2EcoreMappingDomain(mappingAdapterFactory, ecoreAdapterFactory, ecoreAdapterFactory, new BasicCommandStack(), null);
107   }
108
109   protected void handleMissingModelFile()
110   {
111     try
112     {
113       IFile mappingModelFile = modelFile.getFile().getParent().getFile(
114         new Path(new Path(modelFile.getName()).removeFileExtension().toOSString() + ".mapper")); //$NON-NLS-1$
115

116       MappingRoot originalRootObject = (MappingRoot)((Resource)mappingDomain.getResourceSet().getResources().iterator().next()).getContents().get(0);
117
118       modelFile = new FileEditorInput(mappingModelFile);
119
120       Resource mappingModelResource = null;
121
122       if (mappingModelFile.exists())
123       {
124         mappingRoot = (MappingRoot)mappingDomain.loadResource(getURIFromFile(modelFile.getFile())).getContents().get(0);
125       }
126       else
127       {
128         mappingModelResource = mappingDomain.getResourceSet().createResource(
129           URI.createFileURI(modelFile.getFile().getFullPath().toString()));
130
131         mappingRoot = Ecore2EcoreFactory.eINSTANCE.createEcore2EcoreMappingRoot();
132
133         mappingModelResource.getContents().add(mappingRoot);
134
135         mappingDomain.getResourceSet().getResources().add(mappingModelResource);
136
137         mappingRoot.getInputs().add(originalRootObject);
138
139         IFile outputModelFile = modelFile.getFile().getParent().getFile(
140           new Path(new Path(modelFile.getName()).removeFileExtension().toOSString() + "_mapper_result.classside")); //$NON-NLS-1$
141

142         Resource outputResource = null;
143
144         if (outputModelFile.exists())
145         {
146           outputResource = mappingDomain.loadResource(getURIFromFile(outputModelFile));
147         }
148         else
149         {
150           outputResource = mappingDomain.getResourceSet().createResource(URI.createURI(getURIFromFile(outputModelFile)));
151
152           outputResource.getContents().add(Ecore2EcoreFactory.eINSTANCE.createEcore2EcoreMappingRoot());
153
154           mappingRoot.getOutputs().addAll(outputResource.getContents());
155         }
156
157         doSave(null);
158       }
159
160       mappingRoot.setDomain(mappingDomain);
161       mappingRoot.setTopToBottom(true);
162
163     }
164     catch (Exception JavaDoc e)
165     {
166       e.printStackTrace(System.err);
167     }
168   }
169 }
Popular Tags