[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