@Override public void addRule(final Rule rule) { if (rules.contains(rule)) { return; } if (rule.isImportant()) { rules.add(0, rule); } else { rules.add(rule); } }
/** Runs validation against our rules. */ private void validate() { valid = Valid.YES; // start out valid for (final Rule rule : rules) { if (rule.validate() == Valid.YES) { rule.untriggerIfNeeded(); } else { // only trigger the first invalid rule if (valid == Valid.YES) { if (isTouched()) { rule.triggerIfNeeded(); } else { rule.untriggerIfNeeded(); } valid = Valid.NO; } else { rule.untriggerIfNeeded(); } } } }