[jboss-svn-commits] JBL Code SVN: r16297 - in labs/jbossrules/trunk/drools-analytics: src/main/java/org/drools/analytics and 14 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Nov 3 08:32:57 EDT 2007
Author: Rikkola
Date: 2007-11-03 08:32:56 -0400 (Sat, 03 Nov 2007)
New Revision: 16297
Added:
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/missingEquality/
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/missingEquality/MissingEquality.drl
labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/missingEquality/
labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/missingEquality/MissingEqualityTest.java
labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/missingEquality/
labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/missingEquality/MissingEqualityTest.drl
Modified:
labs/jbossrules/trunk/drools-analytics/.classpath
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Analyzer.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/PackageDescrFlattener.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/LiteralRestriction.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Restriction.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/VariableRestriction.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataMaps.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/AnalyticsMessageBase.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Gap.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/MissingNumberPattern.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/MissingRange.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/RangeCheckCause.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/MissingRangesReportVisitor.java
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/optimisation/PatternOrder.drl
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/optimisation/RestrictionOrder.drl
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Clean.drl
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Dates.drl
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Doubles.drl
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Integers.drl
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Patterns.drl
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Restrictions.drl
labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/ConsequenceTest.java
labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RangeCheckCleanTest.java
labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RangeCheckIntegersTest.java
labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/optimisation/RestrictionOrderTest.java
Log:
Operators in restrictions now use the Operator class, before they were just strings. Missing equality tests are
Modified: labs/jbossrules/trunk/drools-analytics/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-analytics/.classpath 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/.classpath 2007-11-03 12:32:56 UTC (rev 16297)
@@ -6,5 +6,7 @@
<classpathentry excluding="**" kind="src" output="src/test/resources" path="src/test/resources"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+ <classpathentry kind="var" path="AGITAR_TEST_LIB"/>
+ <classpathentry kind="var" path="AGITAR_MOCK_OBJECTS5"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Analyzer.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Analyzer.java 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Analyzer.java 2007-11-03 12:32:56 UTC (rev 16297)
@@ -100,7 +100,12 @@
Collection<Package> packages = RuleLoader.loadPackages();
for (Package pkg : packages) {
- ruleBase.addPackage(pkg);
+ try {
+ ruleBase.addPackage(pkg);
+ } catch (Exception e) {
+ throw new Exception("Adding package " + pkg.getName()
+ + " caused an error.", e);
+ }
}
return ruleBase;
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/PackageDescrFlattener.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/PackageDescrFlattener.java 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/PackageDescrFlattener.java 2007-11-03 12:32:56 UTC (rev 16297)
@@ -29,6 +29,7 @@
import org.drools.analytics.components.VariableRestriction;
import org.drools.analytics.dao.AnalyticsData;
import org.drools.analytics.dao.AnalyticsDataFactory;
+import org.drools.base.evaluators.Operator;
import org.drools.lang.descr.AccessorDescr;
import org.drools.lang.descr.AccumulateDescr;
import org.drools.lang.descr.AndDescr;
@@ -446,6 +447,7 @@
if (descr.getIdentifier() != null) {
Variable variable = new Variable();
variable.setRuleId(currentRule.getId());
+ variable.setRuleName(currentRule.getRuleName());
variable.setName(descr.getIdentifier());
variable.setObjectType(AnalyticsComponentType.CLASS);
@@ -519,6 +521,7 @@
Variable variable = new Variable();
variable.setRuleId(currentRule.getId());
+ variable.setRuleName(currentRule.getRuleName());
variable.setName(descr.getIdentifier());
variable.setOrderNumber(orderNumber);
variable.setParent(parent);
@@ -550,9 +553,9 @@
restriction.setPatternIsNot(currentPattern.isPatternNot());
restriction.setConstraintId(currentConstraint.getId());
restriction.setFieldId(currentConstraint.getFieldId());
- restriction.setEvaluator(descr.getEvaluator());
- restriction.setVariableId(variable.getId());
- restriction.setVariableName(descr.getIdentifier());
+ restriction.setOperator(Operator
+ .determineOperator(descr.getEvaluator()));
+ restriction.setVariable(variable);
restriction.setOrderNumber(orderNumber);
restriction.setParent(parent);
@@ -580,7 +583,8 @@
restriction.setPatternIsNot(currentPattern.isPatternNot());
restriction.setConstraintId(currentConstraint.getId());
restriction.setFieldId(currentConstraint.getFieldId());
- restriction.setEvaluator(descr.getEvaluator());
+ restriction.setOperator(Operator
+ .determineOperator(descr.getEvaluator()));
restriction.setClassMethodName(descr.getClassMethodName());
restriction.setContent(descr.getContent());
restriction.setDeclarations(descr.getDeclarations());
@@ -610,7 +614,8 @@
restriction.setPatternIsNot(currentPattern.isPatternNot());
restriction.setConstraintId(currentConstraint.getId());
restriction.setFieldId(currentConstraint.getFieldId());
- restriction.setEvaluator(descr.getEvaluator());
+ restriction.setOperator(Operator
+ .determineOperator(descr.getEvaluator()));
restriction.setValue(descr.getText());
restriction.setOrderNumber(orderNumber);
restriction.setParent(parent);
@@ -642,7 +647,8 @@
restriction.setPatternIsNot(currentPattern.isPatternNot());
restriction.setConstraintId(currentConstraint.getId());
restriction.setFieldId(currentConstraint.getFieldId());
- restriction.setEvaluator(descr.getEvaluator());
+ restriction.setOperator(Operator
+ .determineOperator(descr.getEvaluator()));
restriction.setVariableId(variable.getId());
restriction.setVariableName(text.substring(0, text.indexOf(".")));
restriction.setVariablePath(text.substring(text.indexOf(".")));
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/LiteralRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/LiteralRestriction.java 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/LiteralRestriction.java 2007-11-03 12:32:56 UTC (rev 16297)
@@ -119,6 +119,6 @@
@Override
public String toString() {
return "LiteralRestriction from rule '" + ruleName + "' value '"
- + evaluator + " " + stringValue + "'";
+ + operator.getOperatorString() + " " + stringValue + "'";
}
}
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Restriction.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Restriction.java 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Restriction.java 2007-11-03 12:32:56 UTC (rev 16297)
@@ -1,12 +1,14 @@
package org.drools.analytics.components;
import org.drools.analytics.report.components.Cause;
+import org.drools.base.evaluators.Operator;
/**
*
* @author Toni Rikkola
*/
public abstract class Restriction extends AnalyticsComponent implements Cause {
+
public static enum RestrictionType {
LITERAL, VARIABLE, QUALIFIED_IDENTIFIER, RETURN_VALUE_RESTRICTION
}
@@ -20,7 +22,7 @@
// Id of the field that this restriction is related to.
private int fieldId;
- protected String evaluator;
+ protected Operator operator;
public Restriction() {
super(index++);
@@ -37,12 +39,12 @@
public abstract RestrictionType getRestrictionType();
- public String getEvaluator() {
- return evaluator;
+ public Operator getOperator() {
+ return operator;
}
- public void setEvaluator(String evaluator) {
- this.evaluator = evaluator;
+ public void setOperator(Operator operator) {
+ this.operator = operator;
}
public int getConstraintId() {
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/VariableRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/VariableRestriction.java 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/VariableRestriction.java 2007-11-03 12:32:56 UTC (rev 16297)
@@ -8,32 +8,23 @@
*/
public class VariableRestriction extends Restriction implements Cause {
- protected String variableName;
- protected int variableId;
+ protected Variable variable;
- public int getVariableId() {
- return variableId;
+ public Variable getVariable() {
+ return variable;
}
- public void setVariableId(int variableId) {
- this.variableId = variableId;
+ public void setVariable(Variable variable) {
+ this.variable = variable;
}
- public String getVariableName() {
- return variableName;
- }
-
- public void setVariableName(String variableName) {
- this.variableName = variableName;
- }
-
public RestrictionType getRestrictionType() {
return Restriction.RestrictionType.VARIABLE;
}
@Override
public String toString() {
- return "VariableRestriction from rule '" + ruleName + "' name '"
- + variableName + "'";
+ return "VariableRestriction from rule '" + ruleName + "' variable '"
+ + variable + "'";
}
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataMaps.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataMaps.java 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataMaps.java 2007-11-03 12:32:56 UTC (rev 16297)
@@ -72,9 +72,7 @@
}
public void save(Variable variable) {
- AnalyticsRule rule = rulesById.get(Integer
- .valueOf(variable.getRuleId()));
- variablesByRuleAndVariableName.put(rule.getRuleName() + "."
+ variablesByRuleAndVariableName.put(variable.getRuleName() + "."
+ variable.getName(), variable);
}
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/AnalyticsMessageBase.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/AnalyticsMessageBase.java 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/AnalyticsMessageBase.java 2007-11-03 12:32:56 UTC (rev 16297)
@@ -39,7 +39,7 @@
}
public static enum MessageType {
- NOT_SPECIFIED, RANGE_CHECK, REDUNDANCY, SUBSUMPTION, MISSING_COMPONENT, OPTIMISATION
+ NOT_SPECIFIED, RANGE_CHECK, MISSING_EQUALITY, REDUNDANCY, SUBSUMPTION, MISSING_COMPONENT, OPTIMISATION
}
protected Severity severity;
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Gap.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Gap.java 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Gap.java 2007-11-03 12:32:56 UTC (rev 16297)
@@ -2,38 +2,17 @@
import org.drools.analytics.components.Field;
import org.drools.analytics.components.LiteralRestriction;
+import org.drools.base.evaluators.Operator;
/**
*
* @author Toni Rikkola
*/
-public class Gap extends MissingRange implements RangeCheckCause, Comparable<MissingRange> {
+public class Gap extends MissingRange implements RangeCheckCause,
+ Comparable<MissingRange> {
private LiteralRestriction restriction;
- /**
- * Takes the given evaluator e, and returns a reversed version of it.
- *
- * @return evaluator
- */
- public static String getReversedEvaluator(String e) {
- if (e.equals("!=")) {
- return "==";
- } else if (e.equals("==")) {
- return "!=";
- } else if (e.equals(">")) {
- return "<=";
- } else if (e.equals("<")) {
- return ">=";
- } else if (e.equals(">=")) {
- return "<";
- } else if (e.equals("<=")) {
- return ">";
- }
-
- return e;
- }
-
public int compareTo(MissingRange another) {
return super.compareTo(another);
}
@@ -51,9 +30,9 @@
* @param cause
* The restriction that the gap begins from.
*/
- public Gap(Field field, String evaluator, LiteralRestriction restriction) {
+ public Gap(Field field, Operator operator, LiteralRestriction restriction) {
this.field = field;
- this.evaluator = evaluator;
+ this.operator = operator;
this.restriction = restriction;
}
@@ -79,7 +58,7 @@
@Override
public String toString() {
- return "Gap: (" + field + ") " + getEvaluator() + " "
+ return "Gap: (" + field + ") " + getOperator() + " "
+ getValueAsString();
}
}
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/MissingNumberPattern.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/MissingNumberPattern.java 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/MissingNumberPattern.java 2007-11-03 12:32:56 UTC (rev 16297)
@@ -5,6 +5,7 @@
import java.util.Locale;
import org.drools.analytics.components.Field;
+import org.drools.base.evaluators.Operator;
/**
*
@@ -25,10 +26,10 @@
return Cause.CauseType.RANGE_CHECK_CAUSE;
}
- public MissingNumberPattern(Field field, String evaluator,
+ public MissingNumberPattern(Field field, Operator operator,
Field.FieldType valueType, String value) {
this.field = field;
- this.evaluator = evaluator;
+ this.operator = operator;
this.valueType = valueType;
this.value = value;
}
@@ -79,6 +80,6 @@
@Override
public String toString() {
- return "Missing restriction " + evaluator + " " + value;
+ return "Missing restriction " + operator + " " + value;
}
}
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/MissingRange.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/MissingRange.java 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/MissingRange.java 2007-11-03 12:32:56 UTC (rev 16297)
@@ -1,6 +1,7 @@
package org.drools.analytics.report.components;
import org.drools.analytics.components.Field;
+import org.drools.base.evaluators.Operator;
public abstract class MissingRange implements Comparable<MissingRange> {
@@ -8,10 +9,45 @@
protected int id = index++;
protected Field field;
- protected String evaluator;
+ protected Operator operator;
private String firedRuleName;
+ /**
+ * Takes the given operator e, and returns a reversed version of it.
+ *
+ * @return operator
+ */
+ public static Operator getReversedOperator(Operator e) {
+ if (e.equals(Operator.NOT_EQUAL)) {
+ return Operator.EQUAL;
+ } else if (e.equals(Operator.EQUAL)) {
+ return Operator.NOT_EQUAL;
+ } else if (e.equals(Operator.GREATER)) {
+ return Operator.LESS_OR_EQUAL;
+ } else if (e.equals(Operator.LESS)) {
+ return Operator.GREATER_OR_EQUAL;
+ } else if (e.equals(Operator.GREATER_OR_EQUAL)) {
+ return Operator.LESS;
+ } else if (e.equals(Operator.LESS_OR_EQUAL)) {
+ return Operator.GREATER;
+ } else if (e.equals(Operator.MATCHES)) {
+ return Operator.NOT_MATCHES;
+ } else if (e.equals(Operator.NOT_MATCHES)) {
+ return Operator.MATCHES;
+ } else if (e.equals(Operator.CONTAINS)) {
+ return Operator.NOT_CONTAINS;
+ } else if (e.equals(Operator.NOT_CONTAINS)) {
+ return Operator.CONTAINS;
+ } else if (e.equals(Operator.MEMBEROF)) {
+ return Operator.NOTMEMBEROF;
+ } else if (e.equals(Operator.NOTMEMBEROF)) {
+ return Operator.MEMBEROF;
+ }
+
+ return e;
+ }
+
public int compareTo(MissingRange another) {
MissingRange anotherMissingRange = ((MissingRange) another);
@@ -30,8 +66,8 @@
this.field = field;
}
- public String getEvaluator() {
- return evaluator;
+ public Operator getOperator() {
+ return operator;
}
public String getFiredRuleName() {
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/RangeCheckCause.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/RangeCheckCause.java 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/RangeCheckCause.java 2007-11-03 12:32:56 UTC (rev 16297)
@@ -1,6 +1,7 @@
package org.drools.analytics.report.components;
import org.drools.analytics.components.Field;
+import org.drools.base.evaluators.Operator;
/**
*
@@ -14,5 +15,5 @@
public String getValueAsString();
- public String getEvaluator();
+ public Operator getOperator();
}
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/MissingRangesReportVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/MissingRangesReportVisitor.java 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/MissingRangesReportVisitor.java 2007-11-03 12:32:56 UTC (rev 16297)
@@ -14,6 +14,7 @@
import org.drools.analytics.dao.DataTree;
import org.drools.analytics.report.components.AnalyticsRangeCheckMessage;
import org.drools.analytics.report.components.RangeCheckCause;
+import org.drools.base.evaluators.Operator;
import org.mvel.TemplateInterpreter;
public class MissingRangesReportVisitor extends ReportVisitor {
@@ -26,7 +27,7 @@
for (RangeCheckCause cause : causes) {
dt.put(cause.getValueAsObject(), new DataRow(null, null, cause
- .getEvaluator(), cause.getValueAsString()));
+ .getOperator(), cause.getValueAsString()));
}
for (Restriction r : restrictions) {
@@ -36,7 +37,7 @@
dt.put(restriction.getValueAsObject(), new DataRow(
restriction.getRuleId(), restriction.getRuleName(),
- restriction.getEvaluator(), restriction
+ restriction.getOperator(), restriction
.getValueAsString()));
} catch (Exception e) {
e.printStackTrace();
@@ -52,10 +53,10 @@
if (previous != null) {
// Check if previous and current are from the same rule.
if (previous.ruleId == null && current.ruleId == null
- && !previous.evaluator.equals("==")
- && !previous.evaluator.equals("!=")
- && !current.evaluator.equals("==")
- && !current.evaluator.equals("!=")) {
+ && !previous.operator.equals(Operator.EQUAL)
+ && !previous.operator.equals(Operator.NOT_EQUAL)
+ && !current.operator.equals(Operator.EQUAL)
+ && !current.operator.equals(Operator.NOT_EQUAL)) {
// Combine these two.
stringRows.add("Missing : " + previous + " .. " + current);
@@ -155,22 +156,23 @@
class DataRow implements Comparable<DataRow> {
public String ruleName;
protected Integer ruleId;
- protected String evaluator;
+ protected Operator operator;
protected String value;
public int compareTo(DataRow o) {
- return evaluator.compareTo(o.evaluator);
+ return operator.getOperatorString().compareTo(
+ o.operator.getOperatorString());
}
- public DataRow(Integer ruleId, String ruleName, String evaluator,
+ public DataRow(Integer ruleId, String ruleName, Operator operator,
String valueAsString) {
this.ruleId = ruleId;
this.ruleName = ruleName;
- this.evaluator = evaluator;
+ this.operator = operator;
this.value = valueAsString;
}
public String toString() {
- return evaluator + " " + value;
+ return operator.getOperatorString() + " " + value;
}
}
Added: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/missingEquality/MissingEquality.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/missingEquality/MissingEquality.drl (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/missingEquality/MissingEquality.drl 2007-11-03 12:32:56 UTC (rev 16297)
@@ -0,0 +1,218 @@
+#created on: 31.10.2007
+package org.drools.analytics.missingEquality
+
+#list any import classes here.
+import org.drools.base.evaluators.Operator;
+
+import org.drools.analytics.components.VariableRestriction;
+import org.drools.analytics.components.LiteralRestriction;
+import org.drools.analytics.report.components.MissingRange;
+import org.drools.analytics.report.components.AnalyticsMessage;
+import org.drools.analytics.dao.AnalyticsResult;
+
+
+
+#declare any global variables here
+global AnalyticsResult result;
+
+#
+# Informs that there are inequalities, but not equality being catered for.
+#
+# Type: Warning
+# Example: val != 10 when val == 10 is missing.
+#
+rule "Missing restriction in LiteralRestrictions"
+ when
+ #
+ # == and !=
+ #
+ (
+ $r :LiteralRestriction(
+ operator == Operator.EQUAL
+ )
+ and
+ not LiteralRestriction(
+ fieldId == $r.fieldId,
+ operator == Operator.NOT_EQUAL,
+ patternIsNot == $r.patternIsNot,
+ valueAsString matches $r.valueAsString
+ )
+ ) or (
+ $r :LiteralRestriction(
+ operator == Operator.NOT_EQUAL
+ )
+ and
+ not LiteralRestriction(
+ fieldId == $r.fieldId,
+ operator == Operator.EQUAL,
+ patternIsNot == $r.patternIsNot,
+ valueAsString matches $r.valueAsString
+ )
+ #
+ # matches and not matches
+ #
+ ) or (
+ $r :LiteralRestriction(
+ operator == Operator.MATCHES,
+ valueAsString matches $r.valueAsString
+ )
+ and
+ not LiteralRestriction(
+ fieldId == $r.fieldId,
+ operator == Operator.NOT_MATCHES,
+ patternIsNot == $r.patternIsNot,
+ valueAsString matches $r.valueAsString
+ )
+ ) or (
+ $r :LiteralRestriction(
+ operator == Operator.NOT_MATCHES,
+ valueAsString matches $r.valueAsString
+ )
+ and
+ not LiteralRestriction(
+ fieldId == $r.fieldId,
+ operator == Operator.MATCHES,
+ patternIsNot == $r.patternIsNot,
+ valueAsString matches $r.valueAsString
+ )
+ )
+ then
+ result.save( new AnalyticsMessage(
+ AnalyticsMessage.Severity.WARNING,
+ AnalyticsMessage.MessageType.MISSING_EQUALITY,
+ $r,
+ "Rule base covers " +
+ $r.getOperator().getOperatorString() + " " + $r.getValueAsString() +
+ ", but it is missing " + MissingRange.getReversedOperator( $r.getOperator() ).getOperatorString() +
+ " " + $r.getValueAsString()
+ ) );
+end
+
+#
+# Informs that there are inequalities, but not equality being catered for.
+#
+# Type: Warning
+# Example: val != $var when val == $var is missing.
+#
+rule "Missing restriction in VariableRestrictions"
+ when
+ #
+ # == and !=
+ #
+ (
+ $r :VariableRestriction(
+ operator == Operator.EQUAL
+ )
+ and
+ not VariableRestriction(
+ fieldId == $r.fieldId,
+ operator == Operator.NOT_EQUAL,
+ patternIsNot == $r.patternIsNot,
+ variable.objectId == $r.variable.objectId,
+ variable.objectType == $r.variable.objectType
+ )
+ ) or (
+ $r :VariableRestriction(
+ operator == Operator.NOT_EQUAL
+ )
+ and
+ not VariableRestriction(
+ fieldId == $r.fieldId,
+ operator == Operator.EQUAL,
+ patternIsNot == $r.patternIsNot,
+ variable.objectId == $r.variable.objectId,
+ variable.objectType == $r.variable.objectType
+ )
+ #
+ # matches and not matches
+ #
+ ) or (
+ $r :VariableRestriction(
+ operator == Operator.MATCHES
+ )
+ and
+ not VariableRestriction(
+ fieldId == $r.fieldId,
+ operator == Operator.NOT_MATCHES,
+ patternIsNot == $r.patternIsNot,
+ variable.objectId == $r.variable.objectId,
+ variable.objectType == $r.variable.objectType
+ )
+ ) or (
+ $r :VariableRestriction(
+ operator == Operator.NOT_MATCHES
+ )
+ and
+ not VariableRestriction(
+ fieldId == $r.fieldId,
+ operator == Operator.MATCHES,
+ patternIsNot == $r.patternIsNot,
+ variable.objectId == $r.variable.objectId,
+ variable.objectType == $r.variable.objectType
+ )
+ #
+ # memberof and not memberof
+ #
+ ) or (
+ $r :VariableRestriction(
+ operator == Operator.MEMBEROF
+ )
+ and
+ not VariableRestriction(
+ fieldId == $r.fieldId,
+ operator == Operator.NOTMEMBEROF,
+ patternIsNot == $r.patternIsNot,
+ variable.objectId == $r.variable.objectId,
+ variable.objectType == $r.variable.objectType
+ )
+ ) or (
+ $r :VariableRestriction(
+ operator == Operator.NOTMEMBEROF
+ )
+ and
+ not VariableRestriction(
+ fieldId == $r.fieldId,
+ operator == Operator.MEMBEROF,
+ patternIsNot == $r.patternIsNot,
+ variable.objectId == $r.variable.objectId,
+ variable.objectType == $r.variable.objectType
+ )
+ #
+ # contains and not contains
+ #
+ ) or (
+ $r :VariableRestriction(
+ operator == Operator.CONTAINS
+ )
+ and
+ not VariableRestriction(
+ fieldId == $r.fieldId,
+ operator == Operator.NOT_CONTAINS,
+ patternIsNot == $r.patternIsNot,
+ variable.objectId == $r.variable.objectId,
+ variable.objectType == $r.variable.objectType
+ )
+ ) or (
+ $r :VariableRestriction(
+ operator == Operator.NOT_CONTAINS
+ )
+ and
+ not VariableRestriction(
+ fieldId == $r.fieldId,
+ operator == Operator.CONTAINS,
+ patternIsNot == $r.patternIsNot,
+ variable.objectId == $r.variable.objectId,
+ variable.objectType == $r.variable.objectType
+ )
+ )
+ then
+ result.save( new AnalyticsMessage(
+ AnalyticsMessage.Severity.WARNING,
+ AnalyticsMessage.MessageType.MISSING_EQUALITY,
+ $r,
+ "Rule base covers " +
+ $r.getOperator().getOperatorString() + " " + $r.getVariable().getName() +
+ ", but it is missing " + MissingRange.getReversedOperator( $r.getOperator() ).getOperatorString() +
+ " " + $r.getVariable().getName()
+ ) );
+end
Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/optimisation/PatternOrder.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/optimisation/PatternOrder.drl 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/optimisation/PatternOrder.drl 2007-11-03 12:32:56 UTC (rev 16297)
@@ -21,6 +21,12 @@
+# Informs that rule would be more effective if eval
+# was after fact patterns.
+#
+# Type: Note
+# Example: eval(function( $something )) Pattern()
+#
rule "Optimise evals inside pattern"
when
$operator :OperatorDescr()
Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/optimisation/RestrictionOrder.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/optimisation/RestrictionOrder.drl 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/optimisation/RestrictionOrder.drl 2007-11-03 12:32:56 UTC (rev 16297)
@@ -5,6 +5,8 @@
import java.util.Collection;
import java.util.ArrayList;
+import org.drools.base.evaluators.Operator;
+
import org.drools.analytics.components.Restriction;
import org.drools.analytics.components.Pattern;
import org.drools.analytics.components.AnalyticsRule;
@@ -29,78 +31,78 @@
rule "Optimise restrictions inside operator"
when
$operator :OperatorDescr()
-
+
(
$r1 :Restriction(
parent.parent == $operator,
- ( evaluator == "==" || == "matches" )
+ ( operator == Operator.EQUAL || == Operator.MATCHES )
)
and
# There is no reason to check if there is a less expensive constraint
# if this one has a restriction that is more expensive.
not Restriction(
parent == $r1.parent,
- ( evaluator == ">" || == "<" || == ">=" || == "<=" || == "not matches" || == "!=" )
+ ( operator == Operator.GREATER || == Operator.LESS || == Operator.GREATER_OR_EQUAL || == Operator.LESS_OR_EQUAL || == Operator.NOT_MATCHES || == Operator.NOT_EQUAL )
)
and
$r2 :Restriction(
parent.parent == $operator,
parent.orderNumber < $r1.parent.orderNumber,
- ( evaluator == ">" || == "<" || == ">=" || == "<=" || == "not matches" || == "!=" )
+ ( operator == Operator.GREATER || == Operator.LESS || == Operator.GREATER_OR_EQUAL || == Operator.LESS_OR_EQUAL || == Operator.NOT_MATCHES || == Operator.NOT_EQUAL )
)
and
# The other restriction should not have any less expensive restrictions.
not Restriction(
parent == $r2.parent,
- ( evaluator == "==" || == "matches" )
+ ( operator == Operator.EQUAL || == Operator.MATCHES )
)
) or (
$r1 :Restriction(
parent.parent == $operator,
- ( evaluator == ">" || == "<" )
+ ( operator == Operator.GREATER || == Operator.LESS )
)
and
# There is no reason to check if there is a less expensive constraint
# if this one has a restriction that is more expensive.
not Restriction(
parent == $r1.parent,
- ( evaluator == ">=" || == "<=" || == "not matches" || == "!=" )
+ ( operator == Operator.GREATER_OR_EQUAL || == Operator.LESS_OR_EQUAL || == Operator.NOT_MATCHES || == Operator.NOT_EQUAL )
)
and
$r2 :Restriction(
parent.parent == $operator,
parent.orderNumber < $r1.parent.orderNumber,
- ( evaluator == ">=" || == "<=" || == "not matches" || == "!=" )
+ ( operator == Operator.GREATER_OR_EQUAL || == Operator.LESS_OR_EQUAL || == Operator.NOT_MATCHES || == Operator.NOT_EQUAL )
)
and
# The other restriction should not have any less expensive restrictions.
not Restriction(
parent == $r2.parent,
- ( evaluator == "==" || == "matches" || == ">" || == "<" )
+ ( operator == Operator.EQUAL || == Operator.MATCHES || == Operator.GREATER || == Operator.LESS )
)
) or (
$r1 :Restriction(
parent.parent == $operator,
- ( evaluator == ">=" || == "<=" )
+ ( operator == Operator.GREATER_OR_EQUAL || == Operator.LESS_OR_EQUAL )
)
and
# There is no reason to check if there is a less expensive constraint
# if this one has a restriction that is more expensive.
not Restriction(
parent == $r1.parent,
- ( evaluator == "not matches" || == "!=" )
+ ( operator == Operator.NOT_MATCHES || == Operator.NOT_EQUAL )
)
and
$r2 :Restriction(
parent.parent == $operator,
parent.orderNumber < $r1.parent.orderNumber,
- ( evaluator == "not matches" || == "!=" )
+ ( operator == Operator.NOT_MATCHES || == Operator.NOT_EQUAL )
)
and
# The other restriction should not have any less expensive restrictions.
not Restriction(
parent == $r2.parent,
- ( evaluator == "==" || == "matches" || == ">" || == "<" || == ">" || == "<" || == ">=" || == "<=" )
+ ( operator == Operator.EQUAL || == Operator.MATCHES || == Operator.GREATER || == Operator.LESS || == Operator.GREATER_OR_EQUAL || == Operator.LESS_OR_EQUAL )
)
)
@@ -133,33 +135,33 @@
when
(
$r1 :Restriction(
- ( evaluator == "==" || == "matches" )
+ ( operator == Operator.EQUAL || == Operator.MATCHES )
)
and
$r2 :Restriction(
parent == $r1.parent,
orderNumber < $r1.orderNumber,
- ( evaluator == ">" || == "<" || == ">=" || == "<=" || == "not matches" || == "!=" )
+ ( operator == Operator.GREATER || == Operator.LESS || == Operator.GREATER_OR_EQUAL || == Operator.LESS_OR_EQUAL || == Operator.NOT_MATCHES || == Operator.NOT_EQUAL )
)
) or (
$r1 :Restriction(
- ( evaluator == ">" || == "<" )
+ ( operator == Operator.GREATER || == Operator.LESS )
)
and
$r2 :Restriction(
parent == $r1.parent,
orderNumber < $r1.orderNumber,
- ( evaluator == ">=" || == "<=" || == "not matches" || == "!=" )
+ ( operator == Operator.GREATER_OR_EQUAL || == Operator.LESS_OR_EQUAL || == Operator.NOT_MATCHES || == Operator.NOT_EQUAL )
)
) or (
$r1 :Restriction(
- ( evaluator == ">=" || == "<=" )
+ ( operator == Operator.GREATER_OR_EQUAL || == Operator.LESS_OR_EQUAL )
)
and
$r2 :Restriction(
parent == $r1.parent,
orderNumber < $r1.orderNumber,
- ( evaluator == "not matches" || == "!=" )
+ ( operator == Operator.NOT_MATCHES || == Operator.NOT_EQUAL )
)
)
@@ -219,4 +221,4 @@
"), could be before (" +
$predicate + ").",
list ) );
-end
\ No newline at end of file
+end
Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Clean.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Clean.drl 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Clean.drl 2007-11-03 12:32:56 UTC (rev 16297)
@@ -1,6 +1,8 @@
#created on: 24.9.2007
package org.drools.analytics.rangeChecks.cleanUp
+import org.drools.base.evaluators.Operator;
+
import org.drools.analytics.components.*;
import org.drools.analytics.report.components.Gap;
import org.drools.analytics.report.components.MissingNumberPattern;
@@ -16,12 +18,12 @@
rule "Merge gaps"
when
$g1 :Gap(
- evaluator == ">="
+ operator == Operator.GREATER_OR_EQUAL
)
$g2 :Gap(
id != $g1.id,
field == $g1.field,
- evaluator == "<=",
+ operator == Operator.LESS_OR_EQUAL,
valueAsString == $g1.valueAsString
)
then
@@ -32,7 +34,7 @@
MissingNumberPattern mnp = new MissingNumberPattern(
$g1.getField(),
- "==",
+ Operator.EQUAL,
$g1.getField().getFieldType(),
$g1.getValueAsString() );
mnp.setFiredRuleName( drools.getRule().getName() );
@@ -49,7 +51,7 @@
# Covered x > 10
$lower :LiteralRestriction(
valueType == Field.FieldType.INT,
- ( evaluator == ">" || == ">=")
+ ( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL)
)
# Covered x < 100
@@ -57,12 +59,12 @@
fieldId == $lower.fieldId,
intValue > $lower.intValue,
patternIsNot == $lower.patternIsNot,
- ( evaluator == "<" || == "<=")
+ ( operator == Operator.LESS || == Operator.LESS_OR_EQUAL)
)
# No "<" or "<=" restrictions between these two
not LiteralRestriction(
- ( evaluator == "<=" || == "<" ),
+ ( operator == Operator.LESS_OR_EQUAL || == Operator.LESS ),
fieldId == $lower.fieldId,
patternIsNot == $lower.patternIsNot,
intValue > $lower.intValue,
@@ -91,7 +93,7 @@
# Covered x > 10
$lower :LiteralRestriction(
valueType == Field.FieldType.INT,
- ( evaluator == ">" || == ">=")
+ ( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL)
)
# Covered x < 100
@@ -99,12 +101,12 @@
fieldId == $lower.fieldId,
intValue > $lower.intValue,
patternIsNot == $lower.patternIsNot,
- ( evaluator == "<" || == "<=")
+ ( operator == Operator.LESS || == Operator.LESS_OR_EQUAL)
)
# No "<" or "<=" restrictions between these two
not LiteralRestriction(
- ( evaluator == ">=" || == ">" ),
+ ( operator == Operator.GREATER_OR_EQUAL || == Operator.GREATER ),
fieldId == $lower.fieldId,
patternIsNot == $lower.patternIsNot,
intValue > $lower.intValue,
@@ -133,7 +135,7 @@
# Covered x > 10.0
$lower :LiteralRestriction(
valueType == Field.FieldType.DOUBLE,
- ( evaluator == ">" || == ">=")
+ ( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL)
)
# Covered x < 100.0
@@ -141,12 +143,12 @@
fieldId == $lower.fieldId,
doubleValue > $lower.doubleValue,
patternIsNot == $lower.patternIsNot,
- ( evaluator == "<" || == "<=")
+ ( operator == Operator.LESS || == Operator.LESS_OR_EQUAL)
)
# No "<" or "<=" restrictions between these two
not LiteralRestriction(
- ( evaluator == "<=" || == "<" ),
+ ( operator == Operator.LESS_OR_EQUAL || == Operator.LESS ),
fieldId == $lower.fieldId,
patternIsNot == $lower.patternIsNot,
doubleValue > $lower.doubleValue,
@@ -175,7 +177,7 @@
# Covered x > 10.0
$lower :LiteralRestriction(
valueType == Field.FieldType.DOUBLE,
- ( evaluator == ">" || == ">=")
+ ( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL)
)
# Covered x < 100.0
@@ -183,12 +185,12 @@
fieldId == $lower.fieldId,
doubleValue > $lower.doubleValue,
patternIsNot == $lower.patternIsNot,
- ( evaluator == "<" || == "<=")
+ ( operator == Operator.LESS || == Operator.LESS_OR_EQUAL)
)
# No "<" or "<=" restrictions between these two
not LiteralRestriction(
- ( evaluator == ">=" || == ">" ),
+ ( operator == Operator.GREATER_OR_EQUAL || == Operator.GREATER ),
fieldId == $lower.fieldId,
patternIsNot == $lower.patternIsNot,
doubleValue > $lower.doubleValue,
@@ -217,20 +219,20 @@
# Covered x > "01-Oct-2007"
$lower :LiteralRestriction(
valueType == Field.FieldType.DATE,
- ( evaluator == ">" || == ">=")
+ ( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL)
)
# Covered x < "20-Oct-2007"
$higher :LiteralRestriction(
fieldId == $lower.fieldId,
patternIsNot == $lower.patternIsNot,
- ( evaluator == "<" || == "<="),
+ ( operator == Operator.LESS || == Operator.LESS_OR_EQUAL),
eval( dateValue.after( $lower.getDateValue() ) )
)
# No "<" or "<=" restrictions between these two
not LiteralRestriction(
- ( evaluator == "<=" || == "<" ),
+ ( operator == Operator.LESS_OR_EQUAL || == Operator.LESS ),
fieldId == $lower.fieldId,
patternIsNot == $lower.patternIsNot,
eval( dateValue.after( $lower.getDateValue() ) ),
@@ -245,7 +247,6 @@
eval( restriction.getDateValue().before( $higher.getDateValue() ) )
)
then
- #System.out.println( $lower + " | " + $higher );
retract( $gap );
result.remove( $gap );
end
@@ -259,20 +260,20 @@
# Covered x > "01-Oct-2007"
$lower :LiteralRestriction(
valueType == Field.FieldType.DATE,
- ( evaluator == ">" || == ">=")
+ ( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL)
)
# Covered x < "20-Oct-2007"
$higher :LiteralRestriction(
fieldId == $lower.fieldId,
patternIsNot == $lower.patternIsNot,
- ( evaluator == "<" || == "<="),
+ ( operator == Operator.LESS || == Operator.LESS_OR_EQUAL),
eval( dateValue.after( $lower.getDateValue() ) )
)
- # No "<" or "<=" restrictions between these two
+ # No ">" or ">=" restrictions between these two
not LiteralRestriction(
- ( evaluator == ">=" || == ">" ),
+ ( operator == Operator.GREATER_OR_EQUAL || == Operator.GREATER ),
fieldId == $lower.fieldId,
patternIsNot == $lower.patternIsNot,
eval( dateValue.after( $lower.getDateValue() ) ),
@@ -291,134 +292,3 @@
retract( $gap );
result.remove( $gap );
end
-
-/*
-#
-# Example: covered ( x > 10 ), ( x < 100 )and ( x == 50 )
-# reports that ( x < 50 ) ( x > 50 ) is missing.
-#
-rule "Remove useless integer gaps"
- when
- # Covered x > 10
- $lower :LiteralRestriction(
- valueType == Field.FieldType.INT,
- ( evaluator == ">" || == ">=")
- )
-
- # Covered x < 100
- $higher :LiteralRestriction(
- fieldId == $lower.fieldId,
- intValue > $lower.intValue,
- patternIsNot == $lower.patternIsNot,
- ( evaluator == "<" || == "<=")
- )
-
- # Nothing in between except "==" restrictions
- not LiteralRestriction(
- evaluator != "==",
- fieldId == $lower.fieldId,
- patternIsNot == $lower.patternIsNot,
- intValue > $lower.intValue,
- intValue < $higher.intValue
- )
-
- # gap ( x < 50.0 ) or ( x > 50.0 )
- $gap :Gap(
- restriction.fieldId == $lower.fieldId,
- restriction.patternIsNot == $lower.patternIsNot,
- restriction.evaluator == "==",
- restriction.intValue > $lower.intValue,
- restriction.intValue < $higher.intValue
- )
-
- then
- retract( $gap );
- result.remove( $gap );
-end
-
-#
-# Example: covered ( x > 10.0 ), ( x < 100.0 )and ( x == 50.0 )
-# reports that ( x < 50.0 ) ( x > 50.0 ) is missing.
-#
-rule "Remove useless double gaps"
- when
- # Covered x > 10.0
- $lower :LiteralRestriction(
- valueType == Field.FieldType.DOUBLE,
- ( evaluator == ">" || == ">=")
- )
-
- # Covered x < 100.0
- $higher :LiteralRestriction(
- fieldId == $lower.fieldId,
- doubleValue > $lower.doubleValue,
- patternIsNot == $lower.patternIsNot,
- ( evaluator == "<" || == "<=")
- )
-
- # Nothing in between except "==" restrictions
- not LiteralRestriction(
- evaluator != "==",
- fieldId == $lower.fieldId,
- patternIsNot == $lower.patternIsNot,
- doubleValue > $lower.doubleValue,
- doubleValue < $higher.doubleValue
- )
-
- # gap ( x < 50.0 ) or ( x > 50.0 )
- $gap :Gap(
- restriction.fieldId == $lower.fieldId,
- restriction.patternIsNot == $lower.patternIsNot,
- restriction.evaluator == "==",
- restriction.doubleValue > $lower.doubleValue,
- restriction.doubleValue < $higher.doubleValue
- )
-
- then
- retract( $gap );
- result.remove( $gap );
-end
-
-#
-# Example: covered ( x > "01-Oct-2007" ), ( x < "20-Oct-2007" )and ( x == "10-Oct-2007" )
-# reports that ( x < "10-Oct-2007" ) ( x > "10-Oct-2007" ) is missing.
-#
-rule "Remove useless date gaps"
- when
- # Covered x > "01-Oct-2007"
- $lower :LiteralRestriction(
- valueType == Field.FieldType.DATE,
- ( evaluator == ">" || == ">=")
- )
-
- # Covered x < "20-Oct-2007"
- $higher :LiteralRestriction(
- fieldId == $lower.fieldId,
- dateValue > $lower.dateValue,
- patternIsNot == $lower.patternIsNot,
- ( evaluator == "<" || == "<=")
- )
-
- # Nothing in between except "==" restrictions
- not LiteralRestriction(
- evaluator != "==",
- fieldId == $lower.fieldId,
- patternIsNot == $lower.patternIsNot,
- dateValue > $lower.dateValue,
- dateValue < $higher.dateValue
- )
-
- # gap ( x < "10-Oct-2007" ) or ( x > "10-Oct-2007" )
- $gap :Gap(
- restriction.fieldId == $lower.fieldId,
- restriction.patternIsNot == $lower.patternIsNot,
- restriction.evaluator == "==",
- restriction.dateValue > $lower.dateValue,
- restriction.dateValue < $higher.dateValue
- )
-
- then
- retract( $gap );
- result.remove( $gap );
-end
-*/
Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Dates.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Dates.drl 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Dates.drl 2007-11-03 12:32:56 UTC (rev 16297)
@@ -2,6 +2,8 @@
package org.drools.analytics.rangeChecks.dates;
#list any import classes here.
+import org.drools.base.evaluators.Operator;
+
import org.drools.analytics.components.*;
import org.drools.analytics.dao.AnalyticsResult;
import org.drools.analytics.report.components.Gap;
@@ -39,18 +41,18 @@
# Foo( bar > "27-Oct-2007" )
$r :LiteralRestriction(
fieldId == $f.id,
- evaluator == ">"
+ operator == Operator.GREATER
)
# Check if Foo( bar == "27-Oct-2007" || <= "27-Oct-2007" ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "==" || == "<=" ),
+ ( operator == Operator.EQUAL || == Operator.LESS_OR_EQUAL ),
patternIsNot == $r.patternIsNot,
eval( dateValue.equals($r.getDateValue()) )
)
then
- Gap gap = new Gap( $f, "<=", $r );
+ Gap gap = new Gap( $f, Operator.LESS_OR_EQUAL, $r );
gap.setFiredRuleName( drools.getRule().getName() );
@@ -71,18 +73,18 @@
# Foo( bar > "27-Oct-2007" )
$r :LiteralRestriction(
fieldId == $f.id,
- evaluator == "<"
+ operator == Operator.LESS
)
# Check if Foo( bar == "27-Oct-2007" || <= "27-Oct-2007" ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "==" || == ">=" ),
+ ( operator == Operator.EQUAL || == Operator.GREATER_OR_EQUAL ),
patternIsNot == $r.patternIsNot,
eval( dateValue.equals($r.getDateValue()) )
)
then
- Gap gap = new Gap( $f, ">=", $r );
+ Gap gap = new Gap( $f, Operator.GREATER_OR_EQUAL, $r );
gap.setFiredRuleName( drools.getRule().getName() );
@@ -104,13 +106,13 @@
# Foo( bar == "27-Oct-2007" )
$r :LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "==" || == "<=" )
+ ( operator == Operator.EQUAL || == Operator.LESS_OR_EQUAL )
)
# Check if Foo( bar > "27-Oct-2007" || >= "27-Oct-2007" ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == ">" || == ">=" ),
+ ( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL ),
patternIsNot == $r.patternIsNot,
eval( dateValue.equals($r.getDateValue()) )
)
@@ -118,12 +120,12 @@
# Check if Foo( bar == "28-Oct-2007" || >= "28-Oct-2007" ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "==" || == ">=" ),
+ ( operator == Operator.EQUAL || == Operator.GREATER_OR_EQUAL ),
patternIsNot == $r.patternIsNot,
eval( checkDates( dateValue, $r.getDateValue(), true ) )
)
then
- Gap gap = new Gap( $f, ">", $r );
+ Gap gap = new Gap( $f, Operator.GREATER, $r );
gap.setFiredRuleName( drools.getRule().getName() );
@@ -145,13 +147,13 @@
# Foo( bar == "27-Oct-2007" )
$r :LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "==" || == ">=" )
+ ( operator == Operator.EQUAL || == Operator.GREATER_OR_EQUAL )
)
# Check if Foo( bar < "27-Oct-2007" || <= "27-Oct-2007" ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "<" || == "<=" ),
+ ( operator == Operator.LESS || == Operator.LESS_OR_EQUAL ),
patternIsNot == $r.patternIsNot,
eval( dateValue.equals($r.getDateValue()) )
)
@@ -159,12 +161,12 @@
# Check if Foo( bar == "26-Oct-2007" || <= "26-Oct-2007" ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "==" || == "<=" ),
+ ( operator == Operator.EQUAL || == Operator.LESS_OR_EQUAL ),
patternIsNot == $r.patternIsNot,
eval( checkDates( dateValue, $r.getDateValue(), false ) )
)
then
- Gap gap = new Gap( $f, "<", $r );
+ Gap gap = new Gap( $f, Operator.LESS, $r );
gap.setFiredRuleName( drools.getRule().getName() );
Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Doubles.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Doubles.drl 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Doubles.drl 2007-11-03 12:32:56 UTC (rev 16297)
@@ -2,6 +2,8 @@
package org.drools.analytics.rangeChecks.doubles;
#list any import classes here.
+import org.drools.base.evaluators.Operator;
+
import org.drools.analytics.components.*;
import org.drools.analytics.dao.AnalyticsResult;
import org.drools.analytics.report.components.Gap;
@@ -25,18 +27,18 @@
# Foo( bar > 42 )
$r :LiteralRestriction(
fieldId == $f.id,
- evaluator == ">"
+ operator == Operator.GREATER
)
# Check if Foo( bar == 42 || <= 42 ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "==" || == "<=" ),
+ ( operator == Operator.EQUAL || == Operator.LESS_OR_EQUAL ),
patternIsNot == $r.patternIsNot,
doubleValue == $r.doubleValue
)
then
- Gap gap = new Gap( $f, "<=", $r );
+ Gap gap = new Gap( $f, Operator.LESS_OR_EQUAL, $r );
gap.setFiredRuleName( drools.getRule().getName() );
@@ -57,18 +59,18 @@
# Foo( bar > 42 )
$r :LiteralRestriction(
fieldId == $f.id,
- evaluator == "<"
+ operator == Operator.LESS
)
# Check if Foo( bar == 42 || <= 42 ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "==" || == ">=" ),
+ ( operator == Operator.EQUAL || == Operator.GREATER_OR_EQUAL ),
patternIsNot == $r.patternIsNot,
doubleValue == $r.doubleValue
)
then
- Gap gap = new Gap( $f, ">=", $r );
+ Gap gap = new Gap( $f, Operator.GREATER_OR_EQUAL, $r );
gap.setFiredRuleName( drools.getRule().getName() );
@@ -90,18 +92,18 @@
# Foo( bar == 42 )
$r :LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "==" || == "<=" )
+ ( operator == Operator.EQUAL || == Operator.LESS_OR_EQUAL )
)
# Check if Foo( bar > 42 || >= 42 ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == ">" || == ">=" ),
+ ( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL ),
patternIsNot == $r.patternIsNot,
doubleValue == $r.doubleValue
)
then
- Gap gap = new Gap( $f, ">", $r );
+ Gap gap = new Gap( $f, Operator.GREATER, $r );
gap.setFiredRuleName( drools.getRule().getName() );
@@ -123,156 +125,21 @@
# Foo( bar == 42 )
$r :LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "==" || == ">=" )
+ ( operator == Operator.EQUAL || == Operator.GREATER_OR_EQUAL )
)
# Check if Foo( bar < 42 || <= 42 ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "<" || == "<=" ),
+ ( operator == Operator.LESS || == Operator.LESS_OR_EQUAL ),
patternIsNot == $r.patternIsNot,
doubleValue == $r.doubleValue
)
then
- Gap gap = new Gap( $f, "<", $r );
+ Gap gap = new Gap( $f, Operator.LESS, $r );
gap.setFiredRuleName( drools.getRule().getName() );
result.save( gap );
insert( gap );
end
-
-
-/*
-# If all ranges are not checked for a field.
-#
-# Type: Warning
-# Example: in "Rule 1" Foo(bar > 42 ) and in "Rule 2" Foo( bar < 42 )
-# then Foo( bar == 42 ) is missing.
-rule "Range check for doubles, smaller and greater than"
- when
- $f :Field( fieldType == Field.FieldType.DOUBLE )
- (
- $r :LiteralRestriction(
- fieldId == $f.id,
- evaluator == ">"
- )
- and
- not LiteralRestriction(
- fieldId == $f.id,
- ( evaluator == "==" || == "<=" ),
- patternIsNot == $r.patternIsNot,
- doubleValue == $r.doubleValue
- )
- ) or (
- $r :LiteralRestriction(
- fieldId == $f.id,
- evaluator == "<"
- )
- and
- not LiteralRestriction(
- fieldId == $f.id,
- ( evaluator == "==" || == ">=" ),
- patternIsNot == $r.patternIsNot,
- doubleValue == $r.doubleValue
- )
- ) or (
- $r :LiteralRestriction(
- fieldId == $f.id,
- evaluator == "<="
- )
- and
- not LiteralRestriction(
- fieldId == $f.id,
- evaluator == ">",
- patternIsNot == $r.patternIsNot,
- doubleValue == $r.doubleValue
- )
- ) or (
- $r :LiteralRestriction(
- fieldId == $f.id,
- evaluator == ">="
- )
- and
- not LiteralRestriction(
- fieldId == $f.id,
- evaluator == "<",
- patternIsNot == $r.patternIsNot,
- doubleValue == $r.doubleValue
- )
- )
- then
- Gap gap = new Gap( $f, Gap.getReversedEvaluator($r.getEvaluator()), $r );
- gap.setFiredRuleName( drools.getRule().getName() );
- result.save( gap );
- insert( gap );
-end
-
-# If all ranges are not checked for a field.
-# If equality and smaller than exist check that greater than exists too.
-#
-# Type: Warning
-# Example: in "Rule 1" Foo(bar == 42 ) and in "Rule 2" Foo( bar < 42 )
-# then Foo( bar > 42 ) is missing.
-rule "Range check for doubles, equal and greater than"
- when
- # Case Foo( bar == 42 ) Foo( bar >= 42 || > 42 ).
- $f :Field( fieldType == Field.FieldType.DOUBLE )
- $r :LiteralRestriction(
- fieldId == $f.id,
- evaluator == "=="
- )
- LiteralRestriction(
- fieldId == $f.id,
- ( evaluator == ">" || == ">=" ),
- patternIsNot == $r.patternIsNot,
- doubleValue == $r.doubleValue
- )
- # Check if Foo( bar < 42 || <= 42 ) is missing.
- not LiteralRestriction(
- fieldId == $f.id,
- ( evaluator == "<" || == "<=" ),
- patternIsNot == $r.patternIsNot,
- doubleValue == $r.doubleValue
- )
- then
- Gap gap = new Gap( $f, "<", $r );
- gap.setFiredRuleName( drools.getRule().getName() );
- result.save( gap );
- insert( gap );
-end
-
-# If all ranges are not checked for a field.
-# If equality and smaller than exist check that greater than exists too.
-#
-# Type: Warning
-# Example: in "Rule 1" Foo(bar == 42 ) and in "Rule 2" Foo( bar > 42 )
-# then Foo( bar < 42 ) is missing.
-rule "Range check for doubles, equal and smaller than"
- when
- # Case Foo( bar == 42 ) Foo( bar <= 42 || < 42 ).
- $f :Field( fieldType == Field.FieldType.DOUBLE )
- $r :LiteralRestriction(
- fieldId == $f.id,
- evaluator == "=="
- )
- LiteralRestriction(
- fieldId == $f.id,
- ( evaluator == "<" || == "<=" ),
- patternIsNot == $r.patternIsNot,
- doubleValue == $r.doubleValue
- )
- # Check if Foo( bar > 42 || >= 42 ) is missing.
- not LiteralRestriction(
- fieldId == $f.id,
- ( evaluator == ">" || == ">=" ),
- patternIsNot == $r.patternIsNot,
- doubleValue == $r.doubleValue
- )
- then
- Gap gap = new Gap( $f, ">", $r );
- gap.setFiredRuleName( drools.getRule().getName() );
- result.save( gap );
- insert( gap );
-end
-*/
Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Integers.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Integers.drl 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Integers.drl 2007-11-03 12:32:56 UTC (rev 16297)
@@ -2,6 +2,8 @@
package org.drools.analytics.rangeChecks.integers;
#list any import classes here.
+import org.drools.base.evaluators.Operator;
+
import org.drools.analytics.components.*;
import org.drools.analytics.report.components.Gap;
@@ -22,18 +24,18 @@
# Foo( bar > 42 )
$r :LiteralRestriction(
fieldId == $f.id,
- evaluator == ">"
+ operator == Operator.GREATER
)
# Check if Foo( bar == 42 || <= 42 ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "==" || == "<=" ),
+ ( operator == Operator.EQUAL || == Operator.LESS_OR_EQUAL ),
patternIsNot == $r.patternIsNot,
intValue == $r.intValue
)
then
- Gap gap = new Gap( $f, "<=", $r );
+ Gap gap = new Gap( $f, Operator.LESS_OR_EQUAL, $r );
gap.setFiredRuleName( drools.getRule().getName() );
@@ -54,18 +56,18 @@
# Foo( bar > 42 )
$r :LiteralRestriction(
fieldId == $f.id,
- evaluator == "<"
+ operator == Operator.LESS
)
# Check if Foo( bar == 42 || <= 42 ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "==" || == ">=" ),
+ ( operator == Operator.EQUAL || == Operator.GREATER_OR_EQUAL ),
patternIsNot == $r.patternIsNot,
intValue == $r.intValue
)
then
- Gap gap = new Gap( $f, ">=", $r );
+ Gap gap = new Gap( $f, Operator.GREATER_OR_EQUAL, $r );
gap.setFiredRuleName( drools.getRule().getName() );
@@ -87,13 +89,13 @@
# Foo( bar == 42 )
$r :LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "==" || == "<=" )
+ ( operator == Operator.EQUAL || == Operator.LESS_OR_EQUAL )
)
# Check if Foo( bar > 42 || >= 42 ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == ">" || == ">=" ),
+ ( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL ),
patternIsNot == $r.patternIsNot,
intValue == $r.intValue
)
@@ -101,12 +103,12 @@
# Check if Foo( bar == 43 || >= 43 ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "==" || == ">=" ),
+ ( operator == Operator.EQUAL || == Operator.GREATER_OR_EQUAL ),
patternIsNot == $r.patternIsNot,
eval( intValue == $r.getIntValue() + 1 )
)
then
- Gap gap = new Gap( $f, ">", $r );
+ Gap gap = new Gap( $f, Operator.GREATER, $r );
gap.setFiredRuleName( drools.getRule().getName() );
@@ -128,13 +130,13 @@
# Foo( bar == 42 )
$r :LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "==" || == ">=" )
+ ( operator == Operator.EQUAL || == Operator.GREATER_OR_EQUAL )
)
# Check if Foo( bar < 42 || <= 42 ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "<" || == "<=" ),
+ ( operator == Operator.LESS || == Operator.LESS_OR_EQUAL ),
patternIsNot == $r.patternIsNot,
intValue == $r.intValue
)
@@ -142,12 +144,12 @@
# Check if Foo( bar == 41 || <= 41 ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "==" || == "<=" ),
+ ( operator == Operator.EQUAL || == Operator.LESS_OR_EQUAL ),
patternIsNot == $r.patternIsNot,
eval( intValue == $r.getIntValue() - 1 )
)
then
- Gap gap = new Gap( $f, "<", $r );
+ Gap gap = new Gap( $f, Operator.LESS, $r );
gap.setFiredRuleName( drools.getRule().getName() );
Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Patterns.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Patterns.drl 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Patterns.drl 2007-11-03 12:32:56 UTC (rev 16297)
@@ -2,6 +2,8 @@
package org.drools.analytics.rangeChecks.patterns;
#list any import classes here.
+import org.drools.base.evaluators.Operator;
+
import org.drools.analytics.components.*;
import org.drools.analytics.accumulateFunction.ValidatePattern;
import org.drools.analytics.accumulateFunction.ValidatePatternResult;
@@ -36,7 +38,7 @@
LiteralRestriction(
fieldId == $f.id,
patternIsNot == false,
- evaluator == "=="
+ operator == Operator.EQUAL
)
)
) or (
@@ -46,14 +48,14 @@
LiteralRestriction(
fieldId == $f.id,
patternIsNot == true,
- evaluator == "=="
+ operator == Operator.EQUAL
)
)
)
then
Number number = FindMissingNumber.testForPattern( $list );
if( number != null ){
- MissingNumberPattern mnp = new MissingNumberPattern( $f, "==", $f.getFieldType(), number.toString() );
+ MissingNumberPattern mnp = new MissingNumberPattern( $f, Operator.EQUAL, $f.getFieldType(), number.toString() );
result.save( mnp );
}
end
@@ -76,7 +78,7 @@
LiteralRestriction(
fieldId == $f.id,
patternIsNot == false,
- evaluator == "!="
+ operator == Operator.NOT_EQUAL
)
)
) or (
@@ -86,14 +88,14 @@
LiteralRestriction(
fieldId == $f.id,
patternIsNot == true,
- evaluator == "!="
+ operator == Operator.NOT_EQUAL
)
)
)
then
Number number = FindMissingNumber.testForPattern( $list );
if( number != null ){
- MissingNumberPattern mnp = new MissingNumberPattern( $f, "!=", $f.getFieldType(), number.toString() );
+ MissingNumberPattern mnp = new MissingNumberPattern( $f, Operator.NOT_EQUAL, $f.getFieldType(), number.toString() );
result.save( mnp );
}
end
Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Restrictions.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Restrictions.drl 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Restrictions.drl 2007-11-03 12:32:56 UTC (rev 16297)
@@ -10,7 +10,9 @@
$left :VariableRestriction()
$right :VariableRestriction(
id != $left.id,
- evaluator == $left.evaluator
+ operator == $left.operator,
+ variable.objectType == $left.variable.objectType,
+ variable.objectId == $left.variable.objectId
)
# Check that there is not already a pair with these values.
not Redundancy(
@@ -23,12 +25,12 @@
)
# Check that these two variables point to the same object.
- $v :Variable( id == $left.variableId )
- Variable(
- id == $right.variableId,
- objectType == $v.objectType,
- objectId == $v.objectId
- )
+ #$v :Variable( id == $left.variableId )
+ #Variable(
+ # id == $right.variableId,
+ # objectType == $v.objectType,
+ # objectId == $v.objectId
+ #)
then
insert( new Redundancy( Redundancy.RedundancyType.STRONG, $left, $right ) );
end
@@ -42,14 +44,14 @@
(
$right :LiteralRestriction(
id != $left.id,
- evaluator == $left.evaluator,
+ operator == $left.operator,
valueType == $left.valueType,
valueType == Field.FieldType.BOOLEAN,
booleanValue == $left.booleanValue
)
or
$right :LiteralRestriction( id != $left.id,
- evaluator == $left.evaluator,
+ operator == $left.operator,
valueType == $left.valueType,
valueType == Field.FieldType.STRING,
valueAsString matches $left.valueAsString
@@ -57,7 +59,7 @@
or
$right :LiteralRestriction(
id != $left.id,
- evaluator == $left.evaluator,
+ operator == $left.operator,
valueType == $left.valueType,
valueType == Field.FieldType.INT,
intValue == $left.intValue
@@ -65,7 +67,7 @@
or
$right :LiteralRestriction(
id != $left.id,
- evaluator == $left.evaluator,
+ operator == $left.operator,
valueType == $left.valueType,
valueType == Field.FieldType.DOUBLE,
doubleValue == $left.doubleValue
@@ -73,7 +75,7 @@
or
$right :LiteralRestriction(
id != $left.id,
- evaluator == $left.evaluator,
+ operator == $left.operator,
valueType == $left.valueType,
valueType == Field.FieldType.DATE,
eval( dateValue.equals($left.getDateValue()) )
@@ -82,7 +84,7 @@
(
$right :LiteralRestriction(
id != $left.id,
- evaluator == $left.evaluator,
+ operator == $left.operator,
valueType == $left.valueType,
valueType == Field.FieldType.VARIABLE
)
@@ -122,7 +124,7 @@
$left :ReturnValueRestriction()
$right :ReturnValueRestriction(
id != $left.id,
- evaluator == $left.evaluator,
+ operator == $left.operator,
classMethodName matches $left.classMethodName,
compareStringArrays( declarations, $left.declarations )
)
@@ -151,7 +153,7 @@
$left :QualifiedIdentifierRestriction()
$right :QualifiedIdentifierRestriction(
id != $left.id,
- evaluator == $left.evaluator
+ operator == $left.operator
)
# Check that these two variables point to the same object.
Modified: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/ConsequenceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/ConsequenceTest.java 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/ConsequenceTest.java 2007-11-03 12:32:56 UTC (rev 16297)
@@ -6,13 +6,11 @@
import java.util.Set;
import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
import org.drools.analytics.components.AnalyticsRule;
import org.drools.analytics.dao.AnalyticsDataFactory;
import org.drools.analytics.dao.AnalyticsResult;
import org.drools.analytics.report.components.AnalyticsMessage;
import org.drools.analytics.report.components.AnalyticsMessageBase;
-import org.drools.analytics.report.components.Gap;
import org.drools.base.RuleNameMatchesAgendaFilter;
/**
Modified: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RangeCheckCleanTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RangeCheckCleanTest.java 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RangeCheckCleanTest.java 2007-11-03 12:32:56 UTC (rev 16297)
@@ -15,6 +15,7 @@
import org.drools.analytics.dao.AnalyticsResult;
import org.drools.analytics.report.components.Gap;
import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.base.evaluators.Operator;
/**
*
@@ -39,7 +40,7 @@
LiteralRestriction lower = new LiteralRestriction();
lower.setRuleName("> 10 covered");
lower.setFieldId(f.getId());
- lower.setEvaluator(">");
+ lower.setOperator(Operator.GREATER);
lower.setValue("10");
testData.add(lower);
@@ -47,38 +48,38 @@
LiteralRestriction r1 = new LiteralRestriction();
r1.setRuleName("== 50 covered");
r1.setFieldId(f.getId());
- r1.setEvaluator("==");
+ r1.setOperator(Operator.EQUAL);
r1.setValue("50");
testData.add(r1);
// > 50 gap
- Gap g1 = new Gap(f, ">", r1);
+ Gap g1 = new Gap(f, Operator.GREATER, r1);
g1.setFiredRuleName("above");
testData.add(g1);
// < 50 gap
- Gap g2 = new Gap(f, "<", r1);
+ Gap g2 = new Gap(f, Operator.LESS, r1);
g2.setFiredRuleName("below");
testData.add(g2);
-
+
// > 70 covered
LiteralRestriction r2 = new LiteralRestriction();
r2.setRuleName("> 70 covered");
r2.setFieldId(f.getId());
- r2.setEvaluator(">");
+ r2.setOperator(Operator.GREATER);
r2.setValue("70");
testData.add(r2);
// <= 70 gap
- Gap g3 = new Gap(f, "<=", r2);
+ Gap g3 = new Gap(f, Operator.LESS_OR_EQUAL, r2);
g3.setFiredRuleName("70gap");
testData.add(g3);
-
+
// < 100 covered
LiteralRestriction higher = new LiteralRestriction();
higher.setRuleName("< 100 covered");
higher.setFieldId(f.getId());
- higher.setEvaluator("<");
+ higher.setOperator(Operator.LESS);
higher.setValue("100");
testData.add(higher);
@@ -117,74 +118,74 @@
}
}
}
-
+
public void testUselessIntegerGapsGreater() throws Exception {
StatelessSession session = getStatelessSession(this.getClass()
.getResourceAsStream("rangeChecks/Clean.drl"));
-
+
session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Remove useless integer gaps greater or greater and equal"));
-
+ "Remove useless integer gaps greater or greater and equal"));
+
Collection<Object> testData = new ArrayList<Object>();
-
+
Field f = new Field();
testData.add(f);
-
+
// > 10 covered
LiteralRestriction lower = new LiteralRestriction();
lower.setRuleName("> 10 covered");
lower.setFieldId(f.getId());
- lower.setEvaluator(">");
+ lower.setOperator(Operator.GREATER);
lower.setValue("10");
testData.add(lower);
-
+
// == 50 covered
LiteralRestriction r1 = new LiteralRestriction();
r1.setRuleName("== 50 covered");
r1.setFieldId(f.getId());
- r1.setEvaluator("==");
+ r1.setOperator(Operator.EQUAL);
r1.setValue("50");
testData.add(r1);
-
+
// > 50 gap
- Gap g1 = new Gap(f, ">", r1);
+ Gap g1 = new Gap(f, Operator.GREATER, r1);
g1.setFiredRuleName("above");
testData.add(g1);
-
+
// < 50 gap
- Gap g2 = new Gap(f, "<", r1);
+ Gap g2 = new Gap(f, Operator.LESS, r1);
g2.setFiredRuleName("below");
testData.add(g2);
-
+
// < 70 covered
LiteralRestriction r2 = new LiteralRestriction();
r2.setRuleName("< 70 covered");
r2.setFieldId(f.getId());
- r2.setEvaluator("<");
+ r2.setOperator(Operator.LESS);
r2.setValue("70");
testData.add(r2);
-
+
// >= 70 gap
- Gap g3 = new Gap(f, ">=", r2);
+ Gap g3 = new Gap(f, Operator.GREATER_OR_EQUAL, r2);
g3.setFiredRuleName("70gap");
testData.add(g3);
-
+
// < 100 covered
LiteralRestriction higher = new LiteralRestriction();
higher.setRuleName("< 100 covered");
higher.setFieldId(f.getId());
- higher.setEvaluator("<");
+ higher.setOperator(Operator.LESS);
higher.setValue("100");
testData.add(higher);
AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
session.setGlobal("result", result);
-
+
StatelessSessionResult sessionResult = session
- .executeWithResults(testData);
-
+ .executeWithResults(testData);
+
Iterator<Object> iter = sessionResult.iterateObjects();
-
+
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
Object o = (Object) iter.next();
@@ -197,7 +198,7 @@
}
// System.out.println(o);
}
-
+
assertTrue(rulesThatHadErrors.remove("> 10 covered"));
assertTrue(rulesThatHadErrors.remove("== 50 covered"));
assertTrue(rulesThatHadErrors.remove("< 70 covered"));
@@ -205,81 +206,81 @@
assertFalse(rulesThatHadErrors.contains("below"));
assertFalse(rulesThatHadErrors.contains("above"));
assertFalse(rulesThatHadErrors.contains("70gap"));
-
+
if (!rulesThatHadErrors.isEmpty()) {
for (String string : rulesThatHadErrors) {
fail("Rule " + string + " caused an error.");
}
}
}
-
+
public void testUselessDoubleGapsLesser() throws Exception {
StatelessSession session = getStatelessSession(this.getClass()
.getResourceAsStream("rangeChecks/Clean.drl"));
-
+
session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Remove useless double gaps lesser or lesser and equal"));
-
+ "Remove useless double gaps lesser or lesser and equal"));
+
Collection<Object> testData = new ArrayList<Object>();
-
+
Field f = new Field();
testData.add(f);
-
+
// > 10.0 covered
LiteralRestriction lower = new LiteralRestriction();
lower.setRuleName("> 10.0 covered");
lower.setFieldId(f.getId());
- lower.setEvaluator(">");
+ lower.setOperator(Operator.GREATER);
lower.setValue("10.0");
testData.add(lower);
-
+
// == 50.0 covered
LiteralRestriction r1 = new LiteralRestriction();
r1.setRuleName("== 50.0 covered");
r1.setFieldId(f.getId());
- r1.setEvaluator("==");
+ r1.setOperator(Operator.EQUAL);
r1.setValue("50.0");
testData.add(r1);
-
+
// > 50.0 gap
- Gap g1 = new Gap(f, ">", r1);
+ Gap g1 = new Gap(f, Operator.GREATER, r1);
g1.setFiredRuleName("above");
testData.add(g1);
-
+
// < 50.0 gap
- Gap g2 = new Gap(f, "<", r1);
+ Gap g2 = new Gap(f, Operator.LESS, r1);
g2.setFiredRuleName("below");
testData.add(g2);
-
+
// > 70.0 covered
LiteralRestriction r2 = new LiteralRestriction();
r2.setRuleName("> 70.0 covered");
r2.setFieldId(f.getId());
- r2.setEvaluator(">");
+ r2.setOperator(Operator.GREATER);
r2.setValue("70.0");
testData.add(r2);
-
+
// <= 70.0 gap
- Gap g3 = new Gap(f, "<=", r2);
+ Gap g3 = new Gap(f, Operator.LESS_OR_EQUAL, r2);
g3.setFiredRuleName("70gap");
testData.add(g3);
-
+
// < 100.0 covered
LiteralRestriction higher = new LiteralRestriction();
higher.setRuleName("< 100.0 covered");
higher.setFieldId(f.getId());
- higher.setEvaluator("<");
+ higher.setOperator(Operator.LESS);
higher.setValue("100.0");
testData.add(higher);
AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
session.setGlobal("result", result);
-
+
StatelessSessionResult sessionResult = session
- .executeWithResults(testData);
-
+ .executeWithResults(testData);
+
Iterator<Object> iter = sessionResult.iterateObjects();
-
+
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
Object o = (Object) iter.next();
@@ -292,7 +293,7 @@
}
// System.out.println(o);
}
-
+
assertTrue(rulesThatHadErrors.remove("> 10.0 covered"));
assertTrue(rulesThatHadErrors.remove("== 50.0 covered"));
assertTrue(rulesThatHadErrors.remove("> 70.0 covered"));
@@ -300,81 +301,81 @@
assertFalse(rulesThatHadErrors.contains("below"));
assertFalse(rulesThatHadErrors.contains("above"));
assertFalse(rulesThatHadErrors.contains("70gap"));
-
+
if (!rulesThatHadErrors.isEmpty()) {
for (String string : rulesThatHadErrors) {
fail("Rule " + string + " caused an error.");
}
}
}
-
+
public void testUselessDoubleGapsGreater() throws Exception {
StatelessSession session = getStatelessSession(this.getClass()
.getResourceAsStream("rangeChecks/Clean.drl"));
-
+
session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Remove useless double gaps greater or greater and equal"));
-
+ "Remove useless double gaps greater or greater and equal"));
+
Collection<Object> testData = new ArrayList<Object>();
-
+
Field f = new Field();
testData.add(f);
-
+
// > 10.0 covered
LiteralRestriction lower = new LiteralRestriction();
lower.setRuleName("> 10.0 covered");
lower.setFieldId(f.getId());
- lower.setEvaluator(">");
+ lower.setOperator(Operator.GREATER);
lower.setValue("10.0");
testData.add(lower);
-
+
// == 50.0 covered
LiteralRestriction r1 = new LiteralRestriction();
r1.setRuleName("== 50.0 covered");
r1.setFieldId(f.getId());
- r1.setEvaluator("==");
+ r1.setOperator(Operator.EQUAL);
r1.setValue("50.0");
testData.add(r1);
-
+
// > 50.0 gap
- Gap g1 = new Gap(f, ">", r1);
+ Gap g1 = new Gap(f, Operator.GREATER, r1);
g1.setFiredRuleName("above");
testData.add(g1);
-
+
// < 50.0 gap
- Gap g2 = new Gap(f, "<", r1);
+ Gap g2 = new Gap(f, Operator.LESS, r1);
g2.setFiredRuleName("below");
testData.add(g2);
-
+
// < 70.0 covered
LiteralRestriction r2 = new LiteralRestriction();
r2.setRuleName("< 70.0 covered");
r2.setFieldId(f.getId());
- r2.setEvaluator("<");
+ r2.setOperator(Operator.LESS);
r2.setValue("70.0");
testData.add(r2);
-
+
// >= 70.0 gap
- Gap g3 = new Gap(f, ">=", r2);
+ Gap g3 = new Gap(f, Operator.GREATER_OR_EQUAL, r2);
g3.setFiredRuleName("70gap");
testData.add(g3);
-
+
// < 100.0 covered
LiteralRestriction higher = new LiteralRestriction();
higher.setRuleName("< 100.0 covered");
higher.setFieldId(f.getId());
- higher.setEvaluator("<");
+ higher.setOperator(Operator.LESS);
higher.setValue("100.0");
testData.add(higher);
AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
session.setGlobal("result", result);
-
+
StatelessSessionResult sessionResult = session
- .executeWithResults(testData);
-
+ .executeWithResults(testData);
+
Iterator<Object> iter = sessionResult.iterateObjects();
-
+
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
Object o = (Object) iter.next();
@@ -387,7 +388,7 @@
}
// System.out.println(o);
}
-
+
assertTrue(rulesThatHadErrors.remove("> 10.0 covered"));
assertTrue(rulesThatHadErrors.remove("== 50.0 covered"));
assertTrue(rulesThatHadErrors.remove("< 70.0 covered"));
@@ -395,81 +396,81 @@
assertFalse(rulesThatHadErrors.contains("below"));
assertFalse(rulesThatHadErrors.contains("above"));
assertFalse(rulesThatHadErrors.contains("70gap"));
-
+
if (!rulesThatHadErrors.isEmpty()) {
for (String string : rulesThatHadErrors) {
fail("Rule " + string + " caused an error.");
}
}
}
-
+
public void testUselessDateGapsLesser() throws Exception {
StatelessSession session = getStatelessSession(this.getClass()
.getResourceAsStream("rangeChecks/Clean.drl"));
-
+
session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Remove useless date gaps lesser or lesser and equal"));
-
+ "Remove useless date gaps lesser or lesser and equal"));
+
Collection<Object> testData = new ArrayList<Object>();
-
+
Field f = new Field();
testData.add(f);
-
+
// > "01-Oct-2007" covered
LiteralRestriction lower = new LiteralRestriction();
lower.setRuleName("> 01-Oct-2007 covered");
lower.setFieldId(f.getId());
- lower.setEvaluator(">");
+ lower.setOperator(Operator.GREATER);
lower.setValue("01-Oct-2007");
testData.add(lower);
-
+
// == "10-Oct-2007" covered
LiteralRestriction r1 = new LiteralRestriction();
r1.setRuleName("== 10-Oct-2007 covered");
r1.setFieldId(f.getId());
- r1.setEvaluator("==");
+ r1.setOperator(Operator.EQUAL);
r1.setValue("10-Oct-2007");
testData.add(r1);
-
+
// > "10-Oct-2007" gap
- Gap g1 = new Gap(f, ">", r1);
+ Gap g1 = new Gap(f, Operator.GREATER, r1);
g1.setFiredRuleName("above");
testData.add(g1);
-
+
// < "10-Oct-2007" gap
- Gap g2 = new Gap(f, "<", r1);
+ Gap g2 = new Gap(f, Operator.LESS, r1);
g2.setFiredRuleName("below");
testData.add(g2);
-
+
// > "15-Oct-2007" covered
LiteralRestriction r2 = new LiteralRestriction();
r2.setRuleName("> 15-Oct-2007 covered");
r2.setFieldId(f.getId());
- r2.setEvaluator(">");
+ r2.setOperator(Operator.GREATER);
r2.setValue("15-Oct-2007");
testData.add(r2);
-
+
// <= "15-Oct-2007" gap
- Gap g3 = new Gap(f, "<=", r2);
+ Gap g3 = new Gap(f, Operator.LESS_OR_EQUAL, r2);
g3.setFiredRuleName("15-Oct-2007gap");
testData.add(g3);
-
+
// < "20-Oct-2007" covered
LiteralRestriction higher = new LiteralRestriction();
higher.setRuleName("< 20-Oct-2007 covered");
higher.setFieldId(f.getId());
- higher.setEvaluator("<");
+ higher.setOperator(Operator.LESS);
higher.setValue("20-Oct-2007");
testData.add(higher);
AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
session.setGlobal("result", result);
-
+
StatelessSessionResult sessionResult = session
- .executeWithResults(testData);
-
+ .executeWithResults(testData);
+
Iterator<Object> iter = sessionResult.iterateObjects();
-
+
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
Object o = (Object) iter.next();
@@ -482,7 +483,7 @@
}
// System.out.println(o);
}
-
+
assertTrue(rulesThatHadErrors.remove("> 01-Oct-2007 covered"));
assertTrue(rulesThatHadErrors.remove("== 10-Oct-2007 covered"));
assertTrue(rulesThatHadErrors.remove("> 15-Oct-2007 covered"));
@@ -490,81 +491,81 @@
assertFalse(rulesThatHadErrors.contains("below"));
assertFalse(rulesThatHadErrors.contains("above"));
assertFalse(rulesThatHadErrors.contains("15-Oct-2007gap"));
-
+
if (!rulesThatHadErrors.isEmpty()) {
for (String string : rulesThatHadErrors) {
fail("Rule " + string + " caused an error.");
}
}
}
-
+
public void testUselessDateGapsGreater() throws Exception {
StatelessSession session = getStatelessSession(this.getClass()
.getResourceAsStream("rangeChecks/Clean.drl"));
-
+
session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Remove useless date gaps greater or greater and equal"));
-
+ "Remove useless date gaps greater or greater and equal"));
+
Collection<Object> testData = new ArrayList<Object>();
-
+
Field f = new Field();
testData.add(f);
-
+
// > "01-Oct-2007" covered
LiteralRestriction lower = new LiteralRestriction();
lower.setRuleName("> 01-Oct-2007 covered");
lower.setFieldId(f.getId());
- lower.setEvaluator(">");
+ lower.setOperator(Operator.GREATER);
lower.setValue("01-Oct-2007");
testData.add(lower);
-
+
// == "10-Oct-2007" covered
LiteralRestriction r1 = new LiteralRestriction();
r1.setRuleName("== 10-Oct-2007 covered");
r1.setFieldId(f.getId());
- r1.setEvaluator("==");
+ r1.setOperator(Operator.EQUAL);
r1.setValue("10-Oct-2007");
testData.add(r1);
-
+
// > "10-Oct-2007" gap
- Gap g1 = new Gap(f, ">", r1);
+ Gap g1 = new Gap(f, Operator.GREATER, r1);
g1.setFiredRuleName("above");
testData.add(g1);
-
+
// < "10-Oct-2007" gap
- Gap g2 = new Gap(f, "<", r1);
+ Gap g2 = new Gap(f, Operator.LESS, r1);
g2.setFiredRuleName("below");
testData.add(g2);
-
+
// < "15-Oct-2007" covered
LiteralRestriction r2 = new LiteralRestriction();
r2.setRuleName("< 15-Oct-2007 covered");
r2.setFieldId(f.getId());
- r2.setEvaluator("<");
+ r2.setOperator(Operator.LESS);
r2.setValue("15-Oct-2007");
testData.add(r2);
-
+
// >= "15-Oct-2007" gap
- Gap g3 = new Gap(f, ">=", r2);
+ Gap g3 = new Gap(f, Operator.GREATER_OR_EQUAL, r2);
g3.setFiredRuleName("15-Oct-2007gap");
testData.add(g3);
-
+
// < "20-Oct-2007" covered
LiteralRestriction higher = new LiteralRestriction();
higher.setRuleName("< 20-Oct-2007 covered");
higher.setFieldId(f.getId());
- higher.setEvaluator("<");
+ higher.setOperator(Operator.LESS);
higher.setValue("20-Oct-2007");
testData.add(higher);
AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
session.setGlobal("result", result);
-
+
StatelessSessionResult sessionResult = session
- .executeWithResults(testData);
-
+ .executeWithResults(testData);
+
Iterator<Object> iter = sessionResult.iterateObjects();
-
+
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
Object o = (Object) iter.next();
@@ -577,7 +578,7 @@
}
// System.out.println(o);
}
-
+
assertTrue(rulesThatHadErrors.remove("> 01-Oct-2007 covered"));
assertTrue(rulesThatHadErrors.remove("== 10-Oct-2007 covered"));
assertTrue(rulesThatHadErrors.remove("< 15-Oct-2007 covered"));
@@ -585,7 +586,7 @@
assertFalse(rulesThatHadErrors.contains("below"));
assertFalse(rulesThatHadErrors.contains("above"));
assertFalse(rulesThatHadErrors.contains("15-Oct-2007gap"));
-
+
if (!rulesThatHadErrors.isEmpty()) {
for (String string : rulesThatHadErrors) {
fail("Rule " + string + " caused an error.");
Modified: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RangeCheckIntegersTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RangeCheckIntegersTest.java 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RangeCheckIntegersTest.java 2007-11-03 12:32:56 UTC (rev 16297)
@@ -30,6 +30,7 @@
Collection<? extends Object> testData = getTestData(this.getClass()
.getResourceAsStream("MissingRangesForInts.drl"));
+ AnalyticsDataFactory.clearAnalyticsResult();
AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
session.setGlobal("result", result);
@@ -68,6 +69,7 @@
Collection<? extends Object> testData = getTestData(this.getClass()
.getResourceAsStream("MissingRangesForInts.drl"));
+ AnalyticsDataFactory.clearAnalyticsResult();
AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
session.setGlobal("result", result);
@@ -105,6 +107,7 @@
Collection<? extends Object> testData = getTestData(this.getClass()
.getResourceAsStream("MissingRangesForInts.drl"));
+ AnalyticsDataFactory.clearAnalyticsResult();
AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
session.setGlobal("result", result);
@@ -143,6 +146,7 @@
Collection<? extends Object> testData = getTestData(this.getClass()
.getResourceAsStream("MissingRangesForInts.drl"));
+ AnalyticsDataFactory.clearAnalyticsResult();
AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
session.setGlobal("result", result);
Added: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/missingEquality/MissingEqualityTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/missingEquality/MissingEqualityTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/missingEquality/MissingEqualityTest.java 2007-11-03 12:32:56 UTC (rev 16297)
@@ -0,0 +1,107 @@
+package org.drools.analytics.missingEquality;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.drools.StatelessSession;
+import org.drools.analytics.TestBase;
+import org.drools.analytics.components.LiteralRestriction;
+import org.drools.analytics.components.VariableRestriction;
+import org.drools.analytics.dao.AnalyticsDataFactory;
+import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.analytics.report.components.AnalyticsMessage;
+import org.drools.analytics.report.components.AnalyticsMessageBase;
+import org.drools.analytics.report.components.Cause;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+
+public class MissingEqualityTest extends TestBase {
+
+ public void testMissingEqualityInLiteralRestrictions() throws Exception {
+ StatelessSession session = getStatelessSession(this.getClass()
+ .getResourceAsStream("MissingEquality.drl"));
+
+ session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+ "Missing restriction in LiteralRestrictions"));
+
+ // Clear data so that test data doesn't mix.
+ AnalyticsDataFactory.clearAnalyticsData();
+ Collection<? extends Object> testData = getTestData(this.getClass()
+ .getResourceAsStream("MissingEqualityTest.drl"));
+
+ // Clear result so that test data doesn't mix.
+ AnalyticsDataFactory.clearAnalyticsResult();
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ session.setGlobal("result", result);
+
+ session.executeWithResults(testData);
+
+ Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+ AnalyticsMessageBase.Severity.WARNING).iterator();
+
+ Collection<String> ruleNames = new ArrayList<String>();
+ while (iter.hasNext()) {
+ Object o = (Object) iter.next();
+ if (o instanceof AnalyticsMessage) {
+ Cause cause = ((AnalyticsMessage) o).getFaulty();
+ String name = ((LiteralRestriction) cause).getRuleName();
+
+ ruleNames.add(name);
+ }
+ }
+
+ assertTrue(ruleNames.remove("Missing equality 1"));
+ assertTrue(ruleNames.remove("Missing equality 2"));
+
+ if (!ruleNames.isEmpty()) {
+ for (String string : ruleNames) {
+ fail("Rule " + string + " caused an error.");
+ }
+ }
+ }
+
+ public void testMissingEqualityInVariableRestrictions() throws Exception {
+ StatelessSession session = getStatelessSession(this.getClass()
+ .getResourceAsStream("MissingEquality.drl"));
+
+ session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+ "Missing restriction in VariableRestrictions"));
+
+ // Clear data so that test data doesn't mix.
+ AnalyticsDataFactory.clearAnalyticsData();
+ Collection<? extends Object> testData = getTestData(this.getClass()
+ .getResourceAsStream("MissingEqualityTest.drl"));
+
+ // Clear result so that test data doesn't mix.
+ AnalyticsDataFactory.clearAnalyticsResult();
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ session.setGlobal("result", result);
+
+ session.executeWithResults(testData);
+
+ Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+ AnalyticsMessageBase.Severity.WARNING).iterator();
+
+ Collection<String> ruleNames = new ArrayList<String>();
+ while (iter.hasNext()) {
+ Object o = (Object) iter.next();
+ if (o instanceof AnalyticsMessage) {
+ Cause cause = ((AnalyticsMessage) o).getFaulty();
+ String name = ((VariableRestriction) cause).getRuleName();
+
+ ruleNames.add(name);
+ }
+ }
+
+ assertTrue(ruleNames.remove("Missing equality 3"));
+ assertTrue(ruleNames.remove("Missing equality 4"));
+ assertTrue(ruleNames.remove("Missing equality 5"));
+ assertTrue(ruleNames.remove("Missing equality 6"));
+
+ if (!ruleNames.isEmpty()) {
+ for (String string : ruleNames) {
+ fail("Rule " + string + " caused an error.");
+ }
+ }
+ }
+}
Modified: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/optimisation/RestrictionOrderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/optimisation/RestrictionOrderTest.java 2007-11-03 05:15:09 UTC (rev 16296)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/optimisation/RestrictionOrderTest.java 2007-11-03 12:32:56 UTC (rev 16297)
@@ -19,6 +19,7 @@
import org.drools.analytics.report.components.AnalyticsMessageBase;
import org.drools.analytics.report.components.Cause;
import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.base.evaluators.Operator;
public class RestrictionOrderTest extends TestBase {
@@ -84,21 +85,21 @@
LiteralRestriction r1 = new LiteralRestriction();
r1.setPatternId(pattern1.getId());
r1.setParent(parent1);
- r1.setEvaluator(">");
+ r1.setOperator(Operator.GREATER);
r1.setOrderNumber(1);
testData.add(r1);
LiteralRestriction r2 = new LiteralRestriction();
r2.setPatternId(pattern1.getId());
r2.setParent(parent1);
- r2.setEvaluator("==");
+ r2.setOperator(Operator.EQUAL);
r2.setOrderNumber(2);
testData.add(r2);
LiteralRestriction r3 = new LiteralRestriction();
r3.setPatternId(pattern1.getId());
r3.setParent(parent1);
- r3.setEvaluator("<");
+ r3.setOperator(Operator.LESS);
r3.setOrderNumber(3);
testData.add(r3);
@@ -113,21 +114,21 @@
LiteralRestriction r4 = new LiteralRestriction();
r4.setPatternId(pattern2.getId());
r4.setParent(parent2);
- r4.setEvaluator("!=");
+ r4.setOperator(Operator.NOT_EQUAL);
r4.setOrderNumber(1);
testData.add(r4);
LiteralRestriction r5 = new LiteralRestriction();
r5.setPatternId(pattern2.getId());
r5.setParent(parent2);
- r5.setEvaluator("<=");
+ r5.setOperator(Operator.LESS_OR_EQUAL);
r5.setOrderNumber(2);
testData.add(r5);
LiteralRestriction r6 = new LiteralRestriction();
r6.setPatternId(pattern2.getId());
r6.setParent(parent2);
- r6.setEvaluator("!=");
+ r6.setOperator(Operator.NOT_EQUAL);
r6.setOrderNumber(3);
testData.add(r6);
Added: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/missingEquality/MissingEqualityTest.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/missingEquality/MissingEqualityTest.drl (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/missingEquality/MissingEqualityTest.drl 2007-11-03 12:32:56 UTC (rev 16297)
@@ -0,0 +1,148 @@
+#created on: 31.10.2007
+package org.drools.test
+
+#list any import classes here.
+
+
+
+#declare any global variables here
+
+
+
+rule "Missing equality 1"
+ when
+ MissingEqualityPattern1( value == 10 )
+ then
+ #actions
+end
+
+rule "Covered equality 1a"
+ when
+ CoveredEqualityPattern1( value == 10 )
+ then
+ #actions
+end
+
+rule "Covered equality 1b"
+ when
+ CoveredEqualityPattern1( value != 10 )
+ then
+ #actions
+end
+
+rule "Missing equality 2"
+ when
+ MissingEqualityPattern2( value matches "a" )
+ then
+ #actions
+end
+
+rule "Covered equality 2a"
+ when
+ CoveredEqualityPattern2( value matches "a" )
+ then
+ #actions
+end
+
+rule "Covered equality 2b"
+ when
+ CoveredEqualityPattern2( value not matches "a" )
+ then
+ #actions
+end
+
+rule "Missing equality 3"
+ when
+ $col :MissingEqualityCollection()
+ MissingEqualityPattern3( value memberOf $col )
+ then
+ #actions
+end
+
+rule "Covered equality 3a"
+ when
+ $col :MissingEqualityCollection()
+ CoveredEqualityPattern3( value memberOf $col )
+ then
+ #actions
+end
+
+rule "Covered equality 3b"
+ when
+ $col :MissingEqualityCollection()
+ CoveredEqualityPattern3( value not memberOf $col )
+ then
+ #actions
+end
+
+rule "Missing equality 4"
+ when
+ $value :MissingEqualityValue()
+ MissingEqualityPattern4( value contains $value )
+ then
+ #actions
+end
+
+rule "Covered equality 4a"
+ when
+ $value :MissingEqualityValue()
+ CoveredEqualityPattern4( value contains $value )
+ then
+ #actions
+end
+
+rule "Covered equality 4b"
+ when
+ $value :MissingEqualityValue()
+ CoveredEqualityPattern4( value not contains $value )
+ then
+ #actions
+end
+
+rule "Missing equality 5"
+ when
+ MissingEqualityNumber( $n :number )
+ MissingEqualityPattern5( value == $n )
+ then
+ #actions
+end
+
+rule "Covered equality 5a"
+ when
+ MissingEqualityNumber( $n :number )
+ CoveredEqualityPattern5( value == $n )
+ then
+ #actions
+end
+
+rule "Covered equality 5b"
+ when
+ MissingEqualityNumber( $n :number )
+ CoveredEqualityPattern5( value != $n )
+ then
+ #actions
+end
+
+rule "Missing equality 6"
+ when
+ MissingEqualityString( $t :text )
+ MissingEqualityPattern6( value matches $t )
+ then
+ #actions
+end
+
+rule "Covered equality 6a"
+ when
+ MissingEqualityString( $t :text )
+ CoveredEqualityPattern6( value matches $t )
+ then
+ #actions
+end
+
+rule "Covered equality 6b"
+ when
+ MissingEqualityString( $t :text )
+ CoveredEqualityPattern6( value not matches $t )
+ then
+ #actions
+end
More information about the jboss-svn-commits
mailing list