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

com.lindar.wellrested.vo.ResultBuilder Maven / Gradle / Ivy

There is a newer version: 1.7.3
Show newest version
package com.lindar.wellrested.vo;

public class ResultBuilder {

    private Result.ResultBuilder resultBuilder;

    private ResultBuilder(Result.ResultBuilder resultBuilder) {
        this.resultBuilder = resultBuilder;
    }

    public static  ResultBuilder of(Result result) {
        Result.ResultBuilder resultBuilder = Result.builder().data(result.getData())
                .msg(result.getMsg()).code(result.getCode())
                .visible(result.isVisible()).success(result.isSuccess());
        return new ResultBuilder<>(resultBuilder);
    }

    public static  ResultBuilder successful() {
        return new ResultBuilder<>(Result.builder().success(true));
    }

    public static  ResultBuilder failed() {
        return new ResultBuilder<>(Result.builder().success(false));
    }

    public static  ResultBuilder empty() {
        return new ResultBuilder<>(Result.builder());
    }

    /** This is a shortcut method for ResultBuilder.successful().data(data).build() */
    public static  Result successful(T data) {
        return Result.builder().success(true).data(data).build();
    }

    /** This is a shortcut method for ResultBuilder.successful().data(data).msg(msg).build() */
    public static  Result successful(T data, String msg) {
        return Result.builder().success(true).data(data).msg(msg).build();
    }

    /** This is a shortcut method for ResultBuilder.successful().msg(msg).build() */
    public static  Result successfulWithoutData(String msg) {
        return Result.builder().success(true).msg(msg).build();
    }

    /** This is a shortcut method for ResultBuilder.failed().msg(msg).build() */
    public static  Result failed(String msg) {
        return Result.builder().success(false).msg(msg).build();
    }

    public static  Result failedCastingResult() {
        return Result.builder().castingErrorThrown(true).success(false).msg("Failed casting response object").build();
    }

    public ResultBuilder success(boolean success) {
        resultBuilder.success(success);
        return this;
    }

    public ResultBuilder data(T data) {
        resultBuilder.data(data);
        return this;
    }

    public ResultBuilder visible(boolean visible) {
        resultBuilder.visible(visible);
        return this;
    }

    public ResultBuilder visible() {
        resultBuilder.visible(true);
        return this;
    }

    public ResultBuilder hidden() {
        resultBuilder.visible(false);
        return this;
    }

    public ResultBuilder msg(String msg) {
        resultBuilder.msg(msg);
        return this;
    }

    public ResultBuilder code(String code) {
        resultBuilder.code(code);
        return this;
    }

    public ResultBuilder castingErrorThrown() {
        resultBuilder.castingErrorThrown(true);
        return this;
    }

    public ResultBuilder castingErrorThrown(boolean castingErrorThrown) {
        resultBuilder.castingErrorThrown(castingErrorThrown);
        return this;
    }

    public Result build() {
        return resultBuilder.build();
    }

    public  Result buildAndOverrideData(U data) {
        Result oldResult = resultBuilder.build();
        return Result.builder()
                .code(oldResult.getCode()).msg(oldResult.getMsg()).data(data)
                .success(oldResult.isSuccess()).visible(oldResult.isVisible()).build();
    }

    public  Result buildAndIgnoreData() {
        Result oldResult = resultBuilder.build();
        return Result.builder().success(oldResult.isSuccess())
                .msg(oldResult.getMsg()).code(oldResult.getCode())
                .visible(oldResult.isVisible()).build();
    }
}