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

com.ups.oppo.push.server.sdk.util.ResultPack Maven / Gradle / Ivy

The newest version!
package com.ups.oppo.push.server.sdk.util;

import com.ups.oppo.push.server.sdk.exception.ErrorCode;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

/**
 * @param 
 * @author wangxinguo
 * @date 2016年7月15日
 * @time 下午8:02:20
 */
public final class ResultPack implements Serializable, Cloneable {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    public static final int VOID = 0;
    public static final int FAILED = -1;
    public static final int SUCCESS = 1;
    private static final String ERROR_CODE = "500";
    private static final String SUCCESS_CODE = "200";
    private int _status = 0; // enum _value in -1 0 1

    private String _code;
    private String _comment = null;
    private T _value = null;
    private Throwable _error = null;
    private ErrorCode _errorCode;

    public ResultPack() {
    }

    private ResultPack(int status, T value, String code, String comment, Throwable error) {
        _status = status;
        _value = value;
        _comment = comment;
        _code = code;
        _error = error;
    }

    public ErrorCode getErrorCode() {
        return _errorCode;
    }

    /**
     * Get pack _state _value
     *
     * @return
     */
    public int status() {
        return _status;
    }

    public ResultPack status(int status) {
        _status = status;
        return this;
    }

    public ResultPack code(String code) {
        _code = code;
        return this;
    }

    /**
     * Get packed _message
     *
     * @return
     */
    public String comment() {
        return _comment;
    }

    /**
     * 设置说明
     *
     * @param comment 说明信息
     * @return 自身
     */
    public ResultPack comment(String comment, Object... args) {
        this._comment = String.format(comment, args);
        return this;
    }

    /**
     * Get packed _value
     *
     * @return
     */
    public T value() {
        return _value;
    }

    public String code() {
        return _code;
    }

    public ResultPack value(T value) {
        this._value = value;
        return this;
    }

    public Throwable error() {
        return _error;
    }

    public ResultPack error(Throwable error) {
        this._error = error;
        if (error != null) {
            _status = ResultPack.FAILED;
            _comment = error.getMessage();
        }
        return this;
    }

    private ResultPack errorCode() {
        try {
            int code = Integer.parseInt(this._code);
            String comment = this.comment();
            this._errorCode = ErrorCode.valueOf(code, comment);
        } catch (NumberFormatException e) {
        }
        return this;
    }

    public boolean isFailed() {
        return _status == ResultPack.FAILED;
    }

    /**
     * 是否无结果
     *
     * @return
     */
    public boolean isVoid() {
        return _status == ResultPack.VOID;
    }

    /**
     * 是否成功
     *
     * @return
     */
    public boolean isSucceed() {
        return _status == ResultPack.SUCCESS;
    }

    /**
     * 重置Result为VOID状态。
     * 

* 废物利用,环保。 * * @return */ public ResultPack reset() { _status = VOID; _value = null; _comment = null; _error = null; return this; } /** * 有时在一个串行化过程中,我们可能需要保留comment作为附加输出信息,这时候可以用这个方法 * * @param keepComment 是否同时清除comment。 * @return */ public ResultPack reset(boolean keepComment) { _status = VOID; _value = null; _error = null; if (!keepComment) { _comment = null; } return this; } @Override public String toString() { return (new StringBuilder("RESULT:[").append(_status).append("] code:[").append(_code). append("] comment:[").append(_comment).append("] value:["). append(String.valueOf(_value)) .append("] error:[").append(String.valueOf(_error)).append("]")) .append("] errorCode:[").append(_errorCode).append("]") .toString(); } public Map toJson() { return toJson(null); } public Map toJson(Map jsons) { if (jsons == null) { jsons = new HashMap(); } jsons.put("status", _status); jsons.put("comment", _comment); jsons.put("value", String.valueOf(_value)); jsons.put("error", String.valueOf(_error)); return jsons; } @Override public ResultPack clone() { return new ResultPack(_status, _value, _code, _comment, _error); } /** * 返回成功的Pack的简易辅助方法的 * * @return ResultPack */ public static ResultPack succeed() { ResultPack result = new ResultPack(); return result.status(ResultPack.SUCCESS).code(SUCCESS_CODE); } /** * 返回成功的Pack的简易辅助方法的 * * @param value * @return ResultPack */ public static ResultPack succeed(R value) { ResultPack result = new ResultPack(); return result.status(ResultPack.SUCCESS).value(value).code(SUCCESS_CODE); } /** * 返回成功的Pack的简易辅助方法的 * * @param comment * @param value * @return ResultPack */ public static ResultPack succeed(String code, String comment, R value) { ResultPack result = new ResultPack(); return result.status(ResultPack.SUCCESS).code(code).comment(comment).value(value); } public static ResultPack succeed(String comment) { ResultPack result = new ResultPack(); return result.status(ResultPack.SUCCESS).comment(comment).code(SUCCESS_CODE); } /** * 得到失败的ResultPack的简易辅助方法的 * * @return ResultPack */ public static ResultPack failed() { ResultPack result = new ResultPack(); return result.status(ResultPack.FAILED).code(ERROR_CODE).error(new Throwable()).errorCode(); } /** * 得到失败的ResultPack的简易辅助方法 * * @param comment * @return ResultPack */ public static ResultPack failed(String comment) { ResultPack result = new ResultPack(); return result.status(ResultPack.FAILED).code(ERROR_CODE).error(new Throwable(comment)).errorCode(); } /** * 得到失败的ResultPack的简易辅助方法 * * @param code * @param comment * @param * @return */ public static ResultPack failed(String code, String comment) { ResultPack result = new ResultPack(); return result.status(ResultPack.FAILED).code(code).error(new Throwable(comment)).errorCode(); } /** * 得到失败的ResultPack的简易辅助方法 * * @param comment * @param e * @return */ public static ResultPack failed(String comment, Throwable e) { ResultPack result = new ResultPack(); return result.status(ResultPack.FAILED).code(ERROR_CODE).comment(comment).error(e).errorCode(); } /** * 带失败value的辅助方法 * * @param comment * @param value * @param * @return */ public static ResultPack failed(String comment, R value) { ResultPack result = new ResultPack(); return result.status(ResultPack.FAILED).code(ERROR_CODE).comment(comment).value(value).errorCode(); } /** * 得到失败的ResultPack的简易辅助方法 * * @param e * @return ResultPacke */ public static ResultPack failed(Throwable e) { ResultPack result = new ResultPack(); return result.status(ResultPack.FAILED).code(ERROR_CODE).error(e).errorCode(); } /** * 返回无值结果的简易辅助方法的 * * @return ResultPack */ public static ResultPack none() { ResultPack result = new ResultPack(); return result.status(ResultPack.VOID); } /** * 返回无值结果的简易辅助方法的 * * @param comment * @return ResultPack */ public static ResultPack none(String comment) { ResultPack result = new ResultPack(); return result.status(ResultPack.VOID).comment(comment); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy