package net.pms.configuration;
import org.apache.commons.configuration.Configuration;
class ConfigurationProgramPaths implements ProgramPaths {
private static final String KEY_VLC_PATH = "vlc_path";
private static final String KEY_EAC3TO_PATH = "eac3to_path";
private static final String KEY_MENCODER_PATH = "mencoder_path";
private static final String KEY_FFMPEG_PATH = "ffmpeg_path";
private static final String KEY_MPLAYER_PATH = "mplayer_path";
private static final String KEY_TSMUXER_PATH = "tsmuxer_path";
private static final String KEY_FLAC_PATH = "flac_path";
private static final String KEY_DCRAW = "dcraw_path";
private static final String KEY_IMCONVERT_PATH = "imconvert_path";
private final Configuration configuration;
private final ConfigurationReader configurationReader;
private final ProgramPaths defaults;
public ConfigurationProgramPaths(Configuration configuration, ProgramPaths defaults) {
this.configuration = configuration;
this.configurationReader = new ConfigurationReader(configuration, true); // true: log
this.defaults = defaults;
}
@Override
public String getFfmpegPath() {
return getString(KEY_FFMPEG_PATH, defaults.getFfmpegPath());
}
@Override
public String getFlacPath() {
return getString(KEY_FLAC_PATH, defaults.getFlacPath());
}
@Override
public String getMencoderPath() {
return getString(KEY_MENCODER_PATH, defaults.getMencoderPath());
}
@Override
public String getMplayerPath() {
return getString(KEY_MPLAYER_PATH, defaults.getMplayerPath());
}
@Override
public String getTsmuxerPath() {
return getString(KEY_TSMUXER_PATH, defaults.getTsmuxerPath());
}
@Override
public String getVlcPath() {
return getString(KEY_VLC_PATH, defaults.getVlcPath());
}
/**
* Return the <code>String</code> value for a given configuration key if the
* value is non-blank (i.e. not null, not an empty string, not all whitespace).
* Otherwise return the supplied default value.
* The value is returned with leading and trailing whitespace removed in both cases.
* @param key The key to look up.
* @param def The default value to return when no valid key value can be found.
* @return The value configured for the key.
*/
private String getString(String key, String def) {
return configurationReader.getNonBlankConfigurationString(key, def);
}
@Override
public String getDCRaw() {
return getString(KEY_DCRAW, defaults.getDCRaw());
}
}