[jboss-svn-commits] JBL Code SVN: r28896 - in labs/jbossrules/trunk/drools-compiler/src: test/java/org/drools and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Aug 11 02:27:49 EDT 2009
Author: michael.neale at jboss.com
Date: 2009-08-11 02:27:49 -0400 (Tue, 11 Aug 2009)
New Revision: 28896
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/guvnor/server/util/GuidedDTDRLPersistence.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Cheesery.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/guvnor/server/util/GuidedDTDRLPersistenceTest.java
Log:
GUVNOR-341 web DT enhancements for more powah
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/guvnor/server/util/GuidedDTDRLPersistence.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/guvnor/server/util/GuidedDTDRLPersistence.java 2009-08-11 01:47:36 UTC (rev 28895)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/guvnor/server/util/GuidedDTDRLPersistence.java 2009-08-11 06:27:49 UTC (rev 28896)
@@ -189,7 +189,12 @@
case ISingleFieldConstraint.TYPE_PREDICATE:
SingleFieldConstraint pred = new SingleFieldConstraint();
pred.constraintValueType = c.constraintValueType;
- pred.value = cell;
+ if (c.factField != null && c.factField.indexOf("$param") > -1) {
+ //handle interpolation
+ pred.value = c.factField.replace("$param", cell);
+ } else {
+ pred.value = cell;
+ }
fp.addConstraint(pred);
break;
default:
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Cheesery.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Cheesery.java 2009-08-11 01:47:36 UTC (rev 28895)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Cheesery.java 2009-08-11 06:27:49 UTC (rev 28896)
@@ -56,6 +56,13 @@
recalculateTotalAmount();
}
+ /**
+ * Used to check inline evals.
+ */
+ public boolean hasSomeFlavour(String flavour) {
+ return "zesty".equals(flavour);
+ }
+
private void recalculateTotalAmount() {
this.totalAmount = 0;
for( Iterator it = this.cheeses.iterator(); it.hasNext(); ) {
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/guvnor/server/util/GuidedDTDRLPersistenceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/guvnor/server/util/GuidedDTDRLPersistenceTest.java 2009-08-11 01:47:36 UTC (rev 28895)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/guvnor/server/util/GuidedDTDRLPersistenceTest.java 2009-08-11 06:27:49 UTC (rev 28896)
@@ -69,6 +69,7 @@
con4.constraintValueType = ISingleFieldConstraint.TYPE_PREDICATE;
con4.factType = "Driver";
con4.header = "Driver 2 pimp";
+ con4.factField = "(not needed)";
dt.conditionCols.add(con4);
@@ -117,6 +118,98 @@
}
+
+ public void testInterpolate() {
+ GuidedDecisionTable dt = new GuidedDecisionTable();
+ dt.tableName = "michael";
+
+ AttributeCol attr = new AttributeCol();
+ attr.attr = "salience";
+ attr.defaultValue = "66";
+ dt.attributeCols.add(attr);
+
+ ConditionCol con = new ConditionCol();
+ con.boundName = "f1";
+ con.constraintValueType = ISingleFieldConstraint.TYPE_LITERAL;
+ con.factField = "age";
+ con.factType = "Driver";
+ con.header = "Driver f1 age";
+ con.operator = "==";
+ dt.conditionCols.add(con);
+
+ ConditionCol con2 = new ConditionCol();
+ con2.boundName = "f1";
+ con2.constraintValueType = ISingleFieldConstraint.TYPE_LITERAL;
+ con2.factField = "name";
+ con2.factType = "Driver";
+ con2.header = "Driver f1 name";
+ con2.operator = "==";
+ dt.conditionCols.add(con2);
+
+ ConditionCol con3 = new ConditionCol();
+ con3.boundName = "f1";
+ con3.constraintValueType = ISingleFieldConstraint.TYPE_RET_VALUE;
+ con3.factField = "rating";
+ con3.factType = "Driver";
+ con3.header = "Driver rating";
+ con3.operator = "==";
+ dt.conditionCols.add(con3);
+
+
+ ConditionCol con4 = new ConditionCol();
+ con4.boundName = "f2";
+ con4.constraintValueType = ISingleFieldConstraint.TYPE_PREDICATE;
+ con4.factType = "Driver";
+ con4.header = "Driver 2 pimp";
+ con4.factField = "this.hasSomething($param)";
+ dt.conditionCols.add(con4);
+
+
+ ActionInsertFactCol ins = new ActionInsertFactCol();
+ ins.boundName = "ins";
+ ins.factType = "Cheese";
+ ins.factField = "price";
+ ins.type = SuggestionCompletionEngine.TYPE_NUMERIC;
+ dt.actionCols.add(ins);
+
+ ActionRetractFactCol ret = new ActionRetractFactCol();
+ ret.boundName = "f2";
+ dt.actionCols.add(ret);
+
+ ActionSetFieldCol set = new ActionSetFieldCol();
+ set.boundName = "f1";
+ set.factField = "goo1";
+ set.type = SuggestionCompletionEngine.TYPE_STRING;
+ dt.actionCols.add(set);
+
+ ActionSetFieldCol set2 = new ActionSetFieldCol();
+ set2.boundName = "f1";
+ set2.factField = "goo2";
+ set2.defaultValue = "whee";
+ set2.type = SuggestionCompletionEngine.TYPE_STRING;
+ dt.actionCols.add(set2);
+
+ dt.data = new String[][] {
+ new String[] {"1", "desc", "42", "33", "michael", "age * 0.2", "BAM", "6.60", "true", "gooVal1", null},
+ new String[] {"2", "desc", "", "39", "bob", "age * 0.3", "BAM", "6.60", "", "gooVal1", ""}
+ };
+
+
+
+ GuidedDTDRLPersistence p = GuidedDTDRLPersistence.getInstance();
+ String drl = p.marshal(dt);
+
+
+ assertTrue(drl.indexOf("from row number") > -1);
+ assertTrue(drl.indexOf("rating == ( age * 0.2 )") > 0);
+ //assertTrue(drl.indexOf("f2 : Driver( eval( age > 7 ))") > 0);
+ assertTrue(drl.indexOf("f2 : Driver( eval( this.hasSomething(BAM) ))") > 0);
+ assertTrue(drl.indexOf("rating == ( age * 0.3 )") > drl.indexOf("rating == ( age * 0.2 )"));
+ assertTrue(drl.indexOf("f1.setGoo2( \"whee\" )") > 0); //for default
+ assertTrue(drl.indexOf("salience 66") > 0); //for default
+
+ }
+
public void testCellVal() {
GuidedDTDRLPersistence p = new GuidedDTDRLPersistence();
assertFalse(p.validCell(null));
More information about the jboss-svn-commits
mailing list