[jboss-svn-commits] JBL Code SVN: r15004 - in labs/jbossrules/trunk/experimental/drools-analytics/src: test/resources/org/drools/analytics and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Sep 11 03:42:58 EDT 2007


Author: Ik4ros
Date: 2007-09-11 03:42:57 -0400 (Tue, 11 Sep 2007)
New Revision: 15004

Added:
   labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/AnalyticsTest.java
   labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Analyzer.java
   labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/basic.css
Modified:
   labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/ReportModeller.java
Log:
Added Analysis Result as HTML

Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/ReportModeller.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/ReportModeller.java	2007-09-11 07:13:17 UTC (rev 15003)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/ReportModeller.java	2007-09-11 07:42:57 UTC (rev 15004)
@@ -3,12 +3,18 @@
 import org.drools.analytics.components.LiteralRestriction;
 
 import com.thoughtworks.xstream.XStream;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import org.drools.analytics.Analyzer;
 
 /**
  * 
  * @author Toni Rikkola
  */
 public class ReportModeller {
+    
+        private static String cssFile = "basic.css";
 
 	public static String writeXML(AnalysisResultNormal result) {
 		XStream xstream = new XStream();
@@ -59,5 +65,134 @@
 
 		return str.toString();
 	}
+        
+        public static String writeHTML(AnalysisResultNormal result) {
+                StringBuffer str = new StringBuffer("");
+                str.append("<html>\n");
+                str.append("<head>\n");
+                str.append("<title>\n");
+                str.append("Analysis Result\n");
+                str.append("</title>\n");
+                //str.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"basic.css\" title=\"default\">\n");
+                
+                str.append("<style type=\"text/css\">\n");
+                str.append("<!--\n");
+                BufferedReader reader = new BufferedReader(new InputStreamReader(Analyzer.class.getResourceAsStream(cssFile)));
+                try{
+                    String cssLine = null;
+                    while((cssLine = reader.readLine()) != null)
+                    {
+                        str.append(cssLine);
+                        str.append("\n");
+                    }
+                }
+                catch(IOException e)
+                {
+                    e.printStackTrace();
+                }
+                str.append("-->\n");
+                str.append("</style>\n");
+                
+                str.append("</head>\n");
+                str.append("<body>\n\n");
+                
+                str.append("<br>\n");
+                str.append("<h1>\n");
+                str.append("Analysis results");
+                str.append("</h1>\n");
+                str.append("<br>\n");
+                
+                if(result.getErrors().size() > 0)
+                {
+                    str.append("<table class=\"errors\">\n");
+                    str.append("<tr>\n");
+                    str.append("<th>\n");
+                    str.append("ERRORS (");
+                    str.append(result.getErrors().size());
+                    str.append(")\n");
+                    str.append("</th>\n");
+                    str.append("</tr>\n");
+                    for (AnalysisError error : result.getErrors()) {
+                        str.append("<tr>\n");
+                        str.append("<td>\n");
+                        str.append(error);
+                        str.append("</td>\n");
+                        str.append("</tr>\n");
+                    }
+                    str.append("</table>\n");
+                    
+                    str.append("<br>\n");
+                    str.append("<br>\n");
+                }
+                
+                if(result.getWarnings().size() > 0)
+                {
+                    str.append("<table class=\"warnings\">\n");
+                    str.append("<tr>\n");
+                    str.append("<th>\n");
+                    str.append("WARNINGS (");
+                    str.append(result.getWarnings().size());
+                    str.append(")\n");
+                    str.append("</th>\n");
+                    str.append("</tr>\n");
+                    for (AnalysisWarning warning : result.getWarnings()) {
+                        str.append("<tr>\n");
+                        str.append("<td>\n");
 
+                        str.append("Warning id = ");
+                        str.append(warning.getId());
+                        str.append(":<BR>\n");
+
+                        if (warning.getRuleName() != null) {
+                            str.append("in rule ");
+                            str.append(warning.getRuleName());
+                            str.append(": ");
+                        }
+
+                        str.append(warning.getMessage());
+                        str.append("<BR>\n");
+                        str.append("&nbsp;&nbsp; Causes are [<BR>\n");
+
+                        for (Cause cause : warning.getCauses()) {
+                                str.append("&nbsp;&nbsp;&nbsp;&nbsp;");
+                                str.append(cause);
+                                str.append("<BR>\n");
+                        }
+                        str.append("&nbsp;&nbsp; ]\n");
+
+                        str.append("</td>\n");
+                        str.append("</tr>\n");
+                    }
+                    str.append("</table>\n");
+
+                    str.append("<br>\n");
+                    str.append("<br>\n");
+                }
+                
+                if(result.getNotes().size() > 0)
+                {
+                    str.append("<table class=\"notes\">\n");
+                    str.append("<tr>\n");
+                    str.append("<th>\n");
+                    str.append("NOTES (");
+                    str.append(result.getNotes().size());
+                    str.append(")\n");
+                    str.append("</th>\n");
+                    str.append("</tr>\n");
+                    for (AnalysisNote note : result.getNotes()) {
+                        str.append("<tr>\n");
+                        str.append("<td>\n");
+                        str.append(note);
+                        str.append("</td>\n");
+                        str.append("</tr>\n");
+                    }
+                    str.append("</table>\n");
+                }
+                
+                str.append("</body>\n");
+                str.append("</html>");
+                
+                return str.toString();
+	}
+
 }

Added: labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/AnalyticsTest.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/AnalyticsTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/AnalyticsTest.java	2007-09-11 07:42:57 UTC (rev 15004)
@@ -0,0 +1,43 @@
+package org.drools.analytics;
+
+import java.io.InputStreamReader;
+
+import org.drools.compiler.DrlParser;
+import org.drools.lang.descr.PackageDescr;
+
+/**
+ * This is a sample file to launch a rule package from a rule source file.
+ */
+class AnalyticsTest {
+
+	public static final void main(String[] args) {
+		try {
+			PackageDescr descr = new DrlParser().parse(new InputStreamReader(
+					Analyzer.class
+							.getResourceAsStream("MissingRangesForDates.drl")));
+			PackageDescr descr2 = new DrlParser()
+					.parse(new InputStreamReader(Analyzer.class
+							.getResourceAsStream("MissingRangesForDoubles.drl")));
+			PackageDescr descr3 = new DrlParser().parse(new InputStreamReader(
+					Analyzer.class
+							.getResourceAsStream("MissingRangesForInts.drl")));
+			PackageDescr descr4 = new DrlParser()
+					.parse(new InputStreamReader(
+							Analyzer.class
+									.getResourceAsStream("MissingRangesForVariables.drl")));
+
+			Analyzer a = new Analyzer();
+			a.addPackageDescr(descr);
+			// a.addPackageDescr(descr2);
+			// a.addPackageDescr(descr3);
+			// a.addPackageDescr(descr4);
+			a.fireAnalysis();
+			// System.out.print(a.getResultAsPlainText());
+			// System.out.print(a.getResultAsXML());
+                         System.out.print(a.getResultAsHTML());
+
+		} catch (Throwable t) {
+			t.printStackTrace();
+		}
+	}
+}

Added: labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Analyzer.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Analyzer.java	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Analyzer.java	2007-09-11 07:42:57 UTC (rev 15004)
@@ -0,0 +1,108 @@
+package org.drools.analytics;
+
+import java.util.Collection;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.WorkingMemory;
+import org.drools.analytics.dao.AnalyticsData;
+import org.drools.analytics.dao.AnalyticsDataMaps;
+import org.drools.analytics.result.AnalysisResultNormal;
+import org.drools.analytics.result.ReportModeller;
+import org.drools.lang.descr.PackageDescr;
+import org.drools.rule.Package;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public class Analyzer {
+
+	private AnalysisResultNormal result = new AnalysisResultNormal();
+
+	public void addPackageDescr(PackageDescr descr) {
+		try {
+
+			PackageDescrFlattener ruleFlattener = new PackageDescrFlattener();
+
+			ruleFlattener.insert(descr);
+
+		} catch (Throwable t) {
+			t.printStackTrace();
+		}
+	}
+
+	public void fireAnalysis() {
+		try {
+			AnalyticsData data = AnalyticsDataMaps.getAnalyticsDataMaps();
+
+			System.setProperty("drools.accumulate.function.validatePattern",
+					"org.drools.analytics.accumulateFunction.ValidatePattern");
+
+			// load up the rulebase
+			RuleBase ruleBase = createRuleBase();
+
+			WorkingMemory workingMemory = ruleBase.newStatefulSession();
+
+			for (Object o : data.getAll()) {
+				workingMemory.insert(o);
+			}
+
+			// Object that returns the results.
+			workingMemory.setGlobal("result", result);
+			workingMemory.fireAllRules();
+
+		} catch (Throwable t) {
+			t.printStackTrace();
+		}
+	}
+
+	/**
+	 * Returns the analysis results as plain text.
+	 * 
+	 * @return Analysis results as plain text.
+	 */
+	public String getResultAsPlainText() {
+		return ReportModeller.writePlainText(result);
+	}
+
+	/**
+	 * Returns the analysis results as XML.
+	 * 
+	 * @return Analysis results as XML
+	 */
+	public String getResultAsXML() {
+		return ReportModeller.writeXML(result);
+	}
+        
+        /**
+	 * 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 AnalysisResultNormal getResult() {
+		return result;
+	}
+
+	private static RuleBase createRuleBase() throws Exception {
+
+		RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+
+		Collection<Package> packages = RuleLoader.loadPackages();
+		for (Package pkg : packages) {
+
+			ruleBase.addPackage(pkg);
+		}
+
+		return ruleBase;
+	}
+}

Added: labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/basic.css
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/basic.css	                        (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/basic.css	2007-09-11 07:42:57 UTC (rev 15004)
@@ -0,0 +1,54 @@
+/* JBoss Drools Analytics Style Sheet */
+/* Website: http://labs.jboss.com/jbossrules/ */
+
+*
+{
+	border: 0;
+	margin: 0;
+	padding: 0;
+}
+
+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: 600px;
+}
+
+tbody th
+{
+	color: #25c1e2;
+	font-style: italic;
+	background-color: #fff;
+	border-bottom: 1px solid #aeb3b6;
+}
+
+td
+{
+	border: 1px dotted #fff;
+	padding: 0 2px;
+}




More information about the jboss-svn-commits mailing list