package se.bjurr.sbcc.settings; import static com.google.common.base.Optional.fromNullable; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Strings.emptyToNull; import java.util.List; import com.google.common.base.Optional; public class SbccGroup implements Comparable<SbccGroup> { public enum Accept { /** Accept if matching. */ ACCEPT, /** Just show the message, don't accept or reject */ SHOW_MESSAGE } public enum Match { /** If all rules are matching */ ALL, /** If no rule is matching */ NONE, /** If at least one rule is matching */ ONE; } public static SbccGroup sbccGroup() { return new SbccGroup(); } private Accept accept; private Match match; private String message; private List<SbccRule> rules; private SbccGroup() {} @Override public int compareTo(SbccGroup o) { return toString().compareTo(o.toString()); } public Accept getAccept() { return accept; } public Match getMatch() { return match; } public Optional<String> getMessage() { return fromNullable(message); } public List<SbccRule> getRules() { return rules; } @Override public String toString() { return accept.toString() + " " + match.toString() + " " + message; } public SbccGroup withAccept(String accept) { checkNotNull(accept, "No acceptance rule specified!"); this.accept = Accept.valueOf(accept.toUpperCase()); return this; } public SbccGroup withMatch(String match) { checkNotNull(match, "No match rule specified!"); this.match = Match.valueOf(match.toUpperCase()); return this; } public SbccGroup withMessage(String message) { this.message = emptyToNull(message); return this; } public SbccGroup withRules(List<SbccRule> rules) { checkNotNull(rules, "Cannot set null rules"); this.rules = rules; return this; } }