package jnpf.yozo.utils; import lombok.Setter; public class DefaultResult implements IResult { private static final SuccessResult SUCCESS = new SuccessResult(); private static final FailResult FAIL = new FailResult(); private boolean successCode; private String message; @Setter private T data; public DefaultResult() { } public DefaultResult(boolean successCode, String message) { this(successCode, message, (T) null); } public DefaultResult(boolean successCode, T data) { this(successCode, null, data); } public DefaultResult(boolean successCode, String message, T data) { this.successCode = successCode; this.message = message; this.data = data; } public static DefaultResult successResult() { return (DefaultResult) SUCCESS; } public static DefaultResult successResult(T data) { return new DefaultResult<>(true, null, data); } public static DefaultResult successResult(String message, T data) { return new DefaultResult<>(true, message, data); } public static DefaultResult failResult() { return (DefaultResult) FAIL; } public static DefaultResult failResult(String message) { return new DefaultResult<>(false, message, null); } public static DefaultResult failResult(String message, T data) { return new DefaultResult<>(false, message, data); } public static DefaultResult failResult(T data) { return new DefaultResult<>(false, (String)null, data); } public static DefaultResult result(boolean success, String message, T data) { return new DefaultResult<>(success, message, data); } public boolean isSuccessCode() { return this.successCode; } public String getMessage() { return this.message; } public T getData() { return this.data; } private static class FailResult extends DefaultResult { public FailResult() { super(false, null, null); } } private static class SuccessResult extends DefaultResult { public SuccessResult() { super(true, null, null); } } }