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 }