package pl.edu.agh.dsm.common; import com.google.common.base.Preconditions; import com.google.common.base.Strings; public class ActionPossibility { boolean possible; String reason; public static ActionPossibility forTrue() { return new ActionPossibility(true, ""); } public static ActionPossibility forFalse(String reason) { Preconditions.checkArgument(Strings.isNullOrEmpty(reason)); return new ActionPossibility(false, reason); } public static ActionPossibility makeDecision(boolean possible, String optionalReason) { return possible ? forTrue() : forFalse(optionalReason); } private ActionPossibility(boolean possible, String reason) { this.possible = possible; this.reason = reason; } private ActionPossibility() { } public String getReason() { return reason; } public boolean isPossible() { return possible; } }