package com.philemonworks.critter; import java.util.List; import com.google.inject.Inject; import com.philemonworks.critter.dao.RecordingDao; import com.philemonworks.critter.dao.RuleDao; import com.philemonworks.critter.rule.Rule; import com.philemonworks.critter.rule.RuleContext; public class TrafficManager { @Inject RuleDao ruleDao; @Inject RecordingDao recordingDao; public Rule detectRule(RuleContext context) { for (Rule each : this.ruleDao.getRules()) { if (each.enabled && each.test(context)) return each; } return null; // no matching rule } public void performRule(Rule aRule, RuleContext ruleContext) { aRule.perform(ruleContext); } public void addOrReplaceRule(Rule aRule) { aRule.ensureId(); this.ruleDao.addOrReplaceRule(aRule); } public Rule getRule(String id) { return this.ruleDao.getRule(id); } public List<Rule> getAllRules() { return this.ruleDao.getRules(); } public void deleteRule(String id) { this.ruleDao.deleteRule(id); } }