package com.robotoworks.mechanoid.ops.serializer; import com.google.inject.Inject; import com.google.inject.Provider; import com.robotoworks.mechanoid.ops.opServiceModel.Model; import com.robotoworks.mechanoid.ops.opServiceModel.NotUnique; import com.robotoworks.mechanoid.ops.opServiceModel.OpServiceModelPackage; import com.robotoworks.mechanoid.ops.opServiceModel.Operation; import com.robotoworks.mechanoid.ops.opServiceModel.OperationArg; import com.robotoworks.mechanoid.ops.opServiceModel.ServiceBlock; import com.robotoworks.mechanoid.ops.opServiceModel.UniqueDeclaration; import com.robotoworks.mechanoid.ops.services.OpServiceModelGrammarAccess; 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; @SuppressWarnings("all") public class OpServiceModelSemanticSequencer extends AbstractDelegatingSemanticSequencer { @Inject private OpServiceModelGrammarAccess grammarAccess; public void createSequence(EObject context, EObject semanticObject) { if(semanticObject.eClass().getEPackage() == OpServiceModelPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) { case OpServiceModelPackage.MODEL: if(context == grammarAccess.getModelRule()) { sequence_Model(context, (Model) semanticObject); return; } else break; case OpServiceModelPackage.NOT_UNIQUE: if(context == grammarAccess.getUniqueClauseRule()) { sequence_UniqueClause(context, (NotUnique) semanticObject); return; } else break; case OpServiceModelPackage.OPERATION: if(context == grammarAccess.getOperationRule()) { sequence_Operation(context, (Operation) semanticObject); return; } else break; case OpServiceModelPackage.OPERATION_ARG: if(context == grammarAccess.getOperationArgRule()) { sequence_OperationArg(context, (OperationArg) semanticObject); return; } else break; case OpServiceModelPackage.SERVICE_BLOCK: if(context == grammarAccess.getServiceBlockRule()) { sequence_ServiceBlock(context, (ServiceBlock) semanticObject); return; } else break; case OpServiceModelPackage.UNIQUE_DECLARATION: if(context == grammarAccess.getUniqueClauseRule()) { sequence_UniqueClause(context, (UniqueDeclaration) semanticObject); return; } else break; } if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context)); } /** * Constraint: * (packageName=QualifiedName service=ServiceBlock) */ protected void sequence_Model(EObject context, Model semanticObject) { if(errorAcceptor != null) { if(transientValues.isValueTransient(semanticObject, OpServiceModelPackage.Literals.MODEL__PACKAGE_NAME) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, OpServiceModelPackage.Literals.MODEL__PACKAGE_NAME)); if(transientValues.isValueTransient(semanticObject, OpServiceModelPackage.Literals.MODEL__SERVICE) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, OpServiceModelPackage.Literals.MODEL__SERVICE)); } INodesForEObjectProvider nodes = createNodeProvider(semanticObject); SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes); feeder.accept(grammarAccess.getModelAccess().getPackageNameQualifiedNameParserRuleCall_1_0(), semanticObject.getPackageName()); feeder.accept(grammarAccess.getModelAccess().getServiceServiceBlockParserRuleCall_2_0(), semanticObject.getService()); feeder.finish(); } /** * Constraint: * (type=OpArgType name=ID) */ protected void sequence_OperationArg(EObject context, OperationArg semanticObject) { if(errorAcceptor != null) { if(transientValues.isValueTransient(semanticObject, OpServiceModelPackage.Literals.OPERATION_ARG__TYPE) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, OpServiceModelPackage.Literals.OPERATION_ARG__TYPE)); if(transientValues.isValueTransient(semanticObject, OpServiceModelPackage.Literals.OPERATION_ARG__NAME) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, OpServiceModelPackage.Literals.OPERATION_ARG__NAME)); } INodesForEObjectProvider nodes = createNodeProvider(semanticObject); SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes); feeder.accept(grammarAccess.getOperationArgAccess().getTypeOpArgTypeEnumRuleCall_0_0(), semanticObject.getType()); feeder.accept(grammarAccess.getOperationArgAccess().getNameIDTerminalRuleCall_1_0(), semanticObject.getName()); feeder.finish(); } /** * Constraint: * (name=ID (args+=OperationArg args+=OperationArg*)? uniqueClause=UniqueClause?) */ protected void sequence_Operation(EObject context, Operation semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * (name=ID ops+=Operation*) */ protected void sequence_ServiceBlock(EObject context, ServiceBlock semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * {NotUnique} */ protected void sequence_UniqueClause(EObject context, NotUnique semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * (args+=[OperationArg|ID] args+=[OperationArg|ID]*) */ protected void sequence_UniqueClause(EObject context, UniqueDeclaration semanticObject) { genericSequencer.createSequence(context, semanticObject); } }