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    }