[jboss-svn-commits] JBL Code SVN: r15121 - in labs/jbossrules/trunk/experimental/drools-analytics/src: main/java/org/drools/analytics/dao and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Sep 14 11:41:40 EDT 2007
Author: Rikkola
Date: 2007-09-14 11:41:40 -0400 (Fri, 14 Sep 2007)
New Revision: 15121
Added:
labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/ComponentsReportModeller.java
labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Misc.drl
Modified:
labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/Analyzer.java
labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsData.java
labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataMaps.java
labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/ReportModeller.java
labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/AnalyticsTestStandalone.java
Log:
Component relations html report using ComponentsReportModeller.
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/Analyzer.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/Analyzer.java 2007-09-14 14:51:55 UTC (rev 15120)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/Analyzer.java 2007-09-14 15:41:40 UTC (rev 15121)
@@ -8,6 +8,7 @@
import org.drools.analytics.dao.AnalyticsData;
import org.drools.analytics.dao.AnalyticsDataMaps;
import org.drools.analytics.result.AnalysisResultNormal;
+import org.drools.analytics.result.ComponentsReportModeller;
import org.drools.analytics.result.ReportModeller;
import org.drools.lang.descr.PackageDescr;
import org.drools.rule.Package;
@@ -74,12 +75,21 @@
public String getResultAsXML() {
return ReportModeller.writeXML(result);
}
-
+
/**
* Returns the analysis results as HTML.
*
* @return Analysis results as HTML
*/
+ public String getComponentsHTML() {
+ return new ComponentsReportModeller().writeComponentsHTML();
+ }
+
+ /**
+ * Returns the analysis results as HTML.
+ *
+ * @return Analysis results as HTML
+ */
public String getResultAsHTML() {
return ReportModeller.writeHTML(result);
}
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsData.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsData.java 2007-09-14 14:51:55 UTC (rev 15120)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsData.java 2007-09-14 15:41:40 UTC (rev 15121)
@@ -41,6 +41,8 @@
public AnalyticsClass getClassByName(String name);
+ public AnalyticsClass getClassById(int id);
+
public Field getFieldByClassAndFieldName(String className, String fieldName);
public Variable getVariableByRuleAndVariableName(String ruleName,
@@ -49,4 +51,18 @@
public Collection<? extends Object> getAll();
public FieldClassLink getFieldClassLink(int id, int id2);
+
+ public Collection<AnalyticsRule> getAllRules();
+
+ public Collection<AnalyticsClass> getClassesByRuleName(String ruleName);
+
+ public Collection<AnalyticsClass> getAllClasses();
+
+ public Collection<Field> getFieldsByClassId(int id);
+
+ public Collection<AnalyticsRule> getRulesByClassId(int id);
+
+ public Collection<Field> getAllFields();
+
+ public Collection<AnalyticsRule> getRulesByFieldId(int id);
}
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataMaps.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataMaps.java 2007-09-14 14:51:55 UTC (rev 15120)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataMaps.java 2007-09-14 15:41:40 UTC (rev 15121)
@@ -3,8 +3,10 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.drools.analytics.components.AnalyticsClass;
import org.drools.analytics.components.AnalyticsRule;
@@ -26,12 +28,17 @@
private Map<Integer, AnalyticsClass> classesById = new HashMap<Integer, AnalyticsClass>();
private Map<String, AnalyticsClass> classesByName = new HashMap<String, AnalyticsClass>();
private Map<String, Field> fieldsByClassAndFieldName = new HashMap<String, Field>();
+ private Map<Integer, Field> fieldsById = new HashMap<Integer, Field>();
+ private Map<Integer, Set<Field>> fieldsByClassId = new HashMap<Integer, Set<Field>>();
private Map<String, FieldClassLink> fieldClassLinkByIds = new HashMap<String, FieldClassLink>();
private Map<Integer, AnalyticsRule> rulesById = new HashMap<Integer, AnalyticsRule>();
private Map<Integer, Pattern> patternsById = new HashMap<Integer, Pattern>();
+ private Map<Integer, Set<Pattern>> patternsByClassId = new HashMap<Integer, Set<Pattern>>();
+ private Map<String, Set<Pattern>> patternsByRuleName = new HashMap<String, Set<Pattern>>();
private Map<Integer, Constraint> constraintsById = new HashMap<Integer, Constraint>();
private Map<Integer, Restriction> restrictionsById = new HashMap<Integer, Restriction>();
+ private Map<Integer, Set<Restriction>> restrictionsByFieldId = new HashMap<Integer, Set<Restriction>>();
private Map<String, Variable> variablesByRuleAndVariableName = new HashMap<String, Variable>();
@@ -60,6 +67,18 @@
.getClassId()));
fieldsByClassAndFieldName.put(clazz.getName() + "." + field.getName(),
field);
+
+ 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);
+ }
}
public void insert(Variable variable) {
@@ -75,6 +94,26 @@
public void insert(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);
+ }
}
public void insert(Constraint constraint) {
@@ -83,6 +122,17 @@
public void insert(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);
+ }
}
public void insert(FieldClassLink link) {
@@ -108,6 +158,10 @@
return fieldClassLinkByIds.get(id + "." + id2);
}
+ public Collection<AnalyticsRule> getAllRules() {
+ return rulesById.values();
+ }
+
public void insert(PatternPossibility possibility) {
patternPossibilitiesById.put(possibility.getId(), possibility);
}
@@ -116,6 +170,21 @@
rulePossibilitiesById.put(possibility.getId(), possibility);
}
+ public Collection<AnalyticsClass> getClassesByRuleName(String ruleName) {
+ Set<AnalyticsClass> set = new HashSet<AnalyticsClass>();
+
+ for (Pattern pattern : patternsByRuleName.get(ruleName)) {
+ AnalyticsClass clazz = getClassById(pattern.getClassId());
+ set.add(clazz);
+ }
+
+ return set;
+ }
+
+ public AnalyticsClass getClassById(int id) {
+ return classesById.get(id);
+ }
+
public Collection<? extends Object> getAll() {
List<Object> objects = new ArrayList<Object>();
@@ -133,4 +202,37 @@
return objects;
}
+
+ public Collection<AnalyticsClass> getAllClasses() {
+ return classesById.values();
+ }
+
+ public Collection<Field> getFieldsByClassId(int id) {
+ return fieldsByClassId.get(id);
+ }
+
+ public Collection<AnalyticsRule> getRulesByClassId(int id) {
+ Set<AnalyticsRule> rules = new HashSet<AnalyticsRule>();
+
+ for (Pattern pattern : patternsByClassId.get(id)) {
+ rules.add(rulesById.get(pattern.getRuleId()));
+ }
+
+ return rules;
+ }
+
+ public Collection<Field> getAllFields() {
+ return fieldsById.values();
+ }
+
+ public Collection<AnalyticsRule> getRulesByFieldId(int id) {
+
+ Set<AnalyticsRule> rules = new HashSet<AnalyticsRule>();
+
+ for (Restriction restriction : restrictionsByFieldId.get(id)) {
+ rules.add(rulesById.get(restriction.getRuleId()));
+ }
+
+ return rules;
+ }
}
Added: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/ComponentsReportModeller.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/ComponentsReportModeller.java (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/ComponentsReportModeller.java 2007-09-14 15:41:40 UTC (rev 15121)
@@ -0,0 +1,286 @@
+package org.drools.analytics.result;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Collection;
+
+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.AnalyticsDataMaps;
+
+public class ComponentsReportModeller {
+
+ private static String cssFile = "basic.css";
+ private StringBuffer str = new StringBuffer("");
+ private AnalyticsData data = AnalyticsDataMaps.getAnalyticsDataMaps();
+
+ public String writeComponentsHTML() {
+ Collection<AnalyticsRule> rules = data.getAllRules();
+ Collection<AnalyticsClass> classes = data.getAllClasses();
+ Collection<Field> fields = data.getAllFields();
+
+ str.append("<html>\n");
+ str.append("<head>\n");
+ str.append("<title>\n");
+ str.append("Rule Relations\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");
+ try {
+ BufferedReader reader = new BufferedReader(
+ new InputStreamReader(ComponentsReportModeller.class
+ .getResourceAsStream(cssFile)));
+ 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("Rule Relations");
+ str.append("</h1>\n");
+ str.append("<br>\n");
+
+ visitRuleCollection(rules);
+
+ str.append("<br>\n");
+ str.append("<br>\n");
+
+ visitClassCollection(classes);
+
+ str.append("<br>\n");
+ str.append("<br>\n");
+
+ visitFieldCollection(fields);
+
+ str.append("<br>\n");
+ str.append("<br>\n");
+
+ str.append("</body>\n");
+ str.append("</html>");
+
+ return str.toString();
+ }
+
+ public void visitRuleCollection(Collection<AnalyticsRule> rules) {
+
+ str.append("<table class=\"rules\">\n");
+ str.append("<tr>\n");
+ str.append("<th>\n");
+
+ if (rules.size() > 0) {
+ str.append("Rules ( ");
+ str.append(rules.size());
+ str.append(" )\n");
+
+ str.append("</th>\n");
+ str.append("</tr>\n");
+
+ for (AnalyticsRule rule : rules) {
+ str.append("<tr>\n");
+ str.append("<td>\n");
+
+ visitRule(rule);
+
+ str.append("</td>\n");
+ str.append("</tr>\n");
+ }
+ } else {
+ str.append("No rules found\n");
+ str.append("</th>\n");
+ str.append("</tr>\n");
+ }
+
+ str.append("</table>\n");
+ }
+
+ public void visitClassCollection(Collection<AnalyticsClass> classes) {
+
+ str.append("<table class=\"patterns\">\n");
+ str.append("<tr>\n");
+ str.append("<th>\n");
+
+ if (classes.size() > 0) {
+ str.append("Patterns ( ");
+ str.append(classes.size());
+ str.append(" )\n");
+
+ str.append("</th>\n");
+ str.append("</tr>\n");
+
+ for (AnalyticsClass clazz : classes) {
+ str.append("<tr>\n");
+ str.append("<td>\n");
+
+ visitClass(clazz);
+
+ str.append("</td>\n");
+ str.append("</tr>\n");
+ }
+ } else {
+ str.append("No patterns found\n");
+ str.append("</th>\n");
+ str.append("</tr>\n");
+ }
+
+ str.append("</table>\n");
+ }
+
+ public void visitFieldCollection(Collection<Field> fields) {
+
+ str.append("<table class=\"fields\">\n");
+ str.append("<tr>\n");
+ str.append("<th>\n");
+
+ if (fields.size() > 0) {
+ str.append("Fields ( ");
+ str.append(fields.size());
+ str.append(" )\n");
+
+ str.append("</th>\n");
+ str.append("</tr>\n");
+
+ for (Field field : fields) {
+ str.append("<tr>\n");
+ str.append("<td>\n");
+
+ visitField(field);
+
+ str.append("</td>\n");
+ str.append("</tr>\n");
+ }
+ } else {
+ str.append("No fields found\n");
+ str.append("</th>\n");
+ str.append("</tr>\n");
+ }
+
+ str.append("</table>\n");
+ }
+
+ public void visitRule(AnalyticsRule rule) {
+ Collection<AnalyticsClass> classes = data.getClassesByRuleName(rule
+ .getRuleName());
+
+ str.append("Rule<br /> Name: ");
+ str.append("<a name=\"Rule_id");
+ str.append(rule.getId());
+ str.append("\">");
+ str.append(rule.getRuleName());
+ str.append("</a>");
+
+ str
+ .append("<br /> Patterns: <br />\n");
+ processClassCollection(classes);
+ }
+
+ public void visitClass(AnalyticsClass clazz) {
+ Collection<Field> fields = data.getFieldsByClassId(clazz.getId());
+ Collection<AnalyticsRule> rules = data.getRulesByClassId(clazz.getId());
+
+ str.append("Pattern<br /> Name: ");
+ str.append("<a name=\"Pattern_id");
+ str.append(clazz.getId());
+ str.append("\">");
+ str.append(clazz.getName());
+ str.append("</a>");
+
+ str
+ .append("<br /> Known fields: <br />\n");
+ processFieldCollection(fields);
+ str
+ .append("<br /> Rules that use this component: <br />\n");
+ processRuleCollection(rules);
+ }
+
+ public void visitField(Field field) {
+ AnalyticsClass clazz = data.getClassById(field.getClassId());
+ Collection<AnalyticsRule> rules = data.getRulesByFieldId(field.getId());
+
+ str.append("Field<br /> Name: ");
+ str.append("<a name=\"Field_id");
+ str.append(field.getId());
+ str.append("\">");
+ str.append(field.getName());
+ str.append("</a>");
+
+ str.append("<br /> Type: ");
+ str.append(field.getFieldType());
+ str.append("<br /> Belongs to class: ");
+
+ str.append("<a href=\"#Pattern_id");
+ str.append(clazz.getId());
+ str.append("\">");
+ str.append(clazz.getName());
+ str.append("</a><br />");
+
+ str
+ .append("<br /> Rules that use this component: <br />\n");
+ processRuleCollection(rules);
+ }
+
+ private void processFieldCollection(Collection<Field> fields) {
+ if (fields != null && !fields.isEmpty()) {
+ for (Field field : fields) {
+ str
+ .append(" - <a href=\"#Field_id");
+ str.append(field.getId());
+ str.append("\">");
+ str.append(field.getName());
+ str.append("</a><br />\n");
+ }
+ } else {
+ str
+ .append(" No fields found<br />\n");
+ }
+ }
+
+ private void processRuleCollection(Collection<AnalyticsRule> rules) {
+
+ if (rules != null && !rules.isEmpty()) {
+ for (AnalyticsRule rule : rules) {
+ str
+ .append(" - <a href=\"#Rule_id");
+ str.append(rule.getId());
+ str.append("\">");
+ str.append(rule.getRuleName());
+ str.append("</a><br />\n");
+ }
+ } else {
+ str
+ .append(" No rules found<br />\n");
+ }
+ }
+
+ private void processClassCollection(Collection<AnalyticsClass> classes) {
+ // Patterns
+ if (classes != null && !classes.isEmpty()) {
+ for (AnalyticsClass clazz : classes) {
+ str
+ .append(" - <a href=\"#Pattern_id");
+ str.append(clazz.getId());
+ str.append("\">");
+ str.append(clazz.getName());
+ str.append("</a><br />\n");
+ }
+ } else {
+ str
+ .append(" No patterns found<br />\n");
+ }
+ }
+}
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-14 14:51:55 UTC (rev 15120)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/ReportModeller.java 2007-09-14 15:41:40 UTC (rev 15121)
@@ -13,9 +13,9 @@
* @author Toni Rikkola
*/
public class ReportModeller {
-
- private static String cssFile = "basic.css";
+ private static String cssFile = "basic.css";
+
public static String writeXML(AnalysisResultNormal result) {
XStream xstream = new XStream();
@@ -65,134 +65,130 @@
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");
- try{
- BufferedReader reader = new BufferedReader(new InputStreamReader(ReportModeller.class.getResourceAsStream(cssFile)));
- 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");
+ 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");
- if (warning.getRuleName() != null) {
- str.append("in rule ");
- str.append(warning.getRuleName());
- str.append(": ");
- }
+ str.append("<style type=\"text/css\">\n");
+ str.append("<!--\n");
+ try {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(
+ ReportModeller.class.getResourceAsStream(cssFile)));
+ 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(warning.getMessage());
- str.append("<BR>\n");
- str.append(" Causes are [<BR>\n");
+ str.append("</head>\n");
+ str.append("<body>\n\n");
- for (Cause cause : warning.getCauses()) {
- str.append(" ");
- str.append(cause);
- str.append("<BR>\n");
- }
- str.append(" ]\n");
+ str.append("<br>\n");
+ str.append("<h1>\n");
+ str.append("Analysis results");
+ str.append("</h1>\n");
+ str.append("<br>\n");
- str.append("</td>\n");
- str.append("</tr>\n");
- }
- str.append("</table>\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.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();
+ 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();
}
}
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/AnalyticsTestStandalone.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/AnalyticsTestStandalone.java 2007-09-14 14:51:55 UTC (rev 15120)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/AnalyticsTestStandalone.java 2007-09-14 15:41:40 UTC (rev 15121)
@@ -1,5 +1,7 @@
package org.drools.analytics;
+import java.io.BufferedWriter;
+import java.io.FileWriter;
import java.io.InputStreamReader;
import org.drools.compiler.DrlParser;
@@ -25,19 +27,34 @@
.parse(new InputStreamReader(
Analyzer.class
.getResourceAsStream("MissingRangesForVariables.drl")));
+ PackageDescr descr5 = new DrlParser().parse(new InputStreamReader(
+ Analyzer.class.getResourceAsStream("Misc.drl")));
Analyzer a = new Analyzer();
a.addPackageDescr(descr);
- // a.addPackageDescr(descr2);
- // a.addPackageDescr(descr3);
- // a.addPackageDescr(descr4);
+ a.addPackageDescr(descr2);
+ a.addPackageDescr(descr3);
+ a.addPackageDescr(descr4);
+ a.addPackageDescr(descr5);
a.fireAnalysis();
// System.out.print(a.getResultAsPlainText());
// System.out.print(a.getResultAsXML());
- System.out.print(a.getResultAsHTML());
-
+ // System.out.print(a.getResultAsHTML());
+ // System.out.print(a.getComponentsHTML());
+ writeToFile("C:\\report.html", a.getComponentsHTML());
} catch (Throwable t) {
t.printStackTrace();
}
}
+
+ private 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());
+ }
+ }
}
Added: labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Misc.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Misc.drl (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Misc.drl 2007-09-14 15:41:40 UTC (rev 15121)
@@ -0,0 +1,30 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+rule "Rule with patterns"
+ when
+ Foo1()
+ Foo1()
+ TestPattern1( a == 10, b == 10, c == 10, d == 10, e == 10)
+ TestPattern2()
+ TestPattern3()
+ TestPattern4()
+ then
+ System.out.println( "Test" );
+end
+
+rule "Field rule"
+ when
+ PatThePattern( gg > 100 )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Field rule 2"
+ when
+ PatThePattern()
+ then
+ System.out.println( "Test" );
+end
+
More information about the jboss-svn-commits
mailing list