[jboss-svn-commits] JBL Code SVN: r15141 - in labs/jbossrules/trunk/experimental/drools-analytics/src: main/java/org/drools/analytics/components and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Sep 15 11:39:39 EDT 2007
Author: Rikkola
Date: 2007-09-15 11:39:39 -0400 (Sat, 15 Sep 2007)
New Revision: 15141
Added:
labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/RulePackage.java
labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/ComponentsReportVisitor.java
labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/field.htm
labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/header.htm
labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/objectType.htm
labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/objectTypes.htm
labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/packages.htm
labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/relationsDetails.css
labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/relationsList.css
labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/rule.htm
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/PackageDescrFlattener.java
labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsClass.java
labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsComponentType.java
labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsRule.java
labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/Field.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/ComponentsReportModeller.java
labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/AnalyticsTestStandalone.java
labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Misc.drl
Log:
Improved relations html report. It now creates separate files to specified folder.
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-15 05:20:11 UTC (rev 15140)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/Analyzer.java 2007-09-15 15:39:39 UTC (rev 15141)
@@ -1,5 +1,6 @@
package org.drools.analytics;
+import java.io.File;
import java.util.Collection;
import org.drools.RuleBase;
@@ -81,8 +82,11 @@
*
* @return Analysis results as HTML
*/
- public String getComponentsHTML() {
- return new ComponentsReportModeller().writeComponentsHTML();
+ public void writeComponentsHTML(String path) {
+
+
+
+ ComponentsReportModeller.writeHTML(path);
}
/**
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/PackageDescrFlattener.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/PackageDescrFlattener.java 2007-09-15 05:20:11 UTC (rev 15140)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/PackageDescrFlattener.java 2007-09-15 15:39:39 UTC (rev 15141)
@@ -23,6 +23,7 @@
import org.drools.analytics.components.PatternPossibility;
import org.drools.analytics.components.QualifiedIdentifierRestriction;
import org.drools.analytics.components.ReturnValueRestriction;
+import org.drools.analytics.components.RulePackage;
import org.drools.analytics.components.RulePossibility;
import org.drools.analytics.components.Variable;
import org.drools.analytics.components.VariableRestriction;
@@ -65,6 +66,7 @@
private Solvers solvers = new Solvers();
+ private RulePackage currentPackage = null;
private AnalyticsRule currentRule = null;
private Pattern currentPattern = null;
private Constraint currentConstraint = null;
@@ -72,7 +74,21 @@
private Field currentField = null;
public void insert(PackageDescr packageDescr) {
+ AnalyticsData data = AnalyticsDataMaps.getAnalyticsDataMaps();
+ RulePackage rulePackage = data.getRulePackageByName(packageDescr
+ .getName());
+
+ if (rulePackage == null) {
+ rulePackage = new RulePackage();
+
+ rulePackage.setName(packageDescr.getName());
+ data.insert(rulePackage);
+ }
+
+ currentPackage = rulePackage;
+
flatten(packageDescr.getRules());
+
formPossibilities();
}
@@ -308,8 +324,11 @@
rule.setRuleSalience(descr.getSalience());
rule.setConsequence(descr.getConsequence().toString());
rule.setLineNumber(descr.getLine());
+ rule.setPackageId(currentPackage.getId());
+
data.insert(rule);
+ currentPackage.getRules().add(rule);
currentRule = rule;
solvers.startRuleSolver(rule);
@@ -558,6 +577,7 @@
field.setName(fieldName);
field.setLineNumber(line);
+ currentClass.getFields().add(field);
return field;
}
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsClass.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsClass.java 2007-09-15 05:20:11 UTC (rev 15140)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsClass.java 2007-09-15 15:39:39 UTC (rev 15141)
@@ -1,6 +1,8 @@
package org.drools.analytics.components;
import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
/**
* @author Toni Rikkola
@@ -14,6 +16,8 @@
private int id = index++;
private String name;
+ private Set<Field> fields = new HashSet<Field>();
+
public String getName() {
return name;
}
@@ -29,4 +33,12 @@
public void setId(int id) {
this.id = id;
}
+
+ public Set<Field> getFields() {
+ return fields;
+ }
+
+ public void setFields(Set<Field> fields) {
+ this.fields = fields;
+ }
}
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsComponentType.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsComponentType.java 2007-09-15 05:20:11 UTC (rev 15140)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsComponentType.java 2007-09-15 15:39:39 UTC (rev 15141)
@@ -25,5 +25,6 @@
METHOD_ACCESSOR,
FIELD_ACCESSOR,
FUNCTION_CALL,
- ACCESSOR
+ ACCESSOR,
+ RULE_PACKAGE
}
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsRule.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsRule.java 2007-09-15 05:20:11 UTC (rev 15140)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsRule.java 2007-09-15 15:39:39 UTC (rev 15141)
@@ -16,6 +16,8 @@
private String consequence;
private int lineNumber;
+ private int packageId;
+
public AnalyticsRule() {
super(index++);
}
@@ -78,4 +80,12 @@
public String toString() {
return "Rule '" + ruleName + "'";
}
+
+ public int getPackageId() {
+ return packageId;
+ }
+
+ public void setPackageId(int packageId) {
+ this.packageId = packageId;
+ }
}
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/Field.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/Field.java 2007-09-15 05:20:11 UTC (rev 15140)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/Field.java 2007-09-15 15:39:39 UTC (rev 15141)
@@ -9,7 +9,19 @@
public class Field extends AnalyticsComponent implements Cause {
public static enum FieldType {
- BOOLEAN, STRING, INT, DOUBLE, DATE, VARIABLE, OBJECT
+ BOOLEAN("boolean"), STRING("String"), INT("int"), DOUBLE("double"), DATE(
+ "Date"), VARIABLE("Variable"), OBJECT("Object");
+
+ private String string;
+
+ private FieldType(String string) {
+ this.string = string;
+ }
+
+ @Override
+ public String toString() {
+ return string;
+ }
}
private static int index = 0;
Added: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/RulePackage.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/RulePackage.java (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/components/RulePackage.java 2007-09-15 15:39:39 UTC (rev 15141)
@@ -0,0 +1,41 @@
+package org.drools.analytics.components;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public class RulePackage extends AnalyticsComponent {
+
+ private static int index = 0;
+
+ private String name;
+ private Set<AnalyticsRule> rules = new HashSet<AnalyticsRule>();
+
+ public RulePackage() {
+ super(index++);
+ }
+
+ @Override
+ public AnalyticsComponentType getComponentType() {
+ return AnalyticsComponentType.RULE_PACKAGE;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Set<AnalyticsRule> getRules() {
+ return rules;
+ }
+
+ public void setRules(Set<AnalyticsRule> rules) {
+ this.rules = rules;
+ }
+}
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-15 05:20:11 UTC (rev 15140)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsData.java 2007-09-15 15:39:39 UTC (rev 15141)
@@ -10,6 +10,7 @@
import org.drools.analytics.components.Pattern;
import org.drools.analytics.components.PatternPossibility;
import org.drools.analytics.components.Restriction;
+import org.drools.analytics.components.RulePackage;
import org.drools.analytics.components.RulePossibility;
import org.drools.analytics.components.Variable;
@@ -39,6 +40,8 @@
public void insert(RulePossibility possibility);
+ public void insert(RulePackage rulePackage);
+
public AnalyticsClass getClassByName(String name);
public AnalyticsClass getClassById(int id);
@@ -58,6 +61,8 @@
public Collection<AnalyticsClass> getAllClasses();
+ public Collection<RulePackage> getAllRulePackages();
+
public Collection<Field> getFieldsByClassId(int id);
public Collection<AnalyticsRule> getRulesByClassId(int id);
@@ -65,4 +70,6 @@
public Collection<Field> getAllFields();
public Collection<AnalyticsRule> getRulesByFieldId(int id);
+
+ public RulePackage getRulePackageByName(String name);
}
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-15 05:20:11 UTC (rev 15140)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataMaps.java 2007-09-15 15:39:39 UTC (rev 15141)
@@ -16,6 +16,7 @@
import org.drools.analytics.components.Pattern;
import org.drools.analytics.components.PatternPossibility;
import org.drools.analytics.components.Restriction;
+import org.drools.analytics.components.RulePackage;
import org.drools.analytics.components.RulePossibility;
import org.drools.analytics.components.Variable;
@@ -25,6 +26,9 @@
*/
public class AnalyticsDataMaps implements AnalyticsData {
+ private Map<Integer, RulePackage> packagesById = new HashMap<Integer, RulePackage>();
+ private Map<String, RulePackage> packagesByName = new HashMap<String, RulePackage>();
+
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>();
@@ -188,6 +192,8 @@
public Collection<? extends Object> getAll() {
List<Object> objects = new ArrayList<Object>();
+ objects.addAll(packagesById.values());
+
objects.addAll(rulesById.values());
objects.addAll(patternsById.values());
objects.addAll(constraintsById.values());
@@ -235,4 +241,17 @@
return rules;
}
+
+ public Collection<RulePackage> getAllRulePackages() {
+ return packagesById.values();
+ }
+
+ public void insert(RulePackage rulePackage) {
+ packagesById.put(rulePackage.getId(), rulePackage);
+ packagesByName.put(rulePackage.getName(), rulePackage);
+ }
+
+ public RulePackage getRulePackageByName(String name) {
+ return packagesByName.get(name);
+ }
}
Modified: 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 2007-09-15 05:20:11 UTC (rev 15140)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/ComponentsReportModeller.java 2007-09-15 15:39:39 UTC (rev 15141)
@@ -1,9 +1,8 @@
package org.drools.analytics.result;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.Collection;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
import org.drools.analytics.components.AnalyticsClass;
import org.drools.analytics.components.AnalyticsRule;
@@ -13,274 +12,80 @@
public class ComponentsReportModeller {
- private static String cssFile = "basic.css";
- private StringBuffer str = new StringBuffer("");
- private AnalyticsData data = AnalyticsDataMaps.getAnalyticsDataMaps();
+ public static void writeHTML(String path) {
+ AnalyticsData data = AnalyticsDataMaps.getAnalyticsDataMaps();
- public String writeComponentsHTML() {
- Collection<AnalyticsRule> rules = data.getAllRules();
- Collection<AnalyticsClass> classes = data.getAllClasses();
- Collection<Field> fields = data.getAllFields();
+ // Source folder
+ File sourceFolder = new File(path
+ + ComponentsReportVisitor.SOURCE_FOLDER);
+ sourceFolder.mkdir();
- 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");
+ // Base files
+ // index.htm
+ writeToFile(path + ComponentsReportVisitor.SOURCE_FOLDER
+ + File.separator + ComponentsReportVisitor.HTML_FILE_INDEX,
+ ComponentsReportVisitor.visitObjectTypeCollection(data
+ .getAllClasses()));
+ // packages.htm
+ writeToFile(path + ComponentsReportVisitor.SOURCE_FOLDER
+ + File.separator + ComponentsReportVisitor.HTML_FILE_PACKAGES,
+ ComponentsReportVisitor.visitRulePackageCollection(data
+ .getAllRulePackages()));
- 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();
+ // rules
+ String ruleFolder = path + ComponentsReportVisitor.SOURCE_FOLDER
+ + File.separator + ComponentsReportVisitor.RULE_FOLDER;
+ File rulesFolder = new File(ruleFolder);
+ rulesFolder.mkdir();
+ for (AnalyticsRule rule : data.getAllRules()) {
+ writeToFile(ruleFolder + File.separator + rule.getId() + ".htm",
+ ComponentsReportVisitor.visitRule(rule));
}
- 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");
+ // ObjectTypes
+ String objectTypeFolder = path + ComponentsReportVisitor.SOURCE_FOLDER
+ + File.separator + ComponentsReportVisitor.OBJECT_TYPE_FOLDER;
+ File objectTypesFolder = new File(objectTypeFolder);
+ objectTypesFolder.mkdir();
+ for (AnalyticsClass objectType : data.getAllClasses()) {
+ writeToFile(objectTypeFolder + File.separator + objectType.getId()
+ + ".htm", ComponentsReportVisitor
+ .visitObjectType(objectType));
}
- 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");
+ // Fields
+ String fieldFolder = path + ComponentsReportVisitor.SOURCE_FOLDER
+ + File.separator + ComponentsReportVisitor.FIELD_FOLDER;
+ File fieldsFolder = new File(fieldFolder);
+ fieldsFolder.mkdir();
+ for (Field field : data.getAllFields()) {
+ writeToFile(fieldFolder + File.separator + field.getId() + ".htm",
+ ComponentsReportVisitor.visitField(field));
}
- str.append("</table>\n");
+ // css files
+ String cssFolder = path + ComponentsReportVisitor.SOURCE_FOLDER
+ + File.separator + ComponentsReportVisitor.CSS_FOLDER;
+ File cssesFolder = new File(cssFolder);
+ cssesFolder.mkdir();
+ writeToFile(cssFolder + File.separator
+ + ComponentsReportVisitor.CSS_FILE_DETAILS,
+ ComponentsReportVisitor
+ .getCss(ComponentsReportVisitor.CSS_FILE_DETAILS));
+ writeToFile(cssFolder + File.separator
+ + ComponentsReportVisitor.CSS_FILE_LIST,
+ ComponentsReportVisitor
+ .getCss(ComponentsReportVisitor.CSS_FILE_LIST));
}
- 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");
+ 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());
}
-
- 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");
- }
- }
}
Added: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/ComponentsReportVisitor.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/ComponentsReportVisitor.java (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/result/ComponentsReportVisitor.java 2007-09-15 15:39:39 UTC (rev 15141)
@@ -0,0 +1,184 @@
+package org.drools.analytics.result;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.analytics.components.AnalyticsClass;
+import org.drools.analytics.components.AnalyticsRule;
+import org.drools.analytics.components.Field;
+import org.drools.analytics.components.RulePackage;
+import org.drools.analytics.dao.AnalyticsData;
+import org.drools.analytics.dao.AnalyticsDataMaps;
+import org.mvel.TemplateInterpreter;
+
+public class ComponentsReportVisitor {
+
+ public static final String THIS_FOLDER = ".";
+ public static final String PREVIOUS_FOLDER = "..";
+
+ public static final String SOURCE_FOLDER = "report";
+ public static final String OBJECT_TYPE_FOLDER = "objectTypes";
+ public static final String FIELD_FOLDER = "fields";
+ public static final String RULE_FOLDER = "rules";
+ public static final String PACKAGE_FOLDER = "packages";
+ public static final String CSS_FOLDER = "css";
+
+ public static final String CSS_FILE_LIST = "relationsList.css";
+ public static final String CSS_FILE_DETAILS = "relationsDetails.css";
+
+ public static final String HTML_FILE_INDEX = "index.htm";
+ public static final String HTML_FILE_PACKAGES = "packages.htm";
+
+ private static String readFile(String fileName) {
+ StringBuffer str = new StringBuffer("");
+ try {
+ BufferedReader reader = new BufferedReader(
+ new InputStreamReader(ComponentsReportVisitor.class
+ .getResourceAsStream(fileName)));
+ String line = null;
+ while ((line = reader.readLine()) != null) {
+ str.append(line);
+ str.append("\n");
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return str.toString();
+ }
+
+ public static String getCss(String fileName) {
+ return readFile(fileName);
+ }
+
+ private static String createStyleTag(String path) {
+ StringBuffer str = new StringBuffer("");
+
+ str.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"");
+ str.append(path);
+ str.append("\" />");
+
+ return str.toString();
+ }
+
+ public static String visitRulePackageCollection(
+ Collection<RulePackage> packages) {
+ Map<String, Object> map = new HashMap<String, Object>();
+ map.put("header", processHeader(THIS_FOLDER));
+ map.put("sourceFolder", THIS_FOLDER);
+ map.put("ruleFolder", RULE_FOLDER);
+ map.put("packageFolder", PACKAGE_FOLDER);
+ map.put("cssStyle", createStyleTag(CSS_FOLDER + "/" + CSS_FILE_LIST));
+
+ map.put("rulePackages", packages);
+
+ String myTemplate = readFile("packages.htm");
+
+ String result = TemplateInterpreter.evalToString(myTemplate, map);
+
+ return result;
+ }
+
+ public static String visitObjectTypeCollection(
+ Collection<AnalyticsClass> objectTypes) {
+ Map<String, Object> map = new HashMap<String, Object>();
+ map.put("header", processHeader(THIS_FOLDER));
+ map.put("sourceFolder", THIS_FOLDER);
+ map.put("objectTypeFolder", OBJECT_TYPE_FOLDER);
+ map.put("fieldFolder", FIELD_FOLDER);
+ map.put("cssStyle", createStyleTag(CSS_FOLDER + "/" + CSS_FILE_LIST));
+
+ map.put("objectTypes", objectTypes);
+
+ String myTemplate = readFile("objectTypes.htm");
+
+ String result = TemplateInterpreter.evalToString(myTemplate, map);
+
+ return result;
+ }
+
+ public static String visitRule(AnalyticsRule rule) {
+ AnalyticsData data = AnalyticsDataMaps.getAnalyticsDataMaps();
+ Collection<AnalyticsClass> objectTypes = data.getClassesByRuleName(rule
+ .getRuleName());
+
+ Map<String, Object> map = new HashMap<String, Object>();
+ map.put("header", processHeader(PREVIOUS_FOLDER));
+ map.put("sourceFolder", PREVIOUS_FOLDER);
+ map.put("objectTypeFolder", OBJECT_TYPE_FOLDER);
+ map.put("cssStyle", createStyleTag(PREVIOUS_FOLDER + "/" + CSS_FOLDER
+ + "/" + CSS_FILE_DETAILS));
+
+ map.put("rule", rule);
+ map.put("objectTypes", objectTypes);
+
+ String myTemplate = readFile("rule.htm");
+
+ String result = TemplateInterpreter.evalToString(myTemplate, map);
+
+ return result;
+ }
+
+ public static String visitObjectType(AnalyticsClass objectType) {
+ AnalyticsData data = AnalyticsDataMaps.getAnalyticsDataMaps();
+ Collection<AnalyticsRule> rules = data.getRulesByClassId(objectType
+ .getId());
+
+ Map<String, Object> map = new HashMap<String, Object>();
+ map.put("header", processHeader(PREVIOUS_FOLDER));
+ map.put("sourceFolder", PREVIOUS_FOLDER);
+ map.put("ruleFolder", RULE_FOLDER);
+ map.put("fieldFolder", FIELD_FOLDER);
+ map.put("cssStyle", createStyleTag(PREVIOUS_FOLDER + "/" + CSS_FOLDER
+ + "/" + CSS_FILE_DETAILS));
+
+ map.put("objectType", objectType);
+ map.put("rules", rules);
+
+ String myTemplate = readFile("objectType.htm");
+
+ String result = TemplateInterpreter.evalToString(myTemplate, map);
+
+ return result;
+ }
+
+ public static String visitField(Field field) {
+ AnalyticsData data = AnalyticsDataMaps.getAnalyticsDataMaps();
+ AnalyticsClass objectType = data.getClassById(field.getClassId());
+ Collection<AnalyticsRule> rules = data.getRulesByFieldId(field.getId());
+
+ Map<String, Object> map = new HashMap<String, Object>();
+ map.put("header", processHeader(PREVIOUS_FOLDER));
+ map.put("sourceFolder", PREVIOUS_FOLDER);
+ map.put("ruleFolder", RULE_FOLDER);
+ map.put("objectTypeFolder", OBJECT_TYPE_FOLDER);
+ map.put("fieldFolder", FIELD_FOLDER);
+ map.put("cssStyle", createStyleTag(PREVIOUS_FOLDER + "/" + CSS_FOLDER
+ + "/" + CSS_FILE_DETAILS));
+
+ map.put("field", field);
+ map.put("objectType", objectType);
+ map.put("rules", rules);
+
+ String myTemplate = readFile("field.htm");
+
+ String result = TemplateInterpreter.evalToString(myTemplate, map);
+
+ return result;
+ }
+
+ private static String processHeader(String folder) {
+ Map<String, Object> map = new HashMap<String, Object>();
+ map.put("sourceFolder", folder);
+
+ map.put("objectTypesFile", HTML_FILE_INDEX);
+ map.put("packagesFile", HTML_FILE_PACKAGES);
+
+ String myTemplate = readFile("header.htm");
+
+ return TemplateInterpreter.evalToString(myTemplate, map);
+ }
+}
Added: labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/field.htm
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/field.htm (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/field.htm 2007-09-15 15:39:39 UTC (rev 15141)
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+
+<html>
+ <head>
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=iso-8859-1">
+
+ <title>Rule Relations</title>
+ @{cssStyle}
+ </head>
+
+ <body>
+ <div>@{header}</div>
+ <div>
+ <h2>Field</h2>
+ <div>
+ Name: @{field.name}<br/>
+ Type: @{field.fieldType}<br/>
+ Belongs to class: <a href="@{sourceFolder}/@{objectTypeFolder}/@{objectType.id}.htm">@{objectType.name}</a>
+ </div>
+ <div>
+ Rules that use this component:
+ <ul>
+ @foreach{rules as rule}
+ <li><a href="@{sourceFolder}/@{ruleFolder}/@{rule.id}.htm">@{rule.ruleName}</a></li>
+ @end{}
+ </ul>
+ </div>
+ </div>
+ </body>
+</html>
+
Added: labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/header.htm
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/header.htm (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/header.htm 2007-09-15 15:39:39 UTC (rev 15141)
@@ -0,0 +1,12 @@
+<table id="header">
+ <tr>
+ <td><a href=
+ "@{sourceFolder}/@{objectTypesFile}">Object
+ Types</a></td>
+
+ <td><a href=
+ "@{sourceFolder}/@{packagesFile}">Rules by
+ Packages</a></td>
+ </tr>
+</table>
+
Added: labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/objectType.htm
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/objectType.htm (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/objectType.htm 2007-09-15 15:39:39 UTC (rev 15141)
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+
+<html>
+ <head>
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=iso-8859-1">
+
+ <title>Rule Relations</title>
+ @{cssStyle}
+ </head>
+
+ <body>
+ <div>@{header}</div>
+ <div>
+ <h2>Object Type</h2>
+ <div>
+ Name: @{objectType.name}
+ </div>
+ <div>
+ Known fields:
+ @if{objectType.fields != null && !objectType.fields.empty}
+ <ul>
+ @foreach{objectType.fields as field}
+ <li>@{field.fieldType} <a href="@{sourceFolder}/@{fieldFolder}/@{field.id}.htm">@{field.name}</a></li>
+ @end{}
+ </ul>
+ @else{}
+ <p>
+ No known fields.
+ </p>
+ @end{}
+ </div>
+ <div>
+ Rules that use this component:
+ <ul>
+ @foreach{rules as rule}
+ <li><a href="@{sourceFolder}/@{ruleFolder}/@{rule.id}.htm">@{rule.ruleName}</a></li>
+ @end{}
+ </ul>
+ </div>
+ </div>
+ </body>
+</html>
+
Added: labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/objectTypes.htm
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/objectTypes.htm (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/objectTypes.htm 2007-09-15 15:39:39 UTC (rev 15141)
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+
+<html>
+ <head>
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=iso-8859-1">
+
+ <title>Rule Relations</title>
+ @{cssStyle}
+ </head>
+
+ <body>
+ <div>@{header}</div>
+ <div>
+ <h1>Object Types</h1>
+ <table class="objectTypes">
+ <tr>
+ <th>Name</th>
+
+ <th>Fields</th>
+ </tr>
+ @foreach{objectTypes as objectType}
+ <tr>
+ <td><a href="@{sourceFolder}/@{objectTypeFolder}/@{objectType.id}.htm">@{objectType.name}</a></td>
+ <td>
+ @foreach{objectType.fields as field}
+ @{field.fieldType} <a href="@{sourceFolder}/@{fieldFolder}/@{field.id}.htm">@{field.name}</a>@end{","}
+ </td>
+ </tr>
+ @end{}
+ </table>
+ </div>
+ </body>
+</html>
+
Added: labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/packages.htm
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/packages.htm (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/packages.htm 2007-09-15 15:39:39 UTC (rev 15141)
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+
+<html>
+ <head>
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=iso-8859-1">
+
+ <title>Rule Relations</title>
+ @{cssStyle}
+ </head>
+
+ <body>
+ <div>@{header}</div>
+ <div>
+ <h1>Rules by Packages</h1>
+ <table class="rulePackages">
+ @foreach{rulePackages as rulePackage}
+ <tr>
+ <th>@{rulePackage.name}</td>
+ <th>
+ </tr>
+ <tr>
+ <td>
+ <ul>
+ @foreach{rulePackage.rules as rule}
+ <li><a href="@{sourceFolder}/@{ruleFolder}/@{rule.id}.htm">@{rule.ruleName}</a></li>@end{}
+ </ul>
+ </td>
+ </tr>
+ @end{}
+ </table>
+ </div>
+ </body>
+</html>
+
Added: labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/relationsDetails.css
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/relationsDetails.css (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/relationsDetails.css 2007-09-15 15:39:39 UTC (rev 15141)
@@ -0,0 +1,36 @@
+/* JBoss Drools Analytics Style Sheet */
+/* Website: http://labs.jboss.com/jbossrules/ */
+
+*
+{
+ border: 0;
+ margin: 0;
+ padding: 0;
+}
+h1
+{
+}
+
+div
+{
+ padding:0px 0px 0px 20px;
+}
+
+ul,p,table
+{
+ padding:0px 0px 0px 20px;
+ width:600px;
+ background-color: #d2d7db;
+ text-align: left;
+ border-spacing: 0px;
+ border: 1px solid #aeb3b6;
+ border-collapse: collapse;
+}
+table
+{
+ width: 200px;
+}
+
+li
+{
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/relationsList.css
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/relationsList.css (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/relationsList.css 2007-09-15 15:39:39 UTC (rev 15141)
@@ -0,0 +1,70 @@
+/* JBoss Drools Analytics Style Sheet */
+/* Website: http://labs.jboss.com/jbossrules/ */
+
+*
+{
+ border: 0;
+ margin: 0;
+ padding: 0;
+}
+
+
+div
+{
+ padding:0px 0px 10px 20px;
+}
+
+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: 200px;
+}
+
+tbody th
+{
+ color: #25c1e2;
+ font-style: italic;
+ background-color: #fff;
+ border-bottom: 1px solid #aeb3b6;
+}
+
+td
+{
+ border: 1px dotted #fff;
+ padding: 0 2px;
+}
+
+ul
+{
+ padding:0px 0px 0px 20px;
+ width:600px;
+}
+
+li
+{
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/rule.htm
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/rule.htm (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/result/rule.htm 2007-09-15 15:39:39 UTC (rev 15141)
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+
+<html>
+ <head>
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=iso-8859-1">
+
+ <title>Rule Relations</title>
+ @{cssStyle}
+ </head>
+
+ <body>
+ <div>@{header}</div>
+ <div>
+ <h2>Rule</h2>
+ <div>
+ Name: @{rule.ruleName}<br/>
+ </div>
+ <div>
+ Patterns:
+ <ul>
+ @foreach{objectTypes as objectType}
+ <li><a href="@{sourceFolder}/@{objectTypeFolder}/@{objectType.id}.htm">@{objectType.name}</a></li>
+ @end{}
+ </ul>
+ </div>
+ </div>
+ </body>
+</html>
+
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-15 05:20:11 UTC (rev 15140)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/AnalyticsTestStandalone.java 2007-09-15 15:39:39 UTC (rev 15141)
@@ -41,7 +41,8 @@
// System.out.print(a.getResultAsXML());
// System.out.print(a.getResultAsHTML());
// System.out.print(a.getComponentsHTML());
- writeToFile("C:\\report.html", a.getComponentsHTML());
+ a.writeComponentsHTML("C:\\");
+ // writeToFile("C:\\report2.html", a.getResultAsHTML());
} catch (Throwable t) {
t.printStackTrace();
}
Modified: 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 2007-09-15 05:20:11 UTC (rev 15140)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Misc.drl 2007-09-15 15:39:39 UTC (rev 15141)
@@ -1,4 +1,4 @@
-package com.sample
+package com.pat.the.pattern
import com.sample.DroolsTest.Message;
More information about the jboss-svn-commits
mailing list