cache

added hit registration foreach of .values() and entryset.

7/30/2019 5:47:26 PM

Details

diff --git a/src/main/java/br/ufrgs/inf/prosoft/cache/MultiCache.java b/src/main/java/br/ufrgs/inf/prosoft/cache/MultiCache.java
index 9dcded5..6abe5c0 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/cache/MultiCache.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/cache/MultiCache.java
@@ -114,21 +114,39 @@ public class MultiCache<K, V> implements Cache<K, V> {
     }
 
     public Set<Map.Entry<K, V>> entrySet() {
-        return this.map.entrySet().stream()
+        Set<Map.Entry<K, V>> entrySet = this.map.entrySet().stream()
                 .filter(entry -> isValid(entry.getKey()))
                 .collect(Collectors.
                         toMap(entry -> entry.getKey(), entry -> entry.getValue())
                 ).entrySet();
+        entrySet.forEach(entry -> {
+            String identifier = getIdentifier(entry.getValue());
+            if (CACHE_REGISTER_SIZE) {
+                this.cachePerformance.registerEvent(EventType.HIT, identifier, CachePerformance.calculateObjectSize(entry.getValue()));
+            } else {
+                this.cachePerformance.registerEvent(EventType.HIT, identifier);
+            }
+        });
+        return entrySet;
     }
 
     public List<V> values() {
-        return this.map.entrySet().stream()
+        List<V> values = this.map.entrySet().stream()
                 .filter(entry -> isValid(entry.getKey()))
                 .map(entry -> entry.getValue())
                 .collect(Collectors.toList());
+        values.forEach(get -> {
+            String identifier = getIdentifier(get);
+            if (CACHE_REGISTER_SIZE) {
+                this.cachePerformance.registerEvent(EventType.HIT, identifier, CachePerformance.calculateObjectSize(get));
+            } else {
+                this.cachePerformance.registerEvent(EventType.HIT, identifier);
+            }
+        });
+        return values;
     }
 
-    public boolean containsKey(K key) {
+    private boolean containsKey(K key) {
         return this.map.containsKey(key) && isValid(key);
     }