[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 />&nbsp;&nbsp;Name:&nbsp;");
+		str.append("<a name=\"Rule_id");
+		str.append(rule.getId());
+		str.append("\">");
+		str.append(rule.getRuleName());
+		str.append("</a>");
+
+		str
+				.append("<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Patterns:&nbsp;<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 />&nbsp;&nbsp;Name:&nbsp;");
+		str.append("<a name=\"Pattern_id");
+		str.append(clazz.getId());
+		str.append("\">");
+		str.append(clazz.getName());
+		str.append("</a>");
+
+		str
+				.append("<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Known fields:&nbsp;<br />\n");
+		processFieldCollection(fields);
+		str
+				.append("<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rules that use this component:&nbsp;<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 />&nbsp;&nbsp;Name:&nbsp;");
+		str.append("<a name=\"Field_id");
+		str.append(field.getId());
+		str.append("\">");
+		str.append(field.getName());
+		str.append("</a>");
+
+		str.append("<br />&nbsp;&nbsp;Type:&nbsp;");
+		str.append(field.getFieldType());
+		str.append("<br />&nbsp;&nbsp;Belongs to class:&nbsp;");
+
+		str.append("<a href=\"#Pattern_id");
+		str.append(clazz.getId());
+		str.append("\">");
+		str.append(clazz.getName());
+		str.append("</a><br />");
+
+		str
+				.append("<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rules that use this component:&nbsp;<br />\n");
+		processRuleCollection(rules);
+	}
+
+	private void processFieldCollection(Collection<Field> fields) {
+		if (fields != null && !fields.isEmpty()) {
+			for (Field field : fields) {
+				str
+						.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;<a href=\"#Field_id");
+				str.append(field.getId());
+				str.append("\">");
+				str.append(field.getName());
+				str.append("</a><br />\n");
+			}
+		} else {
+			str
+					.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;No fields found<br />\n");
+		}
+	}
+
+	private void processRuleCollection(Collection<AnalyticsRule> rules) {
+
+		if (rules != null && !rules.isEmpty()) {
+			for (AnalyticsRule rule : rules) {
+				str
+						.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;<a href=\"#Rule_id");
+				str.append(rule.getId());
+				str.append("\">");
+				str.append(rule.getRuleName());
+				str.append("</a><br />\n");
+			}
+		} else {
+			str
+					.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;No rules found<br />\n");
+		}
+	}
+
+	private void processClassCollection(Collection<AnalyticsClass> classes) {
+		// Patterns
+		if (classes != null && !classes.isEmpty()) {
+			for (AnalyticsClass clazz : classes) {
+				str
+						.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;<a href=\"#Pattern_id");
+				str.append(clazz.getId());
+				str.append("\">");
+				str.append(clazz.getName());
+				str.append("</a><br />\n");
+			}
+		} else {
+			str
+					.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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("&nbsp;&nbsp; Causes are [<BR>\n");
+		str.append("</head>\n");
+		str.append("<body>\n\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("<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("&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();
 	}
 
 }

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