Subversion Repositories SmartDukaan

Rev

Rev 3297 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3273 vikas 1
/**
2
 * 
3
 */
4
package in.shop2020.serving.controllers;
5
 
6
import java.util.ArrayList;
7
import java.util.HashMap;
8
import java.util.List;
9
import java.util.Map;
10
 
11
import net.sf.ehcache.Cache;
12
import net.sf.ehcache.CacheManager;
13
import net.sf.ehcache.Statistics;
14
 
15
import org.apache.log4j.Logger;
16
import org.apache.struts2.convention.annotation.InterceptorRef;
17
import org.apache.struts2.convention.annotation.InterceptorRefs;
18
 
19
/**
20
 * @author vikas
21
 *
22
 */
23
@InterceptorRefs({
24
    @InterceptorRef("defaultStack")
25
})
26
public class CacheAdminController {
27
 
28
    private static final long serialVersionUID = -6730428402950686583L;
29
 
30
    public static final String NAME_KEY = "name";
31
    public static final String DISK_STORE_KEY = "disk_store_size";
32
    public static final String EVICTION_POLICY_KEY = "eviction_policy";
33
    public static final String MEMORY_STORE_KEY = "memory_store_size";
34
    public static final String OFF_HEAP_STORE_KEY = "off_heap_store_size";
35
    public static final String SEARCHES_PER_SEC_KEY = "searches_per_second";
36
    public static final String STATUS_KEY = "status";
37
    public static final String AVG_GET_TIME_KEY = "avg_get_time";
38
    public static final String AVG_SEARCH_TIME_KEY = "avg_search_time";
39
    public static final String CACHE_HITS_KEY = "cache_hits";
40
    public static final String CACHE_MISSES_KEY = "cache_misses";
41
    public static final String EVICTION_COUNT_KEY = "eviction_count";
42
 
43
    private static Logger log = Logger.getLogger(CacheAdminController.class);
44
 
45
    private List<Map<String, String>> cacheStats;
46
    private String cacheName;
47
 
48
    public String index() {
49
        CacheManager cacheManager = CacheManager.create();
50
        String[] cacheNames = cacheManager.getCacheNames();
51
        cacheStats = new ArrayList<Map<String,String>>();
52
        for (String cacheName : cacheNames) {
53
            Map<String, String> cacheStat = new HashMap<String, String>();
54
            Cache cache = cacheManager.getCache(cacheName);
55
            cacheStat.put(NAME_KEY, cache.getName());
56
            cacheStat.put(EVICTION_POLICY_KEY, cache.getMemoryStoreEvictionPolicy().getName());
57
            cacheStat.put(MEMORY_STORE_KEY, Long.toString(cache.getMemoryStoreSize()));
58
            cacheStat.put(OFF_HEAP_STORE_KEY, Long.toString(cache.getOffHeapStoreSize()));
59
            cacheStat.put(DISK_STORE_KEY, Integer.toString(cache.getDiskStoreSize()));
60
            cacheStat.put(SEARCHES_PER_SEC_KEY, Long.toString(cache.getSearchesPerSecond()));
61
            cacheStat.put(STATUS_KEY, cache.getStatus().toString());
62
 
63
            Statistics stat = cache.getStatistics();
64
            cacheStat.put(AVG_GET_TIME_KEY, Float.toString(stat.getAverageGetTime()));
65
            cacheStat.put(AVG_SEARCH_TIME_KEY, Float.toString(stat.getAverageSearchTime()));
66
            cacheStat.put(CACHE_HITS_KEY, Long.toString(stat.getCacheHits()));
67
            cacheStat.put(CACHE_MISSES_KEY, Long.toString(stat.getCacheMisses()));
68
            cacheStat.put(EVICTION_COUNT_KEY, Long.toString(stat.getEvictionCount()));
69
            cacheStats.add(cacheStat);
70
            log.info(stat);
71
        }
72
        return "index";
73
    }
74
 
75
    public void destroy() {
76
        CacheManager cacheManager = CacheManager.create();
77
        for (String name : cacheManager.getCacheNames()) {
78
            if (name.equals(cacheName)) {
79
                cacheManager.getCache(name).removeAll();
80
            }
81
        }
82
    }
83
    public List<Map<String, String>> getCacheStats() {
84
        return cacheStats;
85
    }
86
 
87
    public void setId(String name) {
88
        cacheName = name;
89
    }
90
}