Skip to main content
aboutsummaryrefslogblamecommitdiffstats
blob: c1b2dfeadf602e541e01b0726704d5ace90def2f (plain) (tree)


































































































































































































































































































































































                                                                                                                                                                                                                                                        
/**
 */
package org.eclipse.papyrus.uml.alf.impl;

import java.lang.reflect.InvocationTargetException;

import java.util.Map;

import org.eclipse.emf.common.util.BasicDiagnostic;
import org.eclipse.emf.common.util.BasicEList;
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.common.util.DiagnosticChain;
import org.eclipse.emf.common.util.EList;

import org.eclipse.emf.common.util.WrappedException;
import org.eclipse.emf.ecore.EClass;

import org.eclipse.emf.ecore.EOperation;
import org.eclipse.emf.ecore.plugin.EcorePlugin;

import org.eclipse.emf.ecore.util.EObjectValidator;

import org.eclipse.papyrus.uml.alf.AlfPackage;
import org.eclipse.papyrus.uml.alf.AssignedSource;
import org.eclipse.papyrus.uml.alf.Block;
import org.eclipse.papyrus.uml.alf.DoStatement;
import org.eclipse.papyrus.uml.alf.Expression;

import org.eclipse.papyrus.uml.alf.Statement;
import org.eclipse.papyrus.uml.alf.SyntaxElement;
import org.eclipse.papyrus.uml.alf.util.AlfValidator;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model object '<em><b>Do Statement</b></em>'.
 * <!-- end-user-doc -->
 * <p>
 * <p>
 * The following features are implemented:
 * </p>
 * <ul>
 * <li>{@link org.eclipse.papyrus.uml.alf.impl.DoStatementImpl#getCondition <em>Condition</em>}</li>
 * <li>{@link org.eclipse.papyrus.uml.alf.impl.DoStatementImpl#getBody <em>Body</em>}</li>
 * </ul>
 *
 * @generated
 */
public class DoStatementImpl extends StatementImpl implements DoStatement {
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected DoStatementImpl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	protected EClass eStaticClass() {
		return AlfPackage.eINSTANCE.getDoStatement();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	public Expression getCondition() {
		return (Expression) eGet(AlfPackage.eINSTANCE.getDoStatement_Condition(), true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	public void setCondition(Expression newCondition) {
		eSet(AlfPackage.eINSTANCE.getDoStatement_Condition(), newCondition);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	public Block getBody() {
		return (Block) eGet(AlfPackage.eINSTANCE.getDoStatement_Body(), true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	public void setBody(Block newBody) {
		eSet(AlfPackage.eINSTANCE.getDoStatement_Body(), newBody);
	}

	/**
	 * The cached invocation delegate for the '{@link #enclosingLoopStatement() <em>Enclosing Loop Statement</em>}' operation.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * 
	 * @see #enclosingLoopStatement()
	 * @generated
	 * @ordered
	 */
	protected static final EOperation.Internal.InvocationDelegate ENCLOSING_LOOP_STATEMENT__EINVOCATION_DELEGATE = ((EOperation.Internal) AlfPackage.eINSTANCE.getDoStatement__EnclosingLoopStatement()).getInvocationDelegate();

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	public Statement enclosingLoopStatement() {
		try {
			return (Statement) ENCLOSING_LOOP_STATEMENT__EINVOCATION_DELEGATE.dynamicInvoke(this, null);
		} catch (InvocationTargetException ite) {
			throw new WrappedException(ite);
		}
	}

	/**
	 * The cached invocation delegate for the '{@link #assignmentsBefore(org.eclipse.papyrus.uml.alf.SyntaxElement) <em>Assignments Before</em>}' operation.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * 
	 * @see #assignmentsBefore(org.eclipse.papyrus.uml.alf.SyntaxElement)
	 * @generated
	 * @ordered
	 */
	protected static final EOperation.Internal.InvocationDelegate ASSIGNMENTS_BEFORE_SYNTAX_ELEMENT__EINVOCATION_DELEGATE = ((EOperation.Internal) AlfPackage.eINSTANCE.getDoStatement__AssignmentsBefore__SyntaxElement()).getInvocationDelegate();

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@SuppressWarnings("unchecked")
	public EList<AssignedSource> assignmentsBefore(SyntaxElement element) {
		try {
			return (EList<AssignedSource>) ASSIGNMENTS_BEFORE_SYNTAX_ELEMENT__EINVOCATION_DELEGATE.dynamicInvoke(this, new BasicEList.UnmodifiableEList<Object>(1, new Object[] { element }));
		} catch (InvocationTargetException ite) {
			throw new WrappedException(ite);
		}
	}

	/**
	 * The cached invocation delegate for the '{@link #assignmentsAfter() <em>Assignments After</em>}' operation.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * 
	 * @see #assignmentsAfter()
	 * @generated
	 * @ordered
	 */
	protected static final EOperation.Internal.InvocationDelegate ASSIGNMENTS_AFTER__EINVOCATION_DELEGATE = ((EOperation.Internal) AlfPackage.eINSTANCE.getDoStatement__AssignmentsAfter()).getInvocationDelegate();

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@SuppressWarnings("unchecked")
	public EList<AssignedSource> assignmentsAfter() {
		try {
			return (EList<AssignedSource>) ASSIGNMENTS_AFTER__EINVOCATION_DELEGATE.dynamicInvoke(this, null);
		} catch (InvocationTargetException ite) {
			throw new WrappedException(ite);
		}
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	public boolean doStatementAssignmentsBefore(DiagnosticChain diagnostics, Map<Object, Object> context) {
		// TODO: implement this method
		// -> specify the condition that violates the invariant
		// -> verify the details of the diagnostic, including severity and message
		// Ensure that you remove @generated or mark it @generated NOT
		if (false) {
			if (diagnostics != null) {
				diagnostics.add
						(new BasicDiagnostic
						(Diagnostic.ERROR,
								AlfValidator.DIAGNOSTIC_SOURCE,
								AlfValidator.DO_STATEMENT__DO_STATEMENT_ASSIGNMENTS_BEFORE,
								EcorePlugin.INSTANCE.getString("_UI_GenericInvariant_diagnostic", new Object[] { "doStatementAssignmentsBefore", EObjectValidator.getObjectLabel(this, context) }),
								new Object[] { this }));
			}
			return false;
		}
		return true;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	public boolean doStatementAssignmentsAfter(DiagnosticChain diagnostics, Map<Object, Object> context) {
		// TODO: implement this method
		// -> specify the condition that violates the invariant
		// -> verify the details of the diagnostic, including severity and message
		// Ensure that you remove @generated or mark it @generated NOT
		if (false) {
			if (diagnostics != null) {
				diagnostics.add
						(new BasicDiagnostic
						(Diagnostic.ERROR,
								AlfValidator.DIAGNOSTIC_SOURCE,
								AlfValidator.DO_STATEMENT__DO_STATEMENT_ASSIGNMENTS_AFTER,
								EcorePlugin.INSTANCE.getString("_UI_GenericInvariant_diagnostic", new Object[] { "doStatementAssignmentsAfter", EObjectValidator.getObjectLabel(this, context) }),
								new Object[] { this }));
			}
			return false;
		}
		return true;
	}

	/**
	 * The cached validation expression for the '{@link #doStatementCondition(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map) <em>Do Statement Condition</em>}' invariant operation.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * 
	 * @see #doStatementCondition(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
	 * @generated
	 * @ordered
	 */
	protected static final String DO_STATEMENT_CONDITION_DIAGNOSTIC_CHAIN_MAP__EEXPRESSION = "\n" +
			"      let type = self.condition.type in\n" +
			"        type <> null and self.isBooleanType(type) and condition.upper = 1";

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	public boolean doStatementCondition(DiagnosticChain diagnostics, Map<Object, Object> context) {
		return AlfValidator.validate
				(AlfPackage.eINSTANCE.getDoStatement(),
						this,
						diagnostics,
						context,
						"http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot",
						AlfPackage.eINSTANCE.getDoStatement__DoStatementCondition__DiagnosticChain_Map(),
						DO_STATEMENT_CONDITION_DIAGNOSTIC_CHAIN_MAP__EEXPRESSION,
						Diagnostic.ERROR,
						AlfValidator.DIAGNOSTIC_SOURCE,
						AlfValidator.DO_STATEMENT__DO_STATEMENT_CONDITION);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	public boolean doStatementEnclosedStatements(DiagnosticChain diagnostics, Map<Object, Object> context) {
		// TODO: implement this method
		// -> specify the condition that violates the invariant
		// -> verify the details of the diagnostic, including severity and message
		// Ensure that you remove @generated or mark it @generated NOT
		if (false) {
			if (diagnostics != null) {
				diagnostics.add
						(new BasicDiagnostic
						(Diagnostic.ERROR,
								AlfValidator.DIAGNOSTIC_SOURCE,
								AlfValidator.DO_STATEMENT__DO_STATEMENT_ENCLOSED_STATEMENTS,
								EcorePlugin.INSTANCE.getString("_UI_GenericInvariant_diagnostic", new Object[] { "doStatementEnclosedStatements", EObjectValidator.getObjectLabel(this, context) }),
								new Object[] { this }));
			}
			return false;
		}
		return true;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public int eDerivedOperationID(int baseOperationID, Class<?> baseClass) {
		if (baseClass == SyntaxElement.class) {
			switch (baseOperationID) {
			case AlfPackage.SYNTAX_ELEMENT___ASSIGNMENTS_BEFORE__SYNTAXELEMENT:
				return AlfPackage.DO_STATEMENT___ASSIGNMENTS_BEFORE__SYNTAXELEMENT;
			default:
				return super.eDerivedOperationID(baseOperationID, baseClass);
			}
		}
		if (baseClass == Statement.class) {
			switch (baseOperationID) {
			case AlfPackage.STATEMENT___ENCLOSING_LOOP_STATEMENT:
				return AlfPackage.DO_STATEMENT___ENCLOSING_LOOP_STATEMENT;
			case AlfPackage.STATEMENT___ASSIGNMENTS_AFTER:
				return AlfPackage.DO_STATEMENT___ASSIGNMENTS_AFTER;
			default:
				return super.eDerivedOperationID(baseOperationID, baseClass);
			}
		}
		return super.eDerivedOperationID(baseOperationID, baseClass);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	@SuppressWarnings("unchecked")
	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
		switch (operationID) {
		case AlfPackage.DO_STATEMENT___ENCLOSING_LOOP_STATEMENT:
			return enclosingLoopStatement();
		case AlfPackage.DO_STATEMENT___ASSIGNMENTS_BEFORE__SYNTAXELEMENT:
			return assignmentsBefore((SyntaxElement) arguments.get(0));
		case AlfPackage.DO_STATEMENT___ASSIGNMENTS_AFTER:
			return assignmentsAfter();
		case AlfPackage.DO_STATEMENT___DO_STATEMENT_ASSIGNMENTS_BEFORE__DIAGNOSTICCHAIN_MAP:
			return doStatementAssignmentsBefore((DiagnosticChain) arguments.get(0), (Map<Object, Object>) arguments.get(1));
		case AlfPackage.DO_STATEMENT___DO_STATEMENT_ASSIGNMENTS_AFTER__DIAGNOSTICCHAIN_MAP:
			return doStatementAssignmentsAfter((DiagnosticChain) arguments.get(0), (Map<Object, Object>) arguments.get(1));
		case AlfPackage.DO_STATEMENT___DO_STATEMENT_CONDITION__DIAGNOSTICCHAIN_MAP:
			return doStatementCondition((DiagnosticChain) arguments.get(0), (Map<Object, Object>) arguments.get(1));
		case AlfPackage.DO_STATEMENT___DO_STATEMENT_ENCLOSED_STATEMENTS__DIAGNOSTICCHAIN_MAP:
			return doStatementEnclosedStatements((DiagnosticChain) arguments.get(0), (Map<Object, Object>) arguments.get(1));
		}
		return super.eInvoke(operationID, arguments);
	}

} // DoStatementImpl

Back to the top