package org.limewire.setting;
import java.io.File;
import java.util.Properties;
/**
* Provides a {@link File} setting value. As a subclass
* of <code>Setting</code>, the setting has a key.
* <p>
* Create a <code>FileSetting</code> object with a
* {@link SettingsFactory#createFileSetSetting(String, File[])}.
*/
public class FileSetting extends AbstractSetting<File> {
private String absolutePath;
/**
* Creates a new <tt>SettingBool</tt> instance with the specified
* key and default value.
*
* @param key the constant key to use for the setting
* @param defaultFile the default value to use for the setting
*/
FileSetting(Properties defaultProps, Properties props, String key,
File defaultFile) {
super(defaultProps, props, key, defaultFile.getAbsolutePath());
setPrivate(true);
}
/**
* Returns the value of this setting.
* Duplicates the setting so it cannot be changed outside of this package.
* @return the value of this setting
*/
public File get() {
return new File(absolutePath);
}
/**
* Mutator for this setting.
*
* @param value the value to store
*/
public void set(File value) {
setValueInternal(value.getAbsolutePath());
}
/**
* Load value from property string value
* @param sValue property string value
*/
@Override
protected void loadValue(String sValue) {
File value = new File(sValue);
absolutePath = value.getAbsolutePath();
}
@Override
public FileSetting setAlwaysSave(boolean on) {
super.setAlwaysSave(on);
return this;
}
public FileSetting createParentDirs() {
File value = get();
if (value != null) {
String parentString = value.getParent();
if (parentString != null) {
File parent = new File(parentString);
if (!parent.isDirectory())
parent.mkdirs();
}
}
return this;
}
}