/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package at.ac.tuwien.dsg.rsybl.controllercommunication.interactionProcessing;
import at.ac.tuwien.dsg.rsybl.controllercommunication.CommunicationManagement;
import at.ac.tuwien.dsg.rsybl.controllercommunication.SYBLControlClient;
import at.ac.tuwien.dsg.rsybl.operationsmanagementplatform.entities.communicationModel.Dialog;
import at.ac.tuwien.dsg.rsybl.operationsmanagementplatform.entities.communicationModel.Interaction;
import at.ac.tuwien.dsg.rsybl.operationsmanagementplatform.entities.communicationModel.Message;
import at.ac.tuwien.dsg.rsybl.operationsmanagementplatform.entities.interfaces.IInteraction;
import at.ac.tuwien.dsg.rsybl.operationsmanagementplatform.entities.interfaces.IMessage;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Georgiana
*/
public class InteractionProcessing {
private SYBLControlClient syblControlClient;
private InitiateInteractions initiateInteractions;
private HashMap<UUID, Dialog> ongoingDialogs = new HashMap<UUID, Dialog>();
public InteractionProcessing(InitiateInteractions initiateInteractions) {
this.initiateInteractions = initiateInteractions;
syblControlClient = new SYBLControlClient("http://localhost:8280/rSYBL/restWS");
}
public void processNewInteraction(Interaction interaction) {
Interaction interactionResponse = null;
Message message = null;
if (ongoingDialogs.containsKey(UUID.fromString(interaction.getDialogUuid()))) {
ongoingDialogs.get(UUID.fromString(interaction.getDialogUuid())).addInteraction((IInteraction) interaction);
} else {
Dialog d = new Dialog();
if (interaction.getDialogUuid() != null && !interaction.getDialogUuid().equalsIgnoreCase("")) {
d.setUuid(interaction.getDialogUuid());
} else {
d.setUuid(UUID.randomUUID().toString());
}
}
if (interaction.getType().equalsIgnoreCase(IInteraction.InteractionType.REQUEST)) {
switch (interaction.getMessage().getActionEnforced()) {
case IMessage.RequestTypes.PAUSE_CONTROL:
syblControlClient.stopApplication(interaction.getMessage().getCloudServiceId());
interactionResponse = new Interaction();
interactionResponse.setUuid(UUID.randomUUID().toString());
interactionResponse.setDialogUuid(interaction.getDialogUuid());
message = new Message();
message.setCause(interaction.getMessage().getCause());
message.setActionEnforced(IMessage.RequestTypes.PAUSE_CONTROL);
message.setDescription("OK");
message.setCloudServiceId(interaction.getMessage().getCloudServiceId());
interactionResponse.setType(interaction.getType());
interactionResponse.setInitiationDate(new Date());
interactionResponse.setInitiator(interaction.getReceiver());
interactionResponse.setReceiver(interaction.getInitiator());
interactionResponse.setMessage(message);
initiateInteractions.initiateInteraction(interactionResponse);
break;
case IMessage.RequestTypes.PREPARE_CONTROL:
syblControlClient.prepareControl(interaction.getMessage().getCloudServiceId());
interactionResponse = new Interaction();
interactionResponse.setUuid(UUID.randomUUID().toString());
interactionResponse.setDialogUuid(interaction.getDialogUuid());
message = new Message();
message.setCause(interaction.getMessage().getCause());
message.setActionEnforced(IMessage.RequestTypes.PREPARE_CONTROL);
message.setDescription("OK");
message.setCloudServiceId(interaction.getMessage().getCloudServiceId());
interactionResponse.setType(interaction.getType());
interactionResponse.setInitiationDate(new Date());
interactionResponse.setInitiator(interaction.getReceiver());
interactionResponse.setReceiver(interaction.getInitiator());
interactionResponse.setMessage(message);
initiateInteractions.initiateInteraction(interactionResponse);
break;
case IMessage.RequestTypes.REMOVE_SERVICE:
syblControlClient.removeApplicationFromControl(interaction.getMessage().getCloudServiceId());
interactionResponse = new Interaction();
interactionResponse.setUuid(UUID.randomUUID().toString());
interactionResponse.setDialogUuid(interaction.getDialogUuid());
message = new Message();
message.setCause(interaction.getMessage().getCause());
message.setActionEnforced(IMessage.RequestTypes.REMOVE_SERVICE);
message.setDescription("OK");
message.setCloudServiceId(interaction.getMessage().getCloudServiceId());
interactionResponse.setType(interaction.getType());
interactionResponse.setInitiationDate(new Date());
interactionResponse.setInitiator(interaction.getReceiver());
interactionResponse.setReceiver(interaction.getInitiator());
interactionResponse.setMessage(message);
initiateInteractions.initiateInteraction(interactionResponse);
break;
case IMessage.RequestTypes.REPLACE_REQUIREMENTS:
syblControlClient.replaceRequirements(interaction.getMessage().getCloudServiceId(), interaction.getMessage().getDescription());
interactionResponse = new Interaction();
interactionResponse.setUuid(UUID.randomUUID().toString());
interactionResponse.setDialogUuid(interaction.getDialogUuid());
message = new Message();
message.setCause(interaction.getMessage().getCause());
message.setActionEnforced(IMessage.RequestTypes.REPLACE_REQUIREMENTS);
message.setDescription("OK");
message.setCloudServiceId(interaction.getMessage().getCloudServiceId());
interactionResponse.setType(interaction.getType());
interactionResponse.setInitiationDate(new Date());
interactionResponse.setInitiator(interaction.getReceiver());
interactionResponse.setReceiver(interaction.getInitiator());
interactionResponse.setMessage(message);
initiateInteractions.initiateInteraction(interactionResponse);
break;
case IMessage.RequestTypes.REPLACE_CUSTOM_METRICS:
syblControlClient.replaceCompositionRules(interaction.getMessage().getCloudServiceId(), interaction.getMessage().getDescription());
interactionResponse = new Interaction();
interactionResponse.setUuid(UUID.randomUUID().toString());
interactionResponse.setDialogUuid(interaction.getDialogUuid());
message = new Message();
message.setCause(interaction.getMessage().getCause());
message.setActionEnforced(IMessage.RequestTypes.REPLACE_CUSTOM_METRICS);
message.setDescription("OK");
message.setCloudServiceId(interaction.getMessage().getCloudServiceId());
interactionResponse.setType(interaction.getType());
interactionResponse.setInitiationDate(new Date());
interactionResponse.setInitiator(interaction.getReceiver());
interactionResponse.setReceiver(interaction.getInitiator());
interactionResponse.setMessage(message);
initiateInteractions.initiateInteraction(interactionResponse);
break;
case IMessage.RequestTypes.RESUME_CONTROL:
syblControlClient.resumeControl(interaction.getMessage().getCloudServiceId());
interactionResponse = new Interaction();
interactionResponse.setUuid(UUID.randomUUID().toString());
interactionResponse.setDialogUuid(interaction.getDialogUuid());
message = new Message();
message.setCause(interaction.getMessage().getCause());
message.setActionEnforced(IMessage.RequestTypes.RESUME_CONTROL);
message.setDescription("OK");
message.setCloudServiceId(interaction.getMessage().getCloudServiceId());
interactionResponse.setType(interaction.getType());
interactionResponse.setInitiationDate(new Date());
interactionResponse.setInitiator(interaction.getReceiver());
interactionResponse.setReceiver(interaction.getInitiator());
interactionResponse.setMessage(message);
initiateInteractions.initiateInteraction(interactionResponse);
break;
case IMessage.RequestTypes.SEND_CUSTOM_METRICS:
syblControlClient.setMetricsCompositionRules(interaction.getMessage().getCloudServiceId(), interaction.getMessage().getDescription());
interactionResponse = new Interaction();
interactionResponse.setUuid(UUID.randomUUID().toString());
interactionResponse.setDialogUuid(interaction.getDialogUuid());
message = new Message();
message.setCause(interaction.getMessage().getCause());
message.setActionEnforced(IMessage.RequestTypes.SEND_CUSTOM_METRICS);
message.setDescription("OK");
message.setCloudServiceId(interaction.getMessage().getCloudServiceId());
interactionResponse.setType(interaction.getType());
interactionResponse.setInitiationDate(new Date());
interactionResponse.setInitiator(interaction.getReceiver());
interactionResponse.setReceiver(interaction.getInitiator());
interactionResponse.setMessage(message);
initiateInteractions.initiateInteraction(interactionResponse);
break;
case IMessage.RequestTypes.SEND_DEPLOYMENT_DESCRIPTION:
syblControlClient.setApplicationDeployment(interaction.getMessage().getCloudServiceId(), interaction.getMessage().getDescription());
interactionResponse = new Interaction();
interactionResponse.setUuid(UUID.randomUUID().toString());
interactionResponse.setDialogUuid(interaction.getDialogUuid());
message = new Message();
message.setCause(interaction.getMessage().getCause());
message.setActionEnforced(IMessage.RequestTypes.SEND_DEPLOYMENT_DESCRIPTION);
message.setDescription("OK");
message.setCloudServiceId(interaction.getMessage().getCloudServiceId());
interactionResponse.setType(interaction.getType());
interactionResponse.setInitiationDate(new Date());
interactionResponse.setInitiator(interaction.getReceiver());
interactionResponse.setReceiver(interaction.getInitiator());
interactionResponse.setMessage(message);
initiateInteractions.initiateInteraction(interactionResponse);
break;
case IMessage.RequestTypes.SEND_SERVICE_DESCRIPTION:
syblControlClient.setApplicationDescription(interaction.getMessage().getCloudServiceId(), interaction.getMessage().getDescription());
interactionResponse = new Interaction();
interactionResponse.setUuid(UUID.randomUUID().toString());
interactionResponse.setDialogUuid(interaction.getDialogUuid());
message = new Message();
message.setCause(interaction.getMessage().getCause());
message.setActionEnforced(IMessage.RequestTypes.SEND_SERVICE_DESCRIPTION);
message.setDescription("OK");
message.setCloudServiceId(interaction.getMessage().getCloudServiceId());
interactionResponse.setType(interaction.getType());
interactionResponse.setInitiationDate(new Date());
interactionResponse.setInitiator(interaction.getReceiver());
interactionResponse.setReceiver(interaction.getInitiator());
interactionResponse.setMessage(message);
initiateInteractions.initiateInteraction(interactionResponse);
break;
case IMessage.RequestTypes.START_CONTROL:
syblControlClient.startApplication(interaction.getMessage().getCloudServiceId());
interactionResponse = new Interaction();
interactionResponse.setUuid(UUID.randomUUID().toString());
interactionResponse.setDialogUuid(interaction.getDialogUuid());
message = new Message();
message.setCause(interaction.getMessage().getCause());
message.setActionEnforced(IMessage.RequestTypes.START_CONTROL);
message.setDescription("OK");
message.setCloudServiceId(interaction.getMessage().getCloudServiceId());
interactionResponse.setType(interaction.getType());
interactionResponse.setInitiationDate(new Date());
interactionResponse.setInitiator(interaction.getReceiver());
interactionResponse.setReceiver(interaction.getInitiator());
interactionResponse.setMessage(message);
initiateInteractions.initiateInteraction(interactionResponse);
break;
case IMessage.RequestTypes.START_ENFORCEMENT:
syblControlClient.startEnforcement(interaction.getMessage().getCloudServiceId(), interaction.getMessage().getTargetPartId(),
interaction.getMessage().getDescription());
interactionResponse = new Interaction();
interactionResponse.setUuid(UUID.randomUUID().toString());
interactionResponse.setDialogUuid(interaction.getDialogUuid());
message = new Message();
message.setCause(interaction.getMessage().getCause());
message.setActionEnforced(IMessage.RequestTypes.START_ENFORCEMENT);
message.setDescription("OK");
message.setCloudServiceId(interaction.getMessage().getCloudServiceId());
interactionResponse.setType(interaction.getType());
interactionResponse.setInitiationDate(new Date());
interactionResponse.setInitiator(interaction.getReceiver());
interactionResponse.setReceiver(interaction.getInitiator());
interactionResponse.setMessage(message);
initiateInteractions.initiateInteraction(interactionResponse);
break;
case IMessage.RequestTypes.START_TEST:
syblControlClient.startTest(interaction.getMessage().getCloudServiceId());
interactionResponse = new Interaction();
interactionResponse.setUuid(UUID.randomUUID().toString());
interactionResponse.setDialogUuid(interaction.getDialogUuid());
message = new Message();
message.setCause(interaction.getMessage().getCause());
message.setActionEnforced(IMessage.RequestTypes.START_TEST);
message.setDescription("OK");
message.setCloudServiceId(interaction.getMessage().getCloudServiceId());
interactionResponse.setType(interaction.getType());
interactionResponse.setInitiationDate(new Date());
interactionResponse.setInitiator(interaction.getReceiver());
interactionResponse.setReceiver(interaction.getInitiator());
interactionResponse.setMessage(message);
initiateInteractions.initiateInteraction(interactionResponse);
break;
case IMessage.RequestTypes.UNDEPLOY_SERVICE:
syblControlClient.undeployService(interaction.getMessage().getCloudServiceId());
interactionResponse = new Interaction();
interactionResponse.setUuid(UUID.randomUUID().toString());
interactionResponse.setDialogUuid(interaction.getDialogUuid());
message = new Message();
message.setCause(interaction.getMessage().getCause());
message.setActionEnforced(IMessage.RequestTypes.UNDEPLOY_SERVICE);
message.setDescription("OK");
message.setCloudServiceId(interaction.getMessage().getCloudServiceId());
interactionResponse.setType(interaction.getType());
interactionResponse.setInitiationDate(new Date());
interactionResponse.setInitiator(interaction.getReceiver());
interactionResponse.setReceiver(interaction.getInitiator());
interactionResponse.setMessage(message);
initiateInteractions.initiateInteraction(interactionResponse);
break;
case IMessage.RequestTypes.GET_SERVICES:
String services = syblControlClient.getServices();
interactionResponse = new Interaction();
interactionResponse.setUuid(UUID.randomUUID().toString());
interactionResponse.setDialogUuid(interaction.getDialogUuid());
message = new Message();
message.setCause(interaction.getMessage().getCause());
message.setActionEnforced(IMessage.RequestTypes.GET_SERVICES);
message.setDescription(services);
message.setUuid(UUID.randomUUID().toString());
message.setCloudServiceId(interaction.getMessage().getCloudServiceId());
interactionResponse.setInitiationDate(new Date());
interactionResponse.setInitiator(interaction.getReceiver());
interactionResponse.setReceiver(interaction.getInitiator());
interactionResponse.setMessage(message);
interactionResponse.setType(interaction.getType());
initiateInteractions.initiateInteraction(interactionResponse);
break;
case IMessage.RequestTypes.GET_SERVICE:
String servs = syblControlClient.getService(interaction.getMessage().getCloudServiceId());
interactionResponse = new Interaction();
interactionResponse.setUuid(UUID.randomUUID().toString());
interactionResponse.setDialogUuid(interaction.getDialogUuid());
message = new Message();
message.setCause(interaction.getMessage().getCause());
message.setActionEnforced(IMessage.RequestTypes.GET_SERVICE);
message.setDescription(servs);
message.setCloudServiceId(interaction.getMessage().getCloudServiceId());
message.setUuid(UUID.randomUUID().toString());
interactionResponse.setInitiationDate(new Date());
interactionResponse.setInitiator(interaction.getReceiver());
interactionResponse.setReceiver(interaction.getInitiator());
interactionResponse.setMessage(message);
interactionResponse.setType(interaction.getType());
initiateInteractions.initiateInteraction(interactionResponse);
break;
case IMessage.RequestTypes.GET_REQUIREMENTS:
String reqs = syblControlClient.getRequirements(interaction.getMessage().getCloudServiceId());
interactionResponse = new Interaction();
interactionResponse.setUuid(UUID.randomUUID().toString());
interactionResponse.setDialogUuid(interaction.getDialogUuid());
message = new Message();
message.setCause(interaction.getMessage().getCause());
message.setActionEnforced(IMessage.RequestTypes.GET_REQUIREMENTS);
message.setDescription(reqs);
message.setCloudServiceId(interaction.getMessage().getCloudServiceId());
message.setUuid(UUID.randomUUID().toString());
interactionResponse.setInitiationDate(new Date());
interactionResponse.setInitiator(interaction.getReceiver());
interactionResponse.setReceiver(interaction.getInitiator());
interactionResponse.setMessage(message);
interactionResponse.setType(interaction.getType());
initiateInteractions.initiateInteraction(interactionResponse);
break;
}
}
}
/**
* @return the syblControlClient
*/
public SYBLControlClient getSyblControlClient() {
return syblControlClient;
}
/**
* @param syblControlClient the syblControlClient to set
*/
public void setSyblControlClient(SYBLControlClient syblControlClient) {
this.syblControlClient = syblControlClient;
}
}