/*
* generated by Xtext
*/
package org.xtext.activitydiagram.serializer;
import activitydiagram.Activity;
import activitydiagram.ActivityFinalNode;
import activitydiagram.ActivitydiagramPackage;
import activitydiagram.BooleanBinaryExpression;
import activitydiagram.BooleanUnaryExpression;
import activitydiagram.BooleanValue;
import activitydiagram.BooleanVariable;
import activitydiagram.ControlFlow;
import activitydiagram.DecisionNode;
import activitydiagram.ForkNode;
import activitydiagram.InitialNode;
import activitydiagram.IntegerCalculationExpression;
import activitydiagram.IntegerComparisonExpression;
import activitydiagram.IntegerValue;
import activitydiagram.IntegerVariable;
import activitydiagram.JoinNode;
import activitydiagram.MergeNode;
import activitydiagram.OpaqueAction;
import com.google.inject.Inject;
import com.google.inject.Provider;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.serializer.acceptor.ISemanticSequenceAcceptor;
import org.eclipse.xtext.serializer.acceptor.SequenceFeeder;
import org.eclipse.xtext.serializer.diagnostic.ISemanticSequencerDiagnosticProvider;
import org.eclipse.xtext.serializer.diagnostic.ISerializationDiagnostic.Acceptor;
import org.eclipse.xtext.serializer.sequencer.AbstractDelegatingSemanticSequencer;
import org.eclipse.xtext.serializer.sequencer.GenericSequencer;
import org.eclipse.xtext.serializer.sequencer.ISemanticNodeProvider.INodesForEObjectProvider;
import org.eclipse.xtext.serializer.sequencer.ISemanticSequencer;
import org.eclipse.xtext.serializer.sequencer.ITransientValueService;
import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ValueTransient;
import org.xtext.activitydiagram.services.ActivityDiagramGrammarAccess;
@SuppressWarnings("all")
public class ActivityDiagramSemanticSequencer extends AbstractDelegatingSemanticSequencer {
@Inject
private ActivityDiagramGrammarAccess grammarAccess;
@Override
public void createSequence(EObject context, EObject semanticObject) {
if(semanticObject.eClass().getEPackage() == ActivitydiagramPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
case ActivitydiagramPackage.ACTIVITY:
sequence_Activity(context, (Activity) semanticObject);
return;
case ActivitydiagramPackage.ACTIVITY_FINAL_NODE:
sequence_ActivityFinalNode(context, (ActivityFinalNode) semanticObject);
return;
case ActivitydiagramPackage.BOOLEAN_BINARY_EXPRESSION:
sequence_BooleanBinaryExpression(context, (BooleanBinaryExpression) semanticObject);
return;
case ActivitydiagramPackage.BOOLEAN_UNARY_EXPRESSION:
sequence_BooleanUnaryExpression(context, (BooleanUnaryExpression) semanticObject);
return;
case ActivitydiagramPackage.BOOLEAN_VALUE:
sequence_BooleanValue(context, (BooleanValue) semanticObject);
return;
case ActivitydiagramPackage.BOOLEAN_VARIABLE:
sequence_BooleanVariable(context, (BooleanVariable) semanticObject);
return;
case ActivitydiagramPackage.CONTROL_FLOW:
sequence_ControlFlow(context, (ControlFlow) semanticObject);
return;
case ActivitydiagramPackage.DECISION_NODE:
sequence_DecisionNode(context, (DecisionNode) semanticObject);
return;
case ActivitydiagramPackage.FORK_NODE:
sequence_ForkNode(context, (ForkNode) semanticObject);
return;
case ActivitydiagramPackage.INITIAL_NODE:
sequence_InitialNode(context, (InitialNode) semanticObject);
return;
case ActivitydiagramPackage.INTEGER_CALCULATION_EXPRESSION:
sequence_IntegerCalculationExpression(context, (IntegerCalculationExpression) semanticObject);
return;
case ActivitydiagramPackage.INTEGER_COMPARISON_EXPRESSION:
sequence_IntegerComparisonExpression(context, (IntegerComparisonExpression) semanticObject);
return;
case ActivitydiagramPackage.INTEGER_VALUE:
sequence_IntegerValue(context, (IntegerValue) semanticObject);
return;
case ActivitydiagramPackage.INTEGER_VARIABLE:
sequence_IntegerVariable(context, (IntegerVariable) semanticObject);
return;
case ActivitydiagramPackage.JOIN_NODE:
sequence_JoinNode(context, (JoinNode) semanticObject);
return;
case ActivitydiagramPackage.MERGE_NODE:
sequence_MergeNode(context, (MergeNode) semanticObject);
return;
case ActivitydiagramPackage.OPAQUE_ACTION:
sequence_OpaqueAction(context, (OpaqueAction) semanticObject);
return;
}
if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
}
/**
* Constraint:
* (name=EString incoming+=[ActivityEdge|ID] incoming+=[ActivityEdge|ID]*)
*/
protected void sequence_ActivityFinalNode(EObject context, ActivityFinalNode semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (
* name=EString
* (inputs+=Variable inputs+=Variable*)?
* (locals+=Variable locals+=Variable*)?
* (nodes+=ActivityNode nodes+=ActivityNode*)?
* (edges+=ActivityEdge edges+=ActivityEdge*)?
* )
*/
protected void sequence_Activity(EObject context, Activity semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (assignee=[BooleanVariable|ID] operand1=[BooleanVariable|ID] operator=BooleanBinaryOperator operand2=[BooleanVariable|ID])
*/
protected void sequence_BooleanBinaryExpression(EObject context, BooleanBinaryExpression semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, ActivitydiagramPackage.Literals.BOOLEAN_EXPRESSION__ASSIGNEE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActivitydiagramPackage.Literals.BOOLEAN_EXPRESSION__ASSIGNEE));
if(transientValues.isValueTransient(semanticObject, ActivitydiagramPackage.Literals.BOOLEAN_BINARY_EXPRESSION__OPERAND1) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActivitydiagramPackage.Literals.BOOLEAN_BINARY_EXPRESSION__OPERAND1));
if(transientValues.isValueTransient(semanticObject, ActivitydiagramPackage.Literals.BOOLEAN_BINARY_EXPRESSION__OPERAND2) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActivitydiagramPackage.Literals.BOOLEAN_BINARY_EXPRESSION__OPERAND2));
if(transientValues.isValueTransient(semanticObject, ActivitydiagramPackage.Literals.BOOLEAN_BINARY_EXPRESSION__OPERATOR) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActivitydiagramPackage.Literals.BOOLEAN_BINARY_EXPRESSION__OPERATOR));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getBooleanBinaryExpressionAccess().getAssigneeBooleanVariableIDTerminalRuleCall_0_0_1(), semanticObject.getAssignee());
feeder.accept(grammarAccess.getBooleanBinaryExpressionAccess().getOperand1BooleanVariableIDTerminalRuleCall_2_0_1(), semanticObject.getOperand1());
feeder.accept(grammarAccess.getBooleanBinaryExpressionAccess().getOperatorBooleanBinaryOperatorEnumRuleCall_3_0(), semanticObject.getOperator());
feeder.accept(grammarAccess.getBooleanBinaryExpressionAccess().getOperand2BooleanVariableIDTerminalRuleCall_4_0_1(), semanticObject.getOperand2());
feeder.finish();
}
/**
* Constraint:
* (assignee=[BooleanVariable|ID] operator=BooleanUnaryOperator operand=[BooleanVariable|ID])
*/
protected void sequence_BooleanUnaryExpression(EObject context, BooleanUnaryExpression semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, ActivitydiagramPackage.Literals.BOOLEAN_EXPRESSION__ASSIGNEE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActivitydiagramPackage.Literals.BOOLEAN_EXPRESSION__ASSIGNEE));
if(transientValues.isValueTransient(semanticObject, ActivitydiagramPackage.Literals.BOOLEAN_UNARY_EXPRESSION__OPERAND) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActivitydiagramPackage.Literals.BOOLEAN_UNARY_EXPRESSION__OPERAND));
if(transientValues.isValueTransient(semanticObject, ActivitydiagramPackage.Literals.BOOLEAN_UNARY_EXPRESSION__OPERATOR) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActivitydiagramPackage.Literals.BOOLEAN_UNARY_EXPRESSION__OPERATOR));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getBooleanUnaryExpressionAccess().getAssigneeBooleanVariableIDTerminalRuleCall_0_0_1(), semanticObject.getAssignee());
feeder.accept(grammarAccess.getBooleanUnaryExpressionAccess().getOperatorBooleanUnaryOperatorEnumRuleCall_2_0(), semanticObject.getOperator());
feeder.accept(grammarAccess.getBooleanUnaryExpressionAccess().getOperandBooleanVariableIDTerminalRuleCall_3_0_1(), semanticObject.getOperand());
feeder.finish();
}
/**
* Constraint:
* value=EBoolean
*/
protected void sequence_BooleanValue(EObject context, BooleanValue semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, ActivitydiagramPackage.Literals.BOOLEAN_VALUE__VALUE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActivitydiagramPackage.Literals.BOOLEAN_VALUE__VALUE));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getBooleanValueAccess().getValueEBooleanParserRuleCall_0(), semanticObject.isValue());
feeder.finish();
}
/**
* Constraint:
* (name=EString initialValue=Value?)
*/
protected void sequence_BooleanVariable(EObject context, BooleanVariable semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (name=EString source=[ActivityNode|ID] target=[ActivityNode|ID] guard=[BooleanVariable|ID]?)
*/
protected void sequence_ControlFlow(EObject context, ControlFlow semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (name=EString incoming+=[ActivityEdge|ID] (outgoing+=[ActivityEdge|ID] outgoing+=[ActivityEdge|ID]*)?)
*/
protected void sequence_DecisionNode(EObject context, DecisionNode semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (name=EString incoming+=[ActivityEdge|ID] (outgoing+=[ActivityEdge|ID] outgoing+=[ActivityEdge|ID]*)?)
*/
protected void sequence_ForkNode(EObject context, ForkNode semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (name=EString outgoing+=[ActivityEdge|ID] outgoing+=[ActivityEdge|ID]*)
*/
protected void sequence_InitialNode(EObject context, InitialNode semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (assignee=[IntegerVariable|ID] operand1=[IntegerVariable|ID] operator=IntegerCalculationOperator operand2=[IntegerVariable|ID])
*/
protected void sequence_IntegerCalculationExpression(EObject context, IntegerCalculationExpression semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, ActivitydiagramPackage.Literals.INTEGER_EXPRESSION__OPERAND2) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActivitydiagramPackage.Literals.INTEGER_EXPRESSION__OPERAND2));
if(transientValues.isValueTransient(semanticObject, ActivitydiagramPackage.Literals.INTEGER_EXPRESSION__OPERAND1) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActivitydiagramPackage.Literals.INTEGER_EXPRESSION__OPERAND1));
if(transientValues.isValueTransient(semanticObject, ActivitydiagramPackage.Literals.INTEGER_CALCULATION_EXPRESSION__ASSIGNEE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActivitydiagramPackage.Literals.INTEGER_CALCULATION_EXPRESSION__ASSIGNEE));
if(transientValues.isValueTransient(semanticObject, ActivitydiagramPackage.Literals.INTEGER_CALCULATION_EXPRESSION__OPERATOR) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActivitydiagramPackage.Literals.INTEGER_CALCULATION_EXPRESSION__OPERATOR));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getIntegerCalculationExpressionAccess().getAssigneeIntegerVariableIDTerminalRuleCall_0_0_1(), semanticObject.getAssignee());
feeder.accept(grammarAccess.getIntegerCalculationExpressionAccess().getOperand1IntegerVariableIDTerminalRuleCall_2_0_1(), semanticObject.getOperand1());
feeder.accept(grammarAccess.getIntegerCalculationExpressionAccess().getOperatorIntegerCalculationOperatorEnumRuleCall_3_0(), semanticObject.getOperator());
feeder.accept(grammarAccess.getIntegerCalculationExpressionAccess().getOperand2IntegerVariableIDTerminalRuleCall_4_0_1(), semanticObject.getOperand2());
feeder.finish();
}
/**
* Constraint:
* (assignee=[BooleanVariable|ID] operand1=[IntegerVariable|ID] operator=IntegerComparisonOperator operand2=[IntegerVariable|ID])
*/
protected void sequence_IntegerComparisonExpression(EObject context, IntegerComparisonExpression semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, ActivitydiagramPackage.Literals.INTEGER_EXPRESSION__OPERAND2) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActivitydiagramPackage.Literals.INTEGER_EXPRESSION__OPERAND2));
if(transientValues.isValueTransient(semanticObject, ActivitydiagramPackage.Literals.INTEGER_EXPRESSION__OPERAND1) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActivitydiagramPackage.Literals.INTEGER_EXPRESSION__OPERAND1));
if(transientValues.isValueTransient(semanticObject, ActivitydiagramPackage.Literals.INTEGER_COMPARISON_EXPRESSION__ASSIGNEE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActivitydiagramPackage.Literals.INTEGER_COMPARISON_EXPRESSION__ASSIGNEE));
if(transientValues.isValueTransient(semanticObject, ActivitydiagramPackage.Literals.INTEGER_COMPARISON_EXPRESSION__OPERATOR) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActivitydiagramPackage.Literals.INTEGER_COMPARISON_EXPRESSION__OPERATOR));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getIntegerComparisonExpressionAccess().getAssigneeBooleanVariableIDTerminalRuleCall_0_0_1(), semanticObject.getAssignee());
feeder.accept(grammarAccess.getIntegerComparisonExpressionAccess().getOperand1IntegerVariableIDTerminalRuleCall_2_0_1(), semanticObject.getOperand1());
feeder.accept(grammarAccess.getIntegerComparisonExpressionAccess().getOperatorIntegerComparisonOperatorEnumRuleCall_3_0(), semanticObject.getOperator());
feeder.accept(grammarAccess.getIntegerComparisonExpressionAccess().getOperand2IntegerVariableIDTerminalRuleCall_4_0_1(), semanticObject.getOperand2());
feeder.finish();
}
/**
* Constraint:
* value=EInt
*/
protected void sequence_IntegerValue(EObject context, IntegerValue semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, ActivitydiagramPackage.Literals.INTEGER_VALUE__VALUE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActivitydiagramPackage.Literals.INTEGER_VALUE__VALUE));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getIntegerValueAccess().getValueEIntParserRuleCall_0(), semanticObject.getValue());
feeder.finish();
}
/**
* Constraint:
* (name=EString initialValue=Value?)
*/
protected void sequence_IntegerVariable(EObject context, IntegerVariable semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (name=EString (incoming+=[ActivityEdge|ID] incoming+=[ActivityEdge|ID]*)? outgoing+=[ActivityEdge|ID])
*/
protected void sequence_JoinNode(EObject context, JoinNode semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (name=EString (incoming+=[ActivityEdge|ID] incoming+=[ActivityEdge|ID]*)? outgoing+=[ActivityEdge|ID])
*/
protected void sequence_MergeNode(EObject context, MergeNode semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (
* name=EString
* (expressions+=Expression expressions+=Expression*)?
* (incoming+=[ActivityEdge|ID] incoming+=[ActivityEdge|ID]*)?
* (outgoing+=[ActivityEdge|ID] outgoing+=[ActivityEdge|ID]*)?
* )
*/
protected void sequence_OpaqueAction(EObject context, OpaqueAction semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
}