package com.cloudera.flume.reporter;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions;
static final Logger LOG = LoggerFactory.getLogger(ReportManager.class);
final static ReportManager man = new ReportManager("root");
Map<String, Reportable> reports = new HashMap<String, Reportable>();
String name;
this.name = name;
}
public static ReportManager
get() {
return man;
}
public synchronized void add(Reportable r) {
reports.put(r.getName(), r);
}
public synchronized void addAll(Collection<?
extends Reportable> c) {
for (Reportable r : c) {
reports.put(r.getName(), r);
}
}
return reports.get(s);
}
@Override
return name;
}
@Override
public synchronized ReportEvent
getReport() {
ReportEvent rpt = new ReportEvent(getName());
for (Entry<String, Reportable> r : reports.entrySet()) {
rpt.hierarchicalMerge(r.getKey(), r.getValue().getReport());
}
return rpt;
}
return new HashMap<String, Reportable>(reports);
}
public synchronized void clear() {
reports.clear();
}
public synchronized void remove(Reportable r) {
Preconditions.checkArgument(r != null, "Cannot remove null reportable");
reports.remove(r.getName());
}
}