1 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 48 public class Ecore2EcoreEditor extends MappingEditor 49 { 50 public Ecore2EcoreEditor() 51 { 52 topLabel = Ecore2EcoreEditorPlugin.INSTANCE.getString("_UI_InputEcore_label"); bottomLabel = Ecore2EcoreEditorPlugin.INSTANCE.getString("_UI_OutputEcore_label"); } 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 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")); 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")); 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 e) 165 { 166 e.printStackTrace(System.err); 167 } 168 } 169 } | Popular Tags |