package org.limewire.setting;
import java.io.File;
import java.util.Properties;
import org.limewire.setting.evt.SettingsGroupEvent.EventType;
/**
* Gives basic features including get, reload and save for a
* {@link SettingsFactory}.
*/
public class BasicSettingsGroup extends AbstractSettingsGroup {
/**
* Properties file.
*/
private final File PROPS_FILE;
/**
* Constant for the <tt>SettingsFactory</tt> that subclasses can use
* to create new settings which will be stored in the properties file.
*/
private final SettingsFactory FACTORY;
/**
* Basic constructor that creates the FACTORY and PROPS_FILE.
*/
protected BasicSettingsGroup(File settingsFile, String header) {
PROPS_FILE = settingsFile;
FACTORY = new SettingsFactory(PROPS_FILE, header);
SettingsGroupManager.instance().addSettingsGroup(this);
}
/**
* Returns the <tt>Properties</tt> instance that stores all settings.
*
* @return the <tt>Properties</tt> instance for storing settings
*/
public Properties getProperties() {
return FACTORY.getProperties();
}
/**
* Returns the <tt>File</tt> instance that stores all properties.
*/
public File getPropertiesFile() {
return PROPS_FILE;
}
/**
* Returns the <tt>SettingsFactory</tt> instance that stores the properties.
*/
public SettingsFactory getFactory() {
return FACTORY;
}
/**
* Reload settings from both the property and configuration files.
*/
public void reload() {
FACTORY.reload();
fireSettingsEvent(EventType.RELOAD);
}
/**
* Save property settings to the property file.
*/
public boolean save() {
if (getShouldSave()) {
FACTORY.save();
fireSettingsEvent(EventType.SAVE);
return true;
}
return false;
}
/** Revert all settings to their default value */
public boolean revertToDefault() {
if (FACTORY.revertToDefault()) {
fireSettingsEvent(EventType.REVERT_TO_DEFAULT);
return true;
}
return false;
}
/** Used to find any setting based on the key in the appropriate props file */
public Setting getSetting(String key) {
synchronized(FACTORY) {
for(Setting currSetting : FACTORY) {
if(currSetting.getKey().equals(key))
return currSetting;
}
}
return null; //unable the find the setting we are looking for
}
@Override
public String toString() {
return FACTORY.toString();
}
}