blob: 75fba00d1eab4d13ff11d9a5de2facb2875f80c5 [file] [log] [blame]
/*
* generated by Xtext 2.22.0
*/
package org.eclipse.papyrus.robotics.xtext.datatypes.serializer;
import com.google.inject.Inject;
import java.util.Set;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.papyrus.robotics.xtext.datatypes.dTML.Assignment;
import org.eclipse.papyrus.robotics.xtext.datatypes.dTML.DTMLPackage;
import org.eclipse.papyrus.robotics.xtext.datatypes.dTML.DTModel;
import org.eclipse.papyrus.robotics.xtext.datatypes.dTML.Property;
import org.eclipse.papyrus.robotics.xtext.datatypes.dTML.Value;
import org.eclipse.papyrus.robotics.xtext.datatypes.services.DTMLGrammarAccess;
import org.eclipse.papyrus.uml.textedit.common.xtext.serializer.UmlCommonSemanticSequencer;
import org.eclipse.papyrus.uml.textedit.common.xtext.umlCommon.BoundSpecification;
import org.eclipse.papyrus.uml.textedit.common.xtext.umlCommon.MultiplicityRule;
import org.eclipse.papyrus.uml.textedit.common.xtext.umlCommon.QualifiedName;
import org.eclipse.papyrus.uml.textedit.common.xtext.umlCommon.TypeRule;
import org.eclipse.papyrus.uml.textedit.common.xtext.umlCommon.UmlCommonPackage;
import org.eclipse.xtext.Action;
import org.eclipse.xtext.Parameter;
import org.eclipse.xtext.ParserRule;
import org.eclipse.xtext.serializer.ISerializationContext;
import org.eclipse.xtext.serializer.acceptor.SequenceFeeder;
import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ValueTransient;
@SuppressWarnings("all")
public class DTMLSemanticSequencer extends UmlCommonSemanticSequencer {
@Inject
private DTMLGrammarAccess grammarAccess;
@Override
public void sequence(ISerializationContext context, EObject semanticObject) {
EPackage epackage = semanticObject.eClass().getEPackage();
ParserRule rule = context.getParserRule();
Action action = context.getAssignedAction();
Set<Parameter> parameters = context.getEnabledBooleanParameters();
if (epackage == DTMLPackage.eINSTANCE)
switch (semanticObject.eClass().getClassifierID()) {
case DTMLPackage.ASSIGNMENT:
sequence_Assignment(context, (Assignment) semanticObject);
return;
case DTMLPackage.DT_MODEL:
sequence_DTModel(context, (DTModel) semanticObject);
return;
case DTMLPackage.PROPERTY:
sequence_Property(context, (Property) semanticObject);
return;
case DTMLPackage.VALUE:
sequence_Value(context, (Value) semanticObject);
return;
}
else if (epackage == UmlCommonPackage.eINSTANCE)
switch (semanticObject.eClass().getClassifierID()) {
case UmlCommonPackage.BOUND_SPECIFICATION:
sequence_BoundSpecification(context, (BoundSpecification) semanticObject);
return;
case UmlCommonPackage.MULTIPLICITY_RULE:
sequence_MultiplicityRule(context, (MultiplicityRule) semanticObject);
return;
case UmlCommonPackage.QUALIFIED_NAME:
sequence_QualifiedName(context, (QualifiedName) semanticObject);
return;
case UmlCommonPackage.TYPE_RULE:
sequence_TypeRule(context, (TypeRule) semanticObject);
return;
}
if (errorAcceptor != null)
errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
}
/**
* Contexts:
* Model returns Assignment
* Assignment returns Assignment
*
* Constraint:
* (name=ID expression=ExpressionString)
*/
protected void sequence_Assignment(ISerializationContext context, Assignment semanticObject) {
if (errorAcceptor != null) {
if (transientValues.isValueTransient(semanticObject, DTMLPackage.Literals.MODEL__NAME) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DTMLPackage.Literals.MODEL__NAME));
if (transientValues.isValueTransient(semanticObject, DTMLPackage.Literals.ASSIGNMENT__EXPRESSION) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DTMLPackage.Literals.ASSIGNMENT__EXPRESSION));
}
SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
feeder.accept(grammarAccess.getAssignmentAccess().getNameIDTerminalRuleCall_0_0(), semanticObject.getName());
feeder.accept(grammarAccess.getAssignmentAccess().getExpressionExpressionStringParserRuleCall_2_0(), semanticObject.getExpression());
feeder.finish();
}
/**
* Contexts:
* Model returns DTModel
* DTModel returns DTModel
*
* Constraint:
* (name=ID attributes+=Property*)
*/
protected void sequence_DTModel(ISerializationContext context, DTModel semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* Property returns Property
*
* Constraint:
* (name=ID (type=TypeRule | typeUndefined?='<Undefined>')? multiplicity=MultiplicityRule? value=Value? comment=VSL_COMMENT?)
*/
protected void sequence_Property(ISerializationContext context, Property semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* Value returns Value
*
* Constraint:
* (str=STRING | ival=INT | dval=DOUBLE)
*/
protected void sequence_Value(ISerializationContext context, Value semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
}