/******************************************************************************* * Copyright (c) 2008-2011 Chair for Applied Software Engineering, * Technische Universitaet Muenchen. * 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: ******************************************************************************/ package org.eclipse.emf.emfstore.server.model.versioning.operations.util; import java.util.List; import java.util.Map; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.util.Switch; import org.eclipse.emf.emfstore.common.model.IdentifiableElement; import org.eclipse.emf.emfstore.common.model.ModelElementId; import org.eclipse.emf.emfstore.common.model.UniqueIdentifier; import org.eclipse.emf.emfstore.server.model.versioning.operations.AbstractOperation; import org.eclipse.emf.emfstore.server.model.versioning.operations.AttributeOperation; import org.eclipse.emf.emfstore.server.model.versioning.operations.CompositeOperation; import org.eclipse.emf.emfstore.server.model.versioning.operations.CreateDeleteOperation; import org.eclipse.emf.emfstore.server.model.versioning.operations.DiagramLayoutOperation; import org.eclipse.emf.emfstore.server.model.versioning.operations.FeatureOperation; import org.eclipse.emf.emfstore.server.model.versioning.operations.ModelElementGroup; import org.eclipse.emf.emfstore.server.model.versioning.operations.MultiAttributeMoveOperation; import org.eclipse.emf.emfstore.server.model.versioning.operations.MultiAttributeOperation; import org.eclipse.emf.emfstore.server.model.versioning.operations.MultiAttributeSetOperation; import org.eclipse.emf.emfstore.server.model.versioning.operations.MultiReferenceMoveOperation; import org.eclipse.emf.emfstore.server.model.versioning.operations.MultiReferenceOperation; import org.eclipse.emf.emfstore.server.model.versioning.operations.MultiReferenceSetOperation; import org.eclipse.emf.emfstore.server.model.versioning.operations.OperationGroup; import org.eclipse.emf.emfstore.server.model.versioning.operations.OperationId; import org.eclipse.emf.emfstore.server.model.versioning.operations.OperationsPackage; import org.eclipse.emf.emfstore.server.model.versioning.operations.ReferenceOperation; import org.eclipse.emf.emfstore.server.model.versioning.operations.SingleReferenceOperation; /** * <!-- begin-user-doc --> The <b>Switch</b> for the model's inheritance hierarchy. It supports the call * {@link #doSwitch(EObject) doSwitch(object)} to invoke the <code>caseXXX</code> method for each class of the model, * starting with the actual class of the object and proceeding up the inheritance hierarchy until a non-null result is * returned, which is the result of the switch. <!-- end-user-doc --> * @see org.eclipse.emf.emfstore.server.model.versioning.operations.OperationsPackage * @generated */ public class OperationsSwitch<T> extends Switch<T> { /** * The cached model package * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ protected static OperationsPackage modelPackage; /** * Creates an instance of the switch. * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public OperationsSwitch() { if (modelPackage == null) { modelPackage = OperationsPackage.eINSTANCE; } } /** * Checks whether this is a switch for the given package. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @parameter ePackage the package in question. * @return whether this is a switch for the given package. * @generated */ @Override protected boolean isSwitchFor(EPackage ePackage) { return ePackage == modelPackage; } /** * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result. * <!-- begin-user-doc --> <!-- end-user-doc --> * @return the first non-null result returned by a <code>caseXXX</code> call. * @generated */ @Override protected T doSwitch(int classifierID, EObject theEObject) { switch (classifierID) { case OperationsPackage.ABSTRACT_OPERATION: { AbstractOperation abstractOperation = (AbstractOperation)theEObject; T result = caseAbstractOperation(abstractOperation); if (result == null) result = caseIdentifiableElement(abstractOperation); if (result == null) result = defaultCase(theEObject); return result; } case OperationsPackage.COMPOSITE_OPERATION: { CompositeOperation compositeOperation = (CompositeOperation)theEObject; T result = caseCompositeOperation(compositeOperation); if (result == null) result = caseAbstractOperation(compositeOperation); if (result == null) result = caseIdentifiableElement(compositeOperation); if (result == null) result = defaultCase(theEObject); return result; } case OperationsPackage.FEATURE_OPERATION: { FeatureOperation featureOperation = (FeatureOperation)theEObject; T result = caseFeatureOperation(featureOperation); if (result == null) result = caseAbstractOperation(featureOperation); if (result == null) result = caseIdentifiableElement(featureOperation); if (result == null) result = defaultCase(theEObject); return result; } case OperationsPackage.CREATE_DELETE_OPERATION: { CreateDeleteOperation createDeleteOperation = (CreateDeleteOperation)theEObject; T result = caseCreateDeleteOperation(createDeleteOperation); if (result == null) result = caseAbstractOperation(createDeleteOperation); if (result == null) result = caseIdentifiableElement(createDeleteOperation); if (result == null) result = defaultCase(theEObject); return result; } case OperationsPackage.ATTRIBUTE_OPERATION: { AttributeOperation attributeOperation = (AttributeOperation)theEObject; T result = caseAttributeOperation(attributeOperation); if (result == null) result = caseFeatureOperation(attributeOperation); if (result == null) result = caseAbstractOperation(attributeOperation); if (result == null) result = caseIdentifiableElement(attributeOperation); if (result == null) result = defaultCase(theEObject); return result; } case OperationsPackage.MULTI_ATTRIBUTE_OPERATION: { MultiAttributeOperation multiAttributeOperation = (MultiAttributeOperation)theEObject; T result = caseMultiAttributeOperation(multiAttributeOperation); if (result == null) result = caseFeatureOperation(multiAttributeOperation); if (result == null) result = caseAbstractOperation(multiAttributeOperation); if (result == null) result = caseIdentifiableElement(multiAttributeOperation); if (result == null) result = defaultCase(theEObject); return result; } case OperationsPackage.MULTI_ATTRIBUTE_SET_OPERATION: { MultiAttributeSetOperation multiAttributeSetOperation = (MultiAttributeSetOperation)theEObject; T result = caseMultiAttributeSetOperation(multiAttributeSetOperation); if (result == null) result = caseFeatureOperation(multiAttributeSetOperation); if (result == null) result = caseAbstractOperation(multiAttributeSetOperation); if (result == null) result = caseIdentifiableElement(multiAttributeSetOperation); if (result == null) result = defaultCase(theEObject); return result; } case OperationsPackage.MULTI_ATTRIBUTE_MOVE_OPERATION: { MultiAttributeMoveOperation multiAttributeMoveOperation = (MultiAttributeMoveOperation)theEObject; T result = caseMultiAttributeMoveOperation(multiAttributeMoveOperation); if (result == null) result = caseFeatureOperation(multiAttributeMoveOperation); if (result == null) result = caseAbstractOperation(multiAttributeMoveOperation); if (result == null) result = caseIdentifiableElement(multiAttributeMoveOperation); if (result == null) result = defaultCase(theEObject); return result; } case OperationsPackage.SINGLE_REFERENCE_OPERATION: { SingleReferenceOperation singleReferenceOperation = (SingleReferenceOperation)theEObject; T result = caseSingleReferenceOperation(singleReferenceOperation); if (result == null) result = caseReferenceOperation(singleReferenceOperation); if (result == null) result = caseFeatureOperation(singleReferenceOperation); if (result == null) result = caseAbstractOperation(singleReferenceOperation); if (result == null) result = caseIdentifiableElement(singleReferenceOperation); if (result == null) result = defaultCase(theEObject); return result; } case OperationsPackage.MULTI_REFERENCE_SET_OPERATION: { MultiReferenceSetOperation multiReferenceSetOperation = (MultiReferenceSetOperation)theEObject; T result = caseMultiReferenceSetOperation(multiReferenceSetOperation); if (result == null) result = caseReferenceOperation(multiReferenceSetOperation); if (result == null) result = caseFeatureOperation(multiReferenceSetOperation); if (result == null) result = caseAbstractOperation(multiReferenceSetOperation); if (result == null) result = caseIdentifiableElement(multiReferenceSetOperation); if (result == null) result = defaultCase(theEObject); return result; } case OperationsPackage.MULTI_REFERENCE_OPERATION: { MultiReferenceOperation multiReferenceOperation = (MultiReferenceOperation)theEObject; T result = caseMultiReferenceOperation(multiReferenceOperation); if (result == null) result = caseReferenceOperation(multiReferenceOperation); if (result == null) result = caseFeatureOperation(multiReferenceOperation); if (result == null) result = caseAbstractOperation(multiReferenceOperation); if (result == null) result = caseIdentifiableElement(multiReferenceOperation); if (result == null) result = defaultCase(theEObject); return result; } case OperationsPackage.MULTI_REFERENCE_MOVE_OPERATION: { MultiReferenceMoveOperation multiReferenceMoveOperation = (MultiReferenceMoveOperation)theEObject; T result = caseMultiReferenceMoveOperation(multiReferenceMoveOperation); if (result == null) result = caseFeatureOperation(multiReferenceMoveOperation); if (result == null) result = caseAbstractOperation(multiReferenceMoveOperation); if (result == null) result = caseIdentifiableElement(multiReferenceMoveOperation); if (result == null) result = defaultCase(theEObject); return result; } case OperationsPackage.REFERENCE_OPERATION: { ReferenceOperation referenceOperation = (ReferenceOperation)theEObject; T result = caseReferenceOperation(referenceOperation); if (result == null) result = caseFeatureOperation(referenceOperation); if (result == null) result = caseAbstractOperation(referenceOperation); if (result == null) result = caseIdentifiableElement(referenceOperation); if (result == null) result = defaultCase(theEObject); return result; } case OperationsPackage.DIAGRAM_LAYOUT_OPERATION: { DiagramLayoutOperation diagramLayoutOperation = (DiagramLayoutOperation)theEObject; T result = caseDiagramLayoutOperation(diagramLayoutOperation); if (result == null) result = caseAttributeOperation(diagramLayoutOperation); if (result == null) result = caseFeatureOperation(diagramLayoutOperation); if (result == null) result = caseAbstractOperation(diagramLayoutOperation); if (result == null) result = caseIdentifiableElement(diagramLayoutOperation); if (result == null) result = defaultCase(theEObject); return result; } case OperationsPackage.OPERATION_ID: { OperationId operationId = (OperationId)theEObject; T result = caseOperationId(operationId); if (result == null) result = caseUniqueIdentifier(operationId); if (result == null) result = defaultCase(theEObject); return result; } case OperationsPackage.OPERATION_GROUP: { OperationGroup operationGroup = (OperationGroup)theEObject; T result = caseOperationGroup(operationGroup); if (result == null) result = defaultCase(theEObject); return result; } case OperationsPackage.MODEL_ELEMENT_GROUP: { ModelElementGroup modelElementGroup = (ModelElementGroup)theEObject; T result = caseModelElementGroup(modelElementGroup); if (result == null) result = defaultCase(theEObject); return result; } case OperationsPackage.EOBJECT_TO_MODEL_ELEMENT_ID_MAP: { @SuppressWarnings("unchecked") Map.Entry<EObject, ModelElementId> eObjectToModelElementIdMap = (Map.Entry<EObject, ModelElementId>)theEObject; T result = caseEObjectToModelElementIdMap(eObjectToModelElementIdMap); if (result == null) result = defaultCase(theEObject); return result; } default: return defaultCase(theEObject); } } /** * Returns the result of interpreting the object as an instance of '<em>Abstract Operation</em>'. <!-- * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object the target of the switch. * @return the result of interpreting the object as an instance of '<em>Abstract Operation</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseAbstractOperation(AbstractOperation object) { return null; } /** * Returns the result of interpreting the object as an instance of '<em>Composite Operation</em>'. <!-- * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object the target of the switch. * @return the result of interpreting the object as an instance of '<em>Composite Operation</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseCompositeOperation(CompositeOperation object) { return null; } /** * Returns the result of interpreting the object as an instance of '<em>Feature Operation</em>'. <!-- begin-user-doc * --> This implementation returns null; returning a non-null result will terminate the switch. <!-- end-user-doc * --> * * @param object the target of the switch. * @return the result of interpreting the object as an instance of '<em>Feature Operation</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseFeatureOperation(FeatureOperation object) { return null; } /** * Returns the result of interpreting the object as an instance of '<em>Create Delete Operation</em>'. <!-- * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object the target of the switch. * @return the result of interpreting the object as an instance of '<em>Create Delete Operation</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseCreateDeleteOperation(CreateDeleteOperation object) { return null; } /** * Returns the result of interpreting the object as an instance of '<em>Attribute Operation</em>'. <!-- * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object the target of the switch. * @return the result of interpreting the object as an instance of '<em>Attribute Operation</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseAttributeOperation(AttributeOperation object) { return null; } /** * Returns the result of interpreting the object as an instance of '<em>Multi Attribute Operation</em>'. <!-- * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object the target of the switch. * @return the result of interpreting the object as an instance of '<em>Multi Attribute Operation</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseMultiAttributeOperation(MultiAttributeOperation object) { return null; } /** * Returns the result of interpreting the object as an instance of '<em>Multi Attribute Set Operation</em>'. <!-- * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object the target of the switch. * @return the result of interpreting the object as an instance of '<em>Multi Attribute Set Operation</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseMultiAttributeSetOperation(MultiAttributeSetOperation object) { return null; } /** * Returns the result of interpreting the object as an instance of '<em>Multi Attribute Move Operation</em>'. <!-- * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object the target of the switch. * @return the result of interpreting the object as an instance of '<em>Multi Attribute Move Operation</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseMultiAttributeMoveOperation(MultiAttributeMoveOperation object) { return null; } /** * Returns the result of interpreting the object as an instance of '<em>Single Reference Operation</em>'. <!-- * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object the target of the switch. * @return the result of interpreting the object as an instance of '<em>Single Reference Operation</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseSingleReferenceOperation(SingleReferenceOperation object) { return null; } /** * Returns the result of interpreting the object as an instance of '<em>Multi Reference Operation</em>'. <!-- * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object the target of the switch. * @return the result of interpreting the object as an instance of '<em>Multi Reference Operation</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseMultiReferenceOperation(MultiReferenceOperation object) { return null; } /** * Returns the result of interpreting the object as an instance of '<em>Multi Reference Set Operation</em>'. <!-- * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object the target of the switch. * @return the result of interpreting the object as an instance of '<em>Multi Reference Set Operation</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseMultiReferenceSetOperation(MultiReferenceSetOperation object) { return null; } /** * Returns the result of interpreting the object as an instance of '<em>Multi Reference Move Operation</em>'. <!-- * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object the target of the switch. * @return the result of interpreting the object as an instance of '<em>Multi Reference Move Operation</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseMultiReferenceMoveOperation(MultiReferenceMoveOperation object) { return null; } /** * Returns the result of interpreting the object as an instance of '<em>Reference Operation</em>'. <!-- * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object the target of the switch. * @return the result of interpreting the object as an instance of '<em>Reference Operation</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseReferenceOperation(ReferenceOperation object) { return null; } /** * Returns the result of interpreting the object as an instance of '<em>Diagram Layout Operation</em>'. <!-- * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object the target of the switch. * @return the result of interpreting the object as an instance of '<em>Diagram Layout Operation</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseDiagramLayoutOperation(DiagramLayoutOperation object) { return null; } /** * Returns the result of interpreting the object as an instance of '<em>Operation Id</em>'. * <!-- begin-user-doc --> * This implementation returns null; returning a non-null result will terminate the switch. <!-- end-user-doc --> * @param object the target of the switch. * @return the result of interpreting the object as an instance of '<em>Operation Id</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseOperationId(OperationId object) { return null; } /** * Returns the result of interpreting the object as an instance of '<em>Operation Group</em>'. <!-- begin-user-doc * --> This implementation returns null; returning a non-null result will terminate the switch. <!-- end-user-doc * --> * * @param object the target of the switch. * @return the result of interpreting the object as an instance of '<em>Operation Group</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseOperationGroup(OperationGroup object) { return null; } /** * Returns the result of interpreting the object as an instance of '<em>Model Element Group</em>'. <!-- * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object the target of the switch. * @return the result of interpreting the object as an instance of '<em>Model Element Group</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseModelElementGroup(ModelElementGroup object) { return null; } /** * Returns the result of interpreting the object as an instance of '<em>EObject To Model Element Id Map</em>'. <!-- * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object the target of the switch. * @return the result of interpreting the object as an instance of '<em>EObject To Model Element Id Map</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseEObjectToModelElementIdMap(Map.Entry<EObject, ModelElementId> object) { return null; } /** * Returns the result of interpreting the object as an instance of '<em>Identifiable Element</em>'. <!-- * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object the target of the switch. * @return the result of interpreting the object as an instance of '<em>Identifiable Element</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseIdentifiableElement(IdentifiableElement object) { return null; } /** * Returns the result of interpreting the object as an instance of '<em>Unique Identifier</em>'. <!-- begin-user-doc * --> This implementation returns null; returning a non-null result will terminate the switch. <!-- end-user-doc * --> * * @param object the target of the switch. * @return the result of interpreting the object as an instance of '<em>Unique Identifier</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseUniqueIdentifier(UniqueIdentifier object) { return null; } /** * Returns the result of interpreting the object as an instance of '<em>EObject</em>'. * <!-- begin-user-doc --> This * implementation returns null; returning a non-null result will terminate the switch, but this is the last case * anyway. <!-- end-user-doc --> * @param object the target of the switch. * @return the result of interpreting the object as an instance of '<em>EObject</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) * @generated */ @Override public T defaultCase(EObject object) { return null; } } // OperationsSwitch