001 package nl.cwi.sen1.modulemanager.model;
002
003 import java.util.HashMap;
004 import java.util.Iterator;
005 import java.util.Map;
006
007 import aterm.ATerm;
008
009 public class AttributeUpdateRuleMap {
010 private Map<ATerm, AttributeUpdateRule> map;
011
012 public AttributeUpdateRuleMap() {
013 this.map = new HashMap<ATerm, AttributeUpdateRule>();
014 }
015
016 private ATerm getKey(ATerm namespace, ATerm key, ATerm value) {
017 return namespace.getFactory().makeList(namespace).insert(key).insert(
018 value);
019 }
020
021 public AttributeUpdateRule put(ATerm namespace, ATerm key, ATerm rule,
022 ATerm predicateValue) {
023 AttributeUpdateRule attr = makeInheritedAttribute(namespace, key, rule,
024 predicateValue);
025
026 map.put(getKey(namespace, key, predicateValue), attr);
027 return attr;
028 }
029
030 public Iterator<AttributeUpdateRule> iterator() {
031 return map.values().iterator();
032 }
033
034 public void remove(ATerm namespace, ATerm key, ATerm predicateValue) {
035 map.remove(getKey(namespace, key, predicateValue));
036 }
037
038 private AttributeUpdateRule makeInheritedAttribute(ATerm namespace,
039 ATerm key, ATerm rule, ATerm predicateValue) {
040 AttributeUpdateRule attr = new AttributeUpdateRule(namespace, key, rule,
041 predicateValue);
042 return attr;
043 }
044
045 public int size() {
046 return map.size();
047 }
048 }