package com.philemonworks.critter.dao; import java.util.ArrayList; import java.util.Collections; import java.util.List; import com.philemonworks.critter.rule.Rule; public class RuleDaoMemoryImpl implements RuleDao { private List<Rule> rules = Collections.synchronizedList(new ArrayList<Rule>()); public List<Rule> getRules() { return rules; } public void addOrReplaceRule(Rule aRule) { for (Rule each : rules.toArray(new Rule[0])) { // create a copy to iterate if (each.id.equals(aRule.id)) { rules.remove(each); // about to replace break; } } rules.add(aRule); } public Rule getRule(String id) { for (Rule each : rules) { if (each.id.equals(id)) return each; } return null; } public void deleteRule(String id) { for (Rule each : rules) { if (each.id.equals(id)) { rules.remove(each); return; } } throw new IllegalArgumentException("No such rule with id:"+id); } }