[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