/*
* generated by Xtext
*/
package net.certware.intent.state.serializer;
import com.google.inject.Inject;
import java.util.Set;
import net.certware.intent.state.services.StateSpecificationGrammarAccess;
import net.certware.intent.state.stateSpecification.BigUnitValue;
import net.certware.intent.state.stateSpecification.Component;
import net.certware.intent.state.stateSpecification.ComponentInput;
import net.certware.intent.state.stateSpecification.ComponentOutput;
import net.certware.intent.state.stateSpecification.Device;
import net.certware.intent.state.stateSpecification.DeviceInput;
import net.certware.intent.state.stateSpecification.DeviceOutput;
import net.certware.intent.state.stateSpecification.Input;
import net.certware.intent.state.stateSpecification.Mode;
import net.certware.intent.state.stateSpecification.ModeElement;
import net.certware.intent.state.stateSpecification.ModeElementType;
import net.certware.intent.state.stateSpecification.ModeVariable;
import net.certware.intent.state.stateSpecification.Output;
import net.certware.intent.state.stateSpecification.Specification;
import net.certware.intent.state.stateSpecification.State;
import net.certware.intent.state.stateSpecification.StateElement;
import net.certware.intent.state.stateSpecification.StateList;
import net.certware.intent.state.stateSpecification.StateSpecificationPackage;
import net.certware.intent.state.stateSpecification.StateValue;
import net.certware.intent.state.stateSpecification.StateVariable;
import net.certware.intent.state.stateSpecification.Trigger;
import net.certware.intent.state.stateSpecification.TriggerTable;
import net.certware.intent.state.stateSpecification.ValueList;
import net.certware.intent.state.stateSpecification.ValueRange;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
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.AbstractDelegatingSemanticSequencer;
import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ValueTransient;
@SuppressWarnings("all")
public class StateSpecificationSemanticSequencer extends AbstractDelegatingSemanticSequencer {
@Inject
private StateSpecificationGrammarAccess 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 == StateSpecificationPackage.eINSTANCE)
switch (semanticObject.eClass().getClassifierID()) {
case StateSpecificationPackage.BIG_UNIT_VALUE:
sequence_BigUnitValue(context, (BigUnitValue) semanticObject);
return;
case StateSpecificationPackage.COMPONENT:
sequence_Component(context, (Component) semanticObject);
return;
case StateSpecificationPackage.COMPONENT_INPUT:
sequence_ComponentInput(context, (ComponentInput) semanticObject);
return;
case StateSpecificationPackage.COMPONENT_OUTPUT:
sequence_ComponentOutput(context, (ComponentOutput) semanticObject);
return;
case StateSpecificationPackage.DEVICE:
sequence_Device(context, (Device) semanticObject);
return;
case StateSpecificationPackage.DEVICE_INPUT:
sequence_DeviceInput(context, (DeviceInput) semanticObject);
return;
case StateSpecificationPackage.DEVICE_OUTPUT:
sequence_DeviceOutput(context, (DeviceOutput) semanticObject);
return;
case StateSpecificationPackage.INPUT:
sequence_Input(context, (Input) semanticObject);
return;
case StateSpecificationPackage.MODE:
sequence_Mode(context, (Mode) semanticObject);
return;
case StateSpecificationPackage.MODE_ELEMENT:
sequence_ModeElement(context, (ModeElement) semanticObject);
return;
case StateSpecificationPackage.MODE_ELEMENT_TYPE:
sequence_ModeElementType(context, (ModeElementType) semanticObject);
return;
case StateSpecificationPackage.MODE_VARIABLE:
sequence_ModeVariable(context, (ModeVariable) semanticObject);
return;
case StateSpecificationPackage.OUTPUT:
sequence_Output(context, (Output) semanticObject);
return;
case StateSpecificationPackage.SPECIFICATION:
sequence_Specification(context, (Specification) semanticObject);
return;
case StateSpecificationPackage.STATE:
sequence_State(context, (State) semanticObject);
return;
case StateSpecificationPackage.STATE_ELEMENT:
sequence_StateElement(context, (StateElement) semanticObject);
return;
case StateSpecificationPackage.STATE_LIST:
sequence_StateList(context, (StateList) semanticObject);
return;
case StateSpecificationPackage.STATE_VALUE:
sequence_StateValue(context, (StateValue) semanticObject);
return;
case StateSpecificationPackage.STATE_VARIABLE:
sequence_StateVariable(context, (StateVariable) semanticObject);
return;
case StateSpecificationPackage.TRIGGER:
sequence_Trigger(context, (Trigger) semanticObject);
return;
case StateSpecificationPackage.TRIGGER_TABLE:
sequence_TriggerTable(context, (TriggerTable) semanticObject);
return;
case StateSpecificationPackage.VALUE_LIST:
sequence_ValueList(context, (ValueList) semanticObject);
return;
case StateSpecificationPackage.VALUE_RANGE:
sequence_ValueRange(context, (ValueRange) semanticObject);
return;
}
if (errorAcceptor != null)
errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
}
/**
* Contexts:
* BigUnitValue returns BigUnitValue
*
* Constraint:
* (value=BigDecimalType units=STRING)
*/
protected void sequence_BigUnitValue(ISerializationContext context, BigUnitValue semanticObject) {
if (errorAcceptor != null) {
if (transientValues.isValueTransient(semanticObject, StateSpecificationPackage.Literals.BIG_UNIT_VALUE__VALUE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StateSpecificationPackage.Literals.BIG_UNIT_VALUE__VALUE));
if (transientValues.isValueTransient(semanticObject, StateSpecificationPackage.Literals.BIG_UNIT_VALUE__UNITS) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StateSpecificationPackage.Literals.BIG_UNIT_VALUE__UNITS));
}
SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
feeder.accept(grammarAccess.getBigUnitValueAccess().getValueBigDecimalTypeParserRuleCall_0_0(), semanticObject.getValue());
feeder.accept(grammarAccess.getBigUnitValueAccess().getUnitsSTRINGTerminalRuleCall_2_0(), semanticObject.getUnits());
feeder.finish();
}
/**
* Contexts:
* ComponentInput returns ComponentInput
*
* Constraint:
* (name=ID io=Input? source=[Device|ID])
*/
protected void sequence_ComponentInput(ISerializationContext context, ComponentInput semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* ComponentOutput returns ComponentOutput
*
* Constraint:
* (name=ID io=Output? target=[Device|ID])
*/
protected void sequence_ComponentOutput(ISerializationContext context, ComponentOutput semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* Component returns Component
*
* Constraint:
* (name=ID modes+=ModeElement* states+=StateElement* inputs+=ComponentInput* outputs+=ComponentOutput*)
*/
protected void sequence_Component(ISerializationContext context, Component semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* DeviceInput returns DeviceInput
*
* Constraint:
* (name=ID io=Input? source=[Component|ID])
*/
protected void sequence_DeviceInput(ISerializationContext context, DeviceInput semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* DeviceOutput returns DeviceOutput
*
* Constraint:
* (name=ID io=Output? target=[Component|ID])
*/
protected void sequence_DeviceOutput(ISerializationContext context, DeviceOutput semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* Device returns Device
*
* Constraint:
* (name=ID desc=STRING inputs+=DeviceInput* outputs+=DeviceOutput*)
*/
protected void sequence_Device(ISerializationContext context, Device semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* Input returns Input
*
* Constraint:
* (
* range=ValueRange?
* valueList=ValueList?
* valueHandling=STRING?
* granularity=BigUnitValue?
* arrivalRateAvg=BigUnitValue?
* arrivalRateMinimum=BigUnitValue?
* arrivalRateMaximum=BigUnitValue?
* obsolescence=BigUnitValue?
* references=STRING?
* appearsIn=STRING?
* description=STRING?
* comments=STRING?
* structure=TriggerTable?
* )
*/
protected void sequence_Input(ISerializationContext context, Input semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* ModeElementType returns ModeElementType
*
* Constraint:
* (elementType='supervisory' | elementType='operating' | elementType='other')
*/
protected void sequence_ModeElementType(ISerializationContext context, ModeElementType semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* ModeElement returns ModeElement
*
* Constraint:
* (inferred?='inferred'? type=ModeElementType modes+=ModeVariable+)
*/
protected void sequence_ModeElement(ISerializationContext context, ModeElement semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* ModeVariable returns ModeVariable
*
* Constraint:
* (desc=STRING modes+=Mode+)
*/
protected void sequence_ModeVariable(ISerializationContext context, ModeVariable semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* Mode returns Mode
*
* Constraint:
* (initial?='initial'? value=STRING)
*/
protected void sequence_Mode(ISerializationContext context, Mode semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* Output returns Output
*
* Constraint:
* (
* range=ValueRange?
* valueList=ValueList?
* rate=BigUnitValue?
* delay=BigUnitValue?
* deadline=BigUnitValue?
* completionHandling=STRING?
* variables=STRING?
* relationship=STRING?
* minResponse=BigUnitValue?
* maxResponse=BigUnitValue?
* feebackHandling=STRING?
* reversed=STRING?
* references=STRING?
* comments=STRING?
* contents=STRING?
* table=TriggerTable?
* )
*/
protected void sequence_Output(ISerializationContext context, Output semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* Specification returns Specification
*
* Constraint:
* (name=ID devices+=Device* components+=Component+)
*/
protected void sequence_Specification(ISerializationContext context, Specification semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* StateElement returns StateElement
*
* Constraint:
* (inferred?='inferred'? states+=StateVariable+)
*/
protected void sequence_StateElement(ISerializationContext context, StateElement semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* StateList returns StateList
*
* Constraint:
* stateList+=StateValue+
*/
protected void sequence_StateList(ISerializationContext context, StateList semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* StateValue returns StateValue
*
* Constraint:
* (value='T' | value='F' | value='.' | value='?')
*/
protected void sequence_StateValue(ISerializationContext context, StateValue semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* StateVariable returns StateVariable
*
* Constraint:
* (desc=STRING state+=State+)
*/
protected void sequence_StateVariable(ISerializationContext context, StateVariable semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* State returns State
*
* Constraint:
* (initial?='initial'? value=STRING)
*/
protected void sequence_State(ISerializationContext context, State semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* TriggerTable returns TriggerTable
*
* Constraint:
* rows+=Trigger*
*/
protected void sequence_TriggerTable(ISerializationContext context, TriggerTable semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* Trigger returns Trigger
*
* Constraint:
* ((mode=[Mode|ID] list=StateList) | (variable=[StateVariable|ID] value=[State|ID] list=StateList))
*/
protected void sequence_Trigger(ISerializationContext context, Trigger semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* ValueList returns ValueList
*
* Constraint:
* values+=STRING+
*/
protected void sequence_ValueList(ISerializationContext context, ValueList semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* ValueRange returns ValueRange
*
* Constraint:
* (lower=BigDecimalType upper=BigDecimalType rangeType=STRING rangeUnits=STRING)
*/
protected void sequence_ValueRange(ISerializationContext context, ValueRange semanticObject) {
if (errorAcceptor != null) {
if (transientValues.isValueTransient(semanticObject, StateSpecificationPackage.Literals.VALUE_RANGE__LOWER) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StateSpecificationPackage.Literals.VALUE_RANGE__LOWER));
if (transientValues.isValueTransient(semanticObject, StateSpecificationPackage.Literals.VALUE_RANGE__UPPER) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StateSpecificationPackage.Literals.VALUE_RANGE__UPPER));
if (transientValues.isValueTransient(semanticObject, StateSpecificationPackage.Literals.VALUE_RANGE__RANGE_TYPE) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StateSpecificationPackage.Literals.VALUE_RANGE__RANGE_TYPE));
if (transientValues.isValueTransient(semanticObject, StateSpecificationPackage.Literals.VALUE_RANGE__RANGE_UNITS) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StateSpecificationPackage.Literals.VALUE_RANGE__RANGE_UNITS));
}
SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
feeder.accept(grammarAccess.getValueRangeAccess().getLowerBigDecimalTypeParserRuleCall_1_0(), semanticObject.getLower());
feeder.accept(grammarAccess.getValueRangeAccess().getUpperBigDecimalTypeParserRuleCall_3_0(), semanticObject.getUpper());
feeder.accept(grammarAccess.getValueRangeAccess().getRangeTypeSTRINGTerminalRuleCall_6_0(), semanticObject.getRangeType());
feeder.accept(grammarAccess.getValueRangeAccess().getRangeUnitsSTRINGTerminalRuleCall_8_0(), semanticObject.getRangeUnits());
feeder.finish();
}
}