1 package sk.upjs.intrak.jorge;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5 import java.util.HashMap;
6 import java.util.Iterator;
7 import java.util.List;
8 import java.util.Map;
9 import java.util.Set;
10 import java.util.Map.Entry;
11
12 /***
13 * Mapa dvojíc (<code>kľúč</code>, <code>hodnota</code>) obsahujúca
14 * rôzne informácie o danom dokumente, či kategórii.
15 *
16 */
17 public class Metadata implements Map<String, Object>, Iterable<MetadataItem> {
18 /***
19 * Delegovaná mapa.
20 */
21 protected HashMap<String, Object> delegateMap = new HashMap<String, Object>();
22
23 /***
24 * Vloží do mapy metadátový pár.
25 * @param item
26 */
27 public void put(MetadataItem item) {
28 this.put(item.getName(), item.getValue());
29 }
30
31 /***
32 * Vloží do mapy metadáta z inej inštancie metadát.
33 */
34 public void putAll(Metadata metadata) {
35 for (MetadataItem item : metadata) {
36 this.put(item);
37 }
38 }
39
40 /***
41 * Vráti iterátor navracajúci metadátové páry.
42 */
43 public Iterator<MetadataItem> iterator() {
44 Iterator<MetadataItem> iter = new Iterator<MetadataItem>() {
45 Iterator<Entry<String, Object>> entrySetIterator = delegateMap.entrySet().iterator();
46
47 public boolean hasNext() {
48 return entrySetIterator.hasNext();
49 }
50
51 public MetadataItem next() {
52 Entry<String, Object> entry = entrySetIterator.next();
53 return new MetadataItem(entry.getKey(), entry.getValue());
54 }
55
56 public void remove() {
57 throw new UnsupportedOperationException();
58 }
59 };
60
61 return iter;
62 }
63
64
65 //**************************************** Delegované metódy
66
67 /**
68 * @see java.util.HashMap#clear()
69 */
70 public void clear() {
71 this.delegateMap.clear();
72 }
73
74 /***
75 * @see java.util.HashMap#clone()
76 */
77 public Object clone() {
78 return this.delegateMap.clone();
79 }
80
81 /***
82 * @see java.util.HashMap#containsKey(java.lang.Object)
83 */
84 public boolean containsKey(Object key) {
85 return this.delegateMap.containsKey(key);
86 }
87
88 /***
89 * @see java.util.HashMap#containsValue(java.lang.Object)
90 */
91 public boolean containsValue(Object value) {
92 return this.delegateMap.containsValue(value);
93 }
94
95 /***
96 * @see java.util.HashMap#entrySet()
97 */
98 public Set<Entry<String, Object>> entrySet() {
99 return this.delegateMap.entrySet();
100 }
101
102 /***
103 * @see java.util.HashMap#get(java.lang.Object)
104 */
105 public Object get(Object key) {
106 return this.delegateMap.get(key);
107 }
108
109 /***
110 * @see java.util.HashMap#isEmpty()
111 */
112 public boolean isEmpty() {
113 return this.delegateMap.isEmpty();
114 }
115
116 /***
117 * @see java.util.HashMap#keySet()
118 */
119 public Set<String> keySet() {
120 return this.delegateMap.keySet();
121 }
122
123 /***
124 * @see java.util.HashMap#put(K, V)
125 */
126 public Object put(String key, Object value) {
127 return this.delegateMap.put(key, value);
128 }
129
130 /***
131 * @see java.util.HashMap#putAll(java.util.Map)
132 */
133 public void putAll(Map<? extends String, ? extends Object> m) {
134 this.delegateMap.putAll(m);
135 }
136
137 /***
138 * @see java.util.HashMap#remove(java.lang.Object)
139 */
140 public Object remove(Object key) {
141 return this.delegateMap.remove(key);
142 }
143
144 /***
145 * @see java.util.HashMap#size()
146 */
147 public int size() {
148 return this.delegateMap.size();
149 }
150
151 /***
152 * @see java.util.HashMap#values()
153 */
154 public Collection<Object> values() {
155 return this.delegateMap.values();
156 }
157
158 }