package net.certware.planning.cpn.serializer;
import com.google.inject.Inject;
import com.google.inject.Provider;
import net.certware.planning.cpn.cpnDsl.Allocation;
import net.certware.planning.cpn.cpnDsl.ArgumentModels;
import net.certware.planning.cpn.cpnDsl.CpnDslPackage;
import net.certware.planning.cpn.cpnDsl.Plan;
import net.certware.planning.cpn.cpnDsl.Plans;
import net.certware.planning.cpn.services.CpnDslGrammarAccess;
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 CpnDslSemanticSequencer extends AbstractDelegatingSemanticSequencer {
@Inject
private CpnDslGrammarAccess grammarAccess;
public void createSequence(EObject context, EObject semanticObject) {
if(semanticObject.eClass().getEPackage() == CpnDslPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
case CpnDslPackage.ALLOCATION:
if(context == grammarAccess.getAllocationRule()) {
sequence_Allocation(context, (Allocation) semanticObject);
return;
}
else break;
case CpnDslPackage.ARGUMENT_MODELS:
if(context == grammarAccess.getArgumentModelsRule()) {
sequence_ArgumentModels(context, (ArgumentModels) semanticObject);
return;
}
else break;
case CpnDslPackage.PLAN:
if(context == grammarAccess.getPlanRule()) {
sequence_Plan(context, (Plan) semanticObject);
return;
}
else break;
case CpnDslPackage.PLANS:
if(context == grammarAccess.getPlansRule()) {
sequence_Plans(context, (Plans) semanticObject);
return;
}
else break;
}
if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
}
/**
* Constraint:
* (cost=INT? duration=INT? team=STRING? facility=STRING?)
*/
protected void sequence_Allocation(EObject context, Allocation semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* importURI=STRING
*/
protected void sequence_ArgumentModels(EObject context, ArgumentModels semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, CpnDslPackage.Literals.ARGUMENT_MODELS__IMPORT_URI) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CpnDslPackage.Literals.ARGUMENT_MODELS__IMPORT_URI));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getArgumentModelsAccess().getImportURISTRINGTerminalRuleCall_1_0(), semanticObject.getImportURI());
feeder.finish();
}
/**
* Constraint:
* (id=STRING element=[ModelElement|ID] estimated=Allocation? actual=Allocation?)
*/
protected void sequence_Plan(EObject context, Plan semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (argumentmodels+=ArgumentModels* plans+=Plan*)
*/
protected void sequence_Plans(EObject context, Plans semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
}