annotate src/main/java/cl/maps/quad/QuadMap.java @ 85:1aff84e5048d

configuration option for queryBrowserUrl.
author Robert Casties <casties@mpiwg-berlin.mpg.de>
date Fri, 20 Oct 2017 12:48:31 +0200
parents 6e08ff123ae6
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
59
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
1 package cl.maps.quad;
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
2
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
3 import java.util.ArrayList;
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
4 import java.util.Collection;
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
5 import java.util.HashMap;
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
6 import java.util.List;
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
7 import java.util.Map;
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
8 import java.util.Set;
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
9
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
10 public class QuadMap<V, A, B, C, D> implements IQuadMap<V, A, B, C, D>{
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
11
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
12 private Map<QuadKey<A, B, C, D>, V> map;
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
13 private Map<A, List<QuadKey<A, B, C, D>>> mapAKey;
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
14 private Map<B, List<QuadKey<A, B, C, D>>> mapBKey;
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
15 private Map<C, List<QuadKey<A, B, C, D>>> mapCKey;
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
16 private Map<D, QuadKey<A, B, C, D>> mapOwnKey;
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
17
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
18 public QuadMap(){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
19 this.map = new HashMap<QuadKey<A, B, C, D>, V>();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
20 this.mapAKey = new HashMap<A, List<QuadKey<A, B, C, D>>>();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
21 this.mapBKey = new HashMap<B, List<QuadKey<A, B, C, D>>>();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
22 this.mapCKey = new HashMap<C, List<QuadKey<A, B, C, D>>>();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
23 this.mapOwnKey = new HashMap<D, QuadKey<A, B, C, D>>();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
24 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
25
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
26 public QuadMap(QuadMap<? extends V, A, B, C, D> m) {
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
27 this.map = new HashMap<QuadKey<A, B, C, D>, V>();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
28 this.mapAKey = new HashMap<A, List<QuadKey<A, B, C, D>>>();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
29 this.mapBKey = new HashMap<B, List<QuadKey<A, B, C, D>>>();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
30 this.mapCKey = new HashMap<C, List<QuadKey<A, B, C, D>>>();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
31 this.mapOwnKey = new HashMap<D, QuadKey<A, B, C, D>>();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
32 this.putAllForCreate(m);
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
33 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
34
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
35 private void putAllForCreate(QuadMap<? extends V, A, B, C, D> m) {
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
36 for(Map.Entry<QuadKey<A, B, C, D>, ? extends V> e : m.entrySet()){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
37 QuadKey<A, B, C, D> tKey = e.getKey();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
38 this.map.put(tKey, e.getValue());
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
39 this.mapOwnKey.put(tKey.getOwnKey(), tKey);
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
40
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
41 if(!mapAKey.containsKey(tKey.getAKey())){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
42 mapAKey.put(tKey.getAKey(), new ArrayList<QuadKey<A, B, C, D>>());
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
43 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
44 if(!mapAKey.get(tKey.getAKey()).contains(tKey)){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
45 mapAKey.get(tKey.getAKey()).add(tKey);
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
46 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
47
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
48 if(!mapBKey.containsKey(tKey.getBKey())){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
49 mapBKey.put(tKey.getBKey(), new ArrayList<QuadKey<A, B, C, D>>());
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
50 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
51 if(!mapBKey.get(tKey.getBKey()).contains(tKey)){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
52 mapBKey.get(tKey.getBKey()).add(tKey);
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
53 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
54
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
55 if(!mapCKey.containsKey(tKey.getCKey())){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
56 mapCKey.put(tKey.getCKey(), new ArrayList<QuadKey<A, B, C, D>>());
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
57 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
58 if(!mapCKey.get(tKey.getCKey()).contains(tKey)){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
59 mapCKey.get(tKey.getCKey()).add(tKey);
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
60 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
61 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
62 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
63
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
64 public List<V> getValuesByAKey(A srcKey){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
65 List<V> list = new ArrayList<V>();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
66 if(mapAKey.containsKey(srcKey)){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
67 for(QuadKey<A, B, C, D> tKey : mapAKey.get(srcKey)){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
68 list.add(map.get(tKey));
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
69 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
70 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
71 return list;
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
72 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
73
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
74 public List<V> getValuesByBKey(B tarKey){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
75 List<V> list = new ArrayList<V>();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
76 if(mapBKey.containsKey(tarKey)){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
77 for(QuadKey<A, B, C, D> tKey : mapBKey.get(tarKey)){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
78 list.add(map.get(tKey));
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
79 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
80 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
81 return list;
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
82 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
83
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
84 public List<V> getValuesByCKey(C cKey){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
85 List<V> list = new ArrayList<V>();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
86 if(mapCKey.containsKey(cKey)){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
87 for(QuadKey<A, B, C, D> tKey : mapCKey.get(cKey)){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
88 list.add(map.get(tKey));
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
89 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
90 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
91 return list;
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
92 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
93
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
94 public V getValuesByOwnKey(D ownKey){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
95 QuadKey<A, B, C, D> tKey = mapOwnKey.get(ownKey);
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
96 if(tKey != null){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
97 return this.map.get(tKey);
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
98 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
99 return null;
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
100 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
101
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
102 public Set<QuadKey<A, B, C, D>> keySet(){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
103 return this.map.keySet();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
104 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
105
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
106 public Set<Map.Entry<QuadKey<A, B, C, D>, V>> entrySet() {
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
107 return this.map.entrySet();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
108 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
109
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
110 @Override
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
111 public int size() {
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
112 return this.map.size();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
113 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
114
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
115 @Override
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
116 public boolean isEmpty() {
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
117 return this.map.isEmpty();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
118 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
119
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
120 @Override
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
121 public boolean containsKey(QuadKey<A, B, C, D> key) {
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
122 return this.map.containsKey(key);
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
123 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
124
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
125 @Override
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
126 public boolean containsValue(Object value) {
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
127 return this.map.containsValue(value);
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
128 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
129
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
130 @Override
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
131 public V get(QuadKey<A, B, C, D> key) {
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
132 return map.get(key);
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
133 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
134
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
135 @Override
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
136 public V put(QuadKey<A, B, C, D> tKey, V value) {
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
137
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
138 if(!mapAKey.containsKey(tKey.getAKey())){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
139 mapAKey.put(tKey.getAKey(), new ArrayList<QuadKey<A, B, C, D>>());
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
140 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
141 if(!mapAKey.get(tKey.getAKey()).contains(tKey)){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
142 mapAKey.get(tKey.getAKey()).add(tKey);
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
143 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
144
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
145 if(!mapBKey.containsKey(tKey.getBKey())){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
146 mapBKey.put(tKey.getBKey(), new ArrayList<QuadKey<A, B, C, D>>());
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
147 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
148 if(!mapBKey.get(tKey.getBKey()).contains(tKey)){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
149 mapBKey.get(tKey.getBKey()).add(tKey);
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
150 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
151
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
152 if(!mapCKey.containsKey(tKey.getCKey())){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
153 mapCKey.put(tKey.getCKey(), new ArrayList<QuadKey<A, B, C, D>>());
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
154 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
155 if(!mapCKey.get(tKey.getCKey()).contains(tKey)){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
156 mapCKey.get(tKey.getCKey()).add(tKey);
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
157 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
158
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
159 this.mapOwnKey.put(tKey.getOwnKey(), tKey);
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
160 return this.map.put(tKey, value);
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
161 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
162
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
163 @Override
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
164 public V remove(QuadKey<A, B, C, D> key) {
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
165 if(mapAKey.containsKey(key.getAKey())){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
166 mapAKey.get(key.getAKey()).remove(key);
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
167 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
168 if(mapBKey.containsKey(key.getBKey())){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
169 mapBKey.get(key.getBKey()).remove(key);
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
170 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
171 if(mapCKey.containsKey(key.getCKey())){
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
172 mapCKey.get(key.getCKey()).remove(key);
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
173 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
174 this.mapOwnKey.remove(key.getOwnKey());
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
175 return this.map.remove(key);
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
176 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
177
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
178 @Override
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
179 public void clear() {
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
180 this.map.clear();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
181 this.mapAKey.clear();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
182 this.mapBKey.clear();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
183 this.mapCKey.clear();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
184 this.mapOwnKey.clear();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
185 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
186
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
187 @Override
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
188 public Collection<V> values() {
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
189 return this.map.values();
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
190 }
6e08ff123ae6 check in complete source of cl.maps.
casties
parents:
diff changeset
191 }