package uk.ac.lkl.migen.system.expresser.model;
import uk.ac.lkl.common.util.expression.Expression;
import uk.ac.lkl.common.util.value.Value;
public class SimpleValueSource<T extends Value<T>> extends ValueSource<T> {
private T value;
public SimpleValueSource() {
this(null);
}
public SimpleValueSource(T value) {
setValue(value);
}
@Override
public boolean isPermanent() {
return false;
}
@Override
public SimpleValueSource<T> createCopy() {
// note: casting to T can be removed once have generic sub-class arg for
// value again
if (value == null)
return new SimpleValueSource<T>();
T copy = (T) value.createCopy();
return new SimpleValueSource<T>(copy);
}
@Override
public boolean setValue(T newValue) {
T oldValue = this.value;
if (oldValue == null) {
if (newValue == null)
return false;
} else if (newValue.equals(oldValue))
return false;
this.value = newValue;
fireObjectUpdated();
return true;
}
@Override
public T getValue() {
return value;
}
@Override
public Expression<T> getExpression() {
return value;
}
@Override
public boolean isValueSettable() {
return true;
}
}
|