![JAR search and dependency download from the Maven repository](/logo.png)
shz.core.model.Result Maven / Gradle / Ivy
package shz.core.model;
import shz.core.PRException;
import shz.core.msg.*;
import java.io.Serializable;
import java.util.function.Function;
public class Result implements Serializable {
private static final long serialVersionUID = 8744847045144426122L;
private int code;
private String msg;
private T data;
public Result(int code, String msg, T data) {
this.code = code;
this.msg = msg;
this.data = data;
}
public Result(int code, String msg) {
this(code, msg, null);
}
public Result(Message message, T payload) {
this(message.code(), message.msg(), payload);
}
public Result(Message message) {
this(message.code(), message.msg(), null);
}
public Result() {
this(Success.OK, null);
}
public boolean isOk() {
return code == Success.OK.code();
}
public void requireOk() {
if (!isOk()) throw PRException.of(FailureMsg.fail(getCode(), getMsg()));
}
public static Result ok(SuccessMsg message, T data) {
if (message == null) return new Result<>(Success.OK, data);
return new Result<>(Success.OK.code(), message.msg(), data);
}
public static Result ok(SuccessMsg message) {
return ok(message, null);
}
public static Result ok(T data) {
return ok(null, data);
}
public static Result ok() {
return ok(null, null);
}
public static Result fail(FailureMsg message, T data) {
if (message == null) return new Result<>(ServerFailure.INTERNAL_ERROR, data);
return new Result<>(message.code(), message.msg(), data);
}
public static Result fail(FailureMsg message) {
return fail(message, null);
}
public static Result fail(T data) {
return fail(null, data);
}
public static Result fail() {
return fail(null, null);
}
public static Result of(Result> result, T data) {
return result == null ? fail() : new Result<>(result.code, result.msg, data);
}
public static Result of(Result extends D> result, Function super D, ? extends T> mapper) {
if (result == null || mapper == null) return fail();
T data = mapper.apply(result.data);
return new Result<>(result.code, result.msg, data);
}
public static Result of(boolean flag) {
return flag ? ok() : fail();
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
@Override
public String toString() {
return "Result{" +
"code=" + code +
", msg='" + msg + '\'' +
", data=" + data +
'}';
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy