/******************************************************************************* * 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.QVTOperational.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.QVTOperational.QVTOperationalFactory; import org.eclipse.m2m.qvt.oml.emof.ImperativeOCL.util.ImperativeOCLMappingMetaData; 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.QVTRelation.util.QVTRelationMappingMetaData; /** * QVTOperationalMappingMetaData defines the mapping between an EMOF-based QVT Operational * adapting model and an Ecore-based EQVT Operational 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 QVTOperationalMappingMetaData extends AbstractEMOFMappingMetaData { protected static class Factory extends AbstractEMOFMappingMetaData.Factory { protected Factory(IMappingMetaDataRegistry.Install mappingMetaDataRegistry, QVTOperationalMappingMetaData mappingMetaData) { super(mappingMetaDataRegistry, mappingMetaData); } @Override public EObject create(EClass ecoreClass) { if (ecoreClass.getEPackage() == org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.eINSTANCE) { switch (ecoreClass.getClassifierID()) { case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.CONSTRUCTOR: return getAdapter(QVTOperationalFactory.eINSTANCE.createConstructor()); case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.CONSTRUCTOR_BODY: return getAdapter(QVTOperationalFactory.eINSTANCE.createConstructorBody()); case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.CONTEXTUAL_PROPERTY: return getAdapter(QVTOperationalFactory.eINSTANCE.createContextualProperty()); case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.ENTRY_OPERATION: return getAdapter(QVTOperationalFactory.eINSTANCE.createEntryOperation()); case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.HELPER: return getAdapter(QVTOperationalFactory.eINSTANCE.createHelper()); case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.IMPERATIVE_CALL_EXP: return getAdapter(QVTOperationalFactory.eINSTANCE.createImperativeCallExp()); case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.IMPERATIVE_OPERATION: return getAdapter(QVTOperationalFactory.eINSTANCE.createImperativeOperation()); case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.LIBRARY: return getAdapter(QVTOperationalFactory.eINSTANCE.createLibrary()); case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.MAPPING_BODY: return getAdapter(QVTOperationalFactory.eINSTANCE.createMappingBody()); case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.MAPPING_CALL_EXP: return getAdapter(QVTOperationalFactory.eINSTANCE.createMappingCallExp()); case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.MAPPING_OPERATION: return getAdapter(QVTOperationalFactory.eINSTANCE.createMappingOperation()); case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.MAPPING_PARAMETER: return getAdapter(QVTOperationalFactory.eINSTANCE.createMappingParameter()); case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.MODEL_PARAMETER: return getAdapter(QVTOperationalFactory.eINSTANCE.createModelParameter()); case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.MODEL_TYPE: return getAdapter(QVTOperationalFactory.eINSTANCE.createModelType()); case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.MODULE: return getAdapter(QVTOperationalFactory.eINSTANCE.createModule()); case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.MODULE_IMPORT: return getAdapter(QVTOperationalFactory.eINSTANCE.createModuleImport()); case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.OBJECT_EXP: return getAdapter(QVTOperationalFactory.eINSTANCE.createObjectExp()); case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.OPERATIONAL_TRANSFORMATION: return getAdapter(QVTOperationalFactory.eINSTANCE.createOperationalTransformation()); case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.OPERATION_BODY: return getAdapter(QVTOperationalFactory.eINSTANCE.createOperationBody()); case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.RESOLVE_EXP: return getAdapter(QVTOperationalFactory.eINSTANCE.createResolveExp()); case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.RESOLVE_IN_EXP: return getAdapter(QVTOperationalFactory.eINSTANCE.createResolveInExp()); case org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.VAR_PARAMETER: return getAdapter(QVTOperationalFactory.eINSTANCE.createVarParameter()); } } return super.create(ecoreClass); } } public static QVTOperationalMappingMetaData INSTANCE = new QVTOperationalMappingMetaData( org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.eINSTANCE, org.eclipse.m2m.qvt.oml.ecore.QVTOperational.QVTOperationalPackage.eINSTANCE, null); public QVTOperationalMappingMetaData(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, ImperativeOCLMappingMetaData.INSTANCE, QVTRelationMappingMetaData.INSTANCE); } public Factory createFactory(IMappingMetaDataRegistry.Install mappingMetaDataRegistry) { return new Factory(mappingMetaDataRegistry, this); } @Override public String getAdaptingContentTypeIdentifier() { return org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.eCONTENT_TYPE; } @Override public Resource.Factory getAdaptingResourceFactory(IMappingMetaDataRegistry mappingMetaDataRegistry) { return new QVTOperationalResourceFactoryImpl(mappingMetaDataRegistry); } @Override public String getEcoreContentTypeIdentifier() { return org.eclipse.m2m.qvt.oml.ecore.QVTOperational.QVTOperationalPackage.eCONTENT_TYPE; } public void initialize(IMappingMetaDataRegistry.Install mappingMetaDataRegistry) { mappingMetaDataRegistry.installPackagePair(this, org.eclipse.m2m.qvt.oml.ecore.QVTOperational.QVTOperationalPackage.eINSTANCE, org.eclipse.m2m.qvt.oml.emof.QVTOperational.QVTOperationalPackage.eINSTANCE); } }