package org.ovirt.engine.core.common.businessentities; import java.io.Serializable; import java.util.Date; import java.util.Objects; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.asynctasks.AsyncTaskType; import org.ovirt.engine.core.compat.CommandStatus; import org.ovirt.engine.core.compat.Guid; public class AsyncTask implements Serializable { private static final long serialVersionUID = 5913365704117183118L; private AsyncTaskResultEnum result; private AsyncTaskStatusEnum status; private Guid userId; private Guid vdsmTaskId; private Guid storagePoolId; private Guid taskId; private Guid commandId; private Guid rootCommandId; private Guid stepId; private AsyncTaskType taskType; private Date startTime; private CommandEntity rootCmdEntity; private CommandEntity childCmdEntity; public AsyncTask() { result = AsyncTaskResultEnum.success; status = AsyncTaskStatusEnum.unknown; userId = Guid.Empty; vdsmTaskId = Guid.Empty; commandId = Guid.Empty; rootCommandId = Guid.Empty; rootCmdEntity = new CommandEntity(); childCmdEntity = new CommandEntity(); } public AsyncTask(AsyncTaskResultEnum result, AsyncTaskStatusEnum status, Guid userId, Guid vdsmTaskId, Guid stepId, Guid storagePoolId, AsyncTaskType taskType, CommandEntity rootCmdEntity, CommandEntity childCmdEntity) { this.result = result; this.status = status; this.userId = userId; this.vdsmTaskId = vdsmTaskId; this.stepId = stepId; this.startTime = new Date(); this.commandId = childCmdEntity.getId(); this.rootCommandId = rootCmdEntity.getId(); this.storagePoolId = storagePoolId; this.taskId = Guid.newGuid(); this.taskType = taskType; this.rootCmdEntity = rootCmdEntity; this.childCmdEntity = childCmdEntity; } public VdcActionType getActionType() { return rootCmdEntity.getCommandType(); } public void setActionType(VdcActionType value) { this.rootCmdEntity.setCommandType(value); } public Date getStartTime() { return startTime; } public void setStartTime(Date startTime) { this.startTime = startTime; } public AsyncTaskResultEnum getresult() { return this.result; } public void setresult(AsyncTaskResultEnum value) { this.result = value; } public AsyncTaskStatusEnum getstatus() { return this.status; } public void setstatus(AsyncTaskStatusEnum value) { this.status = value; } public Guid getVdsmTaskId() { return this.vdsmTaskId; } public void setVdsmTaskId(Guid value) { this.vdsmTaskId = value; } public Guid getTaskId() { return this.taskId; } public void setTaskId(Guid value) { this.taskId = value; } public VdcActionParametersBase getActionParameters() { return rootCmdEntity.getCommandParameters(); } public void setActionParameters(VdcActionParametersBase value) { this.rootCmdEntity.setCommandParameters(value); } public VdcActionParametersBase getTaskParameters() { return childCmdEntity.getCommandParameters(); } public void setTaskParameters(VdcActionParametersBase value) { childCmdEntity.setCommandParameters(value); } public Guid getStepId() { return this.stepId; } public void setStepId(Guid stepId) { this.stepId = stepId; } public CommandStatus getCommandStatus() { return childCmdEntity.getCommandStatus(); } public void setCommandStatus(CommandStatus status) { childCmdEntity.setCommandStatus(status); } public void setCommandType(VdcActionType cmdType) { childCmdEntity.setCommandType(cmdType); } public VdcActionType getCommandType() { return childCmdEntity.getCommandType(); } public void setCreatedAt(Date createdAt) { childCmdEntity.setCreatedAt(createdAt); } public Date getCreatedAt() { return childCmdEntity.getCreatedAt(); } public Guid getRootCommandId() { return rootCommandId; } public void setRootCommandId(Guid rootCommandId) { this.rootCommandId = rootCommandId; } public Guid getCommandId() { return commandId; } public void setCommandId(Guid commandId) { this.commandId = commandId; } public Guid getStoragePoolId() { return storagePoolId; } public void setStoragePoolId(Guid storagePoolId) { this.storagePoolId = storagePoolId; } public AsyncTaskType getTaskType() { return taskType; } public void setTaskType(AsyncTaskType taskType) { this.taskType = taskType; } public void setCallbackEnabled(boolean enabled) { childCmdEntity.setCallbackEnabled(enabled); } public boolean isCallbackEnabled() { return childCmdEntity.isCallbackEnabled(); } @Override public int hashCode() { return Objects.hash( vdsmTaskId, stepId, commandId, rootCmdEntity, result, status, startTime, storagePoolId, taskType ); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof AsyncTask)) { return false; } AsyncTask other = (AsyncTask) obj; return Objects.equals(vdsmTaskId, other.vdsmTaskId) && Objects.equals(taskId, other.taskId) && Objects.equals(stepId, other.stepId) && Objects.equals(commandId, other.commandId) && Objects.equals(rootCommandId, other.rootCommandId) && result == other.result && status == other.status && Objects.equals(startTime, other.startTime) && Objects.equals(storagePoolId, other.storagePoolId) && Objects.equals(taskType, other.taskType); } public CommandEntity getRootCmdEntity() { return rootCmdEntity; } public void setRootCmdEntity(CommandEntity rootCmdEntity) { this.rootCmdEntity = rootCmdEntity; } public CommandEntity getChildCmdEntity() { return childCmdEntity; } public void setChildCmdEntity(CommandEntity childCmdEntity) { this.childCmdEntity = childCmdEntity; } public Guid getUserId() { return userId; } public void setUserId(Guid userId) { this.userId = userId; } }