[jboss-svn-commits] JBL Code SVN: r12734 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/xml and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Jun 21 03:00:09 EDT 2007


Author: fmeyer
Date: 2007-06-21 03:00:09 -0400 (Thu, 21 Jun 2007)
New Revision: 12734

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ForallHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PatternHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/XmlPackageReaderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseCollect.xml
Log:
JBRULES-882 
JBRULES-880
	- support 'forall' Conditional Element
	- corrected DRLDumper|XMLDumper to handle with forall CE

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java	2007-06-21 05:22:49 UTC (rev 12733)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java	2007-06-21 07:00:09 UTC (rev 12734)
@@ -23,6 +23,7 @@
 import org.drools.lang.descr.AndDescr;
 import org.drools.lang.descr.AttributeDescr;
 import org.drools.lang.descr.CollectDescr;
+import org.drools.lang.descr.ForallDescr;
 import org.drools.lang.descr.PatternDescr;
 import org.drools.lang.descr.EvalDescr;
 import org.drools.lang.descr.ExistsDescr;
@@ -147,9 +148,13 @@
         
     }
     
-    //TODO FM: FIXME
-    public void visitForall() {
-        
+    public void visitForallDescr(final ForallDescr descr) {
+        this.template = new String();
+        this.template += "\t\tforall ( "; 
+        this.template += DrlDumper.eol;
+        this.template += processDescrList( descr.getDescrs() ); 
+        this.template += "\t\t)";
+        this.template += DrlDumper.eol;
     }
     
     public void visitFieldBindingDescr(final FieldBindingDescr descr) {

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ForallHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ForallHandler.java	2007-06-21 05:22:49 UTC (rev 12733)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ForallHandler.java	2007-06-21 07:00:09 UTC (rev 12734)
@@ -3,12 +3,18 @@
  */
 package org.drools.xml;
 
+import org.drools.lang.descr.ConditionalElementDescr;
+import org.drools.lang.descr.ExistsDescr;
 import org.drools.lang.descr.ForallDescr;
 import org.drools.lang.descr.AndDescr;
+import org.drools.lang.descr.PatternDescr;
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
 
 import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.ListIterator;
 
 /**
  * @author fernandomeyer
@@ -38,6 +44,16 @@
                       String localName) throws SAXException {
         final Configuration config = this.xmlPackageReader.endConfiguration();
         
+        final ForallDescr forallDescr = (ForallDescr) this.xmlPackageReader.getCurrent();
+
+        final LinkedList parents = this.xmlPackageReader.getParents();
+        final ListIterator it = parents.listIterator( parents.size() );
+        it.previous();
+        final Object parent = it.previous();
+
+        final ConditionalElementDescr parentDescr = (ConditionalElementDescr) parent;
+        parentDescr.addDescr( forallDescr );
+
         return null;
     }
 
@@ -57,8 +73,10 @@
 
         this.xmlPackageReader.startConfiguration( localName,
                                                   attrs );
+        
+        ForallDescr forallDescr = new ForallDescr();
 
-        return null;
+        return forallDescr;
     }
 
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PatternHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PatternHandler.java	2007-06-21 05:22:49 UTC (rev 12733)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PatternHandler.java	2007-06-21 07:00:09 UTC (rev 12734)
@@ -46,6 +46,8 @@
             this.validParents.add( NotDescr.class );
             this.validParents.add( ExistsDescr.class );
             this.validParents.add( CollectDescr.class );
+            this.validParents.add( ForallDescr.class );
+            
 
             this.validPeers = new HashSet();
             this.validPeers.add( null );

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java	2007-06-21 05:22:49 UTC (rev 12733)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java	2007-06-21 07:00:09 UTC (rev 12734)
@@ -23,6 +23,7 @@
 import org.drools.lang.descr.AndDescr;
 import org.drools.lang.descr.AttributeDescr;
 import org.drools.lang.descr.CollectDescr;
+import org.drools.lang.descr.ForallDescr;
 import org.drools.lang.descr.PatternDescr;
 import org.drools.lang.descr.EvalDescr;
 import org.drools.lang.descr.ExistsDescr;
@@ -127,8 +128,8 @@
     }
     
     //TODO FM: FIXME
-    public void visitForall() {
-        System.out.println("Collect Descr");
+    public void visitForallDescr(final ForallDescr descr) {
+        this.template = "<forall>" + processDescrList( descr.getDescrs() ) + "</forall>";
     }    
 
     public void visitEvalDescr(final EvalDescr descr) {

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/XmlPackageReaderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/XmlPackageReaderTest.java	2007-06-21 05:22:49 UTC (rev 12733)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/XmlPackageReaderTest.java	2007-06-21 07:00:09 UTC (rev 12734)
@@ -8,6 +8,7 @@
 import org.drools.RuleBase;
 import org.drools.RuleBaseConfiguration;
 import org.drools.RuleBaseFactory;
+import org.drools.lang.DrlDumper;
 import org.drools.lang.descr.AndDescr;
 import org.drools.lang.descr.AttributeDescr;
 import org.drools.lang.descr.CollectDescr;
@@ -15,6 +16,7 @@
 import org.drools.lang.descr.ExistsDescr;
 import org.drools.lang.descr.FieldBindingDescr;
 import org.drools.lang.descr.FieldConstraintDescr;
+import org.drools.lang.descr.ForallDescr;
 import org.drools.lang.descr.FunctionDescr;
 import org.drools.lang.descr.GlobalDescr;
 import org.drools.lang.descr.ImportDescr;
@@ -43,6 +45,29 @@
                                             config );
     }
     
+    public void testParseForall() throws Exception {
+        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
+        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseForall.xml" ) ) );
+        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
+        assertNotNull( packageDescr );
+        
+        XmlDumper xmldumper = new XmlDumper();
+        String str =  xmldumper.dump( packageDescr );
+
+        System.out.println(str);
+
+        RuleDescr obj = (RuleDescr) packageDescr.getRules().get( 0 );
+        ForallDescr forall = (ForallDescr) obj.getLhs().getDescrs().get( 0 );
+        List forallPaterns = forall.getDescrs();
+        
+        PatternDescr pattarnState = (PatternDescr) forallPaterns.get( 0 );
+        PatternDescr personState = (PatternDescr) forallPaterns.get( 1 );
+        PatternDescr cheeseState = (PatternDescr) forallPaterns.get( 2);
+        
+        assertEquals( pattarnState.getObjectType(), "State" );
+        assertEquals( personState.getObjectType(), "Person" );
+        assertEquals( cheeseState.getObjectType(), "Cheese" );
+    }
     
     public void testParseExists() throws Exception {
         final XmlPackageReader xmlPackageReader = new XmlPackageReader();
@@ -117,18 +142,7 @@
     }
 
     
-//    //TODO: FM FIXME
-//    public void testParseForall() throws Exception {
-//        final XmlPackageReader xmlPackageReader = new XmlPackageReader();
-//        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseForall.xml" ) ) );
-//        final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
-//        assertNotNull( packageDescr );
 //
-//        RuleDescr obj = (RuleDescr) packageDescr.getRules().get( 0 );
-//        assertEquals( obj.getLhs().getDescrs().size(),
-//                      3 );
-//    }
-//
 //    //TODO: FM FIXME
 //    public void testAccumulate() throws Exception {
 //        final XmlPackageReader xmlPackageReader = new XmlPackageReader();

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseCollect.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseCollect.xml	2007-06-21 05:22:49 UTC (rev 12733)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseCollect.xml	2007-06-21 07:00:09 UTC (rev 12734)
@@ -1,28 +1,38 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package name="com.sample"  
-	xmlns="http://drools.org/drools-4.0"
+<package name="com.sample" xmlns="http://drools.org/drools-4.0"
 	xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
 	xs:schemaLocation="http://drools.org/drools-4.0 drools-4.0.xsd">
 
-<rule name="simple_rule">
+	<import name="import java.util.List"/>
+	<import name="org.drools.Cheese"/>
+	<import name="org.drools.Cheesery"/>
 
-	<lhs>
-		<pattern object-type="Person" >
-			<field-constraint field-name="hair">
-				<literal-restriction evaluator="==" value="pink" />
-			</field-constraint>
-			<from>
-				<collect>
-					<pattern identifier="cheese" object-type="Cheese" >
-						<field-constraint field-name="type">
-							<literal-restriction evaluator="==" value="1" />
-						</field-constraint>
-					</pattern>
-				</collect>
-			</from>
-	</lhs>
-	<rhs>
-		list.add( $cheese ); </rhs>
+	<global identifier="cheesery" type="Cheesery"/>
+	<global identifier="list" type="List"/>
+
+	<rule name="simple_rule">
+		<rule-attribute name="salience" value="10"/>
+		<rule-attribute name="no-loop" value="true"/>
+		<rule-attribute name="agenda-group" value="agenda-group"/>
+		<rule-attribute name="activation-group" value="activation-group"/>
+
+		<lhs>
+            <pattern identifier="cheese" object-type="Cheese" >
+				<field-constraint field-name="type">
+                    <literal-restriction evaluator="==" value="1"/>
+                </field-constraint>
+                <from>
+                    <collect>
+                        <pattern object-type="Person">
+                            <field-constraint field-name="hair">
+                                <literal-restriction evaluator="==" value="pink" />
+                            </field-constraint>
+                        </pattern>
+                    </collect>
+                </from>
+            </pattern>
+		</lhs>
+		<rhs> list.add( $cheese ); </rhs>
 	</rule>
 
 </package>
\ No newline at end of file




More information about the jboss-svn-commits mailing list