/******************************************************************************* * Copyright (c) 2008 Open Canarias S.L. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * A. Sanchez-Barbudo - initial API and implementation *******************************************************************************/ package org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.util; import java.util.List; import java.util.Stack; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.ImperativeOCLFactory; import org.eclipse.qvt.declarative.ecore.mappings.IMappingMetaData; import org.eclipse.qvt.declarative.ecore.mappings.IMappingMetaDataRegistry; import org.eclipse.qvt.declarative.emof.EMOF.util.AbstractEMOFMappingMetaData; import org.eclipse.qvt.declarative.emof.EssentialOCL.util.EssentialOCLMappingMetaData; /** * ImperativeOCLMappingMetaData defines the mapping between an EMOF-based Imperative OCL * adapting model and an Ecore-based EQVT imperative OCL model. * The mapping is established by adapting model elements that adapt their Ecore counterparts. * The mapping is established lazily, typically by invoking load or save on an * AdaptingXMIResource. */ public class ImperativeOCLMappingMetaData extends AbstractEMOFMappingMetaData { protected static class Factory extends AbstractEMOFMappingMetaData.Factory { protected Factory(IMappingMetaDataRegistry.Install mappingMetaDataRegistry, ImperativeOCLMappingMetaData mappingMetaData) { super(mappingMetaDataRegistry, mappingMetaData); } @Override public EObject create(EClass ecoreClass) { if (ecoreClass.getEPackage() == org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.eINSTANCE) { switch (ecoreClass.getClassifierID()) { case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.ALT_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createAltExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.ASSERT_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createAssertExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.ASSIGN_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createAssignExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.BLOCK_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createBlockExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.BREAK_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createBreakExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.CATCH_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createCatchExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.COMPUTE_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createComputeExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.CONTINUE_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createContinueExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.DICTIONARY_TYPE: return getAdapter(ImperativeOCLFactory.eINSTANCE.createDictionaryType()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.DICT_LITERAL_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createDictLiteralExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.DICT_LITERAL_PART: return getAdapter(ImperativeOCLFactory.eINSTANCE.createDictLiteralPart()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.FOR_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createForExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.IMPERATIVE_ITERATE_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createImperativeIterateExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.INSTANTIATION_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createInstantiationExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.LIST_LITERAL_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createListLiteralExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.LIST_TYPE: return getAdapter(ImperativeOCLFactory.eINSTANCE.createListType()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.LOG_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createLogExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.ORDERED_TUPLE_LITERAL_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createOrderedTupleLiteralExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.ORDERED_TUPLE_LITERAL_PART: return getAdapter(ImperativeOCLFactory.eINSTANCE.createOrderedTupleLiteralPart()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.ORDERED_TUPLE_TYPE: return getAdapter(ImperativeOCLFactory.eINSTANCE.createOrderedTupleType()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.RAISE_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createRaiseExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.RETURN_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createReturnExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.SWITCH_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createSwitchExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.TRY_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createTryExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.TYPEDEF: return getAdapter(ImperativeOCLFactory.eINSTANCE.createTypedef()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.UNLINK_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createUnlinkExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.UNPACK_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createUnpackExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.VARIABLE_INIT_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createVariableInitExp()); case org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.WHILE_EXP: return getAdapter(ImperativeOCLFactory.eINSTANCE.createWhileExp()); } } return super.create(ecoreClass); } } public static ImperativeOCLMappingMetaData INSTANCE = new ImperativeOCLMappingMetaData( org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.eINSTANCE, org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.ImperativeOCLPackage.eINSTANCE, null); public ImperativeOCLMappingMetaData(EPackage adaptingEPackage, EPackage ecoreEPackage, String[] uriAliases) { super(adaptingEPackage, ecoreEPackage, uriAliases); } @Override protected List<IMappingMetaData> computeImports(Stack<IMappingMetaData> forMappingMetaDatas) { List<IMappingMetaData> imports = super.computeImports(forMappingMetaDatas); return computeImports(forMappingMetaDatas, imports, EssentialOCLMappingMetaData.INSTANCE); } public Factory createFactory(IMappingMetaDataRegistry.Install mappingMetaDataRegistry) { return new Factory(mappingMetaDataRegistry, this); } @Override public String getAdaptingContentTypeIdentifier() { return org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.eCONTENT_TYPE; } @Override public Resource.Factory getAdaptingResourceFactory(IMappingMetaDataRegistry mappingMetaDataRegistry) { return new ImperativeOCLResourceFactoryImpl(mappingMetaDataRegistry); } @Override public String getEcoreContentTypeIdentifier() { return org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.ImperativeOCLPackage.eCONTENT_TYPE; } public void initialize(IMappingMetaDataRegistry.Install mappingMetaDataRegistry) { mappingMetaDataRegistry.installPackagePair(this, org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.ImperativeOCLPackage.eINSTANCE, org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.ImperativeOCLPackage.eINSTANCE); } }