[jboss-svn-commits] JBL Code SVN: r26666 - in labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools: degrees/operators and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu May 21 22:46:15 EDT 2009
Author: dsotty
Date: 2009-05-21 22:46:14 -0400 (Thu, 21 May 2009)
New Revision: 26666
Added:
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/base/evaluators/ImperfectAbstractEvaluatorDefinition.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/base/evaluators/ImperfectEvaluatorDefinition.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IDiscountOperator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IDiscountStrategy.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalDiscountStrategy.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalLukasImplicationOperator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleDiscountOperator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleDiscountStrategy.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleLukasImplication.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMaxMergeStrategy.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMinMergeStrategy.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/EqualsEvaluatorDefinition.java
Log:
Major update
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/base/evaluators/ImperfectAbstractEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/base/evaluators/ImperfectAbstractEvaluatorDefinition.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/base/evaluators/ImperfectAbstractEvaluatorDefinition.java 2009-05-22 02:46:14 UTC (rev 26666)
@@ -0,0 +1,89 @@
+package org.drools.base.evaluators;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.base.ValueType;
+import org.drools.base.evaluators.EvaluatorDefinition.Target;
+import org.drools.spi.Evaluator;
+
+
+public abstract class ImperfectAbstractEvaluatorDefinition implements
+ ImperfectEvaluatorDefinition {
+
+
+ protected Map<String, Evaluator> cache = Collections.emptyMap();
+
+
+
+
+ public Evaluator getEvaluator(ValueType type, String operatorId,
+ boolean isNegated, String parameterText) {
+ return getEvaluator(type, operatorId, isNegated, parameterText, Target.BOTH, Target.BOTH);
+ }
+
+
+ public abstract Evaluator getEvaluator(ValueType type, String operatorId,
+ boolean isNegated, String parameterText, Target leftTarget,
+ Target rightTarget);
+
+
+ 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,"");
+ }
+
+ /**
+ *
+ *
+ */
+ public boolean isNegatable() {
+ return true;
+ }
+
+
+ public boolean operatesOnFactHandles() {
+ return true;
+ }
+
+ public boolean supportsType(ValueType type) {
+ return true;
+ }
+
+
+ public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ cache = (Map<String, Evaluator>) in.readObject();
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException {
+ out.writeObject(cache);
+ }
+
+ public Target getTarget() {
+ return Target.BOTH;
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/base/evaluators/ImperfectEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/base/evaluators/ImperfectEvaluatorDefinition.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/base/evaluators/ImperfectEvaluatorDefinition.java 2009-05-22 02:46:14 UTC (rev 26666)
@@ -0,0 +1,23 @@
+/**
+ *
+ */
+package org.drools.base.evaluators;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.rule.VariableRestriction.VariableContextEntry;
+import org.drools.spi.FieldValue;
+import org.drools.spi.InternalReadAccessor;
+
+
+
+/**
+ * @author davide
+ *
+ */
+public interface ImperfectEvaluatorDefinition
+ extends EvaluatorDefinition {
+
+
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IDiscountOperator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IDiscountOperator.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IDiscountOperator.java 2009-05-22 02:46:14 UTC (rev 26666)
@@ -0,0 +1,9 @@
+package org.drools.degrees.operators;
+
+import org.drools.degrees.IDegree;
+
+public interface IDiscountOperator extends IDegreeCombiner {
+
+ public IDegree discount(IDegree arg, float strength);
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IDiscountStrategy.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IDiscountStrategy.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IDiscountStrategy.java 2009-05-22 02:46:14 UTC (rev 26666)
@@ -0,0 +1,10 @@
+package org.drools.degrees.operators;
+
+import org.drools.degrees.IDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+
+public interface IDiscountStrategy {
+
+ public IDegree[] discount(IDegree[] args, boolean[] flags, IDegreeFactory factory);
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalDiscountStrategy.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalDiscountStrategy.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalDiscountStrategy.java 2009-05-22 02:46:14 UTC (rev 26666)
@@ -0,0 +1,44 @@
+package org.drools.degrees.operators.intervals;
+
+import org.drools.degrees.IDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.degrees.operators.IDiscountOperator;
+import org.drools.degrees.operators.IDiscountStrategy;
+
+public class IntervalDiscountStrategy implements IDiscountStrategy {
+
+ private IDiscountOperator discOp;
+
+ public IntervalDiscountStrategy(IDiscountOperator discountOperator) {
+ discOp = discountOperator;
+ }
+
+ public IDegree[] discount(IDegree[] args, boolean[] flags, IDegreeFactory factory) {
+ float confMax = 0;
+
+ IDegree[] ans = new IDegree[args.length];
+
+ for (int j = 0; j < args.length; j++) {
+ if (flags[j])
+ confMax = Math.max(confMax, args[j].getConfidence(factory.isClosedWorldAssumption()));
+ }
+
+ for (int j = 0; j < args.length; j++) {
+ //float weak = Math.max(0 , confMax - args[j].getConfidence());
+
+ float strength;
+ float c0 = args[j].getConfidence(factory.isClosedWorldAssumption());
+ if (flags[j]) {
+ //weaken weaker defeaters
+ strength = 1 - (confMax - c0);
+ } else {
+ //weaken the non-killers
+ strength = 1 - confMax;
+ }
+
+ ans[j] = discOp.discount(args[j], strength);
+ }
+ return ans;
+ }
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalLukasImplicationOperator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalLukasImplicationOperator.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalLukasImplicationOperator.java 2009-05-22 02:46:14 UTC (rev 26666)
@@ -0,0 +1,51 @@
+package org.drools.degrees.operators.intervals;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.drools.degrees.IDegree;
+import org.drools.degrees.IntervalDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.degrees.factory.IntervalDegreeFactory;
+import org.drools.degrees.operators.IDegreeCombiner;
+
+public class IntervalLukasImplicationOperator implements IDegreeCombiner {
+
+
+
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
+ if (args == null || args.length < 2)
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
+ float low = 0;
+ float upp = 0;
+
+ IntervalDegree prem = (IntervalDegree) args[0];
+ IntervalDegree conc = (IntervalDegree) args[1];
+
+
+ low = Math.min(1, 1 - prem.getUpp() + conc.getLow());
+ upp = Math.min(1, 1 - prem.getLow() + conc.getUpp());
+ return new IntervalDegree(low, upp);
+ }
+
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
+ if (args == null || args.size() == 0)
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
+ float low = 0;
+ float upp = 0;
+
+ Iterator<? extends IDegree> iter = args.iterator();
+ IntervalDegree prem = (IntervalDegree) iter.next();
+ IntervalDegree conc = (IntervalDegree) iter.next();
+
+
+ low = Math.min(1, 1 - prem.getUpp() + conc.getLow());
+ upp = Math.min(1, 1 - prem.getLow() + conc.getUpp());
+ return new IntervalDegree(low, upp);
+ }
+
+ public String getName() {
+ return "i_ximp";
+ }
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleDiscountOperator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleDiscountOperator.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleDiscountOperator.java 2009-05-22 02:46:14 UTC (rev 26666)
@@ -0,0 +1,41 @@
+package org.drools.degrees.operators.simple;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.drools.degrees.IDegree;
+import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.degrees.operators.IDiscountOperator;
+
+public class SimpleDiscountOperator implements IDiscountOperator {
+
+
+ private SimpleDegree unk;
+
+ public SimpleDiscountOperator(SimpleDegree unk) {
+ this.unk = unk;
+ }
+
+ public IDegree discount(IDegree source, float strength) {
+ float val = (1-strength)*unk.getValue() + strength*source.getDegree().getValue();
+ return new SimpleDegree(val);
+ }
+
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
+ return discount(args[0], args[1].getDegree().getValue());
+ }
+
+ public IDegree eval(Collection<? extends IDegree> args,
+ IDegreeFactory factory) {
+ Iterator<? extends IDegree> iter = args.iterator();
+ IDegree arg = iter.next();
+ IDegree wgt = iter.next();
+ return discount(arg, wgt.getDegree().getValue());
+ }
+
+ public String getName() {
+ return "disc";
+ }
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleDiscountStrategy.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleDiscountStrategy.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleDiscountStrategy.java 2009-05-22 02:46:14 UTC (rev 26666)
@@ -0,0 +1,45 @@
+package org.drools.degrees.operators.simple;
+
+import org.drools.degrees.IDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.degrees.operators.IDegreeCombiner;
+import org.drools.degrees.operators.IDiscountOperator;
+import org.drools.degrees.operators.IDiscountStrategy;
+
+public class SimpleDiscountStrategy implements IDiscountStrategy {
+
+ private IDiscountOperator discOp;
+
+ public SimpleDiscountStrategy(IDiscountOperator discountOperator) {
+ discOp = discountOperator;
+ }
+
+ public IDegree[] discount(IDegree[] args, boolean[] flags, IDegreeFactory factory) {
+ float confMax = 0;
+
+ IDegree[] ans = new IDegree[args.length];
+
+ for (int j = 0; j < args.length; j++) {
+ if (flags[j])
+ confMax = Math.max(confMax, args[j].getConfidence(factory.isClosedWorldAssumption()));
+ }
+
+ for (int j = 0; j < args.length; j++) {
+ //float weak = Math.max(0 , confMax - args[j].getConfidence());
+
+ float strength;
+ float c0 = args[j].getConfidence(factory.isClosedWorldAssumption());
+ if (flags[j]) {
+ //weaken weaker defeaters
+ strength = 1 - (confMax - c0);
+ } else {
+ //weaken the non-killers
+ strength = 1 - confMax;
+ }
+
+ ans[j] = discOp.discount(args[j], strength);
+ }
+ return ans;
+ }
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleLukasImplication.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleLukasImplication.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleLukasImplication.java 2009-05-22 02:46:14 UTC (rev 26666)
@@ -0,0 +1,40 @@
+package org.drools.degrees.operators.simple;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.drools.degrees.IDegree;
+import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.degrees.factory.SimpleDegreeFactory;
+import org.drools.degrees.operators.IDegreeCombiner;
+
+
+public class SimpleLukasImplication implements IDegreeCombiner {
+
+
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
+ if (args == null || args.length < 2)
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
+ float ans = 1 - args[0].getDegree().getValue() + args[1].getDegree().getValue();
+
+
+ return new SimpleDegree(Math.min(1,ans));
+ }
+
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
+ if (args == null || args.size() < 2)
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
+ Iterator<? extends IDegree> iter = args.iterator();
+ float ans = 1 - iter.next().getDegree().getValue() + iter.next().getDegree().getValue();
+
+
+ return new SimpleDegree(Math.min(1,ans));
+
+ }
+
+ public String getName() {
+ return "lukImp";
+ }
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMaxMergeStrategy.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMaxMergeStrategy.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMaxMergeStrategy.java 2009-05-22 02:46:14 UTC (rev 26666)
@@ -0,0 +1,54 @@
+package org.drools.degrees.operators.simple;
+
+import java.util.Collection;
+
+import org.drools.degrees.IDegree;
+import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.degrees.factory.SimpleDegreeFactory;
+import org.drools.degrees.operators.IDiscountStrategy;
+import org.drools.degrees.operators.IMergeStrategy;
+import org.drools.degrees.operators.INullHandlingStrategy;
+
+public class SimpleMaxMergeStrategy implements IMergeStrategy {
+
+ public IDegree eval(IDegree[] degrees, boolean[] kFlags, INullHandlingStrategy nullStrat, IDegreeFactory factory) {
+ IDegree[] args = new IDegree[degrees.length];
+ if (factory == null) {
+ factory = new SimpleDegreeFactory();
+ factory.setClosedWorldAssumption(true);
+ }
+
+ for (int j = 0; j < degrees.length; j++)
+ args[j] = degrees[j] == null ? nullStrat.convertNull(factory) : degrees[j];
+
+ if (kFlags != null) {
+ IDiscountStrategy discountStrat = factory.getDiscountStrategy();
+ args = discountStrat.discount(args, kFlags,factory);
+ }
+
+
+ float val = factory.Unknown().getDegree().getValue();
+ for (IDegree deg : args) {
+ val = Math.max(val,deg.getDegree().getValue());
+ }
+
+
+
+ return new SimpleDegree(val);
+ }
+
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
+ return eval(args, null, factory.getNullHandlingStrategy(),factory);
+ }
+
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public String getName() {
+ return "max";
+ }
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMinMergeStrategy.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMinMergeStrategy.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMinMergeStrategy.java 2009-05-22 02:46:14 UTC (rev 26666)
@@ -0,0 +1,54 @@
+package org.drools.degrees.operators.simple;
+
+import java.util.Collection;
+
+import org.drools.degrees.IDegree;
+import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.degrees.factory.SimpleDegreeFactory;
+import org.drools.degrees.operators.IDiscountStrategy;
+import org.drools.degrees.operators.IMergeStrategy;
+import org.drools.degrees.operators.INullHandlingStrategy;
+
+public class SimpleMinMergeStrategy implements IMergeStrategy {
+
+ public IDegree eval(IDegree[] degrees, boolean[] kFlags, INullHandlingStrategy nullStrat, IDegreeFactory factory) {
+ IDegree[] args = new IDegree[degrees.length];
+
+ if (factory == null) {
+ factory = new SimpleDegreeFactory();
+ factory.setClosedWorldAssumption(false);
+ }
+
+
+ for (int j = 0; j < degrees.length; j++)
+ args[j] = degrees[j] == null ? nullStrat.convertNull(factory) : degrees[j];
+
+ if (kFlags != null) {
+ IDiscountStrategy discountStrat = factory.getDiscountStrategy();
+ args = discountStrat.discount(args, kFlags,factory);
+ }
+
+
+ float val = factory.Unknown().getDegree().getValue();
+ for (IDegree deg : args) {
+ val = Math.min(val,deg.getDegree().getValue());
+ }
+
+ return new SimpleDegree(val);
+ }
+
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
+ return eval(args, null, factory.getNullHandlingStrategy(),factory);
+ }
+
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public String getName() {
+ return "max";
+ }
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/EqualsEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/EqualsEvaluatorDefinition.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/EqualsEvaluatorDefinition.java 2009-05-22 02:46:14 UTC (rev 26666)
@@ -0,0 +1,122 @@
+package org.drools.fuzzy.evaluators;
+
+
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.WorkingMemory;
+import org.drools.base.BaseEvaluator;
+import org.drools.base.BaseImperfectEvaluator;
+import org.drools.base.ValueType;
+import org.drools.base.evaluators.ImperfectAbstractEvaluatorDefinition;
+import org.drools.base.evaluators.ImperfectEvaluatorDefinition;
+import org.drools.base.evaluators.Operator;
+import org.drools.base.evaluators.EvaluatorDefinition.Target;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.degrees.IDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
+import org.drools.rule.VariableRestriction.VariableContextEntry;
+import org.drools.spi.Evaluator;
+import org.drools.spi.FieldValue;
+import org.drools.spi.InternalReadAccessor;
+
+
+
+
+
+
+
+/**
+ *
+ * @author sotty
+
+ *
+ */
+public class EqualsEvaluatorDefinition
+ extends ImperfectAbstractEvaluatorDefinition {
+
+
+
+
+
+
+
+
+
+
+ public static final Operator EQUALS = Operator.addOperatorToRegistry( "equals",
+ false );
+
+ private static final String[] SUPPORTED_IDS = {EQUALS.getOperatorString()};
+
+
+ public Evaluator getEvaluator(ValueType type, String operatorId,
+ boolean isNegated, String parameterText, Target left, Target right) {
+
+ if ( this.cache == Collections.EMPTY_MAP ) {
+ this.cache = new HashMap<String, Evaluator>();
+ }
+ String key = isNegated + ":" + parameterText;
+ Evaluator eval = this.cache.get( key );
+ if ( eval == null ) {
+ eval = new EqualsEvaluator( type,
+ isNegated,
+ parameterText );
+ this.cache.put( key,
+ eval );
+ }
+ return eval;
+
+ }
+
+
+
+ /**
+ * Operator is known as "equals"
+ */
+ public String[] getEvaluatorIds() {
+ return SUPPORTED_IDS;
+ }
+
+
+
+
+
+
+
+
+
+
+ public class EqualsEvaluator extends BaseImperfectEvaluator {
+
+
+ public EqualsEvaluator(ValueType type, boolean isNegated,
+ String parameterText) {
+ super(type, EqualsEvaluatorDefinition.EQUALS, parameterText);
+ }
+
+ @Override
+ protected IDegree eval(Object left, Object right, IDegreeFactory factory) {
+ if (left == null || right == null)
+ return factory.Unknown();
+ return factory.fromBoolean(left.equals(right));
+ }
+
+
+ }
+
+
+
+
+
+
+
+
+}
More information about the jboss-svn-commits
mailing list