[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