package com.datascience.executor;
/**
*
* @author konrad
*/
public class CommandStatus<T> {
public enum CommandStatusType {
OK, ERROR, NOT_READY
}
private CommandStatusType status;
private T data;
private String exception;
private Double executionTimeInSeconds;
protected CommandStatus(CommandStatusType status, T data, Exception exception, Double executionTimeInSeconds){
this.status = status;
this.data = data;
this.exception = exception != null ? exception.getLocalizedMessage() : "";
this.executionTimeInSeconds = executionTimeInSeconds;
}
public T getData(){
return data;
}
public CommandStatusType getStatus(){
return status;
}
public Exception getError(){
return new Exception(exception);
}
public Double getExecutionTime(){
return executionTimeInSeconds;
}
public static<T> CommandStatus<T> errorCommandStatus(Exception ex, Double executionTimeInSeconds){
return new CommandStatus<T>(CommandStatusType.ERROR, null, ex, executionTimeInSeconds);
}
public static<T> CommandStatus<T> okCommandStatus(T data, Double executionTimeInSeconds){
return new CommandStatus<T>(CommandStatusType.OK, data, null, executionTimeInSeconds);
}
public static<T> CommandStatus<T> notReadyCommandStatus(){
return new CommandStatus<T>(CommandStatusType.NOT_READY, null, null, 0.);
}
}