package org.drools.chance.rule.constraint.core.evaluators;
import org.drools.base.EvaluatorWrapper;
import org.drools.chance.degree.ChanceDegreeTypeRegistry;
import org.drools.chance.degree.Degree;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.rule.Declaration;
import org.drools.rule.VariableRestriction;
import org.drools.spi.Evaluator;
import org.drools.spi.FieldValue;
import org.drools.spi.InternalReadAccessor;
public class ImperfectEvaluatorWrapper extends EvaluatorWrapper implements ImperfectEvaluator {
public ImperfectEvaluatorWrapper( Evaluator evaluator, Declaration leftBinding, Declaration rightBinding ) {
super( evaluator, leftBinding, rightBinding );
}
public Degree match( InternalFactHandle left,
InternalFactHandle right ) {
// if( getLeftBinding() != null ) {
// left = getLeftHandle();
// }
// if( getRightBinding() != null ) {
// right = getRightHandle();
// }
if ( getEvaluator() instanceof ImperfectEvaluator ) {
return ((ImperfectEvaluator) getEvaluator()).match( getWorkingMemory(),
getExtractor(),
left,
getExtractor(),
right );
} else {
return ChanceDegreeTypeRegistry.getSingleInstance().buildDegree(
ChanceDegreeTypeRegistry.getDefaultDegree(),
getEvaluator().evaluate( getWorkingMemory(),
getExtractor(),
left,
getExtractor(),
right ) ? 1.0 : 0.0 );
}
}
public Degree match( InternalWorkingMemory workingMemory, InternalReadAccessor extractor, InternalFactHandle object, FieldValue value ) {
return ((ImperfectEvaluator) getEvaluator()).match( workingMemory, extractor, object, value );
}
public Degree match( InternalWorkingMemory workingMemory, InternalReadAccessor leftExtractor, InternalFactHandle left, InternalReadAccessor rightExtractor, InternalFactHandle right ) {
return ((ImperfectEvaluator) getEvaluator()).match( workingMemory, leftExtractor, left, rightExtractor, right );
}
public Degree matchCachedLeft( InternalWorkingMemory workingMemory, VariableRestriction.VariableContextEntry context, InternalFactHandle right ) {
return ((ImperfectEvaluator) getEvaluator()).matchCachedLeft( workingMemory, context, right );
}
public Degree matchCachedRight( InternalWorkingMemory workingMemory, VariableRestriction.VariableContextEntry context, InternalFactHandle left ) {
return ((ImperfectEvaluator) getEvaluator()).matchCachedRight( workingMemory, context, left );
}
}