cache

Details

diff --git a/src/main/java/br/ufrgs/inf/prosoft/cache/CachingPerformance.java b/src/main/java/br/ufrgs/inf/prosoft/cache/CachingPerformance.java
index 3f03ba5..7e9b4f4 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/cache/CachingPerformance.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/cache/CachingPerformance.java
@@ -18,17 +18,26 @@ public class CachingPerformance {
     private int hits;
     private int invalidations;
     private int maximumSize;
+    private String name;
 
     public CachingPerformance() {
+        this.name = "AnonymousCache";
         Runtime.getRuntime().addShutdownHook(new Thread() {
             @Override
             public void run() {
                 Logger.getLogger(CachingPerformance.class.getName()).log(Level.INFO, "printing caching metrics");
-                System.out.println(CachingPerformance.this);
+                System.out.print(CachingPerformance.this.name);
+                System.out.print(": ");
+                System.out.println(CachingPerformance.this.toLongString());
             }
         });
     }
 
+    public CachingPerformance(String name) {
+        super();
+        this.name = name;
+    }
+
     public void reduce(CachingPerformance cachingPerformance) {
         this.misses += cachingPerformance.misses;
         this.hits += cachingPerformance.hits;
@@ -78,4 +87,14 @@ public class CachingPerformance {
         return stringBuilder.toString();
     }
 
+    public String toLongString() {
+        StringBuilder stringBuilder = new StringBuilder();
+        stringBuilder.append("Hits: ").append(this.hits);
+        stringBuilder.append("; Misses: ").append(this.misses);
+        stringBuilder.append("; Hit Ratio: ").append(getHitRatio());
+        stringBuilder.append("%; Invalidations: ").append(this.invalidations);
+        stringBuilder.append("; Maximum Size: ").append(this.maximumSize);
+        return stringBuilder.toString();
+    }
+
 }
diff --git a/src/main/java/br/ufrgs/inf/prosoft/cache/GetterCache.java b/src/main/java/br/ufrgs/inf/prosoft/cache/GetterCache.java
index 08a7f82..380ca1c 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/cache/GetterCache.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/cache/GetterCache.java
@@ -23,6 +23,11 @@ public class GetterCache {
         this.cachingPerformance = new CachingPerformance();
     }
 
+    public GetterCache(String name) {
+        this.isFilled = false;
+        this.cachingPerformance = new CachingPerformance(name);
+    }
+
     public GetterCache(CachingPerformance cachingPerformance) {
         this.isFilled = false;
         this.cachingPerformance = cachingPerformance;
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 de0dc83..a4476f2 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/cache/MultiCache.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/cache/MultiCache.java
@@ -20,6 +20,10 @@ public class MultiCache extends HashMap<Object, Object> implements Cache {
     public MultiCache() {
         this.cachingPerformance = new CachingPerformance();
     }
+    
+    public MultiCache(String name) {
+        this.cachingPerformance = new CachingPerformance(name);
+    }
 
     public MultiCache(CachingPerformance cachingPerformance) {
         this.cachingPerformance = cachingPerformance;
diff --git a/src/main/java/br/ufrgs/inf/prosoft/cache/SingleCache.java b/src/main/java/br/ufrgs/inf/prosoft/cache/SingleCache.java
index ff090a7..9427f1c 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/cache/SingleCache.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/cache/SingleCache.java
@@ -21,6 +21,10 @@ public class SingleCache implements Cache {
     public SingleCache() {
         this.cachingPerformance = new CachingPerformance();
     }
+    
+    public SingleCache(String name) {
+        this.cachingPerformance = new CachingPerformance(name);
+    }
 
     public SingleCache(CachingPerformance cachingPerformance) {
         this.cachingPerformance = cachingPerformance;