package com.evolveum.midpoint.web.page.admin.server;
import com.evolveum.midpoint.web.page.admin.server.dto.TaskDto;
import java.io.Serializable;
/**
* Used to determine whether tabs have to be refreshed - by comparing instances of this class before and after task update.
*
* @author mederly
*/
class TaskButtonsVisibility implements Serializable {
private boolean backVisible;
private boolean editVisible;
private boolean cancelEditVisible;
private boolean saveVisible;
private boolean suspendVisible;
private boolean resumeVisible;
private boolean runNowVisible;
private boolean stopVisible;
public boolean computeBackVisible(PageTaskEdit parentPage) {
backVisible = !parentPage.isEdit();
return backVisible;
}
public boolean computeEditVisible(PageTaskEdit parentPage) {
editVisible =
!parentPage.isEdit()
&& parentPage.isEditable()
&& (!parentPage.getTaskDto().isWorkflow() || parentPage.isShowAdvanced());
return editVisible;
}
public boolean computeCancelEditVisible(PageTaskEdit parentPage) {
cancelEditVisible = parentPage.isEdit();
return cancelEditVisible;
}
public boolean computeSaveVisible(PageTaskEdit parentPage) {
saveVisible = parentPage.isEdit();
return saveVisible;
}
public boolean computeSuspendVisible(PageTaskEdit parentPage) {
final TaskDto taskDto = parentPage.getTaskDto();
suspendVisible = !parentPage.isEdit() && taskDto.isRunnableOrRunning() && (!taskDto.isWorkflow() || parentPage.isShowAdvanced())
&& parentPage.canSuspend();
return suspendVisible;
}
public boolean computeResumeVisible(PageTaskEdit parentPage) {
final TaskDto taskDto = parentPage.getTaskDto();
resumeVisible = !parentPage.isEdit()
&& (taskDto.isSuspended() || (taskDto.isClosed() && taskDto.isRecurring()))
&& (!taskDto.isWorkflow() || parentPage.isShowAdvanced())
&& parentPage.canResume();
return resumeVisible;
}
public boolean computeRunNowVisible(PageTaskEdit parentPage) {
final TaskDto taskDto = parentPage.getTaskDto();
runNowVisible = !parentPage.isEdit()
&& (taskDto.isRunnable() || (taskDto.isClosed() && !taskDto.isRecurring()))
&& (!taskDto.isWorkflow() || parentPage.isShowAdvanced())
&& parentPage.canRunNow();
return runNowVisible;
}
public boolean computeStopVisible(PageTaskEdit parentPage) {
final TaskDto taskDto = parentPage.getTaskDto();
stopVisible = !parentPage.isEdit()
&& taskDto.isWorkflowChild()
&& !taskDto.isClosed()
&& parentPage.canStop();
return stopVisible;
}
public void computeAll(PageTaskEdit parentPage) {
computeBackVisible(parentPage);
computeEditVisible(parentPage);
computeCancelEditVisible(parentPage);
computeSaveVisible(parentPage);
computeSuspendVisible(parentPage);
computeResumeVisible(parentPage);
computeRunNowVisible(parentPage);
computeStopVisible(parentPage);
}
public boolean isBackVisible() {
return backVisible;
}
public boolean isEditVisible() {
return editVisible;
}
public boolean isCancelEditVisible() {
return cancelEditVisible;
}
public boolean isSaveVisible() {
return saveVisible;
}
public boolean isSuspendVisible() {
return suspendVisible;
}
public boolean isResumeVisible() {
return resumeVisible;
}
public boolean isRunNowVisible() {
return runNowVisible;
}
public boolean isStopVisible() {
return stopVisible;
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
TaskButtonsVisibility that = (TaskButtonsVisibility) o;
if (backVisible != that.backVisible)
return false;
if (editVisible != that.editVisible)
return false;
if (cancelEditVisible != that.cancelEditVisible)
return false;
if (saveVisible != that.saveVisible)
return false;
if (suspendVisible != that.suspendVisible)
return false;
if (resumeVisible != that.resumeVisible)
return false;
if (runNowVisible != that.runNowVisible)
return false;
return stopVisible == that.stopVisible;
}
@Override
public int hashCode() {
int result = (backVisible ? 1 : 0);
result = 31 * result + (editVisible ? 1 : 0);
result = 31 * result + (cancelEditVisible ? 1 : 0);
result = 31 * result + (saveVisible ? 1 : 0);
result = 31 * result + (suspendVisible ? 1 : 0);
result = 31 * result + (resumeVisible ? 1 : 0);
result = 31 * result + (runNowVisible ? 1 : 0);
result = 31 * result + (stopVisible ? 1 : 0);
return result;
}
}