package gr.upatras.ece.nam.fsdl.serializer;
import brokermodel.federationscenarios.Credentials;
import brokermodel.federationscenarios.FederationscenariosPackage;
import brokermodel.federationscenarios.Import;
import brokermodel.federationscenarios.InfrastructureRequest;
import brokermodel.federationscenarios.RequestedFederationScenario;
import brokermodel.federationscenarios.ResourceGroup;
import brokermodel.federationscenarios.ResourceRequest;
import brokermodel.federationscenarios.ResourceSettingInstance;
import brokermodel.federationscenarios.ScheduledPlan;
import brokermodel.federationscenarios.ServiceRequest;
import brokermodel.federationscenarios.ServiceSettingInstance;
import brokermodel.federationscenarios.ServicesRequest;
import com.google.inject.Inject;
import com.google.inject.Provider;
import gr.upatras.ece.nam.fsdl.services.FSDLGrammarAccess;
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 FSDLSemanticSequencer extends AbstractDelegatingSemanticSequencer {
@Inject
private FSDLGrammarAccess grammarAccess;
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?)
*/
protected void sequence_Credentials(EObject context, Credentials semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* importURI=STRING
*/
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*)
*/
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?
* )
*/
protected void sequence_RequestedFederationScenario(EObject context, RequestedFederationScenario semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (name=ID (groupedResources+=[ResourceRequest|STRING] groupedResources+=[ResourceRequest|STRING]*)?)
*/
protected void sequence_ResourceGroup(EObject context, ResourceGroup semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (refOfferedResource=[OfferedResource|STRING] name=ID reqResourceSettings+=ResourceSettingInstance*)
*/
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]*)?
* )
*/
protected void sequence_ResourceSettingInstance(EObject context, ResourceSettingInstance semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (ValidFrom=EDate? ValidUntil=EDate?)
*/
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*
* )
*/
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]*)?
* )
*/
protected void sequence_ServiceSettingInstance(EObject context, ServiceSettingInstance semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (serviceRequestList+=ServiceRequest*)
*/
protected void sequence_ServicesRequest(EObject context, ServicesRequest semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
}