@Override public Boolean isEnabled(String ruleUID) { if (disabledRulesStorage != null && disabledRulesStorage.get(ruleUID) != null) { return Boolean.FALSE; } return ruleEngine.hasRule(ruleUID) ? !ruleEngine.getRuleStatus(ruleUID).equals(RuleStatus.DISABLED) : null; }
@Override public synchronized Rule update(Rule element) { Rule old = null; if (element != null) { old = super.update(element); // update storage with new rule and return old rule if (old != null) { postEvent(RuleEventFactory.createRuleUpdatedEvent(element, old, SOURCE)); String rUID = element.getUID(); if (disabledRulesStorage != null && disabledRulesStorage.get(rUID) != null) { ruleEngine.setRuleEnabled(rUID, false); } ruleEngine.updateRule(element); // update memory map } } return old; }
@Override public synchronized void add(Rule element) { if (element == null) { throw new IllegalArgumentException("The added rule must not be null!"); } String rUID = element.getUID(); if (!hasManagedRuleProvider) { throw new IllegalStateException( "ManagedProvider is not available. The rule '" + (rUID != null ? rUID : element) + "' can't be added!"); } Rule ruleToPersist; if (rUID != null && disabledRulesStorage != null && disabledRulesStorage.get(rUID) != null) { ruleToPersist = ruleEngine.addRule(element, false); } else { ruleToPersist = ruleEngine.addRule(element, true); } super.add(ruleToPersist); postEvent(RuleEventFactory.createRuleAddedEvent(ruleToPersist, SOURCE)); }
@Override protected synchronized void addProvider(Provider<Rule> provider) { if (provider instanceof ManagedRuleProvider) { hasManagedRuleProvider = true; } Collection<Rule> rules = provider.getAll(); for (Iterator<Rule> it = rules.iterator(); it.hasNext(); ) { Rule rule = it.next(); try { String rUID = rule.getUID(); if (rUID != null && disabledRulesStorage != null && disabledRulesStorage.get(rUID) != null) { ruleEngine.addRule(rule, false); } else { ruleEngine.addRule(rule, true); } } catch (Exception e) { logger.error( "Can't add rule: " + rule.getUID() + " into rule engine from provider " + provider, e); } } super.addProvider(provider); }