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

xyz.luan.console.parser.call.MultipleCalls Maven / Gradle / Ivy

package xyz.luan.console.parser.call;

import java.util.Map;

import xyz.luan.console.parser.ControllerRef;

public class MultipleCalls implements Call {

    private static final long serialVersionUID = 5989173280784813959L;

    private Call[] calls;
    private Operator operator;

    public MultipleCalls(Call[] calls, Operator operator) {
        this.calls = calls;
        this.operator = operator;
    }

    public enum Operator {
        ALL {
            @Override
            public boolean continueOn(CallResult c) {
                return true;
            }
        }, AND {
            @Override
            public boolean continueOn(CallResult c) {
                return c == CallResult.SUCCESS;
            }
        }, OR {
            @Override
            public boolean continueOn(CallResult c) {
                return c != CallResult.SUCCESS;
            }
        };
        
        public abstract boolean continueOn(CallResult c);
    }

    @Override
    public CallResult invoke(Map> controllers) {
        CallResult result = CallResult.SUCCESS;
        for (Call c : calls) {
            result = c.invoke(controllers);
            if (result == CallResult.QUIT) {
                return CallResult.QUIT;
            }
            if (!operator.continueOn(result)) {
                return result;
            }
        }
        return result;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy