package org.limewire.setting;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
/**
* A {@link Setting} to hold a time duration.
*
* <p>NOTE: The time is stored internally in milliseconds. This allows
* us to migrate all existing {@link LongSetting}s that were holding
* the time in milliseconds to {@link TimeSetting}.
*/
public class TimeSetting extends LongSetting {
/**
* Creates a {@link TimeSetting} with the given arguments.
*/
public TimeSetting(Properties defaultProps, Properties props,
String key, long defaultValue, TimeUnit unit) {
super(defaultProps, props, key, unit.toMillis(defaultValue));
}
/**
* Returns the time in the given {@link TimeUnit}
*/
public long getTime(TimeUnit unit) {
return unit.convert(getValue(), TimeUnit.MILLISECONDS);
}
/**
* Returns the time in milliseconds.
*/
public long getTimeInMillis() {
return getTime(TimeUnit.MILLISECONDS);
}
/**
* Sets the time in the given {@link TimeUnit}
*/
public void setTime(long time, TimeUnit unit) {
setValue(unit.toMillis(time));
}
}