[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