[jboss-svn-commits] JBL Code SVN: r17309 - in labs/jbossrules/trunk/drools-analytics: src/main/java/org/drools/analytics and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Dec 18 22:20:27 EST 2007
Author: michael.neale at jboss.com
Date: 2007-12-18 22:20:27 -0500 (Tue, 18 Dec 2007)
New Revision: 17309
Added:
labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/AnalyzerTest.java
Modified:
labs/jbossrules/trunk/drools-analytics/pom.xml
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Analyzer.java
labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/AnalyticsTestStandalone.java
Log:
JBRULES-1393 Analysis improvements and integration
Modified: labs/jbossrules/trunk/drools-analytics/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-analytics/pom.xml 2007-12-19 00:26:40 UTC (rev 17308)
+++ labs/jbossrules/trunk/drools-analytics/pom.xml 2007-12-19 03:20:27 UTC (rev 17309)
@@ -31,12 +31,7 @@
</build>
<dependencies>
- <!-- Internal dependencies -->
-
- <dependency>
- <groupId>org.drools</groupId>
- <artifactId>drools-core</artifactId>
- </dependency>
+ <!-- Internal dependencies -->
<dependency>
<groupId>org.drools</groupId>
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-12-19 00:26:40 UTC (rev 17308)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Analyzer.java 2007-12-19 03:20:27 UTC (rev 17309)
@@ -13,11 +13,16 @@
import org.drools.rule.Package;
/**
- *
+ * This is the main user class for analysis.
+ * This will use rules to validate rules, caching the "knowledge base" of analysis rules.
+ *
* @author Toni Rikkola
*/
public class Analyzer {
+ static RuleBase analysisKnowledgeBase;
+
+
private AnalyticsResult result = AnalyticsResultFactory
.createAnalyticsResult();
@@ -34,13 +39,28 @@
}
}
+
+ /**
+ * As the analyzer uses rules itself, this will reload the knowledge base.
+ * @throws Exception
+ */
+ public synchronized void reloadAnalysisKnowledgeBase() throws Exception {
+ analysisKnowledgeBase = createRuleBase();
+ }
+
+ /**
+ * This will run the analysis.
+ */
public void fireAnalysis() {
try {
- // load up the rule base
- RuleBase ruleBase = createRuleBase();
+ if (this.analysisKnowledgeBase == null) {
+ synchronized (this.getClass()) {
+ analysisKnowledgeBase = createRuleBase();
+ }
+ }
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ WorkingMemory workingMemory = analysisKnowledgeBase.newStatefulSession();
Collection<? extends Object> c = result.getAnalyticsData().getAll();
@@ -59,7 +79,7 @@
/**
* Returns the analysis results as plain text.
- *
+ *
* @return Analysis results as plain text.
*/
public String getResultAsPlainText() {
@@ -68,7 +88,7 @@
/**
* Returns the analysis results as XML.
- *
+ *
* @return Analysis results as XML
*/
public String getResultAsXML() {
@@ -77,7 +97,7 @@
/**
* Returns the analysis results as HTML.
- *
+ *
* @return Analysis results as HTML
*/
public void writeComponentsHTML(String path) {
@@ -86,7 +106,7 @@
/**
* Returns the analysis results as <code>AnalysisResult</code> object.
- *
+ *
* @return Analysis result
*/
public AnalyticsResult getResult() {
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-12-19 00:26:40 UTC (rev 17308)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/AnalyticsTestStandalone.java 2007-12-19 03:20:27 UTC (rev 17309)
@@ -6,9 +6,11 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
+import java.util.Set;
-import javax.print.attribute.standard.Severity;
-
+import org.drools.analytics.components.AnalyticsClass;
+import org.drools.analytics.components.AnalyticsRule;
+import org.drools.analytics.components.Field;
import org.drools.analytics.dao.AnalyticsResult;
import org.drools.analytics.report.components.AnalyticsMessage;
import org.drools.analytics.report.components.AnalyticsMessageBase;
@@ -101,7 +103,22 @@
+ Collection<AnalyticsClass> classes = result.getAnalyticsData().getAllClasses();
+ for (Iterator iterator = classes.iterator(); iterator.hasNext();) {
+ AnalyticsClass c = (AnalyticsClass) iterator.next();
+ Collection<AnalyticsRule> cr = result.getAnalyticsData().getRulesByClassId(c.getId());
+ System.err.println("Class rules:" + cr);
+ Set<Field> flds = c.getFields();
+ for (Iterator iterator2 = flds.iterator(); iterator2.hasNext();) {
+ Field f = (Field) iterator2.next();
+ cr = result.getAnalyticsData().getRulesByFieldId(f.getId());
+ System.err.println("Field rules: " + cr);
+
+
+ }
+ }
+
//System.err.println(a.getResultAsPlainText());
//System.out.println(result.toString());
} catch (Throwable t) {
Added: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/AnalyzerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/AnalyzerTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/AnalyzerTest.java 2007-12-19 03:20:27 UTC (rev 17309)
@@ -0,0 +1,77 @@
+package org.drools.analytics;
+
+import java.io.InputStreamReader;
+
+import org.drools.RuleBase;
+import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.analytics.report.components.AnalyticsMessageBase;
+import org.drools.compiler.DrlParser;
+import org.drools.lang.descr.PackageDescr;
+
+import junit.framework.TestCase;
+
+public class AnalyzerTest extends TestCase {
+
+ public void testAnalyzer() throws Exception {
+ Analyzer anal = new Analyzer();
+
+ DrlParser p = new DrlParser();
+ InputStreamReader reader = new InputStreamReader(this.getClass().getResourceAsStream("Misc3.drl"));
+ PackageDescr pkg = p.parse(reader);
+ assertFalse(p.hasErrors());
+
+ anal.addPackageDescr(pkg);
+ anal.fireAnalysis();
+
+ AnalyticsResult result = anal.getResult();
+ assertNotNull(result);
+ assertEquals(0, result.getBySeverity(AnalyticsMessageBase.Severity.ERROR).size());
+ assertEquals(10, result.getBySeverity(AnalyticsMessageBase.Severity.WARNING).size());
+ assertEquals(1, result.getBySeverity(AnalyticsMessageBase.Severity.NOTE).size());
+
+
+ //check it again
+ anal = new Analyzer();
+
+ p = new DrlParser();
+ reader = new InputStreamReader(this.getClass().getResourceAsStream("Misc3.drl"));
+ pkg = p.parse(reader);
+ assertFalse(p.hasErrors());
+
+ anal.addPackageDescr(pkg);
+ anal.fireAnalysis();
+
+ result = anal.getResult();
+ assertNotNull(result);
+ assertEquals(0, result.getBySeverity(AnalyticsMessageBase.Severity.ERROR).size());
+ assertEquals(10, result.getBySeverity(AnalyticsMessageBase.Severity.WARNING).size());
+ assertEquals(1, result.getBySeverity(AnalyticsMessageBase.Severity.NOTE).size());
+
+
+
+
+ }
+
+ public void testCacheKnowledgeBase() throws Exception {
+ Analyzer anal = new Analyzer();
+ DrlParser p = new DrlParser();
+ InputStreamReader reader = new InputStreamReader(this.getClass().getResourceAsStream("Misc3.drl"));
+ PackageDescr pkg = p.parse(reader);
+ assertFalse(p.hasErrors());
+
+ anal.addPackageDescr(pkg);
+ anal.fireAnalysis();
+
+ RuleBase original = Analyzer.analysisKnowledgeBase;
+
+ Analyzer anal2 = new Analyzer();
+
+ assertSame(original, Analyzer.analysisKnowledgeBase);
+
+ anal2.reloadAnalysisKnowledgeBase();
+ assertNotSame(original, Analyzer.analysisKnowledgeBase);
+
+
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/AnalyzerTest.java
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the jboss-svn-commits
mailing list