package org.panlab.software.fsdl2.serializer;
import FederationOffice.federationscenarios.Credentials;
import FederationOffice.federationscenarios.FederationscenariosPackage;
import FederationOffice.federationscenarios.Import;
import FederationOffice.federationscenarios.InfrastructureRequest;
import FederationOffice.federationscenarios.RequestedFederationScenario;
import FederationOffice.federationscenarios.ResourceGroup;
import FederationOffice.federationscenarios.ResourceRequest;
import FederationOffice.federationscenarios.ResourceSettingInstance;
import FederationOffice.federationscenarios.ScheduledPlan;
import FederationOffice.federationscenarios.ServiceRequest;
import FederationOffice.federationscenarios.ServiceSettingInstance;
import FederationOffice.federationscenarios.ServicesRequest;
import com.google.inject.Inject;
import com.google.inject.Provider;
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.AbstractSemanticSequencer;
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;
import org.panlab.software.fsdl2.services.FSDLGrammarAccess;
@SuppressWarnings("restriction")
public class AbstractFSDLSemanticSequencer extends AbstractSemanticSequencer {
@Inject
protected FSDLGrammarAccess grammarAccess;
@Inject
protected ISemanticSequencerDiagnosticProvider diagnosticProvider;
@Inject
protected ITransientValueService transientValues;
@Inject
@GenericSequencer
protected Provider<ISemanticSequencer> genericSequencerProvider;
protected ISemanticSequencer genericSequencer;
@Override
public void init(ISemanticSequencer sequencer, ISemanticSequenceAcceptor sequenceAcceptor, Acceptor errorAcceptor) {
super.init(sequencer, sequenceAcceptor, errorAcceptor);
this.genericSequencer = genericSequencerProvider.get();
this.genericSequencer.init(sequencer, sequenceAcceptor, errorAcceptor);
}
public void createSequence(EObject context, EObject semanticObject) {
if(semanticObject.eClass().getEPackage() == FederationscenariosPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
case FederationscenariosPackage.CREDENTIALS:
if(context == grammarAccess.getCredentialsRule()) {
sequence_Credentials(context, (Credentials) semanticObject);
return;
}
else break;
case FederationscenariosPackage.IMPORT:
if(context == grammarAccess.getImportRule()) {
sequence_Import(context, (Import) semanticObject);
return;
}
else break;
case FederationscenariosPackage.INFRASTRUCTURE_REQUEST:
if(context == grammarAccess.getInfrastructureRequestRule()) {
sequence_InfrastructureRequest(context, (InfrastructureRequest) semanticObject);
return;
}
else break;
case FederationscenariosPackage.REQUESTED_FEDERATION_SCENARIO:
if(context == grammarAccess.getRequestedFederationScenarioRule()) {
sequence_RequestedFederationScenario(context, (RequestedFederationScenario) semanticObject);
return;
}
else break;
case FederationscenariosPackage.RESOURCE_GROUP:
if(context == grammarAccess.getResourceGroupRule()) {
sequence_ResourceGroup(context, (ResourceGroup) semanticObject);
return;
}
else break;
case FederationscenariosPackage.RESOURCE_REQUEST:
if(context == grammarAccess.getResourceRequestRule()) {
sequence_ResourceRequest(context, (ResourceRequest) semanticObject);
return;
}
else break;
case FederationscenariosPackage.RESOURCE_SETTING_INSTANCE:
if(context == grammarAccess.getResourceSettingInstanceRule()) {
sequence_ResourceSettingInstance(context, (ResourceSettingInstance) semanticObject);
return;
}
else break;
case FederationscenariosPackage.SCHEDULED_PLAN:
if(context == grammarAccess.getScheduledPlanRule()) {
sequence_ScheduledPlan(context, (ScheduledPlan) semanticObject);
return;
}
else break;
case FederationscenariosPackage.SERVICE_REQUEST:
if(context == grammarAccess.getServiceRequestRule()) {
sequence_ServiceRequest(context, (ServiceRequest) semanticObject);
return;
}
else break;
case FederationscenariosPackage.SERVICE_SETTING_INSTANCE:
if(context == grammarAccess.getServiceSettingInstanceRule()) {
sequence_ServiceSettingInstance(context, (ServiceSettingInstance) semanticObject);
return;
}
else break;
case FederationscenariosPackage.SERVICES_REQUEST:
if(context == grammarAccess.getServicesRequestRule()) {
sequence_ServicesRequest(context, (ServicesRequest) semanticObject);
return;
}
else break;
}
if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
}
/**
* Constraint:
* (name=STRING id=INT? description=STRING? username=STRING? password=STRING?)
*
* Features:
* name[1, 1]
* id[0, 1]
* description[0, 1]
* username[0, 1]
* password[0, 1]
*/
protected void sequence_Credentials(EObject context, Credentials semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* importURI=STRING
*
* Features:
* importURI[1, 1]
*/
protected void sequence_Import(EObject context, Import semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, FederationscenariosPackage.Literals.IMPORT__IMPORT_URI) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, FederationscenariosPackage.Literals.IMPORT__IMPORT_URI));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getImportAccess().getImportURISTRINGTerminalRuleCall_1_0(), semanticObject.getImportURI());
feeder.finish();
}
/**
* Constraint:
* (reqOfferedResources+=ResourceRequest* resourceGroups+=ResourceGroup*)
*
* Features:
* reqOfferedResources[0, *]
* resourceGroups[0, *]
*/
protected void sequence_InfrastructureRequest(EObject context, InfrastructureRequest semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (
* name=ID
* imports+=Import*
* isShared?='isShared'?
* description=STRING?
* VTCredentials=Credentials?
* scheduledPlan=ScheduledPlan?
* servicesRequest=ServicesRequest?
* infrastructureRequest=InfrastructureRequest?
* )
*
* Features:
* name[1, 1]
* description[0, 1]
* isShared[0, 1]
* VTCredentials[0, 1]
* servicesRequest[0, 1]
* infrastructureRequest[0, 1]
* scheduledPlan[0, 1]
* imports[0, *]
*/
protected void sequence_RequestedFederationScenario(EObject context, RequestedFederationScenario semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (name=ID (groupedResources+=[ResourceRequest|STRING] groupedResources+=[ResourceRequest|STRING]*)?)
*
* Features:
* name[1, 1]
* groupedResources[0, *]
*/
protected void sequence_ResourceGroup(EObject context, ResourceGroup semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (refOfferedResource=[OfferedResource|STRING] name=ID reqResourceSettings+=ResourceSettingInstance*)
*
* Features:
* name[1, 1]
* refOfferedResource[1, 1]
* reqResourceSettings[0, *]
*/
protected void sequence_ResourceRequest(EObject context, ResourceRequest semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (
* refResourceSetting=[ResourceSetting|STRING]
* (name=ID | name=STRING)
* staticValue=STRING?
* (assignSetting+=[SettingInstance|STRING] assignSetting+=[SettingInstance|STRING]*)?
* )
*
* Features:
* name[0, 2]
* staticValue[0, 1]
* assignSetting[0, *]
* refResourceSetting[1, 1]
*/
protected void sequence_ResourceSettingInstance(EObject context, ResourceSettingInstance semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (ValidFrom=EDate? ValidUntil=EDate?)
*
* Features:
* ValidFrom[0, 1]
* ValidUntil[0, 1]
*/
protected void sequence_ScheduledPlan(EObject context, ScheduledPlan semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (
* refService=[Service|STRING]
* name=ID
* numOfServices=INT?
* OfferedByProviders=[ResourcesProvider|STRING]?
* reqServiceSettings+=ServiceSettingInstance*
* )
*
* Features:
* name[1, 1]
* refService[1, 1]
* OfferedByProviders[0, 1]
* reqServiceSettings[0, *]
* numOfServices[0, 1]
*/
protected void sequence_ServiceRequest(EObject context, ServiceRequest semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (
* refServiceSetting=[ServiceSetting|STRING]
* (name=ID | name=STRING)
* staticValue=STRING?
* (assignSetting+=[SettingInstance|STRING] assignSetting+=[SettingInstance|STRING]*)?
* )
*
* Features:
* name[0, 2]
* staticValue[0, 1]
* assignSetting[0, *]
* refServiceSetting[1, 1]
*/
protected void sequence_ServiceSettingInstance(EObject context, ServiceSettingInstance semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (serviceRequestList+=ServiceRequest*)
*
* Features:
* serviceRequestList[0, *]
*/
protected void sequence_ServicesRequest(EObject context, ServicesRequest semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
}