[jboss-svn-commits] JBL Code SVN: r15907 - 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
Thu Oct 18 05:29:17 EDT 2007
Author: Rikkola
Date: 2007-10-18 05:29:17 -0400 (Thu, 18 Oct 2007)
New Revision: 15907
Added:
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsResult.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsResultNormal.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/DataTree.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/ReportModeller.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/AnalyticsMessage.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/AnalyticsRangeCheckMessage.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Cause.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/PartialRedundancy.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/components/Redundancy.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Subsumption.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/AnalyticsMessagesVisitor.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ComponentsReportModeller.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ComponentsReportVisitor.java
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/ReportModeller.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ReportVisitor.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/UrlFactory.java
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Notes.drl
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/analyticsMessage.htm
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/analyticsMessages.htm
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/basic.css
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/field.htm
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/frame.htm
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/hdrlogo_drools50px.gif
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/header.htm
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/jbossrules_hdrbkg_blue.gif
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/missingRange.htm
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/objectType.htm
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/objectTypes.htm
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/packages.htm
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/ranges.htm
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/relationsDetails.css
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/relationsList.css
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/rule.htm
labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/redundancy/
labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/redundancy/NotesTest.java
Removed:
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/result/
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/result/
Modified:
labs/jbossrules/trunk/drools-analytics/.classpath
labs/jbossrules/trunk/drools-analytics/.project
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Analyzer.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/RuleLoader.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsComponent.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsRule.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Field.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/Pattern.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/PatternPossibility.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Possibility.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/ReturnValueRestriction.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/RulePossibility.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/AnalyticsData.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataFactory.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataMaps.java
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/rangeChecks/Variables.drl
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Patterns.drl
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Possibilities.drl
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/Rules.drl
labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/reports/RangeCheckReports.drl
labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/AnalyticsTestStandalone.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/RangeCheckDatesTest.java
labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RangeCheckDoublesTest.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/RedundancyTest.java
labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/SolversTest.java
labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/SubsumptantPossibilitiesRuleTest.java
labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/TestBase.java
labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/Misc3.drl
Log:
Some redundancy reports and improvements to html reporting.
Modified: labs/jbossrules/trunk/drools-analytics/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-analytics/.classpath 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/.classpath 2007-10-18 09:29:17 UTC (rev 15907)
@@ -1,19 +1,10 @@
+<?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/xerces/xercesImpl/2.4.0/xercesImpl-2.4.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.10/janino-2.5.10.jar"/>
- <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar"/>
- <classpathentry kind="src" path="/drools-core"/>
- <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/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/1.2.8/mvel-1.2.8.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="src" path="/drools-compiler"/>
- <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0/antlr-runtime-3.0.jar"/>
-</classpath>
\ No newline at end of file
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="src" path="src/test/java"/>
+ <classpathentry excluding="**" kind="src" output="src/main/resources" path="src/main/resources"/>
+ <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="output" path="target/classes"/>
+</classpath>
Modified: labs/jbossrules/trunk/drools-analytics/.project
===================================================================
--- labs/jbossrules/trunk/drools-analytics/.project 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/.project 2007-10-18 09:29:17 UTC (rev 15907)
@@ -1,20 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>drools-analytics</name>
- <comment>A rule production system</comment>
- <projects>
- <project>drools-core</project>
- <project>drools-compiler</project>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- </buildCommand>
- <buildCommand>
- <name>org.maven.ide.eclipse.maven2Builder</name>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.maven.ide.eclipse.maven2Nature</nature>
- </natures>
-</projectDescription>
\ No newline at end of file
+ <name>drools-analytics</name>
+ <comment>A rule production system</comment>
+ <projects>
+ <project>drools-core</project>
+ <project>drools-compiler</project>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.maven.ide.eclipse.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.maven.ide.eclipse.maven2Nature</nature>
+ </natures>
+</projectDescription>
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-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Analyzer.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -5,12 +5,11 @@
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
+import org.drools.analytics.dao.AnalyticsResult;
import org.drools.analytics.dao.AnalyticsData;
import org.drools.analytics.dao.AnalyticsDataFactory;
-import org.drools.analytics.result.AnalysisResult;
-import org.drools.analytics.result.AnalysisResultNormal;
-import org.drools.analytics.result.ComponentsReportModeller;
-import org.drools.analytics.result.ReportModeller;
+import org.drools.analytics.report.ReportModeller;
+import org.drools.analytics.report.html.ComponentsReportModeller;
import org.drools.lang.descr.PackageDescr;
import org.drools.rule.Package;
@@ -20,8 +19,6 @@
*/
public class Analyzer {
- private AnalysisResult result = new AnalysisResultNormal();
-
public void addPackageDescr(PackageDescr descr) {
try {
@@ -37,11 +34,12 @@
public void fireAnalysis() {
try {
AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
System.setProperty("drools.accumulate.function.validatePattern",
"org.drools.analytics.accumulateFunction.ValidatePattern");
- // load up the rulebase
+ // load up the rule base
RuleBase ruleBase = createRuleBase();
WorkingMemory workingMemory = ruleBase.newStatefulSession();
@@ -51,7 +49,6 @@
}
// Object that returns the results.
- workingMemory.setGlobal("data", data);
workingMemory.setGlobal("result", result);
workingMemory.fireAllRules();
@@ -66,7 +63,7 @@
* @return Analysis results as plain text.
*/
public String getResultAsPlainText() {
- return ReportModeller.writePlainText(result);
+ return ReportModeller.writePlainText();
}
/**
@@ -75,7 +72,7 @@
* @return Analysis results as XML
*/
public String getResultAsXML() {
- return ReportModeller.writeXML(result);
+ return ReportModeller.writeXML();
}
/**
@@ -84,24 +81,16 @@
* @return Analysis results as HTML
*/
public void writeComponentsHTML(String path) {
- ComponentsReportModeller.writeHTML(path, result);
+ ComponentsReportModeller.writeHTML(path);
}
/**
- * Returns the analysis results as HTML.
- *
- * @return Analysis results as HTML
- */
- public String getResultAsHTML() {
- return ReportModeller.writeHTML(result);
- }
-
- /**
* Returns the analysis results as <code>AnalysisResult</code> object.
*
* @return Analysis result
*/
- public AnalysisResult getResult() {
+ public AnalyticsResult getResult() {
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
return result;
}
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/RuleLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/RuleLoader.java 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/RuleLoader.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -60,9 +60,11 @@
//
// 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/Notes.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")));
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsComponent.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsComponent.java 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsComponent.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -4,13 +4,23 @@
*
* @author Toni Rikkola
*/
-public abstract class AnalyticsComponent {
+public abstract class AnalyticsComponent implements
+ Comparable<AnalyticsComponent> {
protected String ruleName;
protected int id;
public abstract AnalyticsComponentType getComponentType();
+ @Override
+ public int compareTo(AnalyticsComponent o) {
+ if (id == o.getId()) {
+ return 0;
+ }
+
+ return (id > o.getId() ? 1 : -1);
+ }
+
public AnalyticsComponent(int id) {
this.id = id;
}
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsRule.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsRule.java 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsRule.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -1,6 +1,6 @@
package org.drools.analytics.components;
-import org.drools.analytics.result.Cause;
+import org.drools.analytics.report.components.Cause;
/**
*
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Field.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Field.java 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Field.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -1,6 +1,6 @@
package org.drools.analytics.components;
-import org.drools.analytics.result.Cause;
+import org.drools.analytics.report.components.Cause;
/**
*
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-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/LiteralRestriction.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -4,7 +4,7 @@
import java.util.Date;
import java.util.Locale;
-import org.drools.analytics.result.Cause;
+import org.drools.analytics.report.components.Cause;
/**
*
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Pattern.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Pattern.java 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Pattern.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -1,6 +1,6 @@
package org.drools.analytics.components;
-import org.drools.analytics.result.Cause;
+import org.drools.analytics.report.components.Cause;
/**
*
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/PatternPossibility.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/PatternPossibility.java 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/PatternPossibility.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -3,7 +3,7 @@
import java.util.HashSet;
import java.util.Set;
-import org.drools.analytics.result.Cause;
+import org.drools.analytics.report.components.Cause;
/**
* Instance of this class represents a possible combination of Constraints under
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Possibility.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Possibility.java 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Possibility.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -2,7 +2,7 @@
import java.util.Set;
-import org.drools.analytics.result.Cause;
+import org.drools.analytics.report.components.Cause;
/**
*
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-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Restriction.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -1,6 +1,6 @@
package org.drools.analytics.components;
-import org.drools.analytics.result.Cause;
+import org.drools.analytics.report.components.Cause;
/**
*
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/ReturnValueRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/ReturnValueRestriction.java 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/ReturnValueRestriction.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -1,6 +1,6 @@
package org.drools.analytics.components;
-import org.drools.analytics.result.Cause;
+import org.drools.analytics.report.components.Cause;
/**
*
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/RulePossibility.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/RulePossibility.java 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/RulePossibility.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -4,7 +4,7 @@
import java.util.HashSet;
import java.util.Set;
-import org.drools.analytics.result.Cause;
+import org.drools.analytics.report.components.Cause;
/**
* Instance of this class represents a possible combination of
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-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/VariableRestriction.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -1,6 +1,6 @@
package org.drools.analytics.components;
-import org.drools.analytics.result.Cause;
+import org.drools.analytics.report.components.Cause;
/**
*
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsData.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsData.java 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsData.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -13,9 +13,6 @@
import org.drools.analytics.components.RulePackage;
import org.drools.analytics.components.RulePossibility;
import org.drools.analytics.components.Variable;
-import org.drools.analytics.result.Gap;
-import org.drools.analytics.result.MissingNumberPattern;
-import org.drools.analytics.result.RangeCheckCause;
/**
*
@@ -45,12 +42,6 @@
public void save(RulePackage rulePackage);
- public void save(Gap gap);
-
- public void remove(Gap gap);
-
- public void save(MissingNumberPattern missingNumberPattern);
-
public AnalyticsClass getClassByPackageAndName(String name);
public AnalyticsClass getClassById(int id);
@@ -80,15 +71,7 @@
public Collection<AnalyticsRule> getRulesByFieldId(int id);
- public Collection<Field> getFieldsWithGaps();
-
- public Collection<Gap> getGapsByFieldId(int fieldId);
-
public RulePackage getRulePackageByName(String name);
public Collection<Restriction> getRestrictionsByFieldId(int id);
-
- public Collection<RangeCheckCause> getRangeCheckCauses();
-
- public Collection<RangeCheckCause> getRangeCheckCausesByFieldId(int id);
}
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataFactory.java 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataFactory.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -2,12 +2,22 @@
public class AnalyticsDataFactory {
- private static AnalyticsDataMaps map;
+ private static AnalyticsData data;
+ private static AnalyticsResult result;
public static AnalyticsData getAnalyticsData() {
- if (map == null) {
- map = new AnalyticsDataMaps();
+ if (data == null) {
+ data = new AnalyticsDataMaps();
}
- return map;
+
+ return data;
}
+
+ public static AnalyticsResult getAnalyticsResult() {
+ if (result == null) {
+ result = new AnalyticsResultNormal();
+ }
+
+ return result;
+ }
}
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-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataMaps.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -19,9 +19,6 @@
import org.drools.analytics.components.RulePackage;
import org.drools.analytics.components.RulePossibility;
import org.drools.analytics.components.Variable;
-import org.drools.analytics.result.Gap;
-import org.drools.analytics.result.MissingNumberPattern;
-import org.drools.analytics.result.RangeCheckCause;
/**
*
@@ -36,27 +33,22 @@
private Map<String, AnalyticsClass> classesByName = new TreeMap<String, AnalyticsClass>();
private Map<String, Field> fieldsByClassAndFieldName = new TreeMap<String, Field>();
private Map<Integer, Field> fieldsById = new TreeMap<Integer, Field>();
- private Map<Integer, Set<Field>> fieldsByClassId = new TreeMap<Integer, Set<Field>>();
+ private DataTree<Integer, Field> fieldsByClassId = new DataTree<Integer, Field>();
private Map<String, FieldClassLink> fieldClassLinkByIds = new TreeMap<String, FieldClassLink>();
private Map<Integer, AnalyticsRule> rulesById = new TreeMap<Integer, AnalyticsRule>();
private Map<Integer, Pattern> patternsById = new TreeMap<Integer, Pattern>();
- private Map<Integer, Set<Pattern>> patternsByClassId = new TreeMap<Integer, Set<Pattern>>();
- private Map<String, Set<Pattern>> patternsByRuleName = new TreeMap<String, Set<Pattern>>();
+ private DataTree<Integer, Pattern> patternsByClassId = new DataTree<Integer, Pattern>();
+ private DataTree<String, Pattern> patternsByRuleName = new DataTree<String, Pattern>();
private Map<Integer, Constraint> constraintsById = new TreeMap<Integer, Constraint>();
private Map<Integer, Restriction> restrictionsById = new TreeMap<Integer, Restriction>();
- private Map<Integer, Set<Restriction>> restrictionsByFieldId = new TreeMap<Integer, Set<Restriction>>();
+ private DataTree<Integer, Restriction> restrictionsByFieldId = new DataTree<Integer, Restriction>();
private Map<String, Variable> variablesByRuleAndVariableName = new TreeMap<String, Variable>();
private Map<Integer, PatternPossibility> patternPossibilitiesById = new TreeMap<Integer, PatternPossibility>();
private Map<Integer, RulePossibility> rulePossibilitiesById = new TreeMap<Integer, RulePossibility>();
- private Map<Integer, Gap> gapsById = new TreeMap<Integer, Gap>();
- private Map<Integer, Set<Gap>> gapsByFieldId = new TreeMap<Integer, Set<Gap>>();
- private Map<Integer, MissingNumberPattern> missingNumberPatternsById = new TreeMap<Integer, MissingNumberPattern>();
- private Map<Integer, Set<MissingNumberPattern>> missingNumberPatternsByFieldId = new TreeMap<Integer, Set<MissingNumberPattern>>();
-
public void save(AnalyticsClass clazz) {
classesById.put(Integer.valueOf(clazz.getId()), clazz);
classesByName.put(clazz.getName(), clazz);
@@ -70,15 +62,7 @@
fieldsById.put(field.getId(), field);
- // Save by class id.
- if (fieldsByClassId.containsKey(field.getClassId())) {
- Set<Field> set = fieldsByClassId.get(field.getClassId());
- set.add(field);
- } else {
- Set<Field> set = new HashSet<Field>();
- set.add(field);
- fieldsByClassId.put(field.getClassId(), set);
- }
+ fieldsByClassId.put(field.getClassId(), field);
}
public void save(Variable variable) {
@@ -95,25 +79,8 @@
public void save(Pattern pattern) {
patternsById.put(Integer.valueOf(pattern.getId()), pattern);
- // Save by class id.
- if (patternsByClassId.containsKey(pattern.getClassId())) {
- Set<Pattern> set = patternsByClassId.get(pattern.getClassId());
- set.add(pattern);
- } else {
- Set<Pattern> set = new HashSet<Pattern>();
- set.add(pattern);
- patternsByClassId.put(pattern.getClassId(), set);
- }
-
- // Save by rule name.
- if (patternsByRuleName.containsKey(pattern.getRuleName())) {
- Set<Pattern> set = patternsByRuleName.get(pattern.getRuleName());
- set.add(pattern);
- } else {
- Set<Pattern> set = new HashSet<Pattern>();
- set.add(pattern);
- patternsByRuleName.put(pattern.getRuleName(), set);
- }
+ patternsByClassId.put(pattern.getClassId(), pattern);
+ patternsByRuleName.put(pattern.getRuleName(), pattern);
}
public void save(Constraint constraint) {
@@ -123,16 +90,7 @@
public void save(Restriction restriction) {
restrictionsById.put(restriction.getId(), restriction);
- // Save by field id.
- if (restrictionsByFieldId.containsKey(restriction.getFieldId())) {
- Set<Restriction> set = restrictionsByFieldId.get(restriction
- .getFieldId());
- set.add(restriction);
- } else {
- Set<Restriction> set = new HashSet<Restriction>();
- set.add(restriction);
- restrictionsByFieldId.put(restriction.getFieldId(), set);
- }
+ restrictionsByFieldId.put(restriction.getFieldId(), restriction);
}
public void save(FieldClassLink link) {
@@ -173,7 +131,7 @@
public Collection<AnalyticsClass> getClassesByRuleName(String ruleName) {
Set<AnalyticsClass> set = new HashSet<AnalyticsClass>();
- for (Pattern pattern : patternsByRuleName.get(ruleName)) {
+ for (Pattern pattern : patternsByRuleName.getBranch(ruleName)) {
AnalyticsClass clazz = getClassById(pattern.getClassId());
set.add(clazz);
}
@@ -210,13 +168,13 @@
}
public Collection<Field> getFieldsByClassId(int id) {
- return fieldsByClassId.get(id);
+ return fieldsByClassId.getBranch(id);
}
public Collection<AnalyticsRule> getRulesByClassId(int id) {
Set<AnalyticsRule> rules = new HashSet<AnalyticsRule>();
- for (Pattern pattern : patternsByClassId.get(id)) {
+ for (Pattern pattern : patternsByClassId.getBranch(id)) {
rules.add(rulesById.get(pattern.getRuleId()));
}
@@ -231,7 +189,7 @@
Set<AnalyticsRule> rules = new HashSet<AnalyticsRule>();
- for (Restriction restriction : restrictionsByFieldId.get(id)) {
+ for (Restriction restriction : restrictionsByFieldId.getBranch(id)) {
rules.add(rulesById.get(restriction.getRuleId()));
}
@@ -251,89 +209,7 @@
return packagesByName.get(name);
}
- public void save(Gap gap) {
- gapsById.put(gap.getId(), gap);
-
- // Save by field id.
- if (gapsByFieldId.containsKey(gap.getField().getId())) {
- Set<Gap> set = gapsByFieldId.get(gap.getField().getId());
- set.add(gap);
- } else {
- Set<Gap> set = new HashSet<Gap>();
- set.add(gap);
- gapsByFieldId.put(gap.getField().getId(), set);
- }
- }
-
- public void remove(Gap gap) {
- gapsById.remove(gap.getId());
-
- if (gapsByFieldId.containsKey(gap.getField().getId())) {
- Set<Gap> set = gapsByFieldId.get(gap.getField().getId());
- set.remove(gap);
-
- if (set.isEmpty()) {
- gapsByFieldId.remove(gap.getField().getId());
- }
- }
- }
-
- public Collection<Field> getFieldsWithGaps() {
- Set<Integer> set = gapsByFieldId.keySet();
- Collection<Field> fields = new ArrayList<Field>();
-
- for (Integer i : set) {
- fields.add(fieldsById.get(i));
- }
-
- return fields;
- }
-
- public Collection<Gap> getGapsByFieldId(int fieldId) {
- return gapsByFieldId.get(fieldId);
- }
-
public Collection<Restriction> getRestrictionsByFieldId(int id) {
- return restrictionsByFieldId.get(id);
+ return restrictionsByFieldId.getBranch(id);
}
-
- public Collection<RangeCheckCause> getRangeCheckCauses() {
- Collection<RangeCheckCause> result = new ArrayList<RangeCheckCause>();
-
- result.addAll(gapsById.values());
- result.addAll(missingNumberPatternsById.values());
-
- return result;
- }
-
- public void save(MissingNumberPattern missingNumberPattern) {
- missingNumberPatternsById.put(missingNumberPattern.getId(),
- missingNumberPattern);
-
- // Save by field id.
- if (missingNumberPatternsByFieldId.containsKey(missingNumberPattern
- .getField().getId())) {
- Set<MissingNumberPattern> set = missingNumberPatternsByFieldId
- .get(missingNumberPattern.getField().getId());
- set.add(missingNumberPattern);
- } else {
- Set<MissingNumberPattern> set = new HashSet<MissingNumberPattern>();
- set.add(missingNumberPattern);
- missingNumberPatternsByFieldId.put(missingNumberPattern.getField()
- .getId(), set);
- }
- }
-
- public Collection<RangeCheckCause> getRangeCheckCausesByFieldId(int id) {
- Collection<RangeCheckCause> result = new ArrayList<RangeCheckCause>();
-
- if (gapsByFieldId.containsKey(id)) {
- result.addAll(gapsByFieldId.get(id));
- }
- if (missingNumberPatternsByFieldId.containsKey(id)) {
- result.addAll(missingNumberPatternsByFieldId.get(id));
- }
-
- return result;
- }
}
Added: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsResult.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsResult.java (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsResult.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,40 @@
+package org.drools.analytics.dao;
+
+import java.util.Collection;
+
+import org.drools.analytics.report.components.AnalyticsMessageBase;
+import org.drools.analytics.report.components.Gap;
+import org.drools.analytics.report.components.MissingNumberPattern;
+import org.drools.analytics.report.components.RangeCheckCause;
+import org.drools.analytics.report.components.AnalyticsMessageBase.Severity;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public interface AnalyticsResult {
+
+ public void save(Gap gap);
+
+ public void remove(Gap gap);
+
+ public void save(MissingNumberPattern missingNumberPattern);
+
+ public Collection<RangeCheckCause> getRangeCheckCauses();
+
+ public Collection<RangeCheckCause> getRangeCheckCausesByFieldId(int id);
+
+ public Collection<Gap> getGapsByFieldId(int fieldId);
+
+ public void save(AnalyticsMessageBase note);
+
+ /**
+ * Return all the items that have given severity value.
+ *
+ * @param severity
+ * Severity level of item.
+ * @return Collection of items or an empty list if none was found.
+ */
+ public Collection<AnalyticsMessageBase> getBySeverity(Severity severity);
+
+}
Added: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsResultNormal.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsResultNormal.java (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsResultNormal.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,95 @@
+package org.drools.analytics.dao;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+import org.drools.analytics.components.Field;
+import org.drools.analytics.report.components.AnalyticsMessageBase;
+import org.drools.analytics.report.components.Gap;
+import org.drools.analytics.report.components.MissingNumberPattern;
+import org.drools.analytics.report.components.RangeCheckCause;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+class AnalyticsResultNormal implements AnalyticsResult {
+ private static final long serialVersionUID = -6207688526236713721L;
+
+ private Map<Integer, Gap> gapsById = new TreeMap<Integer, Gap>();
+ private DataTree<Integer, Gap> gapsByFieldId = new DataTree<Integer, Gap>();
+ private Map<Integer, MissingNumberPattern> missingNumberPatternsById = new TreeMap<Integer, MissingNumberPattern>();
+ private DataTree<Integer, MissingNumberPattern> missingNumberPatternsByFieldId = new DataTree<Integer, MissingNumberPattern>();
+
+ private List<AnalyticsMessageBase> messages = new ArrayList<AnalyticsMessageBase>();
+ private DataTree<AnalyticsMessageBase.Severity, AnalyticsMessageBase> messagesBySeverity = new DataTree<AnalyticsMessageBase.Severity, AnalyticsMessageBase>();
+
+ @Override
+ public void save(AnalyticsMessageBase message) {
+ messages.add(message);
+ messagesBySeverity.put(message.getSeverity(), message);
+ }
+
+ @Override
+ public Collection<AnalyticsMessageBase> getBySeverity(
+ AnalyticsMessageBase.Severity severity) {
+ Collection<AnalyticsMessageBase> result = messagesBySeverity
+ .getBranch(severity);
+
+ if (result == null) {
+ return Collections.emptyList();
+ } else {
+ return result;
+ }
+ }
+
+ public void save(Gap gap) {
+ gapsById.put(gap.getId(), gap);
+
+ // Save by field id.
+ gapsByFieldId.put(gap.getField().getId(), gap);
+ }
+
+ public void remove(Gap gap) {
+ gapsById.remove(gap.getId());
+
+ gapsByFieldId.remove(gap.getField().getId(), gap);
+ }
+
+ public Collection<Gap> getGapsByFieldId(int fieldId) {
+ return gapsByFieldId.getBranch(fieldId);
+ }
+
+ public Collection<RangeCheckCause> getRangeCheckCauses() {
+ Collection<RangeCheckCause> result = new ArrayList<RangeCheckCause>();
+
+ result.addAll(gapsById.values());
+ result.addAll(missingNumberPatternsById.values());
+
+ return result;
+ }
+
+ public void save(MissingNumberPattern missingNumberPattern) {
+ missingNumberPatternsById.put(missingNumberPattern.getId(),
+ missingNumberPattern);
+
+ // Save by field id.
+ missingNumberPatternsByFieldId.put(missingNumberPattern.getField()
+ .getId(), missingNumberPattern);
+ }
+
+ public Collection<RangeCheckCause> getRangeCheckCausesByFieldId(int id) {
+ Collection<RangeCheckCause> result = new ArrayList<RangeCheckCause>();
+
+ result.addAll(gapsByFieldId.getBranch(id));
+
+ result.addAll(missingNumberPatternsByFieldId.getBranch(id));
+
+ return result;
+ }
+}
Added: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/DataTree.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/DataTree.java (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/DataTree.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,64 @@
+package org.drools.analytics.dao;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+public class DataTree<K, V> {
+ private Map<K, Set<V>> map = new TreeMap<K, Set<V>>();
+
+ public void put(K key, V value) {
+ if (map.containsKey(key)) {
+ Set<V> set = map.get(key);
+ set.add(value);
+ } else {
+ Set<V> set = new TreeSet<V>();
+ set.add(value);
+ map.put(key, set);
+ }
+ }
+
+ public Set<K> keySet() {
+ return map.keySet();
+ }
+
+ public Set<V> getBranch(K key) {
+ Set<V> set = map.get(key);
+ if (set != null) {
+ return set;
+ } else {
+ return Collections.emptySet();
+ }
+ }
+
+ public Collection<V> values() {
+ Collection<V> values = new ArrayList<V>();
+
+ for (Set<V> set : map.values()) {
+ for (V value : set) {
+ values.add(value);
+ }
+ }
+
+ return values;
+ }
+
+ public boolean remove(K key, V value) {
+ Set<V> set = map.get(key);
+
+ if (set != null) {
+ return set.remove(value);
+ } else {
+ return false;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return values().toString();
+ }
+}
Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/ReportModeller.java (from rev 15719, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/result/ReportModeller.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/ReportModeller.java (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/ReportModeller.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,63 @@
+package org.drools.analytics.report;
+
+import java.util.Collection;
+
+import org.drools.analytics.components.LiteralRestriction;
+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.analytics.report.components.MissingNumberPattern;
+
+import com.thoughtworks.xstream.XStream;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public class ReportModeller {
+
+ public static String writeXML() {
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ XStream xstream = new XStream();
+
+ xstream.alias("result", AnalyticsResult.class);
+ xstream.alias("message", AnalyticsMessage.class);
+
+ xstream.alias("Gap", Gap.class);
+ xstream.alias("MissingNumber", MissingNumberPattern.class);
+
+ xstream.alias("Field", org.drools.analytics.components.Field.class);
+
+ xstream.alias("LiteralRestriction", LiteralRestriction.class);
+
+ return "<?xml version=\"1.0\"?>\n" + xstream.toXML(result);
+ }
+
+ public static String writePlainText() {
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+
+ StringBuffer str = new StringBuffer();
+
+ for (AnalyticsMessage.Severity severity : AnalyticsMessage.Severity
+ .values()) {
+ Collection<AnalyticsMessageBase> messages = result
+ .getBySeverity(severity);
+
+ str.append("************* ");
+ str.append(severity.getTuple());
+ str.append(" ");
+
+ str.append(messages.size());
+ str.append(" ******************\n");
+ for (AnalyticsMessageBase message : messages) {
+ str.append(message);
+ str.append("\n");
+ }
+ str.append("\n");
+ }
+
+ return str.toString();
+ }
+}
Added: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/AnalyticsMessage.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/AnalyticsMessage.java (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/AnalyticsMessage.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,55 @@
+package org.drools.analytics.report.components;
+
+import java.util.Collection;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public class AnalyticsMessage extends AnalyticsMessageBase {
+ private static final long serialVersionUID = 9190003495068712452L;
+
+ protected Collection<Cause> causes;
+
+ public AnalyticsMessage(Severity severity, MessageType messageType,
+ Cause faulty, String message, Collection<Cause> causes) {
+ super(severity, messageType, faulty, message);
+
+ this.causes = causes;
+ }
+
+ public Collection<Cause> getCauses() {
+ return causes;
+ }
+
+ public void setCauses(Collection<Cause> reasons) {
+ this.causes = reasons;
+ }
+
+ @Override
+ public String toString() {
+ StringBuffer str = new StringBuffer(severity.getSingular());
+
+ str.append(" id = ");
+ str.append(id);
+ str.append(":\n");
+
+ if (faulty != null) {
+ str.append("faulty : ");
+ str.append(faulty);
+ str.append(", ");
+ }
+
+ str.append(message);
+ str.append(" \n\tCauses are [ \n");
+
+ for (Cause cause : causes) {
+ str.append("\t\t");
+ str.append(cause);
+ str.append("\n");
+ }
+ str.append("\t]");
+
+ return str.toString();
+ }
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/AnalyticsMessageBase.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,129 @@
+package org.drools.analytics.report.components;
+
+import java.io.Serializable;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+abstract public class AnalyticsMessageBase implements Serializable,
+ Comparable<AnalyticsMessageBase> {
+ private static final long serialVersionUID = 9190003495068712452L;
+
+ private static int index = 0;
+
+ public static enum Severity {
+ NOTE("Note", "Notes"), WARNING("Warning", "Warnings"), ERROR("Error",
+ "Errors");
+
+ private String singular;
+ private String tuple;
+
+ private Severity(String singular, String tuple) {
+ this.singular = singular;
+ this.tuple = tuple;
+ }
+
+ public String getSingular() {
+ return singular;
+ }
+
+ public String getTuple() {
+ return tuple;
+ }
+
+ @Override
+ public String toString() {
+ return singular;
+ }
+ }
+
+ public static enum MessageType {
+ NOT_SPECIFIED, RANGE_CHECK, REDUNDANCY, SUBSUMPTION
+ }
+
+ protected Severity severity;
+ protected MessageType messageType;
+
+ protected int id = index++;
+ protected Cause faulty;
+ protected String message;
+
+ @Override
+ public int compareTo(AnalyticsMessageBase o) {
+ if (id == o.getId()) {
+ return 0;
+ }
+
+ return (id > o.getId() ? 1 : -1);
+ }
+
+ protected AnalyticsMessageBase(Severity severity, MessageType messageType,
+ Cause faulty, String message) {
+ this.severity = severity;
+ this.messageType = messageType;
+ this.faulty = faulty;
+ this.message = message;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Cause getFaulty() {
+ return faulty;
+ }
+
+ public void setFaulty(Cause faulty) {
+ this.faulty = faulty;
+ }
+
+ public MessageType getMessageType() {
+ return messageType;
+ }
+
+ public void setMessageType(MessageType messageType) {
+ this.messageType = messageType;
+ }
+
+ public Severity getSeverity() {
+ return severity;
+ }
+
+ public void setSeverity(Severity severity) {
+ this.severity = severity;
+ }
+
+ @Override
+ public String toString() {
+ StringBuffer str = new StringBuffer(severity.singular);
+
+ str.append(" id = ");
+ str.append(id);
+ str.append(":\n");
+
+ if (faulty != null) {
+ str.append("faulty : ");
+ str.append(faulty);
+ str.append(", ");
+ }
+
+ str.append(message);
+
+ str.append("\t]");
+
+ return str.toString();
+ }
+}
Added: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/AnalyticsRangeCheckMessage.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/AnalyticsRangeCheckMessage.java (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/AnalyticsRangeCheckMessage.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,24 @@
+package org.drools.analytics.report.components;
+
+import java.util.Collection;
+
+public class AnalyticsRangeCheckMessage extends AnalyticsMessageBase {
+ private static final long serialVersionUID = -2403507929285633672L;
+
+ private Collection<RangeCheckCause> causes;
+
+ public AnalyticsRangeCheckMessage(Severity severity, Cause faulty,
+ String message, Collection<RangeCheckCause> causes) {
+ super(severity, MessageType.RANGE_CHECK, faulty, message);
+
+ this.causes = causes;
+ }
+
+ public Collection<RangeCheckCause> getCauses() {
+ return causes;
+ }
+
+ public void setCauses(Collection<RangeCheckCause> reasons) {
+ this.causes = reasons;
+ }
+}
Added: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Cause.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Cause.java (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Cause.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,22 @@
+package org.drools.analytics.report.components;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public interface Cause {
+ public enum CauseType {
+ RULE,
+ FIELD,
+ GAP,
+ PATTERN,
+ RESTRICTION,
+ POSSIBILITY,
+ RANGE_CHECK_CAUSE,
+ REDUNDANCY
+ }
+
+ public int getId();
+
+ public CauseType getCauseType();
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Gap.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,85 @@
+package org.drools.analytics.report.components;
+
+import org.drools.analytics.components.Field;
+import org.drools.analytics.components.LiteralRestriction;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+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);
+ }
+
+ public CauseType getCauseType() {
+ return Cause.CauseType.GAP;
+ }
+
+ /**
+ *
+ * @param field
+ * Field from where the value is missing.
+ * @param evaluator
+ * Evaluator for the missing value.
+ * @param cause
+ * The restriction that the gap begins from.
+ */
+ public Gap(Field field, String evaluator, LiteralRestriction restriction) {
+ this.field = field;
+ this.evaluator = evaluator;
+ this.restriction = restriction;
+ }
+
+ public String getRuleName() {
+ return restriction.getRuleName();
+ }
+
+ public LiteralRestriction getRestriction() {
+ return restriction;
+ }
+
+ public void setRestriction(LiteralRestriction restriction) {
+ this.restriction = restriction;
+ }
+
+ public String getValueAsString() {
+ return restriction.getValueAsString();
+ }
+
+ public Object getValueAsObject() {
+ return restriction.getValueAsObject();
+ }
+
+ @Override
+ public String toString() {
+ return "Gap: (" + field + ") " + getEvaluator() + " "
+ + getValueAsString();
+ }
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/MissingNumberPattern.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,84 @@
+package org.drools.analytics.report.components;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+import org.drools.analytics.components.Field;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public class MissingNumberPattern extends MissingRange implements
+ RangeCheckCause, Comparable<MissingRange> {
+
+ private Field.FieldType valueType;
+
+ private String value;
+
+ public int compareTo(MissingRange another) {
+ return super.compareTo(another);
+ }
+
+ public CauseType getCauseType() {
+ return Cause.CauseType.RANGE_CHECK_CAUSE;
+ }
+
+ public MissingNumberPattern(Field field, String evaluator,
+ Field.FieldType valueType, String value) {
+ this.field = field;
+ this.evaluator = evaluator;
+ this.valueType = valueType;
+ this.value = value;
+ }
+
+ /**
+ * Returns alway null, because there is no rule that this is related to.
+ */
+ public String getRuleName() {
+ return null;
+ }
+
+ public String getValueAsString() {
+ return value;
+ }
+
+ public Object getValueAsObject() {
+ switch (valueType) {
+ case BOOLEAN:
+ return Boolean.valueOf(value);
+ case DATE:
+ try {
+ String fmt = System.getProperty("drools.dateformat");
+ if (fmt == null) {
+ fmt = "dd-MMM-yyyy";
+ }
+
+ return new SimpleDateFormat(fmt, Locale.ENGLISH).parse(value);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ case DOUBLE:
+ return Double.valueOf(value);
+ case INT:
+ return Integer.valueOf(value);
+
+ default:
+ return value;
+ }
+ }
+
+ public Field.FieldType getValueType() {
+ return valueType;
+ }
+
+ public void setValueType(Field.FieldType valueType) {
+ this.valueType = valueType;
+ }
+
+ @Override
+ public String toString() {
+ return "Missing restriction " + evaluator + " " + value;
+ }
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/MissingRange.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,44 @@
+package org.drools.analytics.report.components;
+
+import org.drools.analytics.components.Field;
+
+public abstract class MissingRange implements Comparable<MissingRange> {
+
+ private static int index = 0;
+ protected int id = index++;
+
+ protected Field field;
+ protected String evaluator;
+
+ private String firedRuleName;
+
+ public int compareTo(MissingRange another) {
+ MissingRange anotherMissingRange = ((MissingRange) another);
+
+ return this.id - anotherMissingRange.getId();
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public Field getField() {
+ return field;
+ }
+
+ public void setField(Field field) {
+ this.field = field;
+ }
+
+ public String getEvaluator() {
+ return evaluator;
+ }
+
+ public String getFiredRuleName() {
+ return firedRuleName;
+ }
+
+ public void setFiredRuleName(String firedRuleName) {
+ this.firedRuleName = firedRuleName;
+ }
+}
Added: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/PartialRedundancy.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/PartialRedundancy.java (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/PartialRedundancy.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,53 @@
+package org.drools.analytics.report.components;
+
+/**
+ * Partial redundancy between left and right. Redundancy stores the connection
+ * between left and right.
+ *
+ * @author Toni Rikkola
+ */
+public class PartialRedundancy {
+
+ private Cause left;
+ private Cause right;
+ private Redundancy redundancy;
+
+ /**
+ *
+ * @param left
+ * Left side parent.
+ * @param right
+ * Right side parent.
+ * @param redundancy
+ * Connection between left and right.
+ */
+ public PartialRedundancy(Cause left, Cause right, Redundancy redundancy) {
+ this.left = left;
+ this.right = right;
+ this.redundancy = redundancy;
+ }
+
+ public Cause getLeft() {
+ return left;
+ }
+
+ public void setLeft(Cause left) {
+ this.left = left;
+ }
+
+ public Redundancy getRedundancy() {
+ return redundancy;
+ }
+
+ public void setRedundancy(Redundancy redundancy) {
+ this.redundancy = redundancy;
+ }
+
+ public Cause getRight() {
+ return right;
+ }
+
+ public void setRight(Cause right) {
+ this.right = right;
+ }
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/RangeCheckCause.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,18 @@
+package org.drools.analytics.report.components;
+
+import org.drools.analytics.components.Field;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public interface RangeCheckCause extends Cause {
+
+ public Field getField();
+
+ public Object getValueAsObject();
+
+ public String getValueAsString();
+
+ public String getEvaluator();
+}
Added: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Redundancy.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Redundancy.java (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Redundancy.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,75 @@
+package org.drools.analytics.report.components;
+
+/**
+ * Presents a redundancy between two Causes. The link between them can be WEAK
+ * or STRONG.
+ *
+ * WEAK redundancy is for example two AnalyticsRules, but not theyr's rule
+ * possibilities. STRONG redundancy includes possibilities.
+ *
+ * @author Toni Rikkola
+ */
+public class Redundancy implements Cause {
+
+ public enum RedundancyType {
+ WEAK, STRONG
+ }
+
+ private static int index = 0;
+
+ private int id = index++;
+ private RedundancyType type = RedundancyType.WEAK; // By default the
+ // redundancy is weak.
+ private Cause left;
+ private Cause right;
+
+ public Redundancy(Cause left, Cause right) {
+ this.left = left;
+ this.right = right;
+ }
+
+ public Redundancy(RedundancyType type, Cause left, Cause right) {
+ this.type = type;
+ this.left = left;
+ this.right = right;
+ }
+
+ @Override
+ public CauseType getCauseType() {
+ return CauseType.REDUNDANCY;
+ }
+
+ @Override
+ public int getId() {
+ return id;
+ }
+
+ public Cause getLeft() {
+ return left;
+ }
+
+ public void setLeft(Cause left) {
+ this.left = left;
+ }
+
+ public Cause getRight() {
+ return right;
+ }
+
+ public void setRight(Cause right) {
+ this.right = right;
+ }
+
+ public RedundancyType getType() {
+ return type;
+ }
+
+ public void setType(RedundancyType type) {
+ this.type = type;
+ }
+
+ @Override
+ public String toString() {
+ return "Redundacy between: (" + left + ") and (" + right + ").";
+ }
+}
Added: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Subsumption.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Subsumption.java (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Subsumption.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,32 @@
+package org.drools.analytics.report.components;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public class Subsumption {
+
+ private Cause left;
+ private Cause right;
+
+ public Subsumption(Cause left, Cause right) {
+ this.left = left;
+ this.right = right;
+ }
+
+ public Cause getLeft() {
+ return left;
+ }
+
+ public void setLeft(Cause left) {
+ this.left = left;
+ }
+
+ public Cause getRight() {
+ return right;
+ }
+
+ public void setRight(Cause right) {
+ this.right = right;
+ }
+}
Added: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/AnalyticsMessagesVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/AnalyticsMessagesVisitor.java (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/AnalyticsMessagesVisitor.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,78 @@
+package org.drools.analytics.report.html;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.analytics.report.components.AnalyticsMessage;
+import org.drools.analytics.report.components.AnalyticsMessageBase;
+import org.drools.analytics.report.components.AnalyticsRangeCheckMessage;
+import org.drools.analytics.report.components.Cause;
+import org.mvel.TemplateInterpreter;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public class AnalyticsMessagesVisitor extends ReportVisitor {
+
+ private static String ANALYSIS_MESSAGES_TEMPLATE = "analyticsMessages.htm";
+ private static String ANALYSIS_MESSAGE_TEMPLATE = "analyticsMessage.htm";
+
+ public static String NOTES = "Notes";
+ public static String WARNINGS = "Warnings";
+ public static String ERRORS = "Errors";
+
+ public static String visitAnalyticsMessagesCollection(String title,
+ Collection<AnalyticsMessageBase> messages) {
+ Map<String, Object> map = new HashMap<String, Object>();
+ Collection<String> messageTemplates = new ArrayList<String>();
+ String myTemplate = readFile(ANALYSIS_MESSAGES_TEMPLATE);
+
+ for (AnalyticsMessageBase message : messages) {
+ messageTemplates.add(visitAnalyticsMessage(message));
+ }
+
+ map.put("title", title);
+ map.put("messages", messageTemplates);
+
+ return TemplateInterpreter.evalToString(myTemplate, map);
+ }
+
+ public static String visitAnalyticsMessage(AnalyticsMessageBase message) {
+ if (message instanceof AnalyticsRangeCheckMessage) {
+ return visitAnalyticsMessage((AnalyticsRangeCheckMessage) message);
+ } else if (message instanceof AnalyticsMessage) {
+ return visitAnalyticsMessage((AnalyticsMessage) message);
+ }
+
+ return null;
+ }
+
+ public static String visitAnalyticsMessage(
+ AnalyticsRangeCheckMessage message) {
+
+ return MissingRangesReportVisitor.visitRangeCheckMessage(
+ UrlFactory.THIS_FOLDER, message);
+ }
+
+ public static String visitAnalyticsMessage(AnalyticsMessage message) {
+
+ Map<String, Object> map = new HashMap<String, Object>();
+ Collection<String> causeUrls = new ArrayList<String>();
+ String myTemplate = readFile(ANALYSIS_MESSAGE_TEMPLATE);
+
+ // Solve the url's to causes if there is any.
+ for (Cause cause : message.getCauses()) {
+ causeUrls.add(UrlFactory.getUrl(cause));
+ }
+
+ map.put("title", message.getSeverity());
+ map.put("reason", message.getFaulty());
+ map.put("message", message.getMessage());
+ map.put("causes", causeUrls);
+
+ return TemplateInterpreter.evalToString(myTemplate, map);
+ }
+}
Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ComponentsReportModeller.java (from rev 15719, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/result/ComponentsReportModeller.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ComponentsReportModeller.java (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ComponentsReportModeller.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,120 @@
+package org.drools.analytics.report.html;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.drools.analytics.components.AnalyticsClass;
+import org.drools.analytics.components.AnalyticsRule;
+import org.drools.analytics.components.Field;
+import org.drools.analytics.dao.AnalyticsData;
+import org.drools.analytics.dao.AnalyticsDataFactory;
+import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.analytics.report.components.AnalyticsMessage;
+
+public class ComponentsReportModeller extends ReportModeller {
+
+ public static void writeHTML(String path) {
+ AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
+
+ // Source folder
+ File sourceFolder = new File(path + UrlFactory.SOURCE_FOLDER);
+ sourceFolder.mkdir();
+
+ // Base files
+ // index.htm
+ writeToFile(path + UrlFactory.SOURCE_FOLDER + File.separator
+ + UrlFactory.HTML_FILE_INDEX, formPage(UrlFactory.THIS_FOLDER,
+ ComponentsReportVisitor.visitObjectTypeCollection(
+ UrlFactory.THIS_FOLDER, data.getAllClasses())));
+
+ // packages.htm
+ writeToFile(path + UrlFactory.SOURCE_FOLDER + File.separator
+ + UrlFactory.HTML_FILE_PACKAGES, formPage(
+ UrlFactory.THIS_FOLDER, ComponentsReportVisitor
+ .visitRulePackageCollection(UrlFactory.THIS_FOLDER,
+ data.getAllRulePackages())));
+
+ // Rules
+ String ruleFolder = path + UrlFactory.SOURCE_FOLDER + File.separator
+ + UrlFactory.RULE_FOLDER;
+ File rulesFolder = new File(ruleFolder);
+ rulesFolder.mkdir();
+ for (AnalyticsRule rule : data.getAllRules()) {
+ writeToFile(ruleFolder + File.separator + rule.getId() + ".htm",
+ formPage(UrlFactory.PREVIOUS_FOLDER,
+ ComponentsReportVisitor.visitRule(
+ UrlFactory.PREVIOUS_FOLDER, rule)));
+ }
+
+ // ObjectTypes
+ String objectTypeFolder = path + UrlFactory.SOURCE_FOLDER
+ + File.separator + UrlFactory.OBJECT_TYPE_FOLDER;
+ File objectTypesFolder = new File(objectTypeFolder);
+ objectTypesFolder.mkdir();
+ for (AnalyticsClass objectType : data.getAllClasses()) {
+ writeToFile(objectTypeFolder + File.separator + objectType.getId()
+ + ".htm", formPage(UrlFactory.PREVIOUS_FOLDER,
+ ComponentsReportVisitor.visitObjectType(
+ UrlFactory.PREVIOUS_FOLDER, objectType)));
+ }
+
+ // Fields
+ String fieldFolder = path + UrlFactory.SOURCE_FOLDER + File.separator
+ + UrlFactory.FIELD_FOLDER;
+ File fieldsFolder = new File(fieldFolder);
+ fieldsFolder.mkdir();
+ for (Field field : data.getAllFields()) {
+ writeToFile(fieldFolder + File.separator + field.getId() + ".htm",
+ formPage(UrlFactory.PREVIOUS_FOLDER,
+ ComponentsReportVisitor.visitField(
+ UrlFactory.PREVIOUS_FOLDER, field)));
+ }
+
+ // Analytics messages
+ writeMessages(path);
+
+ // css files
+ String cssFolder = path + UrlFactory.SOURCE_FOLDER + File.separator
+ + UrlFactory.CSS_FOLDER;
+ File cssesFolder = new File(cssFolder);
+ cssesFolder.mkdir();
+ writeToFile(cssFolder + File.separator + UrlFactory.CSS_FILE_DETAILS,
+ ComponentsReportVisitor.getCss(UrlFactory.CSS_FILE_DETAILS));
+ writeToFile(cssFolder + File.separator + UrlFactory.CSS_FILE_LIST,
+ ComponentsReportVisitor.getCss(UrlFactory.CSS_FILE_LIST));
+
+ // Image files
+ String imagesFolder = path + UrlFactory.SOURCE_FOLDER + File.separator
+ + UrlFactory.IMAGES_FOLDER;
+
+ File imgsFolder = new File(imagesFolder);
+ imgsFolder.mkdir();
+
+ try {
+ copyFile(imagesFolder, "hdrlogo_drools50px.gif");
+ copyFile(imagesFolder, "jbossrules_hdrbkg_blue.gif");
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static void writeMessages(String path) {
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ String errors = AnalyticsMessagesVisitor
+ .visitAnalyticsMessagesCollection(
+ AnalyticsMessage.Severity.ERROR.getTuple(), result
+ .getBySeverity(AnalyticsMessage.Severity.ERROR));
+ String warnings = AnalyticsMessagesVisitor
+ .visitAnalyticsMessagesCollection(
+ AnalyticsMessage.Severity.WARNING.getTuple(),
+ result.getBySeverity(AnalyticsMessage.Severity.WARNING));
+ String notes = AnalyticsMessagesVisitor
+ .visitAnalyticsMessagesCollection(
+ AnalyticsMessage.Severity.NOTE.getTuple(), result
+ .getBySeverity(AnalyticsMessage.Severity.NOTE));
+
+ writeToFile(path + UrlFactory.SOURCE_FOLDER + File.separator
+ + UrlFactory.HTML_FILE_ANALYTICS_MESSAGES, formPage(
+ UrlFactory.THIS_FOLDER, errors + warnings + notes));
+ }
+}
Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ComponentsReportVisitor.java (from rev 15719, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/result/ComponentsReportVisitor.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ComponentsReportVisitor.java (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ComponentsReportVisitor.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,123 @@
+package org.drools.analytics.report.html;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.analytics.components.AnalyticsClass;
+import org.drools.analytics.components.AnalyticsRule;
+import org.drools.analytics.components.Field;
+import org.drools.analytics.components.Restriction;
+import org.drools.analytics.components.RulePackage;
+import org.drools.analytics.dao.AnalyticsData;
+import org.drools.analytics.dao.AnalyticsDataFactory;
+import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.analytics.report.components.RangeCheckCause;
+import org.mvel.TemplateInterpreter;
+
+public class ComponentsReportVisitor extends ReportVisitor {
+
+ public static String getCss(String fileName) {
+ return readFile(fileName);
+ }
+
+ public static String visitRulePackageCollection(String sourceFolder,
+ Collection<RulePackage> packages) {
+ Map<String, Object> map = new HashMap<String, Object>();
+ map.put("sourceFolder", sourceFolder);
+ map.put("ruleFolder", UrlFactory.RULE_FOLDER);
+
+ map.put("rulePackages", packages);
+
+ String myTemplate = readFile("packages.htm");
+
+ String result = TemplateInterpreter.evalToString(myTemplate, map);
+
+ return result;
+ }
+
+ public static String visitObjectTypeCollection(String sourceFolder,
+ Collection<AnalyticsClass> objectTypes) {
+ Map<String, Object> map = new HashMap<String, Object>();
+ map.put("sourceFolder", sourceFolder);
+ map.put("objectTypeFolder", sourceFolder + "/"
+ + UrlFactory.OBJECT_TYPE_FOLDER);
+ map.put("fieldFolder", UrlFactory.FIELD_FOLDER);
+ map.put("objectTypes", objectTypes);
+
+ String myTemplate = readFile("objectTypes.htm");
+
+ return TemplateInterpreter.evalToString(myTemplate, map);
+ }
+
+ public static String visitRule(String sourceFolder, AnalyticsRule rule) {
+ AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
+ Collection<AnalyticsClass> objectTypes = data.getClassesByRuleName(rule
+ .getRuleName());
+
+ Map<String, Object> map = new HashMap<String, Object>();
+ map.put("sourceFolder", sourceFolder);
+ map.put("objectTypeFolder", UrlFactory.OBJECT_TYPE_FOLDER);
+
+ map.put("rule", rule);
+ map.put("objectTypes", objectTypes);
+
+ String myTemplate = readFile("rule.htm");
+
+ return TemplateInterpreter.evalToString(myTemplate, map);
+ }
+
+ public static String visitObjectType(String sourceFolder,
+ AnalyticsClass objectType) {
+ AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
+ Collection<AnalyticsRule> rules = data.getRulesByClassId(objectType
+ .getId());
+
+ Map<String, Object> map = new HashMap<String, Object>();
+ map.put("sourceFolder", sourceFolder);
+ map.put("ruleFolder", UrlFactory.RULE_FOLDER);
+ map.put("fieldFolder", UrlFactory.FIELD_FOLDER);
+
+ map.put("objectType", objectType);
+ map.put("rules", rules);
+
+ String myTemplate = readFile("objectType.htm");
+
+ return TemplateInterpreter.evalToString(myTemplate, map);
+ }
+
+ public static String visitField(String sourceFolder, Field field) {
+ AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ AnalyticsClass objectType = data.getClassById(field.getClassId());
+ Collection<AnalyticsRule> rules = data.getRulesByFieldId(field.getId());
+
+ Map<String, Object> map = new HashMap<String, Object>();
+ map.put("sourceFolder", sourceFolder);
+ map.put("ruleFolder", UrlFactory.RULE_FOLDER);
+ map.put("objectTypeFolder", UrlFactory.OBJECT_TYPE_FOLDER);
+ map.put("fieldFolder", UrlFactory.FIELD_FOLDER);
+
+ map.put("field", field);
+ map.put("objectType", objectType);
+ map.put("rules", rules);
+
+ if (field.getFieldType() == Field.FieldType.DOUBLE
+ || field.getFieldType() == Field.FieldType.DATE
+ || field.getFieldType() == Field.FieldType.INT) {
+ Collection<RangeCheckCause> causes = result
+ .getRangeCheckCausesByFieldId(field.getId());
+ Collection<Restriction> restrictions = data
+ .getRestrictionsByFieldId(field.getId());
+ map.put("ranges", "Ranges:"
+ + MissingRangesReportVisitor.visitRanges(
+ UrlFactory.PREVIOUS_FOLDER, restrictions, causes));
+ } else {
+ map.put("ranges", "");
+ }
+
+ String myTemplate = readFile("field.htm");
+
+ return TemplateInterpreter.evalToString(myTemplate, map);
+ }
+}
Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/MissingRangesReportVisitor.java (from rev 15719, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/result/MissingRangesReportVisitor.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/MissingRangesReportVisitor.java (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/MissingRangesReportVisitor.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,178 @@
+package org.drools.analytics.report.html;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.drools.analytics.components.Field;
+import org.drools.analytics.components.LiteralRestriction;
+import org.drools.analytics.components.Restriction;
+import org.drools.analytics.dao.AnalyticsData;
+import org.drools.analytics.dao.AnalyticsDataFactory;
+import org.drools.analytics.dao.DataTree;
+import org.drools.analytics.report.components.AnalyticsRangeCheckMessage;
+import org.drools.analytics.report.components.RangeCheckCause;
+import org.mvel.TemplateInterpreter;
+
+public class MissingRangesReportVisitor extends ReportVisitor {
+
+ public static Collection<String> visitRestrictionsCollection(
+ String sourceFolder, Collection<Restriction> restrictions,
+ Collection<RangeCheckCause> causes) {
+ DataTree<Object, DataRow> dt = new DataTree<Object, DataRow>();
+ Collection<String> stringRows = new ArrayList<String>();
+
+ for (RangeCheckCause cause : causes) {
+ dt.put(cause.getValueAsObject(), new DataRow(null, null, cause
+ .getEvaluator(), cause.getValueAsString()));
+ }
+
+ for (Restriction r : restrictions) {
+ if (r instanceof LiteralRestriction) {
+ try {
+ LiteralRestriction restriction = (LiteralRestriction) r;
+
+ dt.put(restriction.getValueAsObject(), new DataRow(
+ restriction.getRuleId(), restriction.getRuleName(),
+ restriction.getEvaluator(), restriction
+ .getValueAsString()));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ DataRow previous = null;
+ for (Iterator<DataRow> iterator = dt.values().iterator(); iterator
+ .hasNext();) {
+ DataRow current = iterator.next();
+
+ 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("!=")) {
+ // Combine these two.
+ stringRows.add("Missing : " + previous + " .. " + current);
+
+ current = iterator.next();
+
+ } else if (previous.ruleId != null
+ && previous.ruleId.equals(current.ruleId)) {
+ // Combine these two.
+ stringRows.add(UrlFactory.getRuleUrl(sourceFolder,
+ current.ruleId, current.ruleName)
+ + " : "
+ + previous.toString()
+ + " "
+ + current.toString());
+
+ current = iterator.next();
+
+ } else if (!iterator.hasNext()) { // If this is last row
+ // Print previous and current if they were not merged.
+ processRangeOutput(previous, stringRows, sourceFolder);
+ processRangeOutput(current, stringRows, sourceFolder);
+
+ } else { // If they are not from the same rule
+ // Print previous.
+ processRangeOutput(previous, stringRows, sourceFolder);
+ }
+ } else if (!iterator.hasNext()) {
+ processRangeOutput(current, stringRows, sourceFolder);
+ }
+
+ // Set current as previous.
+ previous = current;
+ }
+
+ return stringRows;
+ }
+
+ public static String visitRanges(String sourceFolder,
+ Collection<Restriction> restrictions,
+ Collection<RangeCheckCause> causes) {
+ Map<String, Object> map = new HashMap<String, Object>();
+
+ map.put("lines", visitRestrictionsCollection(sourceFolder,
+ restrictions, causes));
+
+ String myTemplate = readFile("ranges.htm");
+
+ String result = TemplateInterpreter.evalToString(myTemplate, map);
+
+ return result;
+ }
+
+ private static void processRangeOutput(DataRow dataRow,
+ Collection<String> stringRows, String sourceFolder) {
+
+ if (dataRow.ruleId == null) {
+ stringRows.add("Missing : " + dataRow.toString());
+ } else {
+ stringRows.add(UrlFactory.getRuleUrl(sourceFolder, dataRow.ruleId,
+ dataRow.ruleName)
+ + " : " + dataRow.toString());
+ }
+ }
+
+ public static String visitRangeCheckMessage(String sourceFolder,
+ AnalyticsRangeCheckMessage message) {
+ AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
+ Collection<Restriction> restrictions = data
+ .getRestrictionsByFieldId(message.getFaulty().getId());
+ Field field = (Field) message.getFaulty();
+
+ Map<String, Object> map = new HashMap<String, Object>();
+ map.put("header", processHeader(sourceFolder));
+ map.put("sourceFolder", sourceFolder);
+ map.put("fieldFolder", sourceFolder + "/" + UrlFactory.FIELD_FOLDER);
+ map.put("objectTypeFolder", sourceFolder + "/"
+ + UrlFactory.OBJECT_TYPE_FOLDER);
+ map
+ .put("packageFolder", sourceFolder + "/"
+ + UrlFactory.PACKAGE_FOLDER);
+ map.put("cssStyle", createStyleTag(sourceFolder + "/"
+ + UrlFactory.CSS_FOLDER + "/" + UrlFactory.CSS_FILE_LIST));
+
+ map.put("field", field);
+ map.put("objectType", data.getClassById(field.getClassId()));
+ map.put("ranges", visitRanges(UrlFactory.THIS_FOLDER, restrictions,
+ message.getCauses()));
+
+ String myTemplate = readFile("missingRange.htm");
+
+ String result = TemplateInterpreter.evalToString(myTemplate, map);
+
+ return result;
+ }
+}
+
+class DataRow implements Comparable<DataRow> {
+ public String ruleName;
+ protected Integer ruleId;
+ protected String evaluator;
+ protected String value;
+
+ @Override
+ public int compareTo(DataRow o) {
+ return evaluator.compareTo(o.evaluator);
+ }
+
+ public DataRow(Integer ruleId, String ruleName, String evaluator,
+ String valueAsString) {
+ this.ruleId = ruleId;
+ this.ruleName = ruleName;
+ this.evaluator = evaluator;
+ this.value = valueAsString;
+ }
+
+ @Override
+ public String toString() {
+ return evaluator + " " + value;
+ }
+}
Added: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ReportModeller.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ReportModeller.java (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ReportModeller.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,70 @@
+package org.drools.analytics.report.html;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.mvel.TemplateInterpreter;
+
+public abstract class ReportModeller {
+
+ protected static String formPage(String sourceFolder, String content) {
+ Map<String, Object> map = new HashMap<String, Object>();
+ String myTemplate = AnalyticsMessagesVisitor.readFile("frame.htm");
+
+ map.put("cssStyle", ReportVisitor.createStyleTag(sourceFolder + "/"
+ + UrlFactory.CSS_FOLDER + "/" + UrlFactory.CSS_FILE_LIST));
+ map.put("sourceFolder", sourceFolder);
+ map.put("header", ReportVisitor.processHeader(sourceFolder));
+ map.put("content", content);
+
+ return TemplateInterpreter.evalToString(myTemplate, map);
+ }
+
+ public static void copyFile(String destination, String filename)
+ throws IOException {
+
+ File source = new File(ComponentsReportModeller.class.getResource(
+ filename).getFile());
+ File dest = new File(destination + File.separator + filename);
+
+ if (!dest.exists()) {
+ dest.createNewFile();
+ }
+ InputStream in = null;
+ OutputStream out = null;
+ try {
+ in = new FileInputStream(source);
+ out = new FileOutputStream(dest);
+
+ // Transfer bytes from in to out
+ byte[] buf = new byte[1024];
+ int len;
+ while ((len = in.read(buf)) > 0) {
+ out.write(buf, 0, len);
+ }
+ } finally {
+ in.close();
+ out.close();
+ }
+
+ }
+
+ protected static void writeToFile(String fileName, String text) {
+ try {
+ FileWriter fstream = new FileWriter(fileName);
+ BufferedWriter out = new BufferedWriter(fstream);
+ out.write(text);
+ out.close();
+ } catch (Exception e) {
+ System.err.println(e.getMessage());
+ }
+ }
+}
Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ReportVisitor.java (from rev 15719, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/result/ReportVisitor.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ReportVisitor.java (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ReportVisitor.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,54 @@
+package org.drools.analytics.report.html;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.mvel.TemplateInterpreter;
+
+abstract class ReportVisitor {
+
+ protected static String processHeader(String folder) {
+ Map<String, Object> map = new HashMap<String, Object>();
+ map.put("sourceFolder", folder);
+
+ map.put("objectTypesFile", UrlFactory.HTML_FILE_INDEX);
+ map.put("packagesFile", UrlFactory.HTML_FILE_PACKAGES);
+ map.put("messagesFile", UrlFactory.HTML_FILE_ANALYTICS_MESSAGES);
+
+ String myTemplate = readFile("header.htm");
+
+ return TemplateInterpreter.evalToString(myTemplate, map);
+ }
+
+ protected static String readFile(String fileName) {
+ StringBuffer str = new StringBuffer("");
+ try {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(
+ ReportVisitor.class.getResourceAsStream(fileName)));
+ String line = null;
+ while ((line = reader.readLine()) != null) {
+ str.append(line);
+ str.append("\n");
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (NullPointerException e) {
+ System.err.println("File " + fileName + " was not found.");
+ e.printStackTrace();
+ }
+ return str.toString();
+ }
+
+ protected static String createStyleTag(String path) {
+ StringBuffer str = new StringBuffer("");
+
+ str.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"");
+ str.append(path);
+ str.append("\" />");
+
+ return str.toString();
+ }
+}
Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/UrlFactory.java (from rev 15719, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/result/UrlFactory.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/UrlFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/UrlFactory.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,53 @@
+package org.drools.analytics.report.html;
+
+import org.drools.analytics.components.AnalyticsRule;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+class UrlFactory {
+
+ public static final String THIS_FOLDER = ".";
+ public static final String PREVIOUS_FOLDER = "..";
+
+ public static final String SOURCE_FOLDER = "report";
+ public static final String OBJECT_TYPE_FOLDER = "objectTypes";
+ public static final String FIELD_FOLDER = "fields";
+ public static final String RULE_FOLDER = "rules";
+ public static final String PACKAGE_FOLDER = "packages";
+ public static final String CSS_FOLDER = "css";
+
+ public static final String CSS_FILE_LIST = "relationsList.css";
+ public static final String CSS_FILE_DETAILS = "relationsDetails.css";
+
+ public static final String IMAGES_FOLDER = "images";
+
+ public static final String HTML_FILE_INDEX = "index.htm";
+ public static final String HTML_FILE_PACKAGES = "packages.htm";
+ public static final String HTML_FILE_ANALYTICS_MESSAGES = "analyticsMessages.htm";
+
+ /**
+ * Finds a link to object if one exists.
+ *
+ * @param o
+ * Object that might have a page that can be linked.
+ * @return Link to objects page or the toString() text if no link could not
+ * be created.
+ */
+ public static String getUrl(Object o) {
+ if (o instanceof AnalyticsRule) {
+ AnalyticsRule rule = (AnalyticsRule) o;
+ return getRuleUrl(UrlFactory.RULE_FOLDER, rule.getId(), rule
+ .getRuleName());
+ }
+
+ return o.toString();
+ }
+
+ static String getRuleUrl(String sourceFolder, int ruleId, String ruleName) {
+ return "<a href=\"" + sourceFolder + "/" + RULE_FOLDER + "/" + ruleId
+ + ".htm\">" + ruleName + "</a>";
+ }
+
+}
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-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Clean.drl 2007-10-18 09:29:17 UTC (rev 15907)
@@ -2,13 +2,13 @@
package org.drools.analytics.rangeChecks.cleanUp
import org.drools.analytics.components.*;
-import org.drools.analytics.result.Gap;
-import org.drools.analytics.result.MissingNumberPattern;
+import org.drools.analytics.report.components.Gap;
+import org.drools.analytics.report.components.MissingNumberPattern;
-import org.drools.analytics.dao.AnalyticsData;
+import org.drools.analytics.dao.AnalyticsResult;
#declare any global variables here
-global AnalyticsData data;
+global AnalyticsResult result;
#
# Example: missing ( x >= 10 ) and ( x <= 10 ). This is the same as ( x == 10 )
@@ -25,8 +25,8 @@
valueAsString == $g1.valueAsString
)
then
- data.remove( $g1 );
- data.remove( $g2 );
+ result.remove( $g1 );
+ result.remove( $g2 );
retract( $g1 );
retract( $g2 );
@@ -36,7 +36,7 @@
$g1.getField().getFieldType(),
$g1.getValueAsString() );
mnp.setFiredRuleName( drools.getRule().getName() );
- data.save( mnp );
+ result.save( mnp );
insert( mnp );
end
@@ -79,7 +79,7 @@
then
#System.out.println( $lower + " | " + $higher );
retract( $gap );
- data.remove( $gap );
+ result.remove( $gap );
end
#
@@ -121,7 +121,7 @@
then
#System.out.println( $lower + " | " + $higher );
retract( $gap );
- data.remove( $gap );
+ result.remove( $gap );
end
#
@@ -163,7 +163,7 @@
then
#System.out.println( $lower + " | " + $higher );
retract( $gap );
- data.remove( $gap );
+ result.remove( $gap );
end
#
@@ -205,7 +205,7 @@
then
#System.out.println( $lower + " | " + $higher );
retract( $gap );
- data.remove( $gap );
+ result.remove( $gap );
end
#
@@ -247,7 +247,7 @@
then
#System.out.println( $lower + " | " + $higher );
retract( $gap );
- data.remove( $gap );
+ result.remove( $gap );
end
#
@@ -289,7 +289,7 @@
then
#System.out.println( $lower + " | " + $higher );
retract( $gap );
- data.remove( $gap );
+ result.remove( $gap );
end
/*
@@ -333,7 +333,7 @@
then
retract( $gap );
- data.remove( $gap );
+ result.remove( $gap );
end
#
@@ -376,7 +376,7 @@
then
retract( $gap );
- data.remove( $gap );
+ result.remove( $gap );
end
#
@@ -419,6 +419,6 @@
then
retract( $gap );
- data.remove( $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-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Dates.drl 2007-10-18 09:29:17 UTC (rev 15907)
@@ -3,17 +3,17 @@
#list any import classes here.
import org.drools.analytics.components.*;
-import org.drools.analytics.result.AnalysisResult;
-import org.drools.analytics.result.Gap;
+import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.analytics.report.components.Gap;
import java.util.Date;
import java.util.Calendar;
import java.util.GregorianCalendar;
-import org.drools.analytics.dao.AnalyticsData;
+import org.drools.analytics.dao.AnalyticsResult;
#declare any global variables here
-global AnalyticsData data;
+global AnalyticsResult result;
function boolean checkDates(Date d1, Date d2, boolean up) {
Calendar c1 = new GregorianCalendar();
@@ -54,7 +54,7 @@
gap.setFiredRuleName( drools.getRule().getName() );
- data.save( gap );
+ result.save( gap );
insert( gap );
end
@@ -86,7 +86,7 @@
gap.setFiredRuleName( drools.getRule().getName() );
- data.save( gap );
+ result.save( gap );
insert( gap );
end
@@ -127,7 +127,7 @@
gap.setFiredRuleName( drools.getRule().getName() );
- data.save( gap );
+ result.save( gap );
insert( gap );
end
@@ -168,6 +168,6 @@
gap.setFiredRuleName( drools.getRule().getName() );
- data.save( gap );
+ result.save( gap );
insert( gap );
end
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-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Doubles.drl 2007-10-18 09:29:17 UTC (rev 15907)
@@ -3,13 +3,13 @@
#list any import classes here.
import org.drools.analytics.components.*;
-import org.drools.analytics.result.AnalysisResult;
-import org.drools.analytics.result.Gap;
+import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.analytics.report.components.Gap;
-import org.drools.analytics.dao.AnalyticsData;
+import org.drools.analytics.dao.AnalyticsResult;
#declare any global variables here
-global AnalyticsData data;
+global AnalyticsResult result;
# If all ranges are not checked for a field.
@@ -40,7 +40,7 @@
gap.setFiredRuleName( drools.getRule().getName() );
- data.save( gap );
+ result.save( gap );
insert( gap );
end
@@ -72,7 +72,7 @@
gap.setFiredRuleName( drools.getRule().getName() );
- data.save( gap );
+ result.save( gap );
insert( gap );
end
@@ -105,7 +105,7 @@
gap.setFiredRuleName( drools.getRule().getName() );
- data.save( gap );
+ result.save( gap );
insert( gap );
end
@@ -138,7 +138,7 @@
gap.setFiredRuleName( drools.getRule().getName() );
- data.save( gap );
+ result.save( gap );
insert( gap );
end
@@ -204,7 +204,7 @@
then
Gap gap = new Gap( $f, Gap.getReversedEvaluator($r.getEvaluator()), $r );
gap.setFiredRuleName( drools.getRule().getName() );
- data.save( gap );
+ result.save( gap );
insert( gap );
end
@@ -238,7 +238,7 @@
then
Gap gap = new Gap( $f, "<", $r );
gap.setFiredRuleName( drools.getRule().getName() );
- data.save( gap );
+ result.save( gap );
insert( gap );
end
@@ -272,7 +272,7 @@
then
Gap gap = new Gap( $f, ">", $r );
gap.setFiredRuleName( drools.getRule().getName() );
- data.save( gap );
+ 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-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Integers.drl 2007-10-18 09:29:17 UTC (rev 15907)
@@ -3,12 +3,12 @@
#list any import classes here.
import org.drools.analytics.components.*;
-import org.drools.analytics.result.AnalysisResult;
-import org.drools.analytics.result.Gap;
+import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.analytics.report.components.Gap;
-import org.drools.analytics.dao.AnalyticsData;
+import org.drools.analytics.dao.AnalyticsResult;
-global AnalyticsData data;
+global AnalyticsResult result;
# If all ranges are not checked for a field.
#
@@ -38,7 +38,7 @@
gap.setFiredRuleName( drools.getRule().getName() );
- data.save( gap );
+ result.save( gap );
insert( gap );
end
@@ -70,7 +70,7 @@
gap.setFiredRuleName( drools.getRule().getName() );
- data.save( gap );
+ result.save( gap );
insert( gap );
end
@@ -111,7 +111,7 @@
gap.setFiredRuleName( drools.getRule().getName() );
- data.save( gap );
+ result.save( gap );
insert( gap );
end
@@ -152,6 +152,6 @@
gap.setFiredRuleName( drools.getRule().getName() );
- data.save( gap );
+ result.save( gap );
insert( gap );
end
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-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Patterns.drl 2007-10-18 09:29:17 UTC (rev 15907)
@@ -5,19 +5,18 @@
import org.drools.analytics.components.*;
import org.drools.analytics.accumulateFunction.ValidatePattern;
import org.drools.analytics.accumulateFunction.ValidatePatternResult;
-import org.drools.analytics.result.AnalysisResult;
-import org.drools.analytics.result.MissingNumberPattern;
-import org.drools.analytics.result.Cause;
-import org.drools.analytics.result.AnalysisWarning;
+import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.analytics.report.components.MissingNumberPattern;
+import org.drools.analytics.report.components.Cause;
import org.drools.analytics.accumulateFunction.FindMissingNumber;
import java.util.ArrayList;
import java.util.List;
-import org.drools.analytics.dao.AnalyticsData;
+import org.drools.analytics.dao.AnalyticsResult;
#declare any global variables here
-global AnalyticsData data;
+global AnalyticsResult result;
#
# If all pattern ranges are not checked for a field.
@@ -55,7 +54,7 @@
Number number = FindMissingNumber.testForPattern( $list );
if( number != null ){
MissingNumberPattern mnp = new MissingNumberPattern( $f, "==", $f.getFieldType(), number.toString() );
- data.save( mnp );
+ result.save( mnp );
}
end
@@ -95,6 +94,6 @@
Number number = FindMissingNumber.testForPattern( $list );
if( number != null ){
MissingNumberPattern mnp = new MissingNumberPattern( $f, "!=", $f.getFieldType(), number.toString() );
- data.save( mnp );
+ result.save( mnp );
}
end
Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Variables.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Variables.drl 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Variables.drl 2007-10-18 09:29:17 UTC (rev 15907)
@@ -4,8 +4,8 @@
import org.drools.analytics.components.*;
import org.drools.analytics.accumulateFunction.ValidatePattern;
import org.drools.analytics.accumulateFunction.ValidatePatternResult;
-import org.drools.analytics.result.AnalysisResult;
-import org.drools.analytics.result.Gap;
+import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.analytics.report.components.Gap;
import java.util.ArrayList;
import java.util.TreeSet;
@@ -13,7 +13,7 @@
import java.util.Locale;
#declare any global variables here
-global AnalysisResult result
+global AnalyticsResult result
/*
# If all ranges are not checked for a field.
Added: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Notes.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Notes.drl (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Notes.drl 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,37 @@
+#created on: 12.10.2007
+package org.drools.analytics.redundancy
+
+#list any import classes here.
+global AnalyticsResult result;
+
+
+
+#declare any global variables here
+import java.util.Collection;
+import java.util.ArrayList;
+
+import org.drools.analytics.components.PatternPossibility;
+import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.analytics.report.components.Redundancy;
+import org.drools.analytics.report.components.AnalyticsMessage;
+import org.drools.analytics.report.components.Cause;
+
+
+
+rule "Find redundant restrictions from pattern possibilities"
+ when
+ $r :Redundancy()
+ PatternPossibility(
+ items contains $r.left,
+ items contains $r.right
+ )
+ then
+ Collection<Cause> causes = new ArrayList<Cause>();
+ causes.add( $r.getLeft() );
+ causes.add( $r.getRight() );
+
+ result.save(new AnalyticsMessage(
+ AnalyticsMessage.Severity.NOTE, AnalyticsMessage.MessageType.REDUNDANCY,
+ $r, "Same restriction exists twice.", causes ) );
+end
+
Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Patterns.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Patterns.drl 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Patterns.drl 2007-10-18 09:29:17 UTC (rev 15907)
@@ -2,7 +2,7 @@
package org.drools.analytics.redundancy.patterns
import org.drools.analytics.components.*;
-import org.drools.analytics.result.Redundancy;
+import org.drools.analytics.report.components.Redundancy;
#
# Only checks for redundant pattern specifications,
Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Possibilities.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Possibilities.drl 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Possibilities.drl 2007-10-18 09:29:17 UTC (rev 15907)
@@ -2,12 +2,12 @@
package org.drools.analytics.redundancy.possibilities
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 org.drools.analytics.report.components.Redundancy;
+import org.drools.analytics.report.components.Redundancy.RedundancyType;
+import org.drools.analytics.report.components.PartialRedundancy;
+import org.drools.analytics.report.components.Subsumption;
+import org.drools.analytics.report.components.Cause;
+import org.drools.analytics.report.components.Cause.CauseType;
import java.util.ArrayList;
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-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Restrictions.drl 2007-10-18 09:29:17 UTC (rev 15907)
@@ -2,38 +2,8 @@
package org.drools.analytics.redundancy.restrictions
import org.drools.analytics.components.*;
-import org.drools.analytics.result.Redundancy;
+import org.drools.analytics.report.components.Redundancy;
-# TODO: And from and every object.
-//TODO: Also check that patterns and rules are redundant.
-/*
-rule "Find redundant ReturnValueRestriction"
- when
- # Check that Restrictions $left and $right have redundant fields.
- $left :ReturnValueRestriction()
- $right :ReturnValueRestriction(
- id != $left.id,
- evaluator == $left.evaluator,
- classMethodName matches $left.classMethodName,
- compareStringArrays( declarations, $left.declarations )
- )
-
- # Check that PatternPossibilities $pp1 and $pp2 have redundant fields
- # and that they contain $left and $right.
- $pp1 :PatternPossibility( restriction contains $left )
- $pp2 :PatternPossibility(
- id != $pp1.id,
- restriction contains $right,
- exist == $pp1.exist,
- notExist == $pp1.notExist,
- eval( restrictions.size() == $pp1.getRestrictions().size() )
- )
- # Check that there is not allready a pair with these values.
- not RedundantPair( left == $left, right == $right )
- then
- insert( new RedundantPair( $pp1, $pp2, $left, $right ) );
-end
-*/
rule "Find redundant VariableRestriction"
when
# Check that Restrictions $left and $right have redundant fields.
@@ -63,40 +33,7 @@
insert( new Redundancy( Redundancy.RedundancyType.STRONG, $left, $right ) );
end
-/*
-XXX: Not sure if this can be done.
-rule "Find redundant QualifiedIdentifierRestriction"
- when
- # Check that Restrictions $left and $right have redundant fields.
- $left :QualifiedIdentifierRestriction()
- $right :QualifiedIdentifierRestriction(
- id != $left.id,
- evaluator == $left.evaluator
- )
-
- # 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
- )
-
- # 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( $left, $right ) );
-end
-*/
-
rule "Find redundant LiteralRestriction"
when
# Check that Restrictions $left and $right have redundant fields.
@@ -106,19 +43,22 @@
$right :LiteralRestriction(
id != $left.id,
evaluator == $left.evaluator,
+ valueType == $left.valueType,
valueType == Field.FieldType.BOOLEAN,
booleanValue == $left.booleanValue
)
or
$right :LiteralRestriction( id != $left.id,
evaluator == $left.evaluator,
+ valueType == $left.valueType,
valueType == Field.FieldType.STRING,
- stringValue matches $left.stringValue
+ valueAsString matches $left.valueAsString
)
or
$right :LiteralRestriction(
id != $left.id,
evaluator == $left.evaluator,
+ valueType == $left.valueType,
valueType == Field.FieldType.INT,
intValue == $left.intValue
)
@@ -126,6 +66,7 @@
$right :LiteralRestriction(
id != $left.id,
evaluator == $left.evaluator,
+ valueType == $left.valueType,
valueType == Field.FieldType.DOUBLE,
doubleValue == $left.doubleValue
)
@@ -133,6 +74,7 @@
$right :LiteralRestriction(
id != $left.id,
evaluator == $left.evaluator,
+ valueType == $left.valueType,
valueType == Field.FieldType.DATE,
eval( dateValue.equals($left.getDateValue()) )
)
@@ -141,6 +83,7 @@
$right :LiteralRestriction(
id != $left.id,
evaluator == $left.evaluator,
+ valueType == $left.valueType,
valueType == Field.FieldType.VARIABLE
)
and
@@ -169,3 +112,66 @@
then
insert( new Redundancy( Redundancy.RedundancyType.STRONG, $left, $right ) );
end
+
+# TODO: And from and every object.
+//TODO: Also check that patterns and rules are redundant.
+/*
+rule "Find redundant ReturnValueRestriction"
+ when
+ # Check that Restrictions $left and $right have redundant fields.
+ $left :ReturnValueRestriction()
+ $right :ReturnValueRestriction(
+ id != $left.id,
+ evaluator == $left.evaluator,
+ classMethodName matches $left.classMethodName,
+ compareStringArrays( declarations, $left.declarations )
+ )
+
+ # Check that PatternPossibilities $pp1 and $pp2 have redundant fields
+ # and that they contain $left and $right.
+ $pp1 :PatternPossibility( restriction contains $left )
+ $pp2 :PatternPossibility(
+ id != $pp1.id,
+ restriction contains $right,
+ exist == $pp1.exist,
+ notExist == $pp1.notExist,
+ eval( restrictions.size() == $pp1.getRestrictions().size() )
+ )
+ # Check that there is not allready a pair with these values.
+ not RedundantPair( left == $left, right == $right )
+ then
+ insert( new RedundantPair( $pp1, $pp2, $left, $right ) );
+end
+*/
+/*
+XXX: Not sure if this can be done.
+rule "Find redundant QualifiedIdentifierRestriction"
+ when
+ # Check that Restrictions $left and $right have redundant fields.
+ $left :QualifiedIdentifierRestriction()
+ $right :QualifiedIdentifierRestriction(
+ id != $left.id,
+ evaluator == $left.evaluator
+ )
+
+ # 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
+ )
+
+ # 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( $left, $right ) );
+end
+*/
Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Rules.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Rules.drl 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Rules.drl 2007-10-18 09:29:17 UTC (rev 15907)
@@ -2,7 +2,7 @@
package org.drools.analytics.redundancy.rules
import org.drools.analytics.components.*;
-import org.drools.analytics.result.Redundancy;
+import org.drools.analytics.report.components.Redundancy;
#
# Only checks for redundant rule specifications,
Added: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/analyticsMessage.htm
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/analyticsMessage.htm (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/analyticsMessage.htm 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,18 @@
+
+ <table>
+ <tr>
+ <th><h3>@{title}</h3></th>
+ </tr>
+ <tr>
+ <td>
+ @{message}<br/>
+ Reason: @{reason}<br/>
+ <span>Causes:</span>
+ <ul>
+ @foreach{causes as cause}
+ <li>@{cause}</li>
+ @end{}
+ </ul>
+ </td>
+ </tr>
+ </table>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/analyticsMessages.htm
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/analyticsMessages.htm (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/analyticsMessages.htm 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,9 @@
+
+<div>
+ <h2>@{title}</h2>
+ <div>
+ @foreach{messages as message}
+ @{message}
+ @end{}
+ </div>
+</div>
\ No newline at end of file
Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/basic.css (from rev 15719, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/result/basic.css)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/basic.css (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/basic.css 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,56 @@
+
+
+table
+{
+ background-color: #d2d7db;
+ text-align: left;
+ border-spacing: 0px;
+ border: 1px solid #aeb3b6;
+ border-collapse: collapse;
+}
+
+table a, table, tbody, tfoot, tr, th, td
+{
+ font-family: georgia, "times new roman", serif;
+ line-height: 1.5em;
+ font-size: 13px;
+ color: #55595c;
+}
+
+table caption
+{
+ border-top: 1px solid #aeb3b6;
+ padding: .5em 0;
+ font-size: 240%;
+ font-style: italic;
+ color: #d2d7db;
+}
+
+table th
+{
+ width: 200px;
+}
+
+tbody th
+{
+ color: #25c1e2;
+ font-style: italic;
+ background-color: #fff;
+ border-bottom: 1px solid #aeb3b6;
+}
+
+td
+{
+ border: 1px dotted #fff;
+ padding: 0 2px;
+}
+
+ul
+{
+ padding:0px 0px 0px 20px;
+ width:600px;
+}
+
+li
+{
+}
Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/field.htm (from rev 15719, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/result/field.htm)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/field.htm (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/field.htm 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,21 @@
+
+<div>
+ <h2>Field</h2>
+ <div>
+ Name: @{field.name}<br/>
+ Type: @{field.fieldType}<br/>
+ Belongs to class: <a href="@{sourceFolder}/@{objectTypeFolder}/@{objectType.id}.htm">@{objectType.name}</a>
+ </div>
+ <div>
+ Rules that use this component:
+ <ul>
+ @foreach{rules as rule}
+ <li><a href="@{sourceFolder}/@{ruleFolder}/@{rule.id}.htm">@{rule.ruleName}</a></li>
+ @end{}
+ </ul>
+ </div>
+ <div>
+ @{ranges}
+ </div>
+</div>
+
Added: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/frame.htm
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/frame.htm (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/frame.htm 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,18 @@
+
+<html>
+ <head>
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=iso-8859-1">
+
+ <title>Rule Relations</title>
+ @{cssStyle}
+ </head>
+
+ <body>
+ <div class="headerBarblue"><img alt="logo" src="@{sourceFolder}/images/hdrlogo_drools50px.gif"> </div>
+ <div>@{header}</div>
+ @{content}
+ </body>
+</html>
+
Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/hdrlogo_drools50px.gif (from rev 15719, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/result/hdrlogo_drools50px.gif)
===================================================================
(Binary files differ)
Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/header.htm (from rev 15719, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/result/header.htm)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/header.htm (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/header.htm 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,15 @@
+<table id="header">
+ <tr>
+ <td><a href=
+ "@{sourceFolder}/@{objectTypesFile}">Object
+ Types</a></td>
+
+ <td><a href=
+ "@{sourceFolder}/@{packagesFile}">Rules by
+ Packages</a></td>
+
+ <td><a href=
+ "@{sourceFolder}/@{messagesFile}">Messages</a></td>
+ </tr>
+</table>
+
Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/jbossrules_hdrbkg_blue.gif (from rev 15719, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/result/jbossrules_hdrbkg_blue.gif)
===================================================================
(Binary files differ)
Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/missingRange.htm (from rev 15719, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/result/missingRange.htm)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/missingRange.htm (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/missingRange.htm 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,15 @@
+
+ <table>
+ <tr>
+ <th><a href=
+ "@{sourceFolder}/@{objectTypeFolder}/@{objectType.id}.htm">
+ @{objectType.name}</a> <a href=
+ "@{sourceFolder}/@{fieldFolder}/@{field.id}.htm">@{field.name}</a></th>
+ </tr>
+ <tr>
+ <td >
+ @{ranges}
+ </td>
+ </tr>
+ </table>
+
Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/objectType.htm (from rev 15719, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/result/objectType.htm)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/objectType.htm (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/objectType.htm 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,30 @@
+
+<div>
+ <h2>Object Type</h2>
+ <div>
+ Name: @{objectType.name}
+ </div>
+ <div>
+ Known fields:
+ @if{objectType.fields != null && !objectType.fields.empty}
+ <ul>
+ @foreach{objectType.fields as field}
+ <li>@{field.fieldType} <a href="@{sourceFolder}/@{fieldFolder}/@{field.id}.htm">@{field.name}</a></li>
+ @end{}
+ </ul>
+ @else{}
+ <p>
+ No known fields.
+ </p>
+ @end{}
+ </div>
+ <div>
+ Rules that use this component:
+ <ul>
+ @foreach{rules as rule}
+ <li><a href="@{sourceFolder}/@{ruleFolder}/@{rule.id}.htm">@{rule.ruleName}</a></li>
+ @end{}
+ </ul>
+ </div>
+</div>
+
Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/objectTypes.htm (from rev 15719, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/result/objectTypes.htm)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/objectTypes.htm (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/objectTypes.htm 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,21 @@
+
+<div>
+ <h1>Object Types</h1>
+ <table class="objectTypes">
+ <tr>
+ <th>Name</th>
+
+ <th>Fields</th>
+ </tr>
+ @foreach{objectTypes as objectType}
+ <tr class="row@{objectType.offset}">
+ <td><a href="@{sourceFolder}/@{objectTypeFolder}/@{objectType.id}.htm">@{objectType.name}</a></td>
+ <td>
+ @foreach{objectType.fields as field}
+ @{field.fieldType} <a href="@{sourceFolder}/@{fieldFolder}/@{field.id}.htm">@{field.name}</a>@end{","}
+ </td>
+ </tr>
+ @end{}
+ </table>
+</div>
+
Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/packages.htm (from rev 15719, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/result/packages.htm)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/packages.htm (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/packages.htm 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,20 @@
+
+<div>
+ <h1>Rules by Packages</h1>
+ <table class="rulePackages">
+ @foreach{rulePackages as rulePackage}
+ <tr>
+ <th>@{rulePackage.name}</th>
+ </tr>
+ <tr>
+ <td>
+ <ul>
+ @foreach{rulePackage.rules as rule}
+ <li class="row@{rulePackage.offset}" ><a href="@{sourceFolder}/@{ruleFolder}/@{rule.id}.htm">@{rule.ruleName}</a></li>@end{}
+ </ul>
+ </td>
+ </tr>
+ @end{}
+ </table>
+</div>
+
Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/ranges.htm (from rev 15719, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/result/ranges.htm)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/ranges.htm (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/ranges.htm 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,10 @@
+<ul>
+ @foreach{lines as line}
+ @if{line.startsWith("Missing :")}
+ <li style="color:Red;">@{line}</li>
+ @elseif{!line.endsWith("is missing")}
+ <li>@{line}</li>
+ @end{}
+ @end{}
+</ul>
+
Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/relationsDetails.css (from rev 15719, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/result/relationsDetails.css)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/relationsDetails.css (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/relationsDetails.css 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,88 @@
+/* JBoss Drools Analytics Style Sheet */
+/* Website: http://labs.jboss.com/jbossrules/ */
+
+ul,p,table
+{
+ padding:0px 0px 0px 20px;
+ width:600px;
+ background-color: #d2d7db;
+ text-align: left;
+ border-spacing: 0px;
+ border: 1px solid #aeb3b6;
+ border-collapse: collapse;
+}
+
+body {
+ font-size:smaller;
+ font-family:"bitstream vera sans","dejavu sans" verdana,helvetica,sans-serif;
+ line-height:1.5em;
+ color:#444;
+ margin:0;
+ padding:0;
+ background:#FFF;
+}
+
+.content
+{
+ padding:0px 0px 10px 10px;
+}
+
+.headerBarBlue {
+ height:60px;
+ background:url(../images/jbossrules_hdrbkg_blue.gif) repeat-x;
+}
+
+table
+{
+ background-color: #d2d7db;
+ text-align: left;
+ border-spacing: 0px;
+ border: 1px solid #aeb3b6;
+ border-collapse: collapse;
+}
+
+table a, table, tbody, tfoot, tr, th, td
+{
+ font-family: georgia, "times new roman", serif;
+ line-height: 1.5em;
+ font-size: 13px;
+ color: #55595c;
+}
+
+table caption
+{
+ border-top: 1px solid #aeb3b6;
+ padding: .5em 0;
+ font-size: 240%;
+ font-style: italic;
+ color: #d2d7db;
+}
+
+table th
+{
+ width: 200px;
+}
+
+tbody th
+{
+ color: #25c1e2;
+ font-style: italic;
+ background-color: #fff;
+ border-bottom: 1px solid #aeb3b6;
+}
+
+td
+{
+ border: 1px dotted #fff;
+ padding: 0 2px;
+}
+
+ul
+{
+ padding:0px 0px 0px 20px;
+ width:600px;
+}
+
+li
+{
+}
\ No newline at end of file
Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/relationsList.css (from rev 15719, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/result/relationsList.css)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/relationsList.css (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/relationsList.css 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,105 @@
+/* JBoss Drools Analytics Style Sheet */
+/* Website: http://labs.jboss.com/jbossrules/ */
+
+.headerBarBlue {
+ height:60px;
+ background:url(../images/jbossrules_hdrbkg_blue.gif) repeat-x;
+}
+
+ul,p,table
+{
+ padding:0px 0px 0px 20px;
+ width:600px;
+ background-color: #d2d7db;
+ text-align: left;
+ border-spacing: 0px;
+ border: 1px solid #aeb3b6;
+ border-collapse: collapse;
+}
+
+
+body {
+ font-size:smaller;
+ font-family:"bitstream vera sans","dejavu sans" verdana,helvetica,sans-serif;
+ line-height:1.5em;
+ color:#444;
+ margin:0;
+ padding:0;
+ background:#FFF;
+}
+
+.content
+{
+ padding:0px 0px 10px 10px;
+}
+
+table
+{
+ background-color: #d2d7db;
+ text-align: left;
+ border-spacing: 0px;
+ border: 1px solid #aeb3b6;
+ border-collapse: collapse;
+}
+
+table a, table, tbody, tfoot, tr, th, td
+{
+ font-family: georgia, "times new roman", serif;
+ line-height: 1.5em;
+ font-size: 13px;
+ color: #55595c;
+}
+
+table caption
+{
+ border-top: 1px solid #aeb3b6;
+ padding: .5em 0;
+ font-size: 240%;
+ font-style: italic;
+ color: #d2d7db;
+}
+
+table th
+{
+ width: 200px;
+}
+
+tbody th
+{
+ color: #25c1e2;
+ font-style: italic;
+ background-color: #fff;
+ border-bottom: 1px solid #aeb3b6;
+}
+
+td
+{
+ border: 1px dotted #fff;
+ padding: 0 2px;
+}
+
+.row0
+{
+ border: 1px dotted #fff;
+ background-color: #FFFF88;
+ padding: 0 2px;
+}
+
+.row1
+{
+ border: 1px dotted #fff;
+ background-color: #EEEEEE;
+ padding: 0 2px;
+}
+
+
+
+ul
+{
+ padding:0px 0px 0px 20px;
+ width:600px;
+}
+
+li
+{
+}
\ No newline at end of file
Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/rule.htm (from rev 15719, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/result/rule.htm)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/rule.htm (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report/html/rule.htm 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,15 @@
+
+<div>
+ <h2>Rule</h2>
+ <div>
+ Name: @{rule.ruleName}<br/>
+ </div>
+ <div>
+ Patterns:
+ <ul>
+ @foreach{objectTypes as objectType}
+ <li><a href="@{sourceFolder}/@{objectTypeFolder}/@{objectType.id}.htm">@{objectType.name}</a></li>
+ @end{}
+ </ul>
+ </div>
+</div>
Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/reports/RangeCheckReports.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/reports/RangeCheckReports.drl 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/reports/RangeCheckReports.drl 2007-10-18 09:29:17 UTC (rev 15907)
@@ -3,14 +3,14 @@
#list any import classes here.
import org.drools.analytics.components.Field;
-import org.drools.analytics.result.AnalysisWarning;
-import org.drools.analytics.result.AnalysisResult;
-import org.drools.analytics.result.MissingRange;
+import org.drools.analytics.report.components.AnalyticsRangeCheckMessage;
+import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.analytics.report.components.MissingRange;
import java.util.ArrayList;
#declare any global variables here
-global AnalysisResult result
+global AnalyticsResult result
rule "Collect gaps"
when
@@ -20,5 +20,7 @@
MissingRange( field == $f )
)
then
- result.add( new AnalysisWarning( $f, $f + " has one or more gaps.", $list ) );
+ result.save( new AnalyticsRangeCheckMessage(
+ AnalyticsRangeCheckMessage.Severity.WARNING, $f,
+ $f + " has one or more gaps.", $list ) );
end
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/AnalyticsTestStandalone.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/AnalyticsTestStandalone.java 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/AnalyticsTestStandalone.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -35,9 +35,9 @@
Analyzer.class.getResourceAsStream("Misc3.drl")));
Analyzer a = new Analyzer();
-// a.addPackageDescr(descr);
+ // a.addPackageDescr(descr);
// a.addPackageDescr(descr2);
-// a.addPackageDescr(descr3);
+ // a.addPackageDescr(descr3);
// a.addPackageDescr(descr4);
a.addPackageDescr(descr5);
a.addPackageDescr(descr6);
@@ -45,7 +45,8 @@
a.fireAnalysis();
// System.out.print(a.getResultAsPlainText());
// System.out.print(a.getResultAsXML());
- a.writeComponentsHTML("/stash/");
+ // a.writeComponentsHTML("/stash/");
+ a.writeComponentsHTML("C:\\");
} catch (Throwable t) {
t.printStackTrace();
}
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-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RangeCheckCleanTest.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -11,9 +11,9 @@
import org.drools.analytics.components.AnalyticsComponent;
import org.drools.analytics.components.Field;
import org.drools.analytics.components.LiteralRestriction;
-import org.drools.analytics.dao.AnalyticsData;
import org.drools.analytics.dao.AnalyticsDataFactory;
-import org.drools.analytics.result.Gap;
+import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.analytics.report.components.Gap;
import org.drools.base.RuleNameMatchesAgendaFilter;
/**
@@ -82,13 +82,13 @@
higher.setValue("100");
testData.add(higher);
- AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- session.setGlobal("data", data);
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ session.setGlobal("result", result);
StatelessSessionResult sessionResult = session
.executeWithResults(testData);
- Iterator iter = sessionResult.iterateObjects();
+ Iterator<Object> iter = sessionResult.iterateObjects();
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
@@ -176,14 +176,14 @@
higher.setEvaluator("<");
higher.setValue("100");
testData.add(higher);
+
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ session.setGlobal("result", result);
- AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- session.setGlobal("data", data);
-
StatelessSessionResult sessionResult = session
.executeWithResults(testData);
- Iterator iter = sessionResult.iterateObjects();
+ Iterator<Object> iter = sessionResult.iterateObjects();
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
@@ -271,14 +271,14 @@
higher.setEvaluator("<");
higher.setValue("100.0");
testData.add(higher);
+
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ session.setGlobal("result", result);
- AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- session.setGlobal("data", data);
-
StatelessSessionResult sessionResult = session
.executeWithResults(testData);
- Iterator iter = sessionResult.iterateObjects();
+ Iterator<Object> iter = sessionResult.iterateObjects();
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
@@ -366,14 +366,14 @@
higher.setEvaluator("<");
higher.setValue("100.0");
testData.add(higher);
+
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ session.setGlobal("result", result);
- AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- session.setGlobal("data", data);
-
StatelessSessionResult sessionResult = session
.executeWithResults(testData);
- Iterator iter = sessionResult.iterateObjects();
+ Iterator<Object> iter = sessionResult.iterateObjects();
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
@@ -461,14 +461,14 @@
higher.setEvaluator("<");
higher.setValue("20-Oct-2007");
testData.add(higher);
+
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ session.setGlobal("result", result);
- AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- session.setGlobal("data", data);
-
StatelessSessionResult sessionResult = session
.executeWithResults(testData);
- Iterator iter = sessionResult.iterateObjects();
+ Iterator<Object> iter = sessionResult.iterateObjects();
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
@@ -556,14 +556,14 @@
higher.setEvaluator("<");
higher.setValue("20-Oct-2007");
testData.add(higher);
+
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ session.setGlobal("result", result);
- AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- session.setGlobal("data", data);
-
StatelessSessionResult sessionResult = session
.executeWithResults(testData);
- Iterator iter = sessionResult.iterateObjects();
+ Iterator<Object> iter = sessionResult.iterateObjects();
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
@@ -592,245 +592,4 @@
}
}
}
-/*
- public void testUselessIntegerGapAboveRestriction1() throws Exception {
- StatelessSession session = getStatelessSession(this.getClass()
- .getResourceAsStream("rangeChecks/Clean.drl"));
-
- session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Remove useless integer gaps"));
-
- 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.setValue("10");
- testData.add(lower);
-
- // == 50 covered
- LiteralRestriction r1 = new LiteralRestriction();
- r1.setRuleName("== 50 covered");
- r1.setFieldId(f.getId());
- r1.setEvaluator("==");
- r1.setValue("50");
- testData.add(r1);
-
- // > 50 gap
- Gap g1 = new Gap(f, ">", r1);
- g1.setFiredRuleName("above");
- testData.add(g1);
-
- // < 50 gap
- Gap g2 = new Gap(f, "<", r1);
- g2.setFiredRuleName("below");
- testData.add(g2);
-
- // < 100 covered
- LiteralRestriction higher = new LiteralRestriction();
- higher.setRuleName("< 100 covered");
- higher.setFieldId(f.getId());
- higher.setEvaluator("<");
- higher.setValue("100");
- testData.add(higher);
-
- AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- session.setGlobal("data", data);
-
- StatelessSessionResult sessionResult = session
- .executeWithResults(testData);
-
- Iterator iter = sessionResult.iterateObjects();
-
- Set<String> rulesThatHadErrors = new HashSet<String>();
- while (iter.hasNext()) {
- Object o = (Object) iter.next();
- if (o instanceof Field) {
- // Do nothing
- } else if (o instanceof Gap) {
- rulesThatHadErrors.add(((Gap) o).getFiredRuleName());
- } else if (o instanceof AnalyticsComponent) {
- rulesThatHadErrors.add(((AnalyticsComponent) o).getRuleName());
- }
- // System.out.println(o);
- }
-
- assertTrue(rulesThatHadErrors.remove("> 10 covered"));
- assertTrue(rulesThatHadErrors.remove("== 50 covered"));
- assertTrue(rulesThatHadErrors.remove("< 100 covered"));
- assertFalse(rulesThatHadErrors.contains("below"));
- assertFalse(rulesThatHadErrors.contains("above"));
-
- if (!rulesThatHadErrors.isEmpty()) {
- for (String string : rulesThatHadErrors) {
- fail("Rule " + string + " caused an error.");
- }
- }
- }
-
- public void testUselessDoubleGapAboveRestriction() throws Exception {
- StatelessSession session = getStatelessSession(this.getClass()
- .getResourceAsStream("rangeChecks/Clean.drl"));
-
- session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Remove useless double gaps"));
-
- Collection<Object> testData = new ArrayList<Object>();
-
- Field f = new Field();
- testData.add(f);
-
- // > 10 covered
- LiteralRestriction lower = new LiteralRestriction();
- lower.setRuleName("> 10.0 covered");
- lower.setFieldId(f.getId());
- lower.setEvaluator(">");
- lower.setValue("10.0");
- testData.add(lower);
-
- // == 50 covered
- LiteralRestriction r1 = new LiteralRestriction();
- r1.setRuleName("== 50.0 covered");
- r1.setFieldId(f.getId());
- r1.setEvaluator("==");
- r1.setValue("50.0");
- testData.add(r1);
-
- // > 50 gap
- Gap g1 = new Gap(f, ">", r1);
- g1.setFiredRuleName("above");
- testData.add(g1);
-
- // < 50 gap
- Gap g2 = new Gap(f, "<", r1);
- g2.setFiredRuleName("below");
- testData.add(g2);
-
- // < 100 covered
- LiteralRestriction higher = new LiteralRestriction();
- higher.setRuleName("< 100.0 covered");
- higher.setFieldId(f.getId());
- higher.setEvaluator("<");
- higher.setValue("100.0");
- testData.add(higher);
-
- AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- session.setGlobal("data", data);
-
- StatelessSessionResult sessionResult = session
- .executeWithResults(testData);
-
- Iterator iter = sessionResult.iterateObjects();
-
- Set<String> rulesThatHadErrors = new HashSet<String>();
- while (iter.hasNext()) {
- Object o = (Object) iter.next();
- if (o instanceof Field) {
- // Do nothing
- } else if (o instanceof Gap) {
- rulesThatHadErrors.add(((Gap) o).getFiredRuleName());
- } else if (o instanceof AnalyticsComponent) {
- rulesThatHadErrors.add(((AnalyticsComponent) o).getRuleName());
- }
- // System.out.println(o);
- }
-
- assertTrue(rulesThatHadErrors.remove("> 10.0 covered"));
- assertTrue(rulesThatHadErrors.remove("== 50.0 covered"));
- assertTrue(rulesThatHadErrors.remove("< 100.0 covered"));
- assertFalse(rulesThatHadErrors.contains("below"));
- assertFalse(rulesThatHadErrors.contains("above"));
-
- if (!rulesThatHadErrors.isEmpty()) {
- for (String string : rulesThatHadErrors) {
- fail("Rule " + string + " caused an error.");
- }
- }
- }
-
- public void testUselessDateGapBelowRestriction() throws Exception {
- StatelessSession session = getStatelessSession(this.getClass()
- .getResourceAsStream("rangeChecks/Clean.drl"));
-
- session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Remove useless date gaps"));
-
- 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.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.setValue("10-Oct-2007");
- testData.add(r1);
-
- // > 10-Oct-2007 gap
- Gap g1 = new Gap(f, ">", r1);
- g1.setFiredRuleName("above");
- testData.add(g1);
-
- // < 10-Oct-2007 gap
- Gap g2 = new Gap(f, "<", r1);
- g2.setFiredRuleName("below");
- testData.add(g2);
-
- // < 20-Oct-2007 covered
- LiteralRestriction higher = new LiteralRestriction();
- higher.setRuleName("< 20-Oct-2007 covered");
- higher.setFieldId(f.getId());
- higher.setEvaluator("<");
- higher.setValue("20-Oct-2007");
- testData.add(higher);
-
- AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- session.setGlobal("data", data);
-
- StatelessSessionResult sessionResult = session
- .executeWithResults(testData);
-
- Iterator iter = sessionResult.iterateObjects();
-
- Set<String> rulesThatHadErrors = new HashSet<String>();
- while (iter.hasNext()) {
- Object o = (Object) iter.next();
- if (o instanceof Field) {
- // Do nothing
- } else if (o instanceof Gap) {
- rulesThatHadErrors.add(((Gap) o).getFiredRuleName());
- } else if (o instanceof AnalyticsComponent) {
- rulesThatHadErrors.add(((AnalyticsComponent) o).getRuleName());
- } //
- // System.out.println(o);
- }
-
- assertTrue(rulesThatHadErrors.remove("> 01-Oct-2007 covered"));
- assertTrue(rulesThatHadErrors.remove("== 10-Oct-2007 covered"));
- assertTrue(rulesThatHadErrors.remove("< 20-Oct-2007 covered"));
- assertFalse(rulesThatHadErrors.contains("above"));
- assertFalse(rulesThatHadErrors.contains("below"));
-
- 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/RangeCheckDatesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RangeCheckDatesTest.java 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RangeCheckDatesTest.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -7,9 +7,9 @@
import org.drools.StatelessSession;
import org.drools.StatelessSessionResult;
-import org.drools.analytics.dao.AnalyticsData;
import org.drools.analytics.dao.AnalyticsDataFactory;
-import org.drools.analytics.result.Gap;
+import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.analytics.report.components.Gap;
import org.drools.base.RuleNameMatchesAgendaFilter;
/**
@@ -23,20 +23,19 @@
StatelessSession session = getStatelessSession(this.getClass()
.getResourceAsStream("rangeChecks/Dates.drl"));
- session
- .setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Range check for dates, if smaller than or equal is missing"));
+ session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+ "Range check for dates, if smaller than or equal is missing"));
Collection<? extends Object> testData = getTestData(this.getClass()
.getResourceAsStream("MissingRangesForDates.drl"));
- AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- session.setGlobal("data", data);
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ session.setGlobal("result", result);
StatelessSessionResult sessionResult = session
.executeWithResults(testData);
- Iterator iter = sessionResult.iterateObjects();
+ Iterator<Object> iter = sessionResult.iterateObjects();
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
@@ -61,20 +60,19 @@
StatelessSession session = getStatelessSession(this.getClass()
.getResourceAsStream("rangeChecks/Dates.drl"));
- session
- .setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Range check for dates, if greater than or equal is missing"));
+ session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+ "Range check for dates, if greater than or equal is missing"));
Collection<? extends Object> testData = getTestData(this.getClass()
.getResourceAsStream("MissingRangesForDates.drl"));
- AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- session.setGlobal("data", data);
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ session.setGlobal("result", result);
StatelessSessionResult sessionResult = session
.executeWithResults(testData);
- Iterator iter = sessionResult.iterateObjects();
+ Iterator<Object> iter = sessionResult.iterateObjects();
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
@@ -105,13 +103,13 @@
Collection<? extends Object> testData = getTestData(this.getClass()
.getResourceAsStream("MissingRangesForDates.drl"));
- AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- session.setGlobal("data", data);
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ session.setGlobal("result", result);
StatelessSessionResult sessionResult = session
.executeWithResults(testData);
- Iterator iter = sessionResult.iterateObjects();
+ Iterator<Object> iter = sessionResult.iterateObjects();
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
@@ -143,13 +141,13 @@
Collection<? extends Object> testData = getTestData(this.getClass()
.getResourceAsStream("MissingRangesForDates.drl"));
- AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- session.setGlobal("data", data);
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ session.setGlobal("result", result);
StatelessSessionResult sessionResult = session
.executeWithResults(testData);
- Iterator iter = sessionResult.iterateObjects();
+ Iterator<Object> iter = sessionResult.iterateObjects();
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
Modified: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RangeCheckDoublesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RangeCheckDoublesTest.java 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RangeCheckDoublesTest.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -7,9 +7,9 @@
import org.drools.StatelessSession;
import org.drools.StatelessSessionResult;
-import org.drools.analytics.dao.AnalyticsData;
import org.drools.analytics.dao.AnalyticsDataFactory;
-import org.drools.analytics.result.Gap;
+import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.analytics.report.components.Gap;
import org.drools.base.RuleNameMatchesAgendaFilter;
/**
@@ -30,13 +30,13 @@
Collection<? extends Object> testData = getTestData(this.getClass()
.getResourceAsStream("MissingRangesForDoubles.drl"));
- AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- session.setGlobal("data", data);
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ session.setGlobal("result", result);
StatelessSessionResult sessionResult = session
.executeWithResults(testData);
- Iterator iter = sessionResult.iterateObjects();
+ Iterator<Object> iter = sessionResult.iterateObjects();
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
@@ -68,13 +68,13 @@
Collection<? extends Object> testData = getTestData(this.getClass()
.getResourceAsStream("MissingRangesForDoubles.drl"));
- AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- session.setGlobal("data", data);
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ session.setGlobal("result", result);
StatelessSessionResult sessionResult = session
.executeWithResults(testData);
- Iterator iter = sessionResult.iterateObjects();
+ Iterator<Object> iter = sessionResult.iterateObjects();
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
@@ -105,13 +105,13 @@
Collection<? extends Object> testData = getTestData(this.getClass()
.getResourceAsStream("MissingRangesForDoubles.drl"));
- AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- session.setGlobal("data", data);
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ session.setGlobal("result", result);
StatelessSessionResult sessionResult = session
.executeWithResults(testData);
- Iterator iter = sessionResult.iterateObjects();
+ Iterator<Object> iter = sessionResult.iterateObjects();
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
@@ -144,13 +144,13 @@
Collection<? extends Object> testData = getTestData(this.getClass()
.getResourceAsStream("MissingRangesForDoubles.drl"));
- AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- session.setGlobal("data", data);
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ session.setGlobal("result", result);
StatelessSessionResult sessionResult = session
.executeWithResults(testData);
- Iterator iter = sessionResult.iterateObjects();
+ Iterator<Object> iter = sessionResult.iterateObjects();
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
@@ -172,119 +172,4 @@
}
}
}
-
- /*
- * public void testSmallerAndGreaterThan() throws Exception {
- * StatelessSession session = getStatelessSession(this.getClass()
- * .getResourceAsStream("rangeChecks/Doubles.drl"));
- *
- * session.setAgendaFilter(new RuleNameMatchesAgendaFilter( "Range check for
- * doubles, smaller and greater than"));
- *
- * Collection<? extends Object> testData = getTestData(this.getClass()
- * .getResourceAsStream("MissingRangesForDoubles.drl"));
- *
- * AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- * session.setGlobal("data", data);
- *
- * StatelessSessionResult sessionResult =
- * session.executeWithResults(testData);
- *
- * Iterator iter = sessionResult.iterateObjects();
- *
- * Set<String> rulesThatHadErrors = new HashSet<String>(); while
- * (iter.hasNext()) { Object o = (Object) iter.next(); if (o instanceof Gap) {
- * rulesThatHadErrors.add(((Gap) o).getRuleName()); } //
- * System.out.println(o); }
- *
- * assertTrue(rulesThatHadErrors.remove("Double range 1a, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 2a, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 3a, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 4a, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 7a, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 7b, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 8a, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 8b, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 9a, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 9b, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 10a, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 10b, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 11a, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 11b, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 12a, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 13a, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 14a, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 15a, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 18a, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 18b, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 19a, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 19b, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 20a, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 20b, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 21a, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 21b, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 22a, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 22b, has gap"));
- *
- * if (!rulesThatHadErrors.isEmpty()) { for (String string :
- * rulesThatHadErrors) { fail("Rule " + string + " caused an error."); } } }
- *
- * public void testEqualAndGreaterThan() throws Exception { StatelessSession
- * session = getStatelessSession(this.getClass()
- * .getResourceAsStream("rangeChecks/Doubles.drl"));
- *
- * session.setAgendaFilter(new RuleNameMatchesAgendaFilter( "Range check for
- * doubles, equal and greater than"));
- *
- * Collection<? extends Object> testData = getTestData(this.getClass()
- * .getResourceAsStream("MissingRangesForDoubles.drl"));
- *
- * AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- * session.setGlobal("data", data);
- *
- * StatelessSessionResult sessionResult =
- * session.executeWithResults(testData);
- *
- * Iterator iter = sessionResult.iterateObjects();
- *
- * Set<String> rulesThatHadErrors = new HashSet<String>(); while
- * (iter.hasNext()) { Object o = (Object) iter.next(); if (o instanceof Gap) {
- * rulesThatHadErrors.add(((Gap) o).getRuleName()); } //
- * System.out.println(o); }
- *
- * assertTrue(rulesThatHadErrors.remove("Double range 5b, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 16b, has gap"));
- *
- * if (!rulesThatHadErrors.isEmpty()) { for (String string :
- * rulesThatHadErrors) { fail("Rule " + string + " fired."); } } }
- *
- * public void testEqualAndSmallerThan() throws Exception { StatelessSession
- * session = getStatelessSession(this.getClass()
- * .getResourceAsStream("rangeChecks/Doubles.drl"));
- *
- * session.setAgendaFilter(new RuleNameMatchesAgendaFilter( "Range check for
- * doubles, equal and smaller than"));
- *
- * Collection<? extends Object> testData = getTestData(this.getClass()
- * .getResourceAsStream("MissingRangesForDoubles.drl"));
- *
- * AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- * session.setGlobal("data", data);
- *
- * StatelessSessionResult sessionResult =
- * session.executeWithResults(testData);
- *
- * Iterator iter = sessionResult.iterateObjects();
- *
- * Set<String> rulesThatHadErrors = new HashSet<String>(); while
- * (iter.hasNext()) { Object o = (Object) iter.next(); if (o instanceof Gap) {
- * rulesThatHadErrors.add(((Gap) o).getRuleName()); } //
- * System.out.println(o); }
- *
- * assertTrue(rulesThatHadErrors.remove("Double range 6b, has gap"));
- * assertTrue(rulesThatHadErrors.remove("Double range 17b, has gap"));
- *
- * if (!rulesThatHadErrors.isEmpty()) { for (String string :
- * rulesThatHadErrors) { fail("Rule " + string + " fired."); } } }
- */
}
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-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RangeCheckIntegersTest.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -7,9 +7,9 @@
import org.drools.StatelessSession;
import org.drools.StatelessSessionResult;
-import org.drools.analytics.dao.AnalyticsData;
import org.drools.analytics.dao.AnalyticsDataFactory;
-import org.drools.analytics.result.Gap;
+import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.analytics.report.components.Gap;
import org.drools.base.RuleNameMatchesAgendaFilter;
/**
@@ -30,13 +30,13 @@
Collection<? extends Object> testData = getTestData(this.getClass()
.getResourceAsStream("MissingRangesForInts.drl"));
- AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- session.setGlobal("data", data);
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ session.setGlobal("result", result);
StatelessSessionResult sessionResult = session
.executeWithResults(testData);
- Iterator iter = sessionResult.iterateObjects();
+ Iterator<Object> iter = sessionResult.iterateObjects();
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
@@ -68,13 +68,13 @@
Collection<? extends Object> testData = getTestData(this.getClass()
.getResourceAsStream("MissingRangesForInts.drl"));
- AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- session.setGlobal("data", data);
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ session.setGlobal("result", result);
StatelessSessionResult sessionResult = session
.executeWithResults(testData);
- Iterator iter = sessionResult.iterateObjects();
+ Iterator<Object> iter = sessionResult.iterateObjects();
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
@@ -105,13 +105,13 @@
Collection<? extends Object> testData = getTestData(this.getClass()
.getResourceAsStream("MissingRangesForInts.drl"));
- AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- session.setGlobal("data", data);
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ session.setGlobal("result", result);
StatelessSessionResult sessionResult = session
.executeWithResults(testData);
- Iterator iter = sessionResult.iterateObjects();
+ Iterator<Object> iter = sessionResult.iterateObjects();
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
@@ -143,13 +143,13 @@
Collection<? extends Object> testData = getTestData(this.getClass()
.getResourceAsStream("MissingRangesForInts.drl"));
- AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- session.setGlobal("data", data);
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ session.setGlobal("result", result);
StatelessSessionResult sessionResult = session
.executeWithResults(testData);
- Iterator iter = sessionResult.iterateObjects();
+ Iterator<Object> iter = sessionResult.iterateObjects();
Set<String> rulesThatHadErrors = new HashSet<String>();
while (iter.hasNext()) {
Modified: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RedundancyTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RedundancyTest.java 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RedundancyTest.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -10,15 +10,17 @@
import org.drools.StatelessSession;
import org.drools.StatelessSessionResult;
+import org.drools.analytics.components.AnalyticsComponent;
import org.drools.analytics.components.AnalyticsRule;
import org.drools.analytics.components.LiteralRestriction;
import org.drools.analytics.components.Pattern;
import org.drools.analytics.components.PatternPossibility;
import org.drools.analytics.components.RulePossibility;
-import org.drools.analytics.result.AnalysisResultNormal;
-import org.drools.analytics.result.PartialRedundancy;
-import org.drools.analytics.result.Redundancy;
-import org.drools.analytics.result.Subsumption;
+import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.analytics.dao.AnalyticsDataFactory;
+import org.drools.analytics.report.components.PartialRedundancy;
+import org.drools.analytics.report.components.Redundancy;
+import org.drools.analytics.report.components.Subsumption;
import org.drools.base.RuleNameMatchesAgendaFilter;
/**
@@ -27,8 +29,8 @@
*
*/
public class RedundancyTest extends TestBase {
-
- public void testFake ( ) {
+
+ public void testFake() {
assertTrue(true);
}
@@ -41,8 +43,9 @@
Collection<Object> data = new ArrayList<Object>();
- AnalysisResultNormal analysisResult = new AnalysisResultNormal();
- session.setGlobal("result", analysisResult);
+ AnalyticsResult result = AnalyticsDataFactory
+ .getAnalyticsResult();
+ session.setGlobal("result", result);
String ruleName1 = "Rule 1";
String ruleName2 = "Rule 2";
@@ -83,13 +86,15 @@
Map<String, Set<Redundancy>> map = new HashMap<String, Set<Redundancy>>();
- Iterator iter = sessionResult.iterateObjects();
+ Iterator<Object> iter = sessionResult.iterateObjects();
while (iter.hasNext()) {
Object o = (Object) iter.next();
if (o instanceof PartialRedundancy) {
PartialRedundancy pr = (PartialRedundancy) o;
- String key = pr.getLeft().getRuleName() + ":"
- + pr.getRight().getRuleName();
+ AnalyticsComponent left = (AnalyticsComponent) pr.getLeft();
+ AnalyticsComponent right = (AnalyticsComponent) pr.getRight();
+
+ String key = left.getRuleName() + ":" + right.getRuleName();
if (map.containsKey(key)) {
Set<Redundancy> set = map.get(key);
set.add(pr.getRedundancy());
@@ -118,8 +123,9 @@
Collection<Object> data = new ArrayList<Object>();
- AnalysisResultNormal analysisResult = new AnalysisResultNormal();
- session.setGlobal("result", analysisResult);
+ AnalyticsResult result = AnalyticsDataFactory
+ .getAnalyticsResult();
+ session.setGlobal("result", result);
String ruleName1 = "Rule 1";
String ruleName2 = "Rule 2";
@@ -140,7 +146,7 @@
StatelessSessionResult sessionResult = session.executeWithResults(data);
- Iterator iter = sessionResult.iterateObjects();
+ Iterator<Object> iter = sessionResult.iterateObjects();
Map<String, Set<String>> map = createRedundancyMap(iter);
@@ -160,8 +166,9 @@
Collection<Object> data = new ArrayList<Object>();
- AnalysisResultNormal analysisResult = new AnalysisResultNormal();
- session.setGlobal("result", analysisResult);
+ AnalyticsResult result = AnalyticsDataFactory
+ .getAnalyticsResult();
+ session.setGlobal("result", result);
String ruleName1 = "Rule 1";
String ruleName2 = "Rule 2";
@@ -202,13 +209,15 @@
Map<String, Set<Redundancy>> map = new HashMap<String, Set<Redundancy>>();
- Iterator iter = sessionResult.iterateObjects();
+ Iterator<Object> iter = sessionResult.iterateObjects();
while (iter.hasNext()) {
Object o = (Object) iter.next();
if (o instanceof PartialRedundancy) {
PartialRedundancy pr = (PartialRedundancy) o;
- String key = pr.getLeft().getRuleName() + ":"
- + pr.getRight().getRuleName();
+ AnalyticsComponent left = (AnalyticsComponent) pr.getLeft();
+ AnalyticsComponent right = (AnalyticsComponent) pr.getRight();
+
+ String key = left.getRuleName() + ":" + right.getRuleName();
if (map.containsKey(key)) {
Set<Redundancy> set = map.get(key);
set.add(pr.getRedundancy());
@@ -272,8 +281,9 @@
Collection<? extends Object> data = getTestData(this.getClass()
.getResourceAsStream("PatternRedundancyTest.drl"));
- AnalysisResultNormal analysisResult = new AnalysisResultNormal();
- session.setGlobal("result", analysisResult);
+ AnalyticsResult result = AnalyticsDataFactory
+ .getAnalyticsResult();
+ session.setGlobal("result", result);
StatelessSessionResult sessionResult = session.executeWithResults(data);
@@ -302,7 +312,7 @@
}
}
- public void fixmetestAnalyticsLiteralRestrictionRedundancy() throws Exception {
+ public void testAnalyticsLiteralRestrictionRedundancy() throws Exception {
StatelessSession session = getStatelessSession(this.getClass()
.getResourceAsStream("redundancy/Restrictions.drl"));
@@ -312,33 +322,35 @@
Collection<? extends Object> data = getTestData(this.getClass()
.getResourceAsStream("RedundancyLiteralRestrictionTest.drl"));
- AnalysisResultNormal analysisResult = new AnalysisResultNormal();
- session.setGlobal("result", analysisResult);
+ AnalyticsResult result = AnalyticsDataFactory
+ .getAnalyticsResult();
+ session.setGlobal("result", result);
StatelessSessionResult sessionResult = session.executeWithResults(data);
Map<String, Set<String>> map = createRedundancyMap(sessionResult
.iterateObjects());
- assertTrue(TestBase.mapContains(map, "Redundant 1a", "Redundant 1b"));
- assertTrue(TestBase.mapContains(map, "Redundant 1b", "Redundant 1a"));
- assertTrue(TestBase.mapContains(map, "Redundant 2a", "Redundant 2b"));
- assertTrue(TestBase.mapContains(map, "Redundant 2b", "Redundant 2a"));
- assertTrue(TestBase.mapContains(map, "Redundant 3a", "Redundant 3b"));
- assertTrue(TestBase.mapContains(map, "Redundant 3b", "Redundant 3a"));
- assertTrue(TestBase.mapContains(map, "Redundant 4a", "Redundant 4b"));
- assertTrue(TestBase.mapContains(map, "Redundant 4b", "Redundant 4a"));
- assertTrue(TestBase.mapContains(map, "Redundant 5a", "Redundant 5b"));
- assertTrue(TestBase.mapContains(map, "Redundant 5b", "Redundant 5a"));
- assertTrue(TestBase.mapContains(map, "Redundant 6a", "Redundant 6b"));
- assertTrue(TestBase.mapContains(map, "Redundant 6b", "Redundant 6a"));
+ assertTrue((TestBase.mapContains(map, "Redundant 1a", "Redundant 1b") ^ TestBase
+ .mapContains(map, "Redundant 1b", "Redundant 1a")));
+ assertTrue((TestBase.mapContains(map, "Redundant 2a", "Redundant 2b") ^ TestBase
+ .mapContains(map, "Redundant 2b", "Redundant 2a")));
+ assertTrue((TestBase.mapContains(map, "Redundant 3a", "Redundant 3b") ^ TestBase
+ .mapContains(map, "Redundant 3b", "Redundant 3a")));
+ assertTrue((TestBase.mapContains(map, "Redundant 4a", "Redundant 4b") ^ TestBase
+ .mapContains(map, "Redundant 4b", "Redundant 4a")));
+ assertTrue((TestBase.mapContains(map, "Redundant 5a", "Redundant 5b") ^ TestBase
+ .mapContains(map, "Redundant 5b", "Redundant 5a")));
+ assertTrue((TestBase.mapContains(map, "Redundant 6a", "Redundant 6b") ^ TestBase
+ .mapContains(map, "Redundant 6b", "Redundant 6a")));
if (!map.isEmpty()) {
fail("More redundancies than was expected.");
}
}
- public void fixmetestAnalyticsVariableRestrictionRedundancy() throws Exception {
+ public void fixmetestAnalyticsVariableRestrictionRedundancy()
+ throws Exception {
StatelessSession session = getStatelessSession(this.getClass()
.getResourceAsStream("redundancy/Restrictions.drl"));
@@ -348,8 +360,9 @@
Collection<? extends Object> data = getTestData(this.getClass()
.getResourceAsStream("SubsumptionVariableRestrictionTest.drl"));
- AnalysisResultNormal analysisResult = new AnalysisResultNormal();
- session.setGlobal("result", analysisResult);
+ AnalyticsResult result = AnalyticsDataFactory
+ .getAnalyticsResult();
+ session.setGlobal("result", result);
StatelessSessionResult sessionResult = session.executeWithResults(data);
@@ -372,20 +385,23 @@
* @param iter
* @return
*/
- private Map<String, Set<String>> createRedundancyMap(Iterator iter) {
+ private Map<String, Set<String>> createRedundancyMap(Iterator<Object> iter) {
Map<String, Set<String>> map = new HashMap<String, Set<String>>();
while (iter.hasNext()) {
Object o = (Object) iter.next();
if (o instanceof Redundancy) {
Redundancy r = (Redundancy) o;
- if (map.containsKey(r.getLeft().getRuleName())) {
- Set<String> set = map.get(r.getLeft().getRuleName());
- set.add(r.getRight().getRuleName());
+ AnalyticsComponent left = (AnalyticsComponent) r.getLeft();
+ AnalyticsComponent right = (AnalyticsComponent) r.getRight();
+
+ if (map.containsKey(left.getRuleName())) {
+ Set<String> set = map.get(left.getRuleName());
+ set.add(right.getRuleName());
} else {
Set<String> set = new HashSet<String>();
- set.add(r.getRight().getRuleName());
- map.put(r.getLeft().getRuleName(), set);
+ set.add(right.getRuleName());
+ map.put(left.getRuleName(), set);
}
}
}
Modified: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/SolversTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/SolversTest.java 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/SolversTest.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -11,7 +11,7 @@
import org.drools.analytics.components.PatternPossibility;
import org.drools.analytics.components.Restriction;
import org.drools.analytics.components.RulePossibility;
-import org.drools.analytics.result.Cause;
+import org.drools.analytics.report.components.Cause;
import junit.framework.TestCase;
Modified: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/SubsumptantPossibilitiesRuleTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/SubsumptantPossibilitiesRuleTest.java 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/SubsumptantPossibilitiesRuleTest.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -10,19 +10,20 @@
import org.drools.StatelessSession;
import org.drools.StatelessSessionResult;
+import org.drools.analytics.components.AnalyticsComponent;
import org.drools.analytics.components.LiteralRestriction;
import org.drools.analytics.components.PatternPossibility;
import org.drools.analytics.components.RulePossibility;
-import org.drools.analytics.result.PartialRedundancy;
-import org.drools.analytics.result.Redundancy;
-import org.drools.analytics.result.Subsumption;
+import org.drools.analytics.report.components.PartialRedundancy;
+import org.drools.analytics.report.components.Redundancy;
+import org.drools.analytics.report.components.Subsumption;
import org.drools.base.RuleNameMatchesAgendaFilter;
public class SubsumptantPossibilitiesRuleTest extends TestBase {
private static final String RULE_NAME = "Find subsumptant Possibilities";
-
- public void testFake ( ) {
+
+ public void testFake() {
assertTrue(true);
}
@@ -212,13 +213,16 @@
Object o = (Object) iter.next();
if (o instanceof Subsumption) {
Subsumption s = (Subsumption) o;
- if (map.containsKey(s.getLeft().getRuleName())) {
- Set<String> set = map.get(s.getLeft().getRuleName());
- set.add(s.getRight().getRuleName());
+ AnalyticsComponent left = (AnalyticsComponent) s.getLeft();
+ AnalyticsComponent right = (AnalyticsComponent) s.getRight();
+
+ if (map.containsKey(left.getRuleName())) {
+ Set<String> set = map.get(left.getRuleName());
+ set.add(right.getRuleName());
} else {
Set<String> set = new HashSet<String>();
- set.add(s.getRight().getRuleName());
- map.put(s.getLeft().getRuleName(), set);
+ set.add(right.getRuleName());
+ map.put(left.getRuleName(), set);
}
}
}
Modified: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/TestBase.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/TestBase.java 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/TestBase.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -23,7 +23,7 @@
* @author Toni Rikkola
*
*/
-abstract class TestBase extends TestCase {
+abstract public class TestBase extends TestCase {
@Override
protected void setUp() throws Exception {
Added: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/redundancy/NotesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/redundancy/NotesTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/redundancy/NotesTest.java 2007-10-18 09:29:17 UTC (rev 15907)
@@ -0,0 +1,58 @@
+package org.drools.analytics.redundancy;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.drools.StatelessSession;
+import org.drools.analytics.TestBase;
+import org.drools.analytics.components.LiteralRestriction;
+import org.drools.analytics.components.PatternPossibility;
+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.Redundancy;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+
+public class NotesTest extends TestBase {
+
+ public void testRedundantRestrictionsInPatternPossibilities()
+ throws Exception {
+ StatelessSession session = getStatelessSession(this.getClass()
+ .getResourceAsStream("Notes.drl"));
+
+ session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+ "Find redundant restrictions from pattern possibilities"));
+
+ Collection<Object> objects = new ArrayList<Object>();
+ LiteralRestriction left = new LiteralRestriction();
+
+ LiteralRestriction right = new LiteralRestriction();
+
+ Redundancy redundancy = new Redundancy(
+ Redundancy.RedundancyType.STRONG, left, right);
+
+ PatternPossibility possibility = new PatternPossibility();
+ possibility.add(left);
+ possibility.add(right);
+
+ objects.add(left);
+ objects.add(right);
+ objects.add(redundancy);
+ objects.add(possibility);
+
+ AnalyticsResult result = AnalyticsDataFactory.getAnalyticsResult();
+ session.setGlobal("result", result);
+
+ session.executeWithResults(objects);
+
+ Collection<AnalyticsMessageBase> notes = result
+ .getBySeverity(AnalyticsMessage.Severity.NOTE);
+
+ // Has at least one item.
+ assertEquals(1, notes.size());
+
+ AnalyticsMessageBase note = notes.iterator().next();
+ assertTrue(note.getFaulty().equals(redundancy));
+ }
+}
Modified: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/Misc3.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/Misc3.drl 2007-10-18 06:36:53 UTC (rev 15906)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/Misc3.drl 2007-10-18 09:29:17 UTC (rev 15907)
@@ -3,34 +3,9 @@
import com.sample.DroolsTest.Message;
-rule "Some rule 1"
+rule "Redundant restrictions"
when
- SuperPattern( temp > 1, bar <= 10.0, a == "first string", b == "second string" )
+ RedundancyPattern( a == 1, a == 1 )
then
- System.out.println( "Test" );
-end
-
-rule "Some rule 2"
- when
- SuperPattern( temp == 1, a == "first string", b == "second string" )
- then
- System.out.println( "Test" );
-end
-
-rule "Some rule 3"
- when
- sp: SuperPattern( temp < 1, bar == 10.0, a == "first string" )
- LesserPattern( group contains sp )
- then
- System.out.println( "Test" );
-end
-
-rule "Some rule 4"
- when
- SuperPattern( temp < 10, bar >= -1.0, a == "first string", b == "second string" )
- SuperPattern( temp < 10 a == "first string", b == "second string" )
- SuperPattern( temp < 10, a == "first string", b == "second string" )
- SuperPattern( temp < 10, a == "first string", b == "second string" )
- then
- System.out.println( "Test" );
+ // Something
end
\ No newline at end of file
More information about the jboss-svn-commits
mailing list