package emfviews.dsl.serializer;
import com.google.inject.Inject;
import com.google.inject.Provider;
import emfviews.dsl.services.VpdlGrammarAccess;
import emfviews.dsl.sqlview.Attribute;
import emfviews.dsl.sqlview.Comparison;
import emfviews.dsl.sqlview.Condition;
import emfviews.dsl.sqlview.EclExpression;
import emfviews.dsl.sqlview.Expression;
import emfviews.dsl.sqlview.From;
import emfviews.dsl.sqlview.Join;
import emfviews.dsl.sqlview.JoinLeft;
import emfviews.dsl.sqlview.JoinRight;
import emfviews.dsl.sqlview.Left;
import emfviews.dsl.sqlview.Metamodel;
import emfviews.dsl.sqlview.MetamodelName;
import emfviews.dsl.sqlview.Model;
import emfviews.dsl.sqlview.Relation;
import emfviews.dsl.sqlview.Right;
import emfviews.dsl.sqlview.Select;
import emfviews.dsl.sqlview.SelectAttribute;
import emfviews.dsl.sqlview.SqlviewPackage;
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 VpdlSemanticSequencer extends AbstractDelegatingSemanticSequencer {
@Inject
private VpdlGrammarAccess grammarAccess;
public void createSequence(EObject context, EObject semanticObject) {
if(semanticObject.eClass().getEPackage() == SqlviewPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
case SqlviewPackage.ATTRIBUTE:
if(context == grammarAccess.getAttributeRule()) {
sequence_Attribute(context, (Attribute) semanticObject);
return;
}
else break;
case SqlviewPackage.CLASS:
if(context == grammarAccess.getClassRule()) {
sequence_Class(context, (emfviews.dsl.sqlview.Class) semanticObject);
return;
}
else break;
case SqlviewPackage.COMPARISON:
if(context == grammarAccess.getComparisonRule()) {
sequence_Comparison(context, (Comparison) semanticObject);
return;
}
else break;
case SqlviewPackage.CONDITION:
if(context == grammarAccess.getConditionRule()) {
sequence_Condition(context, (Condition) semanticObject);
return;
}
else break;
case SqlviewPackage.ECL_EXPRESSION:
if(context == grammarAccess.getEclExpressionRule()) {
sequence_EclExpression(context, (EclExpression) semanticObject);
return;
}
else break;
case SqlviewPackage.EXPRESSION:
if(context == grammarAccess.getExpressionRule()) {
sequence_Expression(context, (Expression) semanticObject);
return;
}
else break;
case SqlviewPackage.FROM:
if(context == grammarAccess.getFromRule()) {
sequence_From(context, (From) semanticObject);
return;
}
else break;
case SqlviewPackage.JOIN:
if(context == grammarAccess.getJoinRule()) {
sequence_Join(context, (Join) semanticObject);
return;
}
else break;
case SqlviewPackage.JOIN_LEFT:
if(context == grammarAccess.getJoinLeftRule()) {
sequence_JoinLeft(context, (JoinLeft) semanticObject);
return;
}
else break;
case SqlviewPackage.JOIN_RIGHT:
if(context == grammarAccess.getJoinRightRule()) {
sequence_JoinRight(context, (JoinRight) semanticObject);
return;
}
else break;
case SqlviewPackage.LEFT:
if(context == grammarAccess.getLeftRule()) {
sequence_Left(context, (Left) semanticObject);
return;
}
else break;
case SqlviewPackage.METAMODEL:
if(context == grammarAccess.getMetamodelRule()) {
sequence_Metamodel(context, (Metamodel) semanticObject);
return;
}
else break;
case SqlviewPackage.METAMODEL_NAME:
if(context == grammarAccess.getMetamodelNameRule()) {
sequence_MetamodelName(context, (MetamodelName) semanticObject);
return;
}
else break;
case SqlviewPackage.MODEL:
if(context == grammarAccess.getModelRule()) {
sequence_Model(context, (Model) semanticObject);
return;
}
else break;
case SqlviewPackage.RELATION:
if(context == grammarAccess.getRelationRule()) {
sequence_Relation(context, (Relation) semanticObject);
return;
}
else break;
case SqlviewPackage.RIGHT:
if(context == grammarAccess.getRightRule()) {
sequence_Right(context, (Right) semanticObject);
return;
}
else break;
case SqlviewPackage.SELECT:
if(context == grammarAccess.getSelectRule()) {
sequence_Select(context, (Select) semanticObject);
return;
}
else break;
case SqlviewPackage.SELECT_ATTRIBUTE:
if(context == grammarAccess.getSelectAttributeRule()) {
sequence_SelectAttribute(context, (SelectAttribute) semanticObject);
return;
}
else break;
}
if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
}
/**
* Constraint:
* name=ID
*/
protected void sequence_Attribute(EObject context, Attribute semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, SqlviewPackage.Literals.ATTRIBUTE__NAME) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SqlviewPackage.Literals.ATTRIBUTE__NAME));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getAttributeAccess().getNameIDTerminalRuleCall_0(), semanticObject.getName());
feeder.finish();
}
/**
* Constraint:
* name=ID
*/
protected void sequence_Class(EObject context, emfviews.dsl.sqlview.Class semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, SqlviewPackage.Literals.CLASS__NAME) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SqlviewPackage.Literals.CLASS__NAME));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getClassAccess().getNameIDTerminalRuleCall_0(), semanticObject.getName());
feeder.finish();
}
/**
* Constraint:
* (left+=Left right+=Right)
*/
protected void sequence_Comparison(EObject context, Comparison semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* ((value+=Comparison | value+=EclExpression) (value+=Comparison | value+=EclExpression)*)
*/
protected void sequence_Condition(EObject context, Condition semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* value=EString
*/
protected void sequence_EclExpression(EObject context, EclExpression semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, SqlviewPackage.Literals.ECL_EXPRESSION__VALUE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SqlviewPackage.Literals.ECL_EXPRESSION__VALUE));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getEclExpressionAccess().getValueEStringParserRuleCall_0(), semanticObject.getValue());
feeder.finish();
}
/**
* Constraint:
* (select+=Select from+=From condition+=Condition+)
*/
protected void sequence_Expression(EObject context, Expression semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (join+=Join join+=Join*)
*/
protected void sequence_From(EObject context, From semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (metamodelLeft+=[MetamodelName|ID] classLeft+=Class)
*/
protected void sequence_JoinLeft(EObject context, JoinLeft semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (metamodelRight+=[MetamodelName|ID] classRight+=Class)
*/
protected void sequence_JoinRight(EObject context, JoinRight semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (joinLeft+=JoinLeft joinRight+=JoinRight relation+=Relation)
*/
protected void sequence_Join(EObject context, Join semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (metamodel+=[MetamodelName|ID] class+=[Class|ID] attributeWhereLeft=Attribute)
*/
protected void sequence_Left(EObject context, Left semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* name=ID
*/
protected void sequence_MetamodelName(EObject context, MetamodelName semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, SqlviewPackage.Literals.METAMODEL_NAME__NAME) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SqlviewPackage.Literals.METAMODEL_NAME__NAME));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getMetamodelNameAccess().getNameIDTerminalRuleCall_0(), semanticObject.getName());
feeder.finish();
}
/**
* Constraint:
* (metamodelURL+=EString metamodelName+=MetamodelName)
*/
protected void sequence_Metamodel(EObject context, Metamodel semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (viewName=ID metamodel+=Metamodel metamodel+=Metamodel* expression+=Expression)
*/
protected void sequence_Model(EObject context, Model semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* name=ID
*/
protected void sequence_Relation(EObject context, Relation semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, SqlviewPackage.Literals.RELATION__NAME) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SqlviewPackage.Literals.RELATION__NAME));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getRelationAccess().getNameIDTerminalRuleCall_0(), semanticObject.getName());
feeder.finish();
}
/**
* Constraint:
* ((metamodel+=[MetamodelName|ID] class+=[Class|ID] attributeWhereRight=Attribute) | value=EString)
*/
protected void sequence_Right(EObject context, Right semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (metamodel+=[MetamodelName|ID] class+=Class attribute+=Attribute)
*/
protected void sequence_SelectAttribute(EObject context, SelectAttribute semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (select+='*' | (selectAttribute+=SelectAttribute selectAttribute+=SelectAttribute*))
*/
protected void sequence_Select(EObject context, Select semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
}