| /* |
| * 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); |
| } |
| |
| |
| } |