package test.rulez.evaluators; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; import org.drools.base.ValueType; import org.drools.base.evaluators.EvaluatorDefinition; import org.drools.base.evaluators.Operator; import org.drools.spi.Evaluator; public class F_StrEvaluatorDefinition implements EvaluatorDefinition { public static final Operator STR_COMPARE = Operator.addOperatorToRegistry("F_str", false); public static final Operator NOT_STR_COMPARE = Operator.addOperatorToRegistry("F_str", true); private static final String[] SUPPORTED_IDS = {STR_COMPARE.getOperatorString()}; public enum Operations { startsWith, endsWith, length, contains, bidicontains; } private Evaluator[] evaluator; @Override public String[] getEvaluatorIds() { return F_StrEvaluatorDefinition.SUPPORTED_IDS; } @Override public boolean isNegatable() { return true; } @Override public Evaluator getEvaluator(ValueType type, String operatorId, boolean isNegated, String parameterText, Target leftTarget, Target rightTarget) { F_StrEvaluator evaluatorLocal = new F_StrEvaluator(type, isNegated); evaluatorLocal.setParameterText(parameterText); return evaluatorLocal; } @Override public Evaluator getEvaluator(ValueType type, String operatorId, boolean isNegated, String parameterText) { return getEvaluator(type, operatorId, isNegated, parameterText, Target.FACT, Target.FACT); } @Override public Evaluator getEvaluator(ValueType type, Operator operator, String parameterText) { return this.getEvaluator(type, operator.getOperatorString(), operator.isNegated(), parameterText); } @Override public Evaluator getEvaluator(ValueType type, Operator operator) { return this.getEvaluator(type, operator.getOperatorString(), operator.isNegated(), null); } @Override public boolean supportsType(ValueType vt) { return true; } @Override public Target getTarget() { return Target.FACT; } @Override public void writeExternal(ObjectOutput out) throws IOException { out.writeObject(evaluator); } @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { evaluator = (Evaluator[]) in.readObject(); } }