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 nl.cwi.sen1.moduleapi.Factory;
008 import nl.cwi.sen1.moduleapi.types.Attribute;
009 import nl.cwi.sen1.moduleapi.types.AttributeStore;
010 import nl.cwi.sen1.moduleapi.types.TableEntryTable;
011 import aterm.ATerm;
012
013 public class Module {
014 private Map<ATerm, AttributeTable> attributes;
015
016 private Map<ATerm, AttributeTable> predicates;
017
018 private Factory factory;
019
020 public Module(Factory factory) {
021 this.factory = factory;
022 attributes = new HashMap<ATerm, AttributeTable>();
023 predicates = new HashMap<ATerm, AttributeTable>();
024 }
025
026 public void setAttribute(ATerm namespace, ATerm key, ATerm value) {
027 AttributeTable table = getTable(namespace);
028
029 if (table != null) {
030 table.setEntry(key, value);
031 } else {
032 table = new AttributeTable(factory);
033 table.setEntry(key, value);
034 attributes.put(namespace, table);
035 }
036 }
037
038 public ATerm getAttribute(ATerm namespace, ATerm key) {
039 AttributeTable table = getTable(namespace);
040
041 if (table != null) {
042 return table.getValue(key);
043 }
044 return null;
045 }
046
047 public AttributeTable getAttributes(ATerm namespace) {
048 return getTable(namespace);
049 }
050
051 public AttributeStore getAttributes() {
052 AttributeStore store = factory.makeAttributeStore();
053
054 for (Iterator<ATerm> iter = attributes.keySet().iterator(); iter
055 .hasNext();) {
056 ATerm namespace = iter.next();
057 TableEntryTable table = getTable(namespace).getTableEntryTable();
058
059 Attribute attribute = factory.makeAttribute_Attribute(namespace,
060 table);
061 store = store.append(attribute);
062 }
063
064 return store;
065 }
066
067 public void deleteAttribute(ATerm namespace, ATerm key) {
068 AttributeTable table = getTable(namespace);
069
070 if (table != null) {
071 table.deleteEntry(key);
072 }
073 }
074
075 private AttributeTable getTable(ATerm namespace) {
076 AttributeTable table = attributes.get(namespace);
077 return table;
078 }
079
080 private AttributeTable getPredicateTable(ATerm namespace) {
081 AttributeTable table = predicates.get(namespace);
082 return table;
083 }
084
085 public AttributeTable getPredicates(ATerm namespace) {
086 return getPredicateTable(namespace);
087 }
088
089 public void setPredicate(ATerm namespace, ATerm key, ATerm value) {
090 AttributeTable table = getPredicateTable(namespace);
091
092 if (table != null) {
093 table.setEntry(key, value);
094 } else {
095 table = new AttributeTable(factory);
096 table.setEntry(key, value);
097 predicates.put(namespace, table);
098 }
099 }
100
101 public ATerm getPredicate(ATerm namespace, ATerm key) {
102 AttributeTable table = getPredicateTable(namespace);
103
104 if (table != null) {
105 return table.getValue(key);
106 }
107 return null;
108 }
109
110 public void deletePredicate(ATerm namespace, ATerm key) {
111 AttributeTable table = getPredicateTable(namespace);
112
113 if (table != null) {
114 table.deleteEntry(key);
115 }
116 }
117
118 public AttributeStore getPredicates() {
119 AttributeStore store = factory.makeAttributeStore();
120
121 for (Iterator<ATerm> iter = predicates.keySet().iterator(); iter
122 .hasNext();) {
123 ATerm namespace = iter.next();
124 TableEntryTable table = getPredicateTable(namespace).getTableEntryTable();
125
126 Attribute attribute = factory.makeAttribute_Attribute(namespace,
127 table);
128 store = store.append(attribute);
129 }
130
131 return store;
132 }
133 }