
com.moon.web.ResultBody Maven / Gradle / Ivy
package com.moon.web;
import java.util.Objects;
/**
* Web 返回值包装
*
* 其实更建议直接使用{@code http}状态码
*
* @author moonsky
*/
public class ResultBody {
private Boolean status;
private int code;
private T data;
private transient Object extra;
private transient String message;
public ResultBody() { }
public ResultBody(T data) { this.data = data; }
public static ResultBody ok() { return new ResultBody<>(); }
public static ResultBody ok(E data) {
return new ResultBody<>(data).success();
}
public static ResultBody ok(E data, String message) {
return ok(data).message(message);
}
public static ResultBody fail() {
return (ResultBody) ok().status(false);
}
public static ResultBody fail(int code) {
return (ResultBody) fail().code(code);
}
public static ResultBody fail(String message) {
return (ResultBody) fail().message(message);
}
public static ResultBody fail(int code, String message) {
return (ResultBody) fail(code).message(message);
}
public static ResultBody fail(String message, E data) {
return ok(data, message).failed();
}
public static ResultBody fail(int code, String message, E data) {
return fail(message, data).code(code);
}
public ResultBody success() { return status(Boolean.TRUE); }
public ResultBody failed() { return status(Boolean.FALSE); }
public ResultBody status(Boolean status) {
this.status = status == null ? true : status;
return this;
}
public ResultBody code(int code) {
setCode(code);
return this;
}
public ResultBody data(T data) {
setData(data);
return this;
}
public ResultBody extra(Object extra) {
setExtra(extra);
return this;
}
public ResultBody message(String message) {
setMessage(message);
return this;
}
public boolean getStatus() { return status == null ? true : status; }
public void setStatus(Boolean status) { this.status = status; }
public int getCode() { return code; }
public void setCode(int code) { this.code = code; }
public T getData() { return data; }
public void setData(T data) { this.data = data; }
public String getMessage() { return message; }
public void setMessage(String message) { this.message = message; }
public Object getExtra() { return extra; }
public void setExtra(Object extra) { this.extra = extra; }
@Override
public boolean equals(Object o) {
if (this == o) { return true; }
if (o == null || getClass() != o.getClass()) { return false; }
ResultBody> body = (ResultBody>) o;
return code == body.code && Objects.equals(status, body.status) && Objects.equals(data,
body.data) && Objects.equals(extra, body.extra) && Objects.equals(message, body.message);
}
@Override
public int hashCode() { return Objects.hash(status, code, data, extra, message); }
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("ResultBody{");
sb.append("status=").append(status);
sb.append(", code=").append(code);
sb.append(", data=").append(data);
sb.append(", extra=").append(extra);
sb.append(", message='").append(message).append('\'');
sb.append('}');
return sb.toString();
}
}