package automenta.netention.value.string; import automenta.netention.DefiniteValue; import automenta.netention.IndefiniteValue; import automenta.netention.PropertyValue; public class StringIs extends PropertyValue implements DefiniteValue<String> { private String string; public StringIs() { } public StringIs(String string) { super(); this.string = string; } public String getString() { return string; } @Override public String getValue() { return string; } public void setValue(String s) { this.string = s; } @Override public double satisfies(IndefiniteValue i) { if (i.getClass().equals( StringEquals.class )) { //TODO implement string-difference-distance fall-off (ex: 0.05 * # of chars different) return ((StringEquals)i).getString().equalsIgnoreCase(getValue()) ? 1.0 : 0.0; } else if (i.getClass().equals( StringContains.class) ) { return getValue().toLowerCase().contains( ((StringContains)i).getString().toLowerCase() ) ? 1.0 : 0.0; } else if (i.getClass().equals( StringNotContains.class ) ) { return !(getValue().toLowerCase().contains( ((StringNotContains)i).getString().toLowerCase() )) ? 1.0 : 0.0; } // TODO impl remaining String satisfy's return 0; } }