[jboss-svn-commits] JBL Code SVN: r25406 - in labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools: base/evaluators and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Feb 24 09:44:43 EST 2009


Author: dsotty
Date: 2009-02-24 09:44:43 -0500 (Tue, 24 Feb 2009)
New Revision: 25406

Added:
   labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/base/BaseUncertainEvaluator.java
   labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/base/evaluators/IUncertainUnaryEvaluatorDefinition.java
   labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/common/IUncertainInternalFactHandle.java
   labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/common/UncertainFactHandle.java
   labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/reteoo/IFactSetTuple.java
   labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/reteoo/UncertainAggregateRightTuple.java
Log:
updates

Added: labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/base/BaseUncertainEvaluator.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/base/BaseUncertainEvaluator.java	                        (rev 0)
+++ labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/base/BaseUncertainEvaluator.java	2009-02-24 14:44:43 UTC (rev 25406)
@@ -0,0 +1,83 @@
+/**
+ * 
+ */
+package org.drools.base;
+
+import org.drools.IUncertainRuleBase;
+import org.drools.RuntimeDroolsException;
+import org.drools.WorkingMemory;
+import org.drools.base.evaluators.Operator;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.rule.VariableRestriction.VariableContextEntry;
+import org.drools.spi.FieldValue;
+import org.drools.spi.IUncertainEvaluator;
+import org.drools.spi.InternalReadAccessor;
+
+import uncertainty.factory.IDegreeFactory;
+import uncertainty.truthvals.IUncertainDegree;
+
+/**
+ * BaseUncertainEvaluator implements the uncertain evaluators
+ * by calling the crisp ones and then converting the boolean
+ * result into the used truth degree
+ * 
+ * @author sotty
+ *
+ */
+public abstract class BaseUncertainEvaluator extends BaseEvaluator implements
+		IUncertainEvaluator {
+
+	
+	public BaseUncertainEvaluator(final ValueType type, final Operator operator) {
+		super(type,operator);
+	}
+	
+	
+	private IDegreeFactory getTruthFactory(WorkingMemory workingMemory) {
+		IUncertainRuleBase irb = (IUncertainRuleBase) workingMemory.getRuleBase();
+		if (irb == null) 
+			throw new RuntimeDroolsException("Abstract BaseUncertainEvaluator : trying to use uncertain evaluators with crisp rule base");
+		return irb.getTruthFactory();
+	}
+	
+	
+	/* (non-Javadoc)
+	 * @see org.drools.spi.IUncertainEvaluator#evaluateUncertain(org.drools.common.InternalWorkingMemory, org.drools.spi.InternalReadAccessor, java.lang.Object, org.drools.spi.FieldValue)
+	 */
+	public IUncertainDegree evaluateUncertain(
+			InternalWorkingMemory workingMemory,
+			InternalReadAccessor extractor, Object object1, FieldValue value) {		
+		return getTruthFactory(workingMemory).fromBoolean(this.evaluate(workingMemory, extractor, object1, value));
+	}
+
+	/* (non-Javadoc)
+	 * @see org.drools.spi.IUncertainEvaluator#evaluateUncertain(org.drools.common.InternalWorkingMemory, org.drools.spi.InternalReadAccessor, java.lang.Object, org.drools.spi.InternalReadAccessor, java.lang.Object)
+	 */
+	public IUncertainDegree evaluateUncertain(
+			InternalWorkingMemory workingMemory,
+			InternalReadAccessor leftExtractor, Object left,
+			InternalReadAccessor rightExtractor, Object right) {
+		return getTruthFactory(workingMemory).fromBoolean(this.evaluate(workingMemory,leftExtractor,left,rightExtractor,right));
+	}
+
+	/* (non-Javadoc)
+	 * @see org.drools.spi.IUncertainEvaluator#evaluateUncertainCachedLeft(org.drools.common.InternalWorkingMemory, org.drools.rule.VariableRestriction.VariableContextEntry, java.lang.Object)
+	 */
+	public IUncertainDegree evaluateUncertainCachedLeft(
+			InternalWorkingMemory workingMemory, VariableContextEntry context,
+			Object object1) {
+		return getTruthFactory(workingMemory).fromBoolean(this.evaluateCachedLeft(workingMemory, context, object1));
+	}
+
+	/* (non-Javadoc)
+	 * @see org.drools.spi.IUncertainEvaluator#evaluateUncertainCachedRight(org.drools.common.InternalWorkingMemory, org.drools.rule.VariableRestriction.VariableContextEntry, java.lang.Object)
+	 */
+	public IUncertainDegree evaluateUncertainCachedRight(
+			InternalWorkingMemory workingMemory, VariableContextEntry context,
+			Object object2) {
+		return getTruthFactory(workingMemory).fromBoolean(this.evaluateCachedRight(workingMemory, context, object2));
+	}
+
+	
+
+}

Added: labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/base/evaluators/IUncertainUnaryEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/base/evaluators/IUncertainUnaryEvaluatorDefinition.java	                        (rev 0)
+++ labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/base/evaluators/IUncertainUnaryEvaluatorDefinition.java	2009-02-24 14:44:43 UTC (rev 25406)
@@ -0,0 +1,22 @@
+/**
+ * 
+ */
+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;
+
+import uncertainty.truthvals.IUncertainDegree;
+
+/**
+ * @author davide
+ *
+ */
+public interface IUncertainUnaryEvaluatorDefinition extends EvaluatorDefinition {
+	
+	
+
+}

Added: labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/common/IUncertainInternalFactHandle.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/common/IUncertainInternalFactHandle.java	                        (rev 0)
+++ labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/common/IUncertainInternalFactHandle.java	2009-02-24 14:44:43 UTC (rev 25406)
@@ -0,0 +1,35 @@
+/**
+ * 
+ */
+package org.drools.common;
+
+import java.util.Hashtable;
+
+import org.drools.FactHandle;
+import org.drools.rule.ConstraintSignature;
+import org.drools.spi.Constraint;
+
+import uncertainty.factory.IDegreeFactory;
+import uncertainty.truthvals.IUncertainDegree;
+
+/**
+ * @author davide
+ *
+ */
+public interface IUncertainInternalFactHandle extends InternalFactHandle {
+
+	
+		
+	public void setPriors(Hashtable<ConstraintSignature, IUncertainDegree> priors);
+	public void setPrior(ConstraintSignature constr, IUncertainDegree prior);
+	
+	public boolean mergePriors(Hashtable<ConstraintSignature, IUncertainDegree> priors, IDegreeFactory factory);
+
+	public Hashtable<ConstraintSignature, IUncertainDegree> getPriors();
+	
+	
+	public boolean isOverruling();
+	
+	public void setOverruling(boolean flag);
+	
+}

Added: labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/common/UncertainFactHandle.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/common/UncertainFactHandle.java	                        (rev 0)
+++ labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/common/UncertainFactHandle.java	2009-02-24 14:44:43 UTC (rev 25406)
@@ -0,0 +1,108 @@
+/**
+ * 
+ */
+package org.drools.common;
+
+import java.util.Hashtable;
+
+import org.drools.rule.ConstraintSignature;
+import org.drools.spi.Constraint;
+
+import uncertainty.factory.IDegreeFactory;
+import uncertainty.truthvals.IUncertainDegree;
+
+/**
+ * @author sotty
+ *
+ */
+public class UncertainFactHandle extends DefaultFactHandle implements
+		IUncertainInternalFactHandle {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 500L;
+	
+	
+	private Hashtable<ConstraintSignature, IUncertainDegree> priors;
+	private boolean overruling;
+	
+	
+	public boolean isOverruling() {
+		return overruling;
+	}
+	
+	public void setOverruling(boolean flag) {
+		overruling = flag;
+	}
+	
+
+	public UncertainFactHandle(final int id,
+            final Object object,
+            Hashtable<ConstraintSignature,IUncertainDegree> priors) {
+		super(id,object);
+		setPriors(priors);
+}
+	
+	
+	public void setPriors(Hashtable<ConstraintSignature, IUncertainDegree> prems) {
+		priors = prems;		
+	}
+	
+	
+	public void setPrior(ConstraintSignature constr, IUncertainDegree prior) {
+		priors.put(constr, prior);
+	}
+	
+	public Hashtable<ConstraintSignature, IUncertainDegree> getPriors() {
+		return priors;
+	}
+
+
+	public boolean mergePriors(Hashtable<ConstraintSignature, IUncertainDegree> priors, IDegreeFactory factory) {
+		Hashtable<ConstraintSignature, IUncertainDegree> avail = getPriors();
+		
+		if (avail == null) {
+			this.setPriors(priors);
+			return true;
+		}
+		
+		boolean infoChanged = false;
+		for (ConstraintSignature prior : priors.keySet()) {
+			boolean found = false;
+			for (ConstraintSignature field : avail.keySet()) {
+				if (prior.equals(field)) {
+					IUncertainDegree old = avail.get(field);
+					IUncertainDegree nju = priors.get(prior);
+					IUncertainDegree val = merge(old,nju, factory);
+					if (! old.equals(val))
+						infoChanged = true;
+					avail.put(field, val);
+					found = true;
+				}			
+			}
+			if (! found) {
+				avail.put(prior, priors.get(prior));
+				infoChanged = true;
+			}
+		}	
+			
+		return infoChanged;
+			//TODO : Cannot use hashcode with wildcard...
+//			if (! avail.containsKey(field)) {				
+//				avail.put(field, priors.get(field));
+//			} else {
+//				
+//				IUncertainDegree val = merge(avail.get(field),priors.get(field));
+//				
+//				avail.put(field, val);
+//			}
+		
+		
+	}
+	
+	
+	protected IUncertainDegree merge(IUncertainDegree v1, IUncertainDegree v2, IDegreeFactory factory) {
+		return factory.getAggregator().eval(new IUncertainDegree[] {v1, v2});
+	}
+}

Added: labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/reteoo/IFactSetTuple.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/reteoo/IFactSetTuple.java	                        (rev 0)
+++ labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/reteoo/IFactSetTuple.java	2009-02-24 14:44:43 UTC (rev 25406)
@@ -0,0 +1,5 @@
+package org.drools.reteoo;
+
+public interface IFactSetTuple {
+
+}

Added: labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/reteoo/UncertainAggregateRightTuple.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/reteoo/UncertainAggregateRightTuple.java	                        (rev 0)
+++ labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/reteoo/UncertainAggregateRightTuple.java	2009-02-24 14:44:43 UTC (rev 25406)
@@ -0,0 +1,28 @@
+package org.drools.reteoo;
+
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.Set;
+import java.util.Vector;
+
+import org.drools.FactHandle;
+import org.drools.common.InternalFactHandle;
+
+import uncertainty.truthvals.IUncertainDegree;
+
+public class UncertainAggregateRightTuple extends UncertainRightTuple {
+
+	
+	
+	public UncertainAggregateRightTuple(Set<RightTuple> supportSet,
+			IUncertainDegree existDegree, RightTupleSink sink) {
+		
+		super(supportSet.iterator().next().getFactHandle(),existDegree,sink);
+
+	}
+	
+	
+
+	
+	
+}




More information about the jboss-svn-commits mailing list