package automenta.netention.value.integer;
import automenta.netention.DefiniteValue;
import automenta.netention.IndefiniteValue;
import automenta.netention.PropertyValue;
public class IntegerIs extends PropertyValue implements DefiniteValue<Integer> {
private int value;
public IntegerIs() { }
public IntegerIs(int i) {
this();
this.value = i;
}
@Override public Integer getValue() {
return value;
}
public void setValue(int i) {
this.value = i;
}
@Override public double satisfies(IndefiniteValue i) {
if (i.getClass().equals(IntegerEquals.class) ) {
return (((IntegerEquals)i).getValue() == getValue().intValue()) ? 1.0 : 0.0;
}
//TODO impl IntegerMoreThan and LessThan inclusive/exclusive flag
else if (i.getClass().equals(IntegerLessThan.class) ) {
return (((IntegerLessThan)i).getValue() > getValue().intValue()) ? 1.0 : 0.0;
}
else if (i.getClass().equals(IntegerMoreThan.class) ) {
return (((IntegerMoreThan)i).getValue() < getValue().intValue()) ? 1.0 : 0.0;
}
else if (i.getClass().equals(IntegerBetween.class) ) {
int v = getValue().intValue();
if (((IntegerBetween)i).isInclusive()) {
return ( (((IntegerBetween)i).getMin() <= v) && (((IntegerBetween)i).getMax() >= v) ) ? 1.0 : 0.0;
}
else {
return ( (((IntegerBetween)i).getMin() < v) && (((IntegerBetween)i).getMax() > v) ) ? 1.0 : 0.0;
}
}
//TODO implement Integer indefinites
// else if (i instanceof IntegerMoreThan) {
//
// }
// else if (i instanceof IntegerLessThan) {
//
// }
// else if (i instanceof IntegerBetween) {
//
// }
else {
return 0;
}
}
}