[jboss-svn-commits] JBL Code SVN: r27019 - in labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools: degrees/operators/simple and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jun 19 01:29:25 EDT 2009


Author: dsotty
Date: 2009-06-19 01:29:24 -0400 (Fri, 19 Jun 2009)
New Revision: 27019

Modified:
   labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/AbstractOperator.java
   labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleAverage.java
   labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/Droobservable.java
   labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java
   labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/Rete.java
   labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/PatternBuilder.java
Log:


Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/AbstractOperator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/AbstractOperator.java	2009-06-19 05:28:57 UTC (rev 27018)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/AbstractOperator.java	2009-06-19 05:29:24 UTC (rev 27019)
@@ -34,7 +34,7 @@
 			
 				int j = 0;
 				for (Evaluation eval : combo.getOperands()) {
-					args[j++] = eval == null ? factory.getNullHandlingStrategy().convertNull(factory) : eval.getDegree();		
+					args[j++] = eval.getDegree() == null ? factory.getNullHandlingStrategy().convertNull(factory) : eval.getDegree();		
 				}
 			}
 			

Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleAverage.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleAverage.java	2009-06-19 05:28:57 UTC (rev 27018)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleAverage.java	2009-06-19 05:29:24 UTC (rev 27019)
@@ -1,6 +1,7 @@
 package org.drools.degrees.operators.simple;
 
 import java.util.Collection;
+import java.util.Iterator;
 
 import org.drools.degrees.IDegree;
 import org.drools.degrees.SimpleDegree;
@@ -8,6 +9,8 @@
 import org.drools.degrees.factory.SimpleDegreeFactory;
 import org.drools.degrees.operators.AbstractOperator;
 import org.drools.degrees.operators.IDegreeCombiner;
+import org.drools.reteoo.CompositeEvaluation;
+import org.drools.reteoo.Evaluation;
 
 public final class SimpleAverage extends AbstractOperator  implements IDegreeCombiner {
 
@@ -30,7 +33,40 @@
 
 	
 	
+	public IDegree eval(Evaluation evaluation, IDegreeFactory factory) {
+		double num = 0;
+		double wgt = 0;
+		if (evaluation instanceof CompositeEvaluation) {
+			CompositeEvaluation combo = (CompositeEvaluation) evaluation;
+
+			
+			if (combo.getOperands() != null && combo.getOperands().size() > 0) {				
+				
+				
+				for (Evaluation eval : combo.getOperands()) {
+					if (eval != null) {
+						num += eval.getDegree().getValue();
+						
+							Iterator<Evaluation> iter = ((CompositeEvaluation) eval).getOperands().iterator();
+							Evaluation discounter = iter.next();
+							iter = ((CompositeEvaluation) discounter).getOperands().iterator();
+								iter.next(); //discounted
+						wgt += iter.next().getDegree().getValue();	//weight
+					}
+							
+				}
+			}
+			
+			return wgt == 0 ? factory.Unknown() : factory.buildDegree(num/wgt); 
+		} else {
+			return evaluation.getDegree();
+		}
+		
+		
+	}
+
 	
+	
 	/*
 	public IDegree eval(IDegree[] args) {
 		float acc = 0;
@@ -58,10 +94,7 @@
 	}
 */
 
-	public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
-		// TODO Auto-generated method stub
-		return null;
-	}
+	
 
 	public String getName() {
 		return "avg";
@@ -69,4 +102,10 @@
 	
 	
 	
+	
+	public boolean isTruthFunctional() {
+		return false;
+	}
+	
+	
 }

Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/Droobservable.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/Droobservable.java	2009-06-19 05:28:57 UTC (rev 27018)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/Droobservable.java	2009-06-19 05:29:24 UTC (rev 27019)
@@ -1,5 +1,6 @@
 package org.drools.reteoo;
 
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.Observable;
 import java.util.Observer;
@@ -37,7 +38,8 @@
 	public void notifyObservers(Object arg) {
 		if (isChanged()) {
 			this.changd = false;
-			for (Observer o : observers)
+			Vector<Observer> observerz = new Vector<Observer>(observers);
+			for (Observer o : observerz)
 				o.update(this, arg);
 				
 		}

Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java	2009-06-19 05:28:57 UTC (rev 27018)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java	2009-06-19 05:29:24 UTC (rev 27019)
@@ -824,7 +824,7 @@
 		System.err.println(this.getClass()+" set label "+ label);	
 	}
 
-	/**
+	/** 
 	 * @return the label
 	 */
 	public String getLabel() {

Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/Rete.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/Rete.java	2009-06-19 05:28:57 UTC (rev 27018)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/Rete.java	2009-06-19 05:29:24 UTC (rev 27019)
@@ -286,7 +286,7 @@
 		else {
 			IGammaNode prevNode = constraintIndex.get(key); 
 			if (! node.equals(prevNode))
-				System.out.println("WARNING: Found duplicate key: "+key+" this may be a know issue");
+				System.err.println("WARNING: Found duplicate key: "+key+" this may be a know issue");
 		}
 	}
 	

Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/PatternBuilder.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/PatternBuilder.java	2009-06-19 05:28:57 UTC (rev 27018)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/PatternBuilder.java	2009-06-19 05:29:24 UTC (rev 27019)
@@ -305,12 +305,21 @@
         context.setObjectSource( returnedOtn  );
         
         //Notice that == is called deliberately
-        if (returnedOtn == otn) {   
+        if (returnedOtn == otn) {
+        	
+        	if (pattern.getLabel() != null)
+        		otn.setLabel(pattern.getLabel());
+        	
+        	
         	//this is the first time that a specific OTN is required, so it must be configured.
         	otn.setImperfectStructures(context);
+        	
+
         }
         
+        
         if (pattern.getPrior() != null || pattern.getParams() != null) {
+        	        	
         	
         	RecordHackerNode recordHacker = new RecordHackerNode(context, pattern.getPrior(),pattern.getParams(), pattern.isCutter());
         	
@@ -319,8 +328,7 @@
         }
 //        
 //
-//        	if (pattern.getLabel() != null)
-//        		otn.setLabel(pattern.getLabel());
+        	
 //        	
 //        	if (pattern.getPrior() != null)
 //        		otn.setPrior(pattern.getPrior());




More information about the jboss-svn-commits mailing list