[jboss-svn-commits] JBL Code SVN: r15113 - in labs/jbossrules/trunk/experimental/drools-analytics: src/main/java/org/drools/analytics and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Sep 14 01:42:38 EDT 2007


Author: Rikkola
Date: 2007-09-14 01:42:37 -0400 (Fri, 14 Sep 2007)
New Revision: 15113

Modified:
   labs/jbossrules/trunk/experimental/drools-analytics/.classpath
   labs/jbossrules/trunk/experimental/drools-analytics/.project
   labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/Analyzer.java
   labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/RuleLoader.java
   labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/Solvers.java
   labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsRule.java
   labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/Field.java
   labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/Pattern.java
   labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/PatternPossibility.java
   labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/Restriction.java
   labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/RulePossibility.java
   labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/Cause.java
   labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/Gap.java
   labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/MissingNumberPattern.java
   labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/Redundancy.java
   labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Patterns.drl
   labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Patterns.drl
   labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Possibilities.drl
   labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Restrictions.drl
   labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Rules.drl
Log:
Some component and redundancy fixes.

Modified: labs/jbossrules/trunk/experimental/drools-analytics/.classpath
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/.classpath	2007-09-14 05:19:53 UTC (rev 15112)
+++ labs/jbossrules/trunk/experimental/drools-analytics/.classpath	2007-09-14 05:42:37 UTC (rev 15113)
@@ -1,21 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-  <classpathentry kind="src" path="src/main/java"/>
-  <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
-  <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
-  <classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
-  <classpathentry kind="output" path="target/classes"/>
-  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-  <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar" sourcepath="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar" sourcepath="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
-  <classpathentry kind="var" path="M2_REPO/jexcelapi/jxl/2.4.2/jxl-2.4.2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar" sourcepath="M2_REPO/junit/junit/3.8.1/junit-3.8.1-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel14/1.2rc6/mvel14-1.2rc6.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0/antlr-runtime-3.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/drools/drools-decisiontables/4.0.2.SNAPSHOT/drools-decisiontables-4.0.2.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-decisiontables/4.0.2.SNAPSHOT/drools-decisiontables-4.0.2.SNAPSHOT-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/drools/drools-core/4.0.2.SNAPSHOT/drools-core-4.0.2.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-core/4.0.2.SNAPSHOT/drools-core-4.0.2.SNAPSHOT-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
-  <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.4.0/xercesImpl-2.4.0.jar" sourcepath="M2_REPO/xerces/xercesImpl/2.4.0/xercesImpl-2.4.0-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/drools/drools-compiler/4.0.2.SNAPSHOT/drools-compiler-4.0.2.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-compiler/4.0.2.SNAPSHOT/drools-compiler-4.0.2.SNAPSHOT-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.7/janino-2.5.7.jar"/>
-</classpath>
\ No newline at end of file
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry excluding="**/*.java" kind="src" output="target/test-classes" path="src/test/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar" sourcepath="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar" sourcepath="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
+	<classpathentry kind="var" path="M2_REPO/jexcelapi/jxl/2.4.2/jxl-2.4.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar" sourcepath="M2_REPO/junit/junit/3.8.1/junit-3.8.1-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/mvel/mvel14/1.2rc6/mvel14-1.2rc6.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0/antlr-runtime-3.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/drools/drools-decisiontables/4.0.2.SNAPSHOT/drools-decisiontables-4.0.2.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-decisiontables/4.0.2.SNAPSHOT/drools-decisiontables-4.0.2.SNAPSHOT-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/drools/drools-core/4.0.2.SNAPSHOT/drools-core-4.0.2.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-core/4.0.2.SNAPSHOT/drools-core-4.0.2.SNAPSHOT-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
+	<classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.4.0/xercesImpl-2.4.0.jar" sourcepath="M2_REPO/xerces/xercesImpl/2.4.0/xercesImpl-2.4.0-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/drools/drools-compiler/4.0.2.SNAPSHOT/drools-compiler-4.0.2.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-compiler/4.0.2.SNAPSHOT/drools-compiler-4.0.2.SNAPSHOT-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/janino/janino/2.5.7/janino-2.5.7.jar"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

Modified: labs/jbossrules/trunk/experimental/drools-analytics/.project
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/.project	2007-09-14 05:19:53 UTC (rev 15112)
+++ labs/jbossrules/trunk/experimental/drools-analytics/.project	2007-09-14 05:42:37 UTC (rev 15113)
@@ -1,13 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-  <name>drools-analytics</name>
-  <comment>A rule production system</comment>
-  <projects/>
-  <buildSpec>
-    <buildCommand>
-      <name>org.eclipse.jdt.core.javabuilder</name>
-    </buildCommand>
-  </buildSpec>
-  <natures>
-    <nature>org.eclipse.jdt.core.javanature</nature>
-  </natures>
-</projectDescription>
\ No newline at end of file
+	<name>drools-analytics</name>
+	<comment>A rule production system</comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>

Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/Analyzer.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/Analyzer.java	2007-09-14 05:19:53 UTC (rev 15112)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/Analyzer.java	2007-09-14 05:42:37 UTC (rev 15113)
@@ -99,7 +99,6 @@
 
 		Collection<Package> packages = RuleLoader.loadPackages();
 		for (Package pkg : packages) {
-
 			ruleBase.addPackage(pkg);
 		}
 

Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/RuleLoader.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/RuleLoader.java	2007-09-14 05:19:53 UTC (rev 15112)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/RuleLoader.java	2007-09-14 05:42:37 UTC (rev 15113)
@@ -52,17 +52,19 @@
 				.getResourceAsStream("rangeChecks/Patterns.drl")));
 		list.add(new InputStreamReader(RuleLoader.class
 				.getResourceAsStream("rangeChecks/Variables.drl")));
-		 list.add(new InputStreamReader(RuleLoader.class
-		 .getResourceAsStream("redundancy/Patterns.drl")));
-		 list.add(new InputStreamReader(RuleLoader.class
-		 .getResourceAsStream("redundancy/Possibilities.drl")));
-//		 list.add(new InputStreamReader(RuleLoader.class
-//		 .getResourceAsStream("redundancy/Restrictions.drl")));
-//		 list.add(new InputStreamReader(RuleLoader.class
-//		 .getResourceAsStream("redundancy/Rules.drl")));
-		list.add(new InputStreamReader(RuleLoader.class
-				.getResourceAsStream("reports/RangeCheckReports.drl")));
 
+		// list.add(new InputStreamReader(RuleLoader.class
+		// .getResourceAsStream("redundancy/Possibilities.drl")));
+		//
+		// list.add(new InputStreamReader(RuleLoader.class
+		// .getResourceAsStream("redundancy/Patterns.drl")));
+		// list.add(new InputStreamReader(RuleLoader.class
+		// .getResourceAsStream("redundancy/Restrictions.drl")));
+		// list.add(new InputStreamReader(RuleLoader.class
+		// .getResourceAsStream("redundancy/Rules.drl")));
+		// list.add(new InputStreamReader(RuleLoader.class
+		// .getResourceAsStream("reports/RangeCheckReports.drl")));
+
 		return list;
 	}
 }

Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/Solvers.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/Solvers.java	2007-09-14 05:19:53 UTC (rev 15112)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/Solvers.java	2007-09-14 05:42:37 UTC (rev 15113)
@@ -117,6 +117,7 @@
 			PatternPossibility possibility = new PatternPossibility();
 
 			possibility.setRuleId(ruleSolver.getRule().getId());
+			possibility.setRuleName(ruleSolver.getRule().getRuleName());
 			possibility.setPatternId(patternSolver.getPattern().getId());
 
 			for (AnalyticsComponent descr : list) {

Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsRule.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsRule.java	2007-09-14 05:19:53 UTC (rev 15112)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsRule.java	2007-09-14 05:42:37 UTC (rev 15113)
@@ -25,6 +25,10 @@
 		return AnalyticsComponentType.RULE;
 	}
 
+	public CauseType getCauseType() {
+		return Cause.CauseType.RULE;
+	}
+
 	public String getRuleAgendaGroup() {
 		return ruleAgendaGroup;
 	}

Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/Field.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/Field.java	2007-09-14 05:19:53 UTC (rev 15112)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/Field.java	2007-09-14 05:42:37 UTC (rev 15113)
@@ -30,6 +30,10 @@
 		return AnalyticsComponentType.FIELD;
 	}
 
+	public CauseType getCauseType() {
+		return Cause.CauseType.FIELD;
+	}
+
 	public String getName() {
 		return name;
 	}

Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/Pattern.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/Pattern.java	2007-09-14 05:19:53 UTC (rev 15112)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/Pattern.java	2007-09-14 05:42:37 UTC (rev 15113)
@@ -14,9 +14,9 @@
 
 	private int ruleId;
 	private int classId;
-	private AnalyticsComponentType sourceType;
-	private int sourceId;
-	
+	private AnalyticsComponentType sourceType = AnalyticsComponentType.NOTHING;
+	private int sourceId = -1;
+
 	private boolean isPatternNot = false;
 	private boolean isPatternExists = false;
 	private boolean isPatternForall = false;
@@ -30,6 +30,10 @@
 		return AnalyticsComponentType.PATTERN;
 	}
 
+	public CauseType getCauseType() {
+		return Cause.CauseType.PATTERN;
+	}
+
 	public boolean isPatternNot() {
 		return isPatternNot;
 	}
@@ -99,4 +103,9 @@
 
 		return clone;
 	}
+
+	@Override
+	public String toString() {
+		return "Pattern, id: " + id + " from rule '" + ruleName + "'";
+	}
 }

Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/PatternPossibility.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/PatternPossibility.java	2007-09-14 05:19:53 UTC (rev 15112)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/PatternPossibility.java	2007-09-14 05:42:37 UTC (rev 15113)
@@ -31,6 +31,10 @@
 		return AnalyticsComponentType.PATTERN_POSSIBILITY;
 	}
 
+	public CauseType getCauseType() {
+		return Cause.CauseType.POSSIBILITY;
+	}
+
 	public Set<Cause> getItems() {
 		return items;
 	}

Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/Restriction.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/Restriction.java	2007-09-14 05:19:53 UTC (rev 15112)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/Restriction.java	2007-09-14 05:42:37 UTC (rev 15113)
@@ -1,6 +1,7 @@
 package org.drools.analytics.components;
 
 import org.drools.analytics.result.Cause;
+import org.drools.analytics.result.Cause.CauseType;
 
 /**
  * 
@@ -31,6 +32,10 @@
 		return AnalyticsComponentType.RESTRICTION;
 	}
 
+	public CauseType getCauseType() {
+		return Cause.CauseType.RESTRICTION;
+	}
+
 	public abstract RestrictionType getRestrictionType();
 
 	public String getEvaluator() {

Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/RulePossibility.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/RulePossibility.java	2007-09-14 05:19:53 UTC (rev 15112)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/RulePossibility.java	2007-09-14 05:42:37 UTC (rev 15113)
@@ -31,6 +31,10 @@
 		return AnalyticsComponentType.RULE_POSSIBILITY;
 	}
 
+	public CauseType getCauseType() {
+		return Cause.CauseType.POSSIBILITY;
+	}
+
 	public Set<Cause> getItems() {
 		return items;
 	}
@@ -53,7 +57,7 @@
 
 	@Override
 	public String toString() {
-		return "RulePossibility from rule: " + ruleName
-				+ ", amount of items:" + items.size();
+		return "RulePossibility from rule: " + ruleName + ", amount of items:"
+				+ items.size();
 	}
 }

Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/Cause.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/Cause.java	2007-09-14 05:19:53 UTC (rev 15112)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/Cause.java	2007-09-14 05:42:37 UTC (rev 15113)
@@ -5,8 +5,19 @@
  * @author Toni Rikkola
  */
 public interface Cause {
-
+	public enum CauseType {
+		RULE,
+		FIELD,
+		GAP,
+		PATTERN,
+		RESTRICTION,
+		POSSIBILITY,
+		RANGE_CHECK_CAUSE
+	}
+	
 	public int getId();
 	
 	public String getRuleName();
+
+	public CauseType getCauseType();
 }

Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/Gap.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/Gap.java	2007-09-14 05:19:53 UTC (rev 15112)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/Gap.java	2007-09-14 05:42:37 UTC (rev 15113)
@@ -16,6 +16,11 @@
 	private RangeCheckCause cause;
 	private String firedRuleName;
 
+
+	public CauseType getCauseType() {
+		return Cause.CauseType.GAP;
+	}
+	
 	public Gap(Field field, RangeCheckCause cause, String firedRuleName) {
 		this.field = field;
 		this.cause = cause;

Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/MissingNumberPattern.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/MissingNumberPattern.java	2007-09-14 05:19:53 UTC (rev 15112)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/MissingNumberPattern.java	2007-09-14 05:42:37 UTC (rev 15113)
@@ -1,5 +1,6 @@
 package org.drools.analytics.result;
 
+
 /**
  * 
  * @author Toni Rikkola
@@ -14,6 +15,10 @@
 	private String evaluator;
 	private String value;
 
+	public CauseType getCauseType() {
+		return Cause.CauseType.RANGE_CHECK_CAUSE;
+	}
+
 	public MissingNumberPattern(int fieldId, String evaluator, String value) {
 		this.fieldId = fieldId;
 		this.evaluator = evaluator;

Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/Redundancy.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/Redundancy.java	2007-09-14 05:19:53 UTC (rev 15112)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/Redundancy.java	2007-09-14 05:42:37 UTC (rev 15113)
@@ -11,20 +11,23 @@
  */
 public class Redundancy {
 
-	public enum Type {
+	public enum RedundancyType {
 		WEAK, STRONG
 	}
 
-	private Type type = Type.WEAK; // By default the redundancy is weak.
+	private RedundancyType type = RedundancyType.WEAK; // By default the redundancy is weak.
+	private Cause.CauseType causeType; // left and right Cause are of the same type.
 	private Cause left;
 	private Cause right;
 
 	public Redundancy(Cause left, Cause right) {
+		this.causeType=left.getCauseType();
 		this.left = left;
 		this.right = right;
 	}
 
-	public Redundancy(Type type, Cause left, Cause right) {
+	public Redundancy(RedundancyType type, Cause left, Cause right) {
+		this.causeType=left.getCauseType();
 		this.type = type;
 		this.left = left;
 		this.right = right;
@@ -46,11 +49,11 @@
 		this.right = right;
 	}
 
-	public Type getType() {
+	public RedundancyType getType() {
 		return type;
 	}
 
-	public void setType(Type type) {
+	public void setType(RedundancyType type) {
 		this.type = type;
 	}
 
@@ -58,4 +61,8 @@
 	public String toString() {
 		return "Redundacy between: (" + left + ") and (" + right + ").";
 	}
+
+	public Cause.CauseType getCauseType() {
+		return causeType;
+	}
 }

Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Patterns.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Patterns.drl	2007-09-14 05:19:53 UTC (rev 15112)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Patterns.drl	2007-09-14 05:42:37 UTC (rev 15113)
@@ -52,9 +52,9 @@
 				)
 		)
 	then
-	List<Cause> list = new ArrayList<Cause>();
-	list.add(
-			new MissingNumberPattern( $f.getId(), "==", $validationResult.getValue().toString() ));
-	
-	result.add( new AnalysisWarning( $f.getRuleName(), $f + " is missing a number from pattern.", list ) );
+		List<Cause> list = new ArrayList<Cause>();
+		list.add(
+				new MissingNumberPattern( $f.getId(), "==", $validationResult.getValue().toString() ));
+		
+		result.add( new AnalysisWarning( $f.getRuleName(), $f + " is missing a number from pattern.", list ) );
 end

Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Patterns.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Patterns.drl	2007-09-14 05:19:53 UTC (rev 15112)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Patterns.drl	2007-09-14 05:42:37 UTC (rev 15113)
@@ -23,35 +23,78 @@
 	  		patternForall == $left.patternForall
 		)
 		
+		# Has possibilities, if the there is no possibilities, 
+		# then the Redundancy type is STRONG.
+		exists PatternPossibility( patternId == $left.id )
+		exists PatternPossibility( patternId == $right.id )
+		
 		# Check that there is not already a pair with these values.
 		not Redundancy( 
 			left == $left, 
 			right == $right 
 		)
+		not Redundancy( 
+			left == $right, 
+			right == $left
+		)
 	then
-		insert( new Redundancy( Redundancy.Type.WEAK, $left, $right ) );
+		insert( new Redundancy( Redundancy.RedundancyType.WEAK, $left, $right ) );
 end
 
+#
+# Checks for redundant pattern specifications when the patterns have no possibilities.
+#
+rule "Find redundant Patterns without restrictions"
+	when
+		# Check that Patterns $left and $right have redundant fields.
+		$left :Pattern()
+		$right :Pattern( 
+			id != $left.id, 
+	  		classId == $left.classId,
+	  		# TODO: In some cases the source might be redundant with different sources.
+	 		sourceType == $left.sourceType, 
+	  		sourceId == $left.sourceId,
+	  		patternNot == $left.patternNot,
+	  		patternExists == $left.patternExists,
+	  		patternForall == $left.patternForall
+		)
+		
+		# Not possibilities
+		not PatternPossibility( patternId == $left.id )
+		not PatternPossibility( patternId == $right.id )
+		
+		# Check that there is not already a pair with these values.
+		not Redundancy( 
+			left == $left, 
+			right == $right 
+		)
+		not Redundancy( 
+			left == $right, 
+			right == $left
+		)
+	then
+		insert( new Redundancy( Redundancy.RedundancyType.STRONG, $left, $right ) );
+end
 
 
 /*
 #
 # When two patterns and all theyr possibilities are redundant.
 #
-rule "Find redundant pattern"
+rule "Find subsumption between patterns"
 	when
-		$p1 :Pattern()
-		$p2 :Pattern( id != $p1.id )
+		# $p1 :Pattern()
+		# $p2 :Pattern( id != $p1.id )
 		
+		$patternRedundancy :Redundancy( 
+			type == Redundancy.RedundancyType.WEAK,
+			causeType == Cause.CauseType.PATTERN 
+		)
+		
 		$set1 :HashSet()
 			from collect(
-				PatternPossibility( patternId == $p1.id )
+				PartialRedundancy( patternId == $p1.id )
 			)
-
-		$set2 :HashSet()
-			from collect(
-				PatternPossibility( patternId == $p2.id )
-			)
 		
 		# Check that sizes are the same.
 		eval( $set1.size() == $set2.size() )

Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Possibilities.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Possibilities.drl	2007-09-14 05:19:53 UTC (rev 15112)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Possibilities.drl	2007-09-14 05:42:37 UTC (rev 15113)
@@ -3,39 +3,59 @@
 
 import org.drools.analytics.components.*;
 import org.drools.analytics.result.Redundancy;
+import org.drools.analytics.result.Redundancy.RedundancyType;
 import org.drools.analytics.result.PartialRedundancy;
 import org.drools.analytics.result.Subsumption;
+import org.drools.analytics.result.Cause;
+import org.drools.analytics.result.Cause.CauseType;
 
 import java.util.ArrayList;
 
-
 rule "Find part of redundant PatternPossibility combination"
 	when
-		# Restriction Redundancy.
-		$redundancy :Redundancy()
+		$patternRedundancy :Redundancy( 
+			type == Redundancy.RedundancyType.WEAK,
+			causeType == Cause.CauseType.PATTERN 
+		)
 		
-		# Check that patterns are redundant.
-		$p1 :Pattern()
-		$p2 :Pattern( id != $p1.id )
-		Redundancy( 
-			left == $p1, 
-			right == $p2 
+		$r1 :Restriction( eval( patternId == $patternRedundancy.getLeft().getId() ) )
+		$r2 :Restriction( eval( patternId == $patternRedundancy.getRight().getId() ) )
+
+		$restrictionRedundancy :Redundancy( 
+			(
+				left == $r1 
+					&&
+				right == $r2
+			) || (
+				left == $r2 
+					&&
+				right == $r1
+			)
 		)
 		
 		# Find two PatternPossibilities.
 		$pp1 :PatternPossibility( 
-			patternId == $p1.id, 
-			items contains $redundancy.left 
+			eval( patternId == $patternRedundancy.getLeft().getId() ),
+			items contains $r1 
 		)
 		$pp2 :PatternPossibility( 
-			patternId == $p2.id, 
-			items contains $redundancy.right 
+			eval( patternId == $patternRedundancy.getRight().getId() ),
+			items contains $r2 
 		)
+	
+		not PartialRedundancy(
+			left == $pp1,
+			right == $pp2
+		)
+		not PartialRedundancy(
+			left == $pp2, 
+			right == $pp1 
+		)
 	then
-		insert( new PartialRedundancy( $pp1, $pp2, $redundancy ) );
+		insert( new PartialRedundancy( $pp1, $pp2, $restrictionRedundancy ) );
 end
 
-
+/*
 rule "Find part of redundant RulePossibility combination"
 	when
 		# PatternPossibility Redundancy.
@@ -58,11 +78,29 @@
 			ruleId == $r2.id, 
 			items contains $redundancy.right 
 		)
-		# TODO: Not here.
+		
+		not PartialRedundancy(
+			left == $rp1,
+			right == $rp2
+		)
 	then
 		insert( new PartialRedundancy( $rp1, $rp2, $redundancy ) );
 end
+*/
 
+rule "new rule"
+	when
+		$pr :PartialRedundancy()
+		not PartialRedundancyCollection( 
+			items contains $pr 
+		)
+		
+		################################################
+		# XXX: Database!
+		################################################
+	then
+		insert( new PartialRedundancyCollection( $pr ) ); 
+end
 
 #
 # Handles both RulePossibilities and PatternPossibilities.
@@ -70,7 +108,10 @@
 rule "Find subsumptant Possibilities"
 	when
 		$p1 :Possibility()
-		$p2 :Possibility( id != $p1.id )
+		$p2 :Possibility( 
+			id != $p1.id,
+			amountOfItems >= $p1.amountOfItems
+		)
 		
 		not Subsumption( 
 				left == $p1, 
@@ -85,22 +126,26 @@
 				) 
 		)
 		
+		# XXX: What if there is an earlier collection of these, so its only a == comparison.
+		
 		# Collect all the partial redundancies.
-		$list :ArrayList()
-			from collect(
-				PartialRedundancy( 
-					left == $p1, 
-					right == $p2 
-				)
-			)
+		#$list :ArrayList()
+		#	from collect(
+		#		PartialRedundancy( 
+		#			left == $p1, 
+		#			right == $p2 
+		#		)
+		#	)
 			
 		# If there as much partial redundancies as there is items in $p1,
 		# then $p1 is subsumptant to $p2.
-		eval( $list.size() == $p1.getAmountOfItems() )
+		#eval( $list.size() == $p1.getAmountOfItems() )
 	then
-		insert( new Subsumption( $p1, $p2 ) );
+		System.out.println( "Find subsumptant Possibilities" );
+		#insert( new Subsumption( $p1, $p2 ) );
 end
 
+/*
 #
 # If two possibilities are subsumptant to each others, then they are redundant.
 # Since this tests only one possibility, the entire rule or pattern might not be redundant.
@@ -131,4 +176,5 @@
 		)
 	then
 		insert( new Redundancy( $p1, $p2 ) );
-end
\ No newline at end of file
+end
+*/
\ No newline at end of file

Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Restrictions.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Restrictions.drl	2007-09-14 05:19:53 UTC (rev 15112)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Restrictions.drl	2007-09-14 05:42:37 UTC (rev 15113)
@@ -47,6 +47,10 @@
 			left == $left, 
 			right == $right 
 		)
+		not Redundancy(
+			left == $right, 
+			right == $left 
+		)
 		
 		# Check that these two variables point to the same object.
 		$v :Variable( id == $left.variableId )
@@ -56,7 +60,7 @@
 			objectId == $v.objectId
 		)
 	then
-		insert( new Redundancy( Redundancy.Type.STRONG, $left, $right ) );
+		insert( new Redundancy( Redundancy.RedundancyType.STRONG, $left, $right ) );
 end
 
 /*
@@ -158,6 +162,10 @@
 			left == $left, 
 			right == $right 
 		)
+		not Redundancy(
+			left == $right, 
+			right == $left 
+		)
 	then
-		insert( new Redundancy( Redundancy.Type.STRONG, $left, $right ) );
+		insert( new Redundancy( Redundancy.RedundancyType.STRONG, $left, $right ) );
 end

Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Rules.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Rules.drl	2007-09-14 05:19:53 UTC (rev 15112)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Rules.drl	2007-09-14 05:42:37 UTC (rev 15113)
@@ -25,7 +25,7 @@
 			right == $right 
 		)
 	then
-		insert( new Redundancy( Redundancy.Type.WEAK, $left, $right ) );
+		insert( new Redundancy( Redundancy.RedundancyType.WEAK, $left, $right ) );
 end
 
 /*
@@ -64,4 +64,5 @@
 	then
 		# Type is set to strong because all the rule possibilities are redundant.
 		insert( new Redundancy( Redundancy.Type.STRONG, $r1, $r2 ) );
-end
\ No newline at end of file
+end
+*/
\ No newline at end of file




More information about the jboss-svn-commits mailing list