package com.bagri.xdm.cache.coherence.process; import java.util.Date; import java.util.HashMap; import java.util.Map; import com.tangosol.net.NamedCache; public abstract class StatsCollectingPopulator extends AbstractPopulator { protected int keys; protected int queried; protected int loaded; protected int batches; private Date startedAt; private Date finishedAt; public StatsCollectingPopulator(String cacheName) { super(cacheName); } protected void resetStats() { keys = 0; queried = 0; loaded = 0; batches = 0; finishedAt = null; startedAt = new Date(); } protected void updateStats() { finishedAt = new Date(); } public Map<String, Object> getStats() { Map<String, Object> stats = new HashMap<String, Object>(6); stats.put("Started At", startedAt == null ? "" : startedAt.toString()); stats.put("Keys found", keys); stats.put("Records requested", queried); stats.put("Records loaded", loaded); stats.put("Batches processed", batches); stats.put("Finished At", finishedAt == null ? "" : finishedAt.toString()); return stats; } /** * * @param cache Named cache */ @Override public void populate(NamedCache cache) { long stamp = System.currentTimeMillis(); resetStats(); populateCache(cache); updateStats(); stamp = System.currentTimeMillis() - stamp; log.info("Cache {} populated; time taken: {}", cache.getCacheName(), stamp); } protected abstract void populateCache(NamedCache cache); }