[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