package monoge.dsl.serializer; import com.google.inject.Inject; import com.google.inject.Provider; import monoge.dsl.extension.AddConstraint; import monoge.dsl.extension.AddProperty; import monoge.dsl.extension.Create; import monoge.dsl.extension.ExtensionPackage; import monoge.dsl.extension.FilterClass; import monoge.dsl.extension.FilterConstraint; import monoge.dsl.extension.FilterProperty; import monoge.dsl.extension.Generalize; import monoge.dsl.extension.Metamodel; import monoge.dsl.extension.Model; import monoge.dsl.extension.ModifyClass; import monoge.dsl.extension.ModifyProperty; import monoge.dsl.extension.Prefix; import monoge.dsl.extension.Refine; import monoge.dsl.extension.Type; import monoge.dsl.extension.ValueAssignment; import monoge.dsl.services.ExtensionGrammarAccess; 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 ExtensionSemanticSequencer extends AbstractDelegatingSemanticSequencer { @Inject private ExtensionGrammarAccess grammarAccess; public void createSequence(EObject context, EObject semanticObject) { if(semanticObject.eClass().getEPackage() == ExtensionPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) { case ExtensionPackage.ADD_CONSTRAINT: if(context == grammarAccess.getAddConstraintRule() || context == grammarAccess.getModifyOperatorRule()) { sequence_AddConstraint(context, (AddConstraint) semanticObject); return; } else break; case ExtensionPackage.ADD_PROPERTY: if(context == grammarAccess.getAddPropertyRule() || context == grammarAccess.getModifyOperatorRule()) { sequence_AddProperty(context, (AddProperty) semanticObject); return; } else break; case ExtensionPackage.CREATE: if(context == grammarAccess.getCreateRule() || context == grammarAccess.getExtensionRule()) { sequence_Create(context, (Create) semanticObject); return; } else break; case ExtensionPackage.FILTER_CLASS: if(context == grammarAccess.getExtensionRule() || context == grammarAccess.getFilterClassRule()) { sequence_FilterClass(context, (FilterClass) semanticObject); return; } else break; case ExtensionPackage.FILTER_CONSTRAINT: if(context == grammarAccess.getFilterConstraintRule() || context == grammarAccess.getModifyOperatorRule()) { sequence_FilterConstraint(context, (FilterConstraint) semanticObject); return; } else break; case ExtensionPackage.FILTER_PROPERTY: if(context == grammarAccess.getFilterPropertyRule() || context == grammarAccess.getModifyOperatorRule()) { sequence_FilterProperty(context, (FilterProperty) semanticObject); return; } else break; case ExtensionPackage.GENERALIZE: if(context == grammarAccess.getExtensionRule() || context == grammarAccess.getGeneralizeRule()) { sequence_Generalize(context, (Generalize) semanticObject); return; } else break; case ExtensionPackage.METAMODEL: if(context == grammarAccess.getMetamodelRule()) { sequence_Metamodel(context, (Metamodel) semanticObject); return; } else break; case ExtensionPackage.MODEL: if(context == grammarAccess.getModelRule()) { sequence_Model(context, (Model) semanticObject); return; } else break; case ExtensionPackage.MODIFY_CLASS: if(context == grammarAccess.getExtensionRule() || context == grammarAccess.getModifyClassRule()) { sequence_ModifyClass(context, (ModifyClass) semanticObject); return; } else break; case ExtensionPackage.MODIFY_PROPERTY: if(context == grammarAccess.getModifyOperatorRule() || context == grammarAccess.getModifyPropertyRule()) { sequence_ModifyProperty(context, (ModifyProperty) semanticObject); return; } else break; case ExtensionPackage.PREFIX: if(context == grammarAccess.getPrefixRule()) { sequence_Prefix(context, (Prefix) semanticObject); return; } else break; case ExtensionPackage.REFINE: if(context == grammarAccess.getExtensionRule() || context == grammarAccess.getRefineRule()) { sequence_Refine(context, (Refine) semanticObject); return; } else break; case ExtensionPackage.TYPE: if(context == grammarAccess.getTypeRule()) { sequence_Type(context, (Type) semanticObject); return; } else break; case ExtensionPackage.VALUE_ASSIGNMENT: if(context == grammarAccess.getValueAssignmentRule()) { sequence_ValueAssignment(context, (ValueAssignment) semanticObject); return; } else break; } if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context)); } /** * Constraint: * (constraint=ID value=EString) */ protected void sequence_AddConstraint(EObject context, AddConstraint semanticObject) { if(errorAcceptor != null) { if(transientValues.isValueTransient(semanticObject, ExtensionPackage.Literals.ADD_CONSTRAINT__CONSTRAINT) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExtensionPackage.Literals.ADD_CONSTRAINT__CONSTRAINT)); if(transientValues.isValueTransient(semanticObject, ExtensionPackage.Literals.ADD_CONSTRAINT__VALUE) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExtensionPackage.Literals.ADD_CONSTRAINT__VALUE)); } INodesForEObjectProvider nodes = createNodeProvider(semanticObject); SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes); feeder.accept(grammarAccess.getAddConstraintAccess().getConstraintIDTerminalRuleCall_1_0(), semanticObject.getConstraint()); feeder.accept(grammarAccess.getAddConstraintAccess().getValueEStringParserRuleCall_2_0(), semanticObject.getValue()); feeder.finish(); } /** * Constraint: * (property=ID type+=Type cardinality+=Cardinality? relationType+=RelationType?) */ protected void sequence_AddProperty(EObject context, AddProperty semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * class=ID */ protected void sequence_Create(EObject context, Create semanticObject) { if(errorAcceptor != null) { if(transientValues.isValueTransient(semanticObject, ExtensionPackage.Literals.CREATE__CLASS) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExtensionPackage.Literals.CREATE__CLASS)); } INodesForEObjectProvider nodes = createNodeProvider(semanticObject); SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes); feeder.accept(grammarAccess.getCreateAccess().getClassIDTerminalRuleCall_1_0(), semanticObject.getClass_()); feeder.finish(); } /** * Constraint: * (prefix=[Prefix|ID] class=ID) */ protected void sequence_FilterClass(EObject context, FilterClass semanticObject) { if(errorAcceptor != null) { if(transientValues.isValueTransient(semanticObject, ExtensionPackage.Literals.FILTER_CLASS__PREFIX) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExtensionPackage.Literals.FILTER_CLASS__PREFIX)); if(transientValues.isValueTransient(semanticObject, ExtensionPackage.Literals.FILTER_CLASS__CLASS) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExtensionPackage.Literals.FILTER_CLASS__CLASS)); } INodesForEObjectProvider nodes = createNodeProvider(semanticObject); SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes); feeder.accept(grammarAccess.getFilterClassAccess().getPrefixPrefixIDTerminalRuleCall_1_0_1(), semanticObject.getPrefix()); feeder.accept(grammarAccess.getFilterClassAccess().getClassIDTerminalRuleCall_3_0(), semanticObject.getClass_()); feeder.finish(); } /** * Constraint: * constraint=EString */ protected void sequence_FilterConstraint(EObject context, FilterConstraint semanticObject) { if(errorAcceptor != null) { if(transientValues.isValueTransient(semanticObject, ExtensionPackage.Literals.FILTER_CONSTRAINT__CONSTRAINT) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExtensionPackage.Literals.FILTER_CONSTRAINT__CONSTRAINT)); } INodesForEObjectProvider nodes = createNodeProvider(semanticObject); SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes); feeder.accept(grammarAccess.getFilterConstraintAccess().getConstraintEStringParserRuleCall_1_0(), semanticObject.getConstraint()); feeder.finish(); } /** * Constraint: * property=ID */ protected void sequence_FilterProperty(EObject context, FilterProperty semanticObject) { if(errorAcceptor != null) { if(transientValues.isValueTransient(semanticObject, ExtensionPackage.Literals.FILTER_PROPERTY__PROPERTY) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExtensionPackage.Literals.FILTER_PROPERTY__PROPERTY)); } INodesForEObjectProvider nodes = createNodeProvider(semanticObject); SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes); feeder.accept(grammarAccess.getFilterPropertyAccess().getPropertyIDTerminalRuleCall_1_0(), semanticObject.getProperty()); feeder.finish(); } /** * Constraint: * (classNew=ID prefix+=[Prefix|ID] class+=ID (prefix+=[Prefix|ID] class+=ID)*) */ protected void sequence_Generalize(EObject context, Generalize semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * name=ID */ protected void sequence_Metamodel(EObject context, Metamodel semanticObject) { if(errorAcceptor != null) { if(transientValues.isValueTransient(semanticObject, ExtensionPackage.Literals.METAMODEL__NAME) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExtensionPackage.Literals.METAMODEL__NAME)); } INodesForEObjectProvider nodes = createNodeProvider(semanticObject); SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes); feeder.accept(grammarAccess.getMetamodelAccess().getNameIDTerminalRuleCall_0(), semanticObject.getName()); feeder.finish(); } /** * Constraint: * (extensionName=ID metamodel+=Metamodel prefix+=Prefix (metamodel+=Metamodel prefix+=Prefix)* extensions+=Extension*) */ protected void sequence_Model(EObject context, Model semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * (prefix=[Prefix|ID] class=ID modifyOperators+=ModifyOperator*) */ protected void sequence_ModifyClass(EObject context, ModifyClass semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * (property=ID value+=ValueAssignment value+=ValueAssignment*) */ protected void sequence_ModifyProperty(EObject context, ModifyProperty semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * name=ID */ protected void sequence_Prefix(EObject context, Prefix semanticObject) { if(errorAcceptor != null) { if(transientValues.isValueTransient(semanticObject, ExtensionPackage.Literals.PREFIX__NAME) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExtensionPackage.Literals.PREFIX__NAME)); } INodesForEObjectProvider nodes = createNodeProvider(semanticObject); SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes); feeder.accept(grammarAccess.getPrefixAccess().getNameIDTerminalRuleCall_0(), semanticObject.getName()); feeder.finish(); } /** * Constraint: * (classNew=ID prefix=[Prefix|ID] classOriginal=ID) */ protected void sequence_Refine(EObject context, Refine semanticObject) { if(errorAcceptor != null) { if(transientValues.isValueTransient(semanticObject, ExtensionPackage.Literals.REFINE__CLASS_NEW) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExtensionPackage.Literals.REFINE__CLASS_NEW)); if(transientValues.isValueTransient(semanticObject, ExtensionPackage.Literals.REFINE__PREFIX) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExtensionPackage.Literals.REFINE__PREFIX)); if(transientValues.isValueTransient(semanticObject, ExtensionPackage.Literals.REFINE__CLASS_ORIGINAL) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExtensionPackage.Literals.REFINE__CLASS_ORIGINAL)); } INodesForEObjectProvider nodes = createNodeProvider(semanticObject); SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes); feeder.accept(grammarAccess.getRefineAccess().getClassNewIDTerminalRuleCall_1_0(), semanticObject.getClassNew()); feeder.accept(grammarAccess.getRefineAccess().getPrefixPrefixIDTerminalRuleCall_3_0_1(), semanticObject.getPrefix()); feeder.accept(grammarAccess.getRefineAccess().getClassOriginalIDTerminalRuleCall_5_0(), semanticObject.getClassOriginal()); feeder.finish(); } /** * Constraint: * (type+=ID | (prefix+=[Prefix|ID] class+=ID)) */ protected void sequence_Type(EObject context, Type semanticObject) { genericSequencer.createSequence(context, semanticObject); } /** * Constraint: * (attribute=ID value=EString) */ protected void sequence_ValueAssignment(EObject context, ValueAssignment semanticObject) { if(errorAcceptor != null) { if(transientValues.isValueTransient(semanticObject, ExtensionPackage.Literals.VALUE_ASSIGNMENT__ATTRIBUTE) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExtensionPackage.Literals.VALUE_ASSIGNMENT__ATTRIBUTE)); if(transientValues.isValueTransient(semanticObject, ExtensionPackage.Literals.VALUE_ASSIGNMENT__VALUE) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ExtensionPackage.Literals.VALUE_ASSIGNMENT__VALUE)); } INodesForEObjectProvider nodes = createNodeProvider(semanticObject); SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes); feeder.accept(grammarAccess.getValueAssignmentAccess().getAttributeIDTerminalRuleCall_0_0(), semanticObject.getAttribute()); feeder.accept(grammarAccess.getValueAssignmentAccess().getValueEStringParserRuleCall_2_0(), semanticObject.getValue()); feeder.finish(); } }