[jboss-svn-commits] JBL Code SVN: r16749 - in labs/jbossrules/trunk/drools-analytics/src: main/java/org/drools/analytics/components and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Nov 22 08:16:14 EST 2007


Author: Rikkola
Date: 2007-11-22 08:16:13 -0500 (Thu, 22 Nov 2007)
New Revision: 16749

Modified:
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/PackageDescrFlattener.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsComponentType.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsRule.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsData.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataMaps.java
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/Consequence.drl
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/ConsequenceTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/ConsequenceTest.drl
Log:
Created a Consequence object for rule consequence and changed the rules that use rule consequence to use it.

Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/PackageDescrFlattener.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/PackageDescrFlattener.java	2007-11-22 12:02:13 UTC (rev 16748)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/PackageDescrFlattener.java	2007-11-22 13:16:13 UTC (rev 16749)
@@ -15,6 +15,7 @@
 import org.drools.analytics.components.AnalyticsMethodAccessDescr;
 import org.drools.analytics.components.AnalyticsPredicateDescr;
 import org.drools.analytics.components.AnalyticsRule;
+import org.drools.analytics.components.Consquence;
 import org.drools.analytics.components.Constraint;
 import org.drools.analytics.components.Field;
 import org.drools.analytics.components.LiteralRestriction;
@@ -25,6 +26,7 @@
 import org.drools.analytics.components.ReturnValueRestriction;
 import org.drools.analytics.components.RulePackage;
 import org.drools.analytics.components.RulePossibility;
+import org.drools.analytics.components.TextConsequence;
 import org.drools.analytics.components.Variable;
 import org.drools.analytics.components.VariableRestriction;
 import org.drools.analytics.dao.AnalyticsData;
@@ -197,7 +199,7 @@
 	}
 
 	/**
-	 * End
+	 * End leaf
 	 * 
 	 * @param descr
 	 * @return
@@ -214,7 +216,7 @@
 	}
 
 	/**
-	 * End
+	 * End leaf
 	 * 
 	 * @param descr
 	 * @return
@@ -237,7 +239,7 @@
 	}
 
 	/**
-	 * End
+	 * End leaf
 	 * 
 	 * @param descr
 	 * @return
@@ -260,7 +262,7 @@
 	}
 
 	/**
-	 * End
+	 * End leaf
 	 * 
 	 * @param descr
 	 * @return
@@ -321,7 +323,7 @@
 	}
 
 	/**
-	 * End
+	 * End leaf
 	 * 
 	 * @param descr
 	 */
@@ -337,7 +339,7 @@
 	}
 
 	/**
-	 * End
+	 * End leaf
 	 * 
 	 * @param descr
 	 */
@@ -372,9 +374,11 @@
 		AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
 
 		AnalyticsRule rule = new AnalyticsRule();
+		currentRule = rule;
+
 		rule.setRuleName(descr.getName());
 		rule.setRuleSalience(descr.getSalience());
-		rule.setConsequence(descr.getConsequence().toString());
+		rule.setConsequence(flattenConsequence(rule, descr.getConsequence()));
 		rule.setLineNumber(descr.getLine());
 		rule.setPackageId(currentPackage.getId());
 		rule.setParent(parent);
@@ -382,13 +386,59 @@
 		data.save(rule);
 
 		currentPackage.getRules().add(rule);
-		currentRule = rule;
 
 		solvers.startRuleSolver(rule);
 		flatten(descr.getLhs(), rule, 0);
 		solvers.endRuleSolver();
 	}
 
+	/**
+	 * Creates analytics object from rule consequence. Currently only supports
+	 * text based consequences.
+	 * 
+	 * @param o
+	 *            Consequence object.
+	 * @return Analytics object that implements the Consequence interface.
+	 */
+	private Consquence flattenConsequence(AnalyticsComponent parent, Object o) {
+		AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
+
+		TextConsequence consequence = new TextConsequence();
+
+		String text = o.toString();
+
+		/*
+		 * Strip all comments out of the code.
+		 */
+		StringBuffer buffer = new StringBuffer(text);
+		int commentIndex = buffer.indexOf("//");
+
+		while (commentIndex != -1) {
+			buffer = buffer.delete(commentIndex, buffer.indexOf("\n",
+					commentIndex));
+			commentIndex = buffer.indexOf("//");
+		}
+
+		text = buffer.toString();
+
+		/*
+		 * Strip all useless characters out of the code.
+		 */
+		text = text.replaceAll("\n", "");
+		text = text.replaceAll("\r", "");
+		text = text.replaceAll("\t", "");
+		text = text.replaceAll(" ", "");
+
+		consequence.setText(text);
+		consequence.setRuleId(currentRule.getId());
+		consequence.setRuleName(currentRule.getRuleName());
+		consequence.setParent(parent);
+
+		data.save(consequence);
+
+		return consequence;
+	}
+
 	private void flatten(OrDescr descr, AnalyticsComponent parent,
 			int orderNumber) {
 		AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();

Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsComponentType.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsComponentType.java	2007-11-22 12:02:13 UTC (rev 16748)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsComponentType.java	2007-11-22 13:16:13 UTC (rev 16749)
@@ -26,5 +26,6 @@
 	FIELD_ACCESSOR, 
 	FUNCTION_CALL, 
 	ACCESSOR, 
-	RULE_PACKAGE
+	RULE_PACKAGE, 
+	CONSEQUENCE
 }

Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsRule.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsRule.java	2007-11-22 12:02:13 UTC (rev 16748)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsRule.java	2007-11-22 13:16:13 UTC (rev 16749)
@@ -12,7 +12,7 @@
 
 	private String ruleSalience;
 	private String ruleAgendaGroup;
-	private String consequence;
+	private Consquence consequence;
 	private int lineNumber;
 
 	private int packageId;
@@ -47,11 +47,11 @@
 		this.ruleSalience = salience;
 	}
 
-	public String getConsequence() {
+	public Consquence getConsequence() {
 		return consequence;
 	}
 
-	public void setConsequence(String consequence) {
+	public void setConsequence(Consquence consequence) {
 		this.consequence = consequence;
 	}
 

Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsData.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsData.java	2007-11-22 12:02:13 UTC (rev 16748)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsData.java	2007-11-22 13:16:13 UTC (rev 16749)
@@ -6,6 +6,7 @@
 import org.drools.analytics.components.AnalyticsEvalDescr;
 import org.drools.analytics.components.AnalyticsPredicateDescr;
 import org.drools.analytics.components.AnalyticsRule;
+import org.drools.analytics.components.Consquence;
 import org.drools.analytics.components.Constraint;
 import org.drools.analytics.components.Field;
 import org.drools.analytics.components.FieldClassLink;
@@ -23,6 +24,8 @@
  */
 public interface AnalyticsData {
 
+	public void save(Consquence consequence);
+
 	public void save(AnalyticsClass clazz);
 
 	public void save(Field field);

Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataMaps.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataMaps.java	2007-11-22 12:02:13 UTC (rev 16748)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataMaps.java	2007-11-22 13:16:13 UTC (rev 16749)
@@ -12,6 +12,7 @@
 import org.drools.analytics.components.AnalyticsEvalDescr;
 import org.drools.analytics.components.AnalyticsPredicateDescr;
 import org.drools.analytics.components.AnalyticsRule;
+import org.drools.analytics.components.Consquence;
 import org.drools.analytics.components.Constraint;
 import org.drools.analytics.components.Field;
 import org.drools.analytics.components.FieldClassLink;
@@ -49,6 +50,7 @@
 	private Map<Integer, OperatorDescr> operatorsById = new TreeMap<Integer, OperatorDescr>();
 	private Map<Integer, AnalyticsEvalDescr> evalsById = new TreeMap<Integer, AnalyticsEvalDescr>();
 	private Map<Integer, AnalyticsPredicateDescr> predicatesById = new TreeMap<Integer, AnalyticsPredicateDescr>();
+	private Map<Integer, Consquence> consiquencesById = new TreeMap<Integer, Consquence>();
 
 	private Map<String, Variable> variablesByRuleAndVariableName = new TreeMap<String, Variable>();
 
@@ -159,6 +161,7 @@
 		objects.addAll(operatorsById.values());
 		objects.addAll(evalsById.values());
 		objects.addAll(predicatesById.values());
+		objects.addAll(consiquencesById.values());
 
 		objects.addAll(patternPossibilitiesById.values());
 		objects.addAll(rulePossibilitiesById.values());
@@ -231,4 +234,8 @@
 	public void save(AnalyticsPredicateDescr predicate) {
 		predicatesById.put(predicate.getId(), predicate);
 	}
+
+	public void save(Consquence consequence) {
+		consiquencesById.put(consequence.getId(), consequence);
+	}
 }

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/Consequence.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/Consequence.drl	2007-11-22 12:02:13 UTC (rev 16748)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/Consequence.drl	2007-11-22 13:16:13 UTC (rev 16749)
@@ -3,6 +3,7 @@
 
 #list any import classes here.
 import org.drools.analytics.components.AnalyticsRule;  
+import org.drools.analytics.components.TextConsequence;  
 import org.drools.analytics.report.components.AnalyticsMessage;  
 import org.drools.analytics.dao.AnalyticsResult;
 
@@ -12,8 +13,12 @@
 
 rule "No action - possibly commented out"
 	when
+		$c :TextConsequence(
+			( text == null || text matches "" )
+		)
+	
 		$r :AnalyticsRule(
-			( consequence == null || consequence matches "" )
+			id == $c.ruleId
 		)
 	then 
 		result.save( new AnalyticsMessage( 

Modified: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/ConsequenceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/ConsequenceTest.java	2007-11-22 12:02:13 UTC (rev 16748)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/ConsequenceTest.java	2007-11-22 13:16:13 UTC (rev 16749)
@@ -46,12 +46,11 @@
 						.getFaulty();
 				rulesThatHadErrors.add(rule.getRuleName());
 			}
-			// System.out.println(o);
 		}
 
 		assertFalse(rulesThatHadErrors.contains("Has a consequence 1"));
-		assertFalse(rulesThatHadErrors.contains("Has a consequence 2"));
 		assertTrue(rulesThatHadErrors.remove("Missing consequence 1"));
+		assertTrue(rulesThatHadErrors.remove("Missing consequence 2"));
 
 		if (!rulesThatHadErrors.isEmpty()) {
 			for (String string : rulesThatHadErrors) {

Modified: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/ConsequenceTest.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/ConsequenceTest.drl	2007-11-22 12:02:13 UTC (rev 16748)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/ConsequenceTest.drl	2007-11-22 13:16:13 UTC (rev 16749)
@@ -15,7 +15,7 @@
 		System.out.println("Test");
 end
 
-rule "Has consequence 2"
+rule "Missing consequence 2"
 	when
 		Foo()
 	then




More information about the jboss-svn-commits mailing list