[jboss-svn-commits] JBL Code SVN: r10773 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/brms/server/converter and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Apr 4 21:02:28 EDT 2007


Author: michael.neale at jboss.com
Date: 2007-04-04 21:02:28 -0400 (Wed, 04 Apr 2007)
New Revision: 10773

Added:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/IConstraint.java
Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/ConnectiveConstraint.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/Constraint.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/RuleModel.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/converter/BRXMLToDescrConverter.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/modeldriven/RuleModelTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/converter/BRXMLToDescrConverterTest.java
Log:
JBRULES-755 ROM enhancements for connectives

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/ConnectiveConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/ConnectiveConstraint.java	2007-04-04 23:20:58 UTC (rev 10772)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/ConnectiveConstraint.java	2007-04-05 01:02:28 UTC (rev 10773)
@@ -6,8 +6,8 @@
  * @author Michael Neale
  */
 public class ConnectiveConstraint
-    implements
-    PortableObject {
+    extends
+    IConstraint {
     
     public static final int UNDEFINED_CONNECTIVE = 0;
     public static final int OR_CONNECTIVE = 1;
@@ -20,9 +20,8 @@
         this.operator = opr;
         this.value = val;
     }
+    
     public int connectiveType;
     public String operator;
-    public String value;
-    public int constraintType;
     
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/Constraint.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/Constraint.java	2007-04-04 23:20:58 UTC (rev 10772)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/Constraint.java	2007-04-05 01:02:28 UTC (rev 10773)
@@ -1,5 +1,7 @@
 package org.drools.brms.client.modeldriven.brxml;
 
+
+
 /**
  * This represents a contraint on a fact.
  * Can also include optional "connective constraints" that extend the options for matches.
@@ -7,48 +9,15 @@
  *
  */
 public class Constraint
-    implements
-    PortableObject {
-    
+    extends
+    IConstraint  {
 
-    /**
-     * This is used only when constraint is first created. 
-     * This means that there is no value yet for the constraint.
-     */
-    public static final int    TYPE_UNDEFINED = 0;
-    
-    /**
-     * This may be string, or number, anything really. 
-     */
-    public static final int    TYPE_LITERAL   = 1;
-    
-    /**
-     * This is when it is set to a valid previously bound variable.
-     */
-    public static final int    TYPE_VARIABLE  = 2;
-    
-    /**
-     * This is for a "formula" that calculates a value.
-     */
-    public static final int    TYPE_RET_VALUE = 3;
-    
-    /**
-     * This is not used yet. ENUMs are not suitable for business rules
-     * until we can get data driven non code enums.
-     */
-    public static final int    TYPE_ENUM      = 4;
-    
-    /**
-     * The fieldName and fieldBinding is not used in the case of a predicate. 
-     */
-    public static final int    TYPE_PREDICATE = 5;
 
     public String                 fieldBinding;
     public String                 fieldName;
     public String                 operator;
-    public String                 value;
-    public int                    type;
 
+
     public ConnectiveConstraint[] connectives;
 
     public Constraint(String field) {
@@ -86,4 +55,5 @@
         }
     }
 
+
 }

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/IConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/IConstraint.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/IConstraint.java	2007-04-05 01:02:28 UTC (rev 10773)
@@ -0,0 +1,47 @@
+package org.drools.brms.client.modeldriven.brxml;
+
+/**
+ * Represents a constraint, which may be part of a direct field constraint or a connective.
+ * @author Michael Neale
+ *
+ */
+public class IConstraint
+    implements
+    PortableObject {
+    
+    /**
+     * This is used only when constraint is first created. 
+     * This means that there is no value yet for the constraint.
+     */
+    public static final int    TYPE_UNDEFINED = 0;
+    
+    /**
+     * This may be string, or number, anything really. 
+     */
+    public static final int    TYPE_LITERAL   = 1;
+    
+    /**
+     * This is when it is set to a valid previously bound variable.
+     */
+    public static final int    TYPE_VARIABLE  = 2;
+    
+    /**
+     * This is for a "formula" that calculates a value.
+     */
+    public static final int    TYPE_RET_VALUE = 3;
+    
+    /**
+     * This is not used yet. ENUMs are not suitable for business rules
+     * until we can get data driven non code enums.
+     */
+    public static final int    TYPE_ENUM      = 4;
+    
+    /**
+     * The fieldName and fieldBinding is not used in the case of a predicate. 
+     */
+    public static final int    TYPE_PREDICATE = 5;
+
+    public String value;
+    public int constraintValueType;    
+
+}


Property changes on: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/IConstraint.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/RuleModel.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/RuleModel.java	2007-04-04 23:20:58 UTC (rev 10772)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/RuleModel.java	2007-04-05 01:02:28 UTC (rev 10773)
@@ -173,7 +173,12 @@
 
     }
 
-    public List getBoundVariablesInScope(Constraint con) {
+    /**
+     * This uses a deceptively simple algorithm to determine 
+     * what bound variables are in scope for a given constraint (including connectives).
+     * Does not take into account globals.
+     */
+    public List getBoundVariablesInScope(IConstraint con) {
         List result = new ArrayList();
         for ( int i = 0; i < this.lhs.length; i++ ) {
             IPattern pat = lhs[i];
@@ -181,19 +186,23 @@
                 FactPattern fact = (FactPattern) pat;
 
                 if (fact.constraints != null) {
-                    //for ( int j = 0; j < fact.constraints.length; j++ ) {
                         Constraint[] cons = fact.constraints;
                         for ( int k = 0; k < cons.length; k++ ) {
                             Constraint c = cons[k];
                             if (c == con) {
                                 return result;
                             }                     
-
+                            if (c.connectives != null) {
+                                for ( int j = 0; j < c.connectives.length; j++ ) {
+                                    if (con == c.connectives[j]) {
+                                        return result;
+                                    }
+                                }
+                            }
                             if (c.isBound()) {
                                 result.add( c.fieldBinding );
                             }
                         }
-                    //}
                     if (fact.isBound() ) {
                         result.add(fact.boundName);
                     }                       

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/converter/BRXMLToDescrConverter.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/converter/BRXMLToDescrConverter.java	2007-04-04 23:20:58 UTC (rev 10772)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/converter/BRXMLToDescrConverter.java	2007-04-05 01:02:28 UTC (rev 10773)
@@ -96,12 +96,12 @@
                                                                       constr.fieldBinding );
                 column.addDescr( fieldDescr );
             }
-            if ( constr.type == Constraint.TYPE_PREDICATE ) {
+            if ( constr.constraintValueType == Constraint.TYPE_PREDICATE ) {
                 PredicateDescr predicateDescr = new PredicateDescr( constr.value );
                 column.addDescr( predicateDescr );
             } else {
                 FieldConstraintDescr constrDescr = new FieldConstraintDescr( constr.fieldName );
-                constrDescr.addRestriction( this.getFieldRestriction( constr.type,
+                constrDescr.addRestriction( this.getFieldRestriction( constr.constraintValueType,
                                                                       constr.operator,
                                                                       constr.value ) );
 
@@ -121,7 +121,7 @@
                                 // TODO: handle error
                                 // unknown connective... error
                         }
-                        constrDescr.addRestriction( this.getFieldRestriction( conn.constraintType,
+                        constrDescr.addRestriction( this.getFieldRestriction( conn.constraintValueType,
                                                                               conn.operator,
                                                                               conn.value ) );
                     }

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/modeldriven/RuleModelTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/modeldriven/RuleModelTest.java	2007-04-04 23:20:58 UTC (rev 10772)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/modeldriven/RuleModelTest.java	2007-04-05 01:02:28 UTC (rev 10773)
@@ -6,6 +6,7 @@
 
 import org.drools.brms.client.modeldriven.brxml.ActionRetractFact;
 import org.drools.brms.client.modeldriven.brxml.ActionSetField;
+import org.drools.brms.client.modeldriven.brxml.ConnectiveConstraint;
 import org.drools.brms.client.modeldriven.brxml.Constraint;
 import org.drools.brms.client.modeldriven.brxml.FactPattern;
 import org.drools.brms.client.modeldriven.brxml.IAction;
@@ -87,6 +88,9 @@
         cons[0] = new Constraint("age");
         cons[1] = new Constraint("make");
         cons[0].fieldBinding = "qbc";
+        cons[0].connectives = new ConnectiveConstraint[1];
+        cons[0].connectives[0] = new ConnectiveConstraint("&", "x");
+        cons[0].connectives[0].constraintValueType = ConnectiveConstraint.TYPE_LITERAL;
         
         FactPattern other = new FactPattern("House");
         model.lhs[2] = other;
@@ -101,6 +105,11 @@
         assertEquals(1, vars.size());
         assertEquals("x", vars.get( 0 ));
         
+        
+        vars = model.getBoundVariablesInScope(cons[0].connectives[0]);
+        assertEquals(1, vars.size());
+        assertEquals("x", vars.get( 0 ));        
+        
         vars = model.getBoundVariablesInScope(cons[1]);
         assertEquals(2, vars.size());
         assertEquals("x", vars.get( 0 ));

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/converter/BRXMLToDescrConverterTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/converter/BRXMLToDescrConverterTest.java	2007-04-04 23:20:58 UTC (rev 10772)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/converter/BRXMLToDescrConverterTest.java	2007-04-05 01:02:28 UTC (rev 10773)
@@ -45,7 +45,7 @@
         Constraint constr = new Constraint( "type" );
         constr.operator = "==";
         constr.value = "stilton";
-        constr.type = Constraint.TYPE_LITERAL;
+        constr.constraintValueType = Constraint.TYPE_LITERAL;
         pat1.addConstraint( constr );
         model.addLhsItem( pat1 );
         




More information about the jboss-svn-commits mailing list