[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