package com.plugtree.solrmeter.view;
import com.google.inject.Singleton;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@Singleton
public class HeadlessStatisticsContainer implements Refreshable {
private final long INITIAL_DELAY_MS = 1000 * 2;
private final long REFRESH_INTERVAL_MS = 1000 * 2;
private Map<String, HeadlessStatisticPanel> statistics;
public HeadlessStatisticsContainer() {
statistics = new HashMap<String, HeadlessStatisticPanel>();
scheduleRefresher();
}
private void scheduleRefresher() {
new ScheduledThreadPoolExecutor(1).scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
refreshView();
}
}, INITIAL_DELAY_MS, REFRESH_INTERVAL_MS, TimeUnit.MILLISECONDS);
}
private Map<String,HeadlessStatisticPanel> getStatistics() {
return statistics;
}
@Override
public synchronized void refreshView() {
for(HeadlessStatisticPanel panel:getStatistics().values()) {
panel.refreshView();
}
}
public void addStatistic(HeadlessStatisticPanel statistic) {
statistics.put(statistic.getStatisticName(), statistic);
}
}