ExecutionFlags.java

        package com.niklasarndt.discordbutler.util;

/**
 * Created by Niklas on 2020/07/27.
 */
public enum ExecutionFlags {

    NONE, NO_API_CONNECTION, NO_MODULE_MANAGER, NO_SCHEDULE_MANAGER;

    public static ExecutionFlags getFlagById(int id) {
        return id < 0 || id > ExecutionFlags.values().length ? null : ExecutionFlags.values()[id];
    }

    public static ExecutionFlags[] getFlagsById(Integer[] flags) {
        ExecutionFlags[] result = new ExecutionFlags[flags.length];

        for (int i = 0; i < flags.length; i++) {
            result[i] = getFlagById(flags[i]);
        }
        return result;
    }

    public static String prettyPrint(Integer[] flags) {
        return prettyPrint(getFlagsById(flags));
    }

    public static String prettyPrint(ExecutionFlags[] flags) {
        if (flags.length == 0) return "None"; //None = Result, NONE = ExecutionFlags.NONE!
        StringBuilder builder = new StringBuilder();

        for (int i = 0; i < flags.length; i++) {
            builder.append(flags[i].name());
            if (i != flags.length - 1) builder.append(", ");
        }
        return builder.toString();
    }

    @Override
    public String toString() {
        return name();
    }
}