[jboss-svn-commits] JBL Code SVN: r8220 - labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Dec 11 07:57:15 EST 2006
Author: tirelli
Date: 2006-12-11 07:57:12 -0500 (Mon, 11 Dec 2006)
New Revision: 8220
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LogicTransformer.java
Log:
JBRULES-226: Wrapping transformed branches when needed
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LogicTransformer.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LogicTransformer.java 2006-12-11 12:08:48 UTC (rev 8219)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LogicTransformer.java 2006-12-11 12:57:12 UTC (rev 8220)
@@ -78,12 +78,28 @@
GroupElement[] ands = null;
// is top element an AND?
- if ( cloned.getType() == GroupElement.AND ) {
+ if ( cloned.isAnd() ) {
// Yes, so just return it
ands = new GroupElement[]{cloned};
+ } else if( cloned.isOr() ){
+ // it is an OR, so each child is an AND branch
+ ands = new GroupElement[cloned.getChildren().size()];
+ int i = 0;
+ for( Iterator it = cloned.getChildren().iterator(); it.hasNext(); ) {
+ Object branch = it.next();
+ if( ( branch instanceof GroupElement ) && (((GroupElement)branch).isAnd()) ){
+ ands[i++] = (GroupElement) branch;
+ } else {
+ ands[i] = GroupElementFactory.newAndInstance();
+ ands[i].addChild( branch );
+ i++;
+ }
+ }
} else {
- // No, so each child is an AND branch
- ands = (GroupElement[]) cloned.getChildren().toArray( new GroupElement[cloned.getChildren().size()] );
+ // no, so just wrap into an AND
+ GroupElement wrapper = GroupElementFactory.newAndInstance();
+ wrapper.addChild( cloned );
+ ands = new GroupElement[]{wrapper};
}
return ands;
}
More information about the jboss-svn-commits
mailing list