1
2
3
4
5
6
7
8
9
10
11 package edu.uci.ics.jung.io.graphml;
12
13 import java.util.ArrayList;
14 import java.util.HashMap;
15 import java.util.List;
16 import java.util.Map;
17 import java.util.Set;
18
19
20
21
22
23
24
25
26
27
28 public class KeyMap {
29
30 final private Map<Metadata.MetadataType, List<Key>> map = new HashMap<Metadata.MetadataType, List<Key>>();
31
32
33
34
35
36
37 public void addKey(Key key) {
38
39 switch (key.getForType()) {
40 case EDGE: {
41 getKeyList(Metadata.MetadataType.EDGE).add(key);
42 break;
43 }
44 case ENDPOINT: {
45 getKeyList(Metadata.MetadataType.ENDPOINT).add(key);
46 break;
47 }
48 case GRAPH: {
49 getKeyList(Metadata.MetadataType.GRAPH).add(key);
50 break;
51 }
52 case HYPEREDGE: {
53 getKeyList(Metadata.MetadataType.HYPEREDGE).add(key);
54 break;
55 }
56 case NODE: {
57 getKeyList(Metadata.MetadataType.NODE).add(key);
58 break;
59 }
60 case PORT: {
61 getKeyList(Metadata.MetadataType.PORT).add(key);
62 break;
63 }
64 default: {
65
66
67 getKeyList(Metadata.MetadataType.EDGE).add(key);
68 getKeyList(Metadata.MetadataType.ENDPOINT).add(key);
69 getKeyList(Metadata.MetadataType.GRAPH).add(key);
70 getKeyList(Metadata.MetadataType.HYPEREDGE).add(key);
71 getKeyList(Metadata.MetadataType.NODE).add(key);
72 getKeyList(Metadata.MetadataType.PORT).add(key);
73 }
74 }
75 }
76
77
78
79
80
81
82 public void applyKeys(Metadata metadata) {
83
84 List<Key> keys = getKeyList(metadata.getMetadataType());
85 for (Key key : keys) {
86 key.applyKey(metadata);
87 }
88 }
89
90
91
92
93 public void clear() {
94 map.clear();
95 }
96
97
98
99
100
101
102 public Set<Map.Entry<Metadata.MetadataType, List<Key>>> entrySet() {
103 return map.entrySet();
104 }
105
106
107
108
109
110
111
112
113 private List<Key> getKeyList(Metadata.MetadataType type) {
114
115 List<Key> keys = map.get(type);
116 if (keys == null) {
117 keys = new ArrayList<Key>();
118 map.put(type, keys);
119 }
120
121 return keys;
122 }
123 }