package org.drools.chance.rule.constraint.core.evaluators; import org.drools.base.ValueType; import org.drools.base.evaluators.EvaluatorDefinition; import org.drools.base.evaluators.Operator; import org.drools.chance.rule.builder.ChanceOperators; import org.drools.spi.Evaluator; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class ImperfectBaseEvaluatorDefinition implements EvaluatorDefinition { public String[] getEvaluatorIds() { return ChanceOperators.standard_imperfectOperators; } public Evaluator getEvaluator( ValueType type, String operatorId, boolean isNegated, String parameterText) { return new ImperfectMvelEvaluator( type, ChanceOperators.getOperator(operatorId), parse( parameterText ), true ); } private List<String> parse( String parameterText ) { List<String> ret = new ArrayList<String>(); if ( parameterText != null ) { StringTokenizer tok = new StringTokenizer( parameterText, ",;" ); while ( tok.hasMoreTokens() ) { ret.add( tok.nextToken() ); } } return ret; } public boolean isNegatable() { return false; //To change body of implemented methods use File | Settings | File Templates. } public Evaluator getEvaluator( ValueType type, String operatorId, boolean isNegated, String parameterText, Target leftTarget, Target rightTarget) { return getEvaluator( type, operatorId, isNegated, parameterText ); } public Evaluator getEvaluator( ValueType type, Operator operator, String parameterText ) { return getEvaluator( type, operator.getOperatorString(), false, parameterText ); } public Evaluator getEvaluator( ValueType type, Operator operator) { return getEvaluator( type, operator.getOperatorString(), false, null ); } public boolean supportsType( ValueType type ) { return true; } public Target getTarget() { return Target.FACT; } public void writeExternal(ObjectOutput out) throws IOException { //To change body of implemented methods use File | Settings | File Templates. } public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { //To change body of implemented methods use File | Settings | File Templates. } }