]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/common/BoundingBoxCache.java
Stop set modification errors
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / common / BoundingBoxCache.java
1 package com.irtimaled.bbor.common;
2
3 import com.irtimaled.bbor.common.models.AbstractBoundingBox;
4
5 import java.util.HashSet;
6 import java.util.Map;
7 import java.util.Set;
8 import java.util.concurrent.ConcurrentHashMap;
9
10 public class BoundingBoxCache {
11     private Map<AbstractBoundingBox, Set<AbstractBoundingBox>> cache = new ConcurrentHashMap<>();
12
13     public Map<AbstractBoundingBox, Set<AbstractBoundingBox>> getBoundingBoxes() {
14         return cache;
15     }
16
17     void clear() {
18         cache.clear();
19     }
20
21     public boolean isCached(AbstractBoundingBox key) {
22         return cache.containsKey(key);
23     }
24
25     public void addBoundingBoxes(AbstractBoundingBox key, Set<AbstractBoundingBox> boundingBoxes) {
26         cache.put(key, boundingBoxes);
27     }
28
29     public void addBoundingBox(AbstractBoundingBox key) {
30         if(isCached(key)) return;
31
32         Set<AbstractBoundingBox> boundingBoxes = new HashSet<>();
33         boundingBoxes.add(key);
34         addBoundingBoxes(key, boundingBoxes);
35     }
36
37     void removeBoundingBox(AbstractBoundingBox key) {
38         cache.remove(key);
39     }
40 }