All Downloads are FREE. Search and download functionalities are using the official Maven repository.

club.zhcs.rop.core.ROPResponse Maven / Gradle / Ivy

package club.zhcs.rop.core;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

import org.nutz.json.Json;
import org.nutz.json.JsonFormat;
import org.nutz.lang.util.NutMap;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Builder.Default;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author Kerbores([email protected])
 *
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ROPResponse {
    /**
     * 
     * @author Kerbores([email protected])
     *
     */
    public enum OperationState {
        /**
         * 成功
         */
        SUCCESS,
        /**
         * 失败
         */
        FAIL,
        /**
         * 异常
         */
        EXCEPTION;

    }

    @Default
    private NutMap ext = new NutMap();

    @Default
    private OperationState state = OperationState.SUCCESS;

    private String[] errors;

    private T data;

    /**
     * 返回成功
     * 
     * @param 
     *            类型
     * @return 成功的响应
     */
    public static  ROPResponse success() {
        return ROPResponse. builder()
                          .build();
    }

    /**
     * 携带数据返回成功
     * 
     * @param 
     *            数据泛型
     * @param t
     *            数据
     * @return 成功的结果
     */
    public static  ROPResponse success(T t) {
        return ROPResponse. builder()
                          .data(t)
                          .build();
    }

    /**
     * 返回失败及原因
     * 
     * @param 
     *            类型
     * @param msgs
     *            失败原因
     * @return 失败的结果
     */
    public static  ROPResponse fail(String... msgs) {
        return ROPResponse. builder()
                          .state(OperationState.FAIL)
                          .errors(msgs)
                          .build();
    }

    /**
     * 返回异常及原因
     * 
     * @param 
     *            类型
     * @param msgs
     *            异常原因
     * @return 异常的结果
     */
    public static  ROPResponse exception(String... msgs) {
        return ROPResponse. builder()
                          .state(OperationState.EXCEPTION)
                          .errors(msgs)
                          .build();
    }

    /**
     * 返回异常及原因
     * 
     * @param 
     *            类型
     * @param msgs
     *            异常原因
     * @return 异常的结果
     */
    public static  ROPResponse exception(List msgs) {
        return ROPResponse. builder()
                          .state(OperationState.EXCEPTION)
                          .errors(msgs.toArray(new String[msgs.size()]))
                          .build();
    }

    /**
     * 返回异常及原因
     * 
     * @param 
     *            类型
     * @param throwables
     *            异常
     * @return 异常的结果
     */
    public static  ROPResponse exception(Throwable... throwables) {
        return exception(Arrays.stream(throwables).map(Throwable::getMessage).collect(Collectors.toList()));
    }

    /**
     * 添加扩展数据
     * 
     * @param key
     *            数据key
     * @param value
     *            数据
     * @return 返回结果对象
     */
    public ROPResponse addExtData(String key, Object value) {
        getExt().setv(key, value);
        return this;
    }

    /**
     * 是否成功
     * 
     * @return 是否成功标识
     */
    public boolean isSuccess() {
        return getState() == OperationState.SUCCESS;
    }

    /*
     * (non-Javadoc)
     * 
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        return Json.toJson(this, JsonFormat.forLook());
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy