[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(" Causes are [<BR>\n");
+
+ for (Cause cause : warning.getCauses()) {
+ str.append(" ");
+ str.append(cause);
+ str.append("<BR>\n");
+ }
+ str.append(" ]\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