[jboss-svn-commits] JBL Code SVN: r17331 - in labs/jbossrules/trunk/drools-compiler/src: test/java/org/drools/brms/server/util and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Dec 19 19:06:52 EST 2007


Author: michael.neale at jboss.com
Date: 2007-12-19 19:06:51 -0500 (Wed, 19 Dec 2007)
New Revision: 17331

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/BRDRLPersistence.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/BRDRLPersistenceTest.java
Log:
JBRULES-1396

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/BRDRLPersistence.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/BRDRLPersistence.java	2007-12-19 23:37:32 UTC (rev 17330)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/BRDRLPersistence.java	2007-12-20 00:06:51 UTC (rev 17331)
@@ -155,15 +155,9 @@
                 buf.append( ">" );
             }
             if ( CompositeFactPattern.COMPOSITE_TYPE_EXISTS.equals( pattern.type ) ) {
-                buf.append( pattern.type );
-                buf.append( " " );
-                renderSubPattern( pattern, 0 );
-                buf.append( "\n" );
+                renderCompositeFOL(pattern);
             } else if ( CompositeFactPattern.COMPOSITE_TYPE_NOT.equals( pattern.type ) ) {
-                buf.append( pattern.type );
-                buf.append( " " );
-                renderSubPattern( pattern, 0 );
-                buf.append( "\n" );
+                renderCompositeFOL(pattern);
             } else if ( CompositeFactPattern.COMPOSITE_TYPE_OR.equals( pattern.type ) ) {
                 buf.append( "( " );
                 if (pattern.patterns != null ) {
@@ -180,6 +174,24 @@
             }
         }
 
+		private void renderCompositeFOL(CompositeFactPattern pattern) {
+			buf.append( pattern.type );
+			if (pattern.patterns != null && pattern.patterns.length > 1) {
+				buf.append(" (");
+				for (int i = 0; i < pattern.patterns.length; i++) {
+					renderSubPattern(pattern, i);
+					if (i != pattern.patterns.length -1) {
+						buf.append(" and ");
+					}
+				}
+				buf.append(") \n");
+			} else {
+				buf.append( " " );
+				renderSubPattern( pattern, 0 );
+				buf.append( "\n" );
+			}
+		}
+
         private void renderSubPattern(CompositeFactPattern pattern, int subIndex) {
             if (pattern.patterns == null || pattern.patterns.length == 0) return;
             this.generateFactPattern( pattern.patterns[subIndex] );

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/BRDRLPersistenceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/BRDRLPersistenceTest.java	2007-12-19 23:37:32 UTC (rev 17330)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/BRDRLPersistenceTest.java	2007-12-20 00:06:51 UTC (rev 17331)
@@ -206,6 +206,65 @@
 
     }
 
+    public void testExistsMultiPatterns() throws Exception {
+    	String result = getCompositeFOL(CompositeFactPattern.COMPOSITE_TYPE_EXISTS);
+    	assertTrue(result.indexOf("exists (Person( age == 42 ) and Person( age == 43 ))") > 0);
+    }
+
+    public void testNotMultiPatterns() throws Exception {
+    	String result = getCompositeFOL(CompositeFactPattern.COMPOSITE_TYPE_NOT);
+    	assertTrue(result.indexOf("not (Person( age == 42 ) and Person( age == 43 ))") > 0);
+    }
+
+    public void testSingleExists() throws Exception {
+		RuleModel m  = new RuleModel();
+    	m.name = "or";
+    	CompositeFactPattern cp = new CompositeFactPattern(CompositeFactPattern.COMPOSITE_TYPE_EXISTS);
+    	FactPattern p1 = new FactPattern("Person");
+    	SingleFieldConstraint sf1 = new SingleFieldConstraint("age");
+    	sf1.operator = "==";
+    	sf1.value = "42";
+    	p1.addConstraint(sf1);
+
+    	cp.addFactPattern(p1);
+
+
+    	m.addLhsItem(cp);
+
+    	String result = BRDRLPersistence.getInstance().marshal(m);
+
+    	assertTrue(result.indexOf("exists Person( age == 42 )") > 0);
+
+    }
+
+
+	private String getCompositeFOL(String type) {
+		RuleModel m  = new RuleModel();
+    	m.name = "or";
+    	CompositeFactPattern cp = new CompositeFactPattern(type);
+    	FactPattern p1 = new FactPattern("Person");
+    	SingleFieldConstraint sf1 = new SingleFieldConstraint("age");
+    	sf1.operator = "==";
+    	sf1.value = "42";
+    	p1.addConstraint(sf1);
+
+    	cp.addFactPattern(p1);
+
+    	FactPattern p2 = new FactPattern("Person");
+    	SingleFieldConstraint sf2 = new SingleFieldConstraint("age");
+    	sf2.operator = "==";
+    	sf2.value = "43";
+    	p2.addConstraint(sf2);
+
+    	cp.addFactPattern(p2);
+
+    	m.addLhsItem(cp);
+
+    	String result = BRDRLPersistence.getInstance().marshal(m);
+
+		return result;
+	}
+
     //    public void testLoadEmpty() {
     //        RuleModel m = BRXMLPersistence.getInstance().unmarshal( null );
     //        assertNotNull( m );
@@ -498,7 +557,7 @@
 
         String result = BRDRLPersistence.getInstance().marshal( m );
         assertTrue(result.indexOf( ">insert" ) > -1);
-        System.err.println(result);
+
         assertTrue(result.indexOf( ">insertLogical" ) > -1);
     }
 




More information about the jboss-svn-commits mailing list