package org.safehaus.penrose.monitor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Map;
import java.util.LinkedHashMap;
import java.util.Collection;
import java.util.ArrayList;
import java.io.File;
/**
* @author Endi S. Dewata
*/
public class MonitorConfigManager {
public Logger log = LoggerFactory.getLogger(getClass());
public MonitorReader monitorReader = new MonitorReader();
private Map<String,MonitorConfig> monitorConfigs = new LinkedHashMap<String,MonitorConfig>();
private File monitorsDir;
public MonitorConfigManager(File monitorsDir) throws Exception {
this.monitorsDir = monitorsDir;
}
public Collection<String> getAvailableMonitorNames() throws Exception {
Collection<String> list = new ArrayList<String>();
for (File monitorDir : monitorsDir.listFiles()) {
list.add(monitorDir.getName());
}
return list;
}
public MonitorConfig load(String monitorName) throws Exception {
File dir = new File(monitorsDir, monitorName);
log.debug("Loading monitor from "+dir+".");
return monitorReader.read(dir);
}
public void addMonitorConfig(MonitorConfig monitorConfig) {
monitorConfigs.put(monitorConfig.getName(), monitorConfig);
}
public MonitorConfig getMonitorConfig(String name) {
return monitorConfigs.get(name);
}
public Collection<String> getMonitorNames() {
return monitorConfigs.keySet();
}
public Collection<MonitorConfig> getMonitorConfigs() {
return monitorConfigs.values();
}
public MonitorConfig removeMonitorConfig(String name) {
return monitorConfigs.remove(name);
}
public void clear() {
monitorConfigs.clear();
}
public File getMonitorsDir() {
return monitorsDir;
}
public void setMonitorsDir(File monitorsDir) {
this.monitorsDir = monitorsDir;
}
}