package org.ovirt.engine.core.common.businessentities;
import java.io.Serializable;
import org.ovirt.engine.core.common.utils.ToStringBuilder;
import org.ovirt.engine.core.compat.StringHelper;
public class AsyncTaskStatus implements Serializable {
private static final long serialVersionUID = -7569773307084259828L;
private AsyncTaskStatusEnum status;
private AsyncTaskResultEnum result;
private RuntimeException exception;
private String message;
public AsyncTaskStatus() {
this(AsyncTaskStatusEnum.unknown);
}
public AsyncTaskStatus(AsyncTaskStatusEnum status) {
setStatus(status);
setResult(AsyncTaskResultEnum.success);
setMessage("");
}
public AsyncTaskStatusEnum getStatus() {
return status;
}
public void setStatus(AsyncTaskStatusEnum status) {
this.status = status;
}
public AsyncTaskResultEnum getResult() {
return result;
}
public void setResult(AsyncTaskResultEnum result) {
this.result = result;
}
public RuntimeException getException() {
return exception;
}
public void setException(RuntimeException value) {
this.exception = value;
}
public String getMessage() {
if (getTaskIsRunning() || getTaskEndedSuccessfully()) {
// No message is relevant:
return "";
}
return !StringHelper.isNullOrEmpty(message) ? message : getException() != null
&& !StringHelper.isNullOrEmpty(getException().getMessage()) ? getException().getMessage()
: "Asynchronous Task unknown error";
}
public void setMessage(String message) {
this.message = message;
}
public boolean getTaskIsRunning() {
return getStatus() != AsyncTaskStatusEnum.finished && getStatus() != AsyncTaskStatusEnum.unknown;
}
public boolean getTaskIsInUnusualState() {
return getStatus() == AsyncTaskStatusEnum.unknown || getStatus() == AsyncTaskStatusEnum.aborting;
}
public boolean getTaskEndedSuccessfully() {
return getStatus() == AsyncTaskStatusEnum.finished && getResult() == AsyncTaskResultEnum.success
&& getException() == null;
}
@Override
public String toString() {
return ToStringBuilder.forInstance(this)
.append("status", getStatus())
.append("result", getResult())
.append("exception", getException())
.append("message", getMessage())
.build();
}
}