package io.github.lucaseasedup.logit.config;
import io.github.lucaseasedup.logit.LogItCoreObject;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
public final class ConfigurationManager extends LogItCoreObject
{
@Override
public void dispose()
{
if (registrations != null)
{
for (PredefinedConfiguration configuration : registrations.values())
{
configuration.dispose();
}
registrations.clear();
registrations = null;
}
}
public void registerConfiguration(
String filename,
String userConfigDef,
String packageConfigDef,
String header
)
{
if (StringUtils.isBlank(filename)
|| userConfigDef == null || packageConfigDef == null)
{
throw new IllegalArgumentException();
}
if (registrations.containsKey(filename))
{
throw new RuntimeException(
"Configuration already registered: " + filename
);
}
registrations.put(filename, new PredefinedConfiguration(
filename, userConfigDef, packageConfigDef, header
));
}
public void unregisterConfiguration(String filename)
{
if (filename == null)
throw new IllegalArgumentException();
registrations.remove(filename);
}
public void unregisterAll()
{
registrations.clear();
}
public void loadAll() throws IOException, InvalidPropertyValueException
{
for (PredefinedConfiguration configuration : registrations.values())
{
configuration.load();
}
}
public PredefinedConfiguration getConfiguration(String filename)
{
if (filename == null)
throw new IllegalArgumentException();
return registrations.get(filename);
}
private Map<String, PredefinedConfiguration> registrations = new HashMap<>();
}