[jboss-svn-commits] JBL Code SVN: r10752 - in labs/jbossrules/trunk/drools-compiler/src: test/java/org/drools/brms/modeldriven and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Apr 4 08:22:17 EDT 2007


Author: michael.neale at jboss.com
Date: 2007-04-04 08:22:16 -0400 (Wed, 04 Apr 2007)
New Revision: 10752

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/FactPattern.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/RuleModel.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/modeldriven/RuleModelTest.java
Log:
JBRULES-755 ROM enhancements for connectives

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 12:19:33 UTC (rev 10751)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/Constraint.java	2007-04-04 12:22:16 UTC (rev 10752)
@@ -12,6 +12,12 @@
     
 
     /**
+     * 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;
@@ -69,4 +75,15 @@
         }
     }
 
+    /**
+     * Returns true of there is a field binding.
+     */
+    public boolean isBound() {
+        if (fieldBinding != null && !"".equals( fieldBinding )) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/FactPattern.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/FactPattern.java	2007-04-04 12:19:33 UTC (rev 10751)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/FactPattern.java	2007-04-04 12:22:16 UTC (rev 10752)
@@ -56,6 +56,17 @@
         this.constraints = newList;        
         
     }
+
+    /**
+     * Returns true if there is a variable bound to this fact.
+     */
+    public boolean isBound() {
+        if (this.boundName != null && !"".equals(boundName) ) {
+            return true;
+        } else {
+            return false;
+        }
+    }
     
     
     

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 12:19:33 UTC (rev 10751)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/RuleModel.java	2007-04-04 12:22:16 UTC (rev 10752)
@@ -172,5 +172,41 @@
         this.attributes = newList;
 
     }
+
+    public List getBoundVariablesInScope(Constraint con) {
+        List result = new ArrayList();
+        for ( int i = 0; i < this.lhs.length; i++ ) {
+            IPattern pat = lhs[i];
+            if (pat instanceof FactPattern) {
+                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.isBound()) {
+                                result.add( c.fieldBinding );
+                            }
+                        }
+                    //}
+                    if (fact.isBound() ) {
+                        result.add(fact.boundName);
+                    }                       
+                } else {
+                    if (fact.isBound() ) {
+                        result.add(fact.boundName);
+                    }                       
+                }
+                        
+                
+            }
+        }
+        return result;
+    }
     
 }

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 12:19:33 UTC (rev 10751)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/modeldriven/RuleModelTest.java	2007-04-04 12:22:16 UTC (rev 10752)
@@ -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.Constraint;
 import org.drools.brms.client.modeldriven.brxml.FactPattern;
 import org.drools.brms.client.modeldriven.brxml.IAction;
 import org.drools.brms.client.modeldriven.brxml.IPattern;
@@ -68,6 +69,55 @@
         System.out.println(brl);
     }
     
+    public void testScopedVariables() {
+        
+        //setup the data...
+        
+        RuleModel model = new RuleModel();
+        model.lhs = new IPattern[3];
+        FactPattern x = new FactPattern("Car");
+        model.lhs[0] = x;
+        x.boundName = "x";
+        
+        FactPattern y = new FactPattern("Car");
+        model.lhs[1] = y;
+        y.boundName = "y";
+        Constraint[] cons = new Constraint[2];
+        y.constraints = cons;
+        cons[0] = new Constraint("age");
+        cons[1] = new Constraint("make");
+        cons[0].fieldBinding = "qbc";
+        
+        FactPattern other = new FactPattern("House");
+        model.lhs[2] = other;
+        other.boundName = "q";
+        Constraint[] cons2 = new Constraint[1];
+        cons2[0] = new Constraint();
+        other.constraints = cons2;
+        
+        
+        //check the results for correct scope
+        List vars = model.getBoundVariablesInScope(cons[0]);
+        assertEquals(1, vars.size());
+        assertEquals("x", vars.get( 0 ));
+        
+        vars = model.getBoundVariablesInScope(cons[1]);
+        assertEquals(2, vars.size());
+        assertEquals("x", vars.get( 0 ));
+        assertEquals("qbc", vars.get( 1 ));   
+        
+        vars = model.getBoundVariablesInScope(cons[0]);
+        assertEquals(1, vars.size());
+        assertEquals("x", vars.get( 0 ));
+        
+        
+        vars = model.getBoundVariablesInScope(cons2[0]);
+        assertEquals(3, vars.size());
+        assertEquals("x", vars.get( 0 ));        
+        assertEquals("qbc", vars.get( 1 ));
+        assertEquals("y", vars.get( 2 ));
+    }
+    
     public void testBindingList() {
         RuleModel model = new RuleModel();
         




More information about the jboss-svn-commits mailing list