package games.strategy.engine.framework.systemcheck; import java.util.Optional; /** * Class that performs a 'check' of some sort (executes an arbitrary Runnable). * If the runnable executes without exception then the check has passed, otherwise * a failure is marked and we remember the exception. * */ public class SystemCheck { private final boolean result; private final String msg; private final Optional<Exception> exception; /** * @param msg Message that is printed along with success/fail, should describe what the system check did. * @param r The runnable that represents the system check, should verify that an action can be performed. */ protected SystemCheck(final String msg, final Runnable r) { this.msg = msg; try { r.run(); } catch (final Exception e) { exception = Optional.of(e); result = false; return; } result = true; exception = Optional.empty(); } /** * @return True if the system check (Runnable constructor arg) completed without exception. */ public boolean wasSuccess() { return result; } /** * @return A status message indicating if the system check passed or succeeded. */ public String getResultMessage() { return msg + ": " + result; } /** * @return Any exceptions that may have happened while executing the system check. */ public Optional<Exception> getException() { return exception; } }