package org.js.model.workflow.actions;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.window.Window;
import org.js.model.adaptation.AdaptationEngine;
import org.js.model.adaptation.ui.RemoveRoleDialog;
import org.js.model.adaptation.ui.UserInputRemoveRole;
import org.js.model.rbac.AccessControlModel;
import org.js.model.rbac.Role;
import org.js.model.workflow.util.WorkflowConfUtil;
import org.js.model.workflow.util.WorkflowUtil;
public class RemoveStakeholderAction extends MyAction {
@Override
public void run() {
initialRes();
removeStakeholder();
save();
refresh();
}
private void removeStakeholder() {
if (!isWorkflowInitialized()) {
String info = "Please import rbac as well as stage model files.";
MessageDialog.openInformation(getActiveShell(), "Warning", info);
} else {
openRemoveStakeholderDialog();
}
}
private void openRemoveStakeholderDialog() {
UserInputRemoveRole roleInput = new UserInputRemoveRole();
AccessControlModel accessControlModel = WorkflowUtil.getAccessControlModel(workflowModel);
RemoveRoleDialog dialog = new RemoveRoleDialog();
dialog.setInput(roleInput);
dialog.setAccessControlModel(accessControlModel);
int returnCode = dialog.open();
if (returnCode == Window.OK) {
startRemoveTransformSequence(roleInput);
}
}
private void startRemoveTransformSequence(UserInputRemoveRole roleInput) {
AdaptationEngine engine = new AdaptationEngine(getWorkflowModel());
Role role = roleInput.getRole();
engine.removeStakeholder(role);
}
private boolean isWorkflowInitialized() {
return (WorkflowConfUtil.hasAspectInstance(workflowModel, WorkflowConfUtil.ACM_ASPECT) && WorkflowConfUtil
.hasAspectInstance(workflowModel, WorkflowConfUtil.STAGEMODEL_ASPECT));
}
}