package automenta.netention.value.real;
import automenta.netention.DefiniteValue;
import automenta.netention.IndefiniteValue;
import automenta.netention.PropertyValue;
public class RealIs extends PropertyValue implements DefiniteValue<Double> {
private double value;
public RealIs() { super(); }
public RealIs(double v) {
this();
this.value = v;
}
@Override public Double getValue() {
return value;
}
public void setValue(Double v) {
this.value = v;
}
@Override public double satisfies(IndefiniteValue i) {
if (i.getClass().equals( RealEquals.class) ) {
return ((RealEquals)i).getValue() == getValue().doubleValue() ? 1.0 : 0.0;
}
//TODO impl RealMoreThan and LessThan inclusive/exclusive flag
else if (i.getClass().equals( RealMoreThan.class) ) {
return ((RealMoreThan)i).getValue() < getValue().doubleValue() ? 1.0 : 0.0;
}
else if (i.getClass().equals( RealLessThan.class) ) {
return ((RealLessThan)i).getValue() > getValue().doubleValue() ? 1.0 : 0.0;
}
else if (i.getClass().equals( RealBetween.class) ) {
RealBetween rb = (RealBetween) i;
double v = getValue().doubleValue();
if (rb.isInclusive()) {
return ((rb.getMin() <= v) && (rb.getMax() >= v)) ? 1.0 : 0.0;
}
else {
//TODO confirm this is correct logic
return ((rb.getMin() < v) && (rb.getMax() > v)) ? 1.0 : 0.0;
}
}
else {
return 0.0;
}
}
}