[jboss-svn-commits] JBL Code SVN: r17182 - in labs/jbossrules/branches/temporal_rete/drools-compiler/src: test/java/org/drools and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Dec 11 10:50:40 EST 2007


Author: mgroch
Date: 2007-12-11 10:50:40 -0500 (Tue, 11 Dec 2007)
New Revision: 17182

Added:
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/ComplexEv.java
Modified:
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/resources/META-INF/drools.default.packagebuilder.conf
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_TimeRelationalOperators.drl
Log:
support for overlaps & overlapped-by

Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/resources/META-INF/drools.default.packagebuilder.conf
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/resources/META-INF/drools.default.packagebuilder.conf	2007-12-11 15:39:52 UTC (rev 17181)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/resources/META-INF/drools.default.packagebuilder.conf	2007-12-11 15:50:40 UTC (rev 17182)
@@ -11,10 +11,13 @@
 drools.accumulate.function.count = org.drools.base.accumulators.CountAccumulateFunction
 drools.accumulate.function.sum = org.drools.base.accumulators.SumAccumulateFunction
 
+drools.evaluator.coincides = org.drools.base.evaluators.CoincidesEvaluatorDefinition
 drools.evaluator.before = org.drools.base.evaluators.BeforeEvaluatorDefinition
 drools.evaluator.after = org.drools.base.evaluators.AfterEvaluatorDefinition
 drools.evaluator.meets = org.drools.base.evaluators.MeetsEvaluatorDefinition
-drools.evaluator.met-by = org.drools.base.evaluators.MetByEvaluatorDefinition
+drools.evaluator.metby = org.drools.base.evaluators.MetByEvaluatorDefinition
+drools.evaluator.overlaps = org.drools.base.evaluators.OverlapsEvaluatorDefinition
+drools.evaluator.overlappedby = org.drools.base.evaluators.OverlappedByEvaluatorDefinition
 drools.evaluator.equality = org.drools.base.evaluators.EqualityEvaluatorsDefinition
 drools.evaluator.comparable = org.drools.base.evaluators.ComparableEvaluatorsDefinition
 drools.evaluator.set = org.drools.base.evaluators.SetEvaluatorsDefinition

Added: labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/ComplexEv.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/ComplexEv.java	                        (rev 0)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/ComplexEv.java	2007-12-11 15:50:40 UTC (rev 17182)
@@ -0,0 +1,51 @@
+package org.drools;
+
+public class ComplexEv {
+    private long seq;
+    private String company;
+    private long startTS, endTS;
+    
+    public ComplexEv() {
+    }
+
+    public ComplexEv(long seq,
+                     String company,
+                     long start,
+                     long end) {
+        super();
+        this.seq = seq;
+        this.company = company;
+        this.startTS = start;
+        this.endTS = end;
+    }
+
+    public String getCompany() {
+        return company;
+    }
+    public void setCompany(String company) {
+        this.company = company;
+    }
+   
+    public long getSeq() {
+        return seq;
+    }
+    public void setSeq(long seq) {
+        this.seq = seq;
+    }
+    public long getStartTS() {
+		return startTS;
+	}
+	public void setStartTS(long startTS) {
+		this.startTS = startTS;
+	}
+	public long getEndTS() {
+		return endTS;
+	}
+	public void setEndTS(long endTS) {
+		this.endTS = endTS;
+	}
+    public String toString() {
+        return "ComplexEvent( "+this.seq+" : " +this.company +")";
+    }
+
+}

Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java	2007-12-11 15:39:52 UTC (rev 17181)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java	2007-12-11 15:50:40 UTC (rev 17182)
@@ -10,6 +10,7 @@
 import junit.framework.TestCase;
 
 import org.drools.ClockType;
+import org.drools.ComplexEv;
 import org.drools.OrderEvent;
 import org.drools.RuleBase;
 import org.drools.RuleBaseConfiguration;
@@ -124,6 +125,8 @@
         final List results_after = new ArrayList();
         final List results_meets = new ArrayList();
         final List results_met_by = new ArrayList();
+        final List results_overlaps = new ArrayList();
+        final List results_overlapped_by = new ArrayList();
 
         wm.setGlobal( "results_coincides",
                 results_coincides );
@@ -135,6 +138,10 @@
                 results_meets );
         wm.setGlobal( "results_met_by",
                       results_met_by );
+        wm.setGlobal( "results_overlaps",
+                	  results_overlaps );
+        wm.setGlobal( "results_overlapped_by",
+                      results_overlapped_by );
 
         StockTick tick1 = new StockTick( 1,
                                          "DROO",
@@ -211,10 +218,80 @@
                 results_met_by.size() );
         assertEquals( tick2,
                 results_met_by.get( 0 ) );
+    }
+    
+    /*public void testTimeRelationalOverlappingOperators() throws Exception {
+        // read in the source
+        final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_CEP_TimeRelationalOperators.drl" ) );
+        final RuleBase ruleBase = loadRuleBase( reader );
+
+        final TemporalSession<SessionPseudoClock> wm = ruleBase.newTemporalSession( ClockType.PSEUDO_CLOCK );
+        final SessionPseudoClock clock = wm.getSessionClock();
+
+        clock.setStartupTime( 1000 );
+        final List results_overlaps = new ArrayList();
+        final List results_overlapped_by = new ArrayList();
+
+        wm.setGlobal( "results_overlaps",
+                results_overlaps );
+        wm.setGlobal( "results_overlapped_by",
+                      results_overlapped_by );
+
+        ComplexEv ev1 = new ComplexEv( 1,
+                                       "DROO",
+                                       System.currentTimeMillis()-3,
+                                       System.currentTimeMillis());
+        ComplexEv ev2 = new ComplexEv( 2,
+						               "ACME",
+						               System.currentTimeMillis()-5,
+						               System.currentTimeMillis());
+        ComplexEv ev3 = new ComplexEv( 3,
+						               "ACME",
+						               System.currentTimeMillis()-5,
+						               System.currentTimeMillis());
+        ComplexEv ev4 = new ComplexEv( 4,
+						               "DROO",
+						               System.currentTimeMillis()-3,
+						               System.currentTimeMillis());
+        ComplexEv ev5 = new ComplexEv( 5,
+						               "ACME",
+						               System.currentTimeMillis()-5,
+						               System.currentTimeMillis());
+
+        InternalFactHandle handle1 = (InternalFactHandle) wm.insert( ev1 );
+        clock.advanceTime( 4 );
+        InternalFactHandle handle2 = (InternalFactHandle) wm.insert( ev2 );
+        clock.advanceTime( 4 );
+        InternalFactHandle handle3 = (InternalFactHandle) wm.insert( ev3 );
+        clock.advanceTime( 4 );
+        InternalFactHandle handle4 = (InternalFactHandle) wm.insert( ev4 );
+        InternalFactHandle handle5 = (InternalFactHandle) wm.insert( ev5 );
+
+        assertNotNull( handle1 );
+        assertNotNull( handle2 );
+        assertNotNull( handle3 );
+        assertNotNull( handle4 );
+        assertNotNull( handle5 );
+
+        assertTrue( handle1.isEvent() );
+        assertTrue( handle2.isEvent() );
+        assertTrue( handle3.isEvent() );
+        assertTrue( handle4.isEvent() );
+        assertTrue( handle5.isEvent() );
+
+        wm.fireAllRules();
+
+        assertEquals( 1,
+                results_overlaps.size() );
+        assertEquals( ev1,
+                results_overlaps.get( 0 ) );
         
+        assertEquals( 1,
+                results_overlapped_by.size() );
+        assertEquals( ev2,
+                results_overlapped_by.get( 0 ) );
+    }*/
 
-    }
-
     public void testSimpleTimeWindow() throws Exception {
         // read in the source
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_CEP_SimpleTimeWindow.drl" ) );

Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_TimeRelationalOperators.drl
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_TimeRelationalOperators.drl	2007-12-11 15:39:52 UTC (rev 17181)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_TimeRelationalOperators.drl	2007-12-11 15:50:40 UTC (rev 17182)
@@ -1,12 +1,15 @@
 package org.drools;
 
 import event org.drools.StockTick;
+import event org.drools.ComplexEv;
 
 global java.util.List results_coincides;
 global java.util.List results_after;
 global java.util.List results_before;
 global java.util.List results_meets;
 global java.util.List results_met_by;
+global java.util.List results_overlaps;
+global java.util.List results_overlapped_by;
 
 rule "coincides operator"
 when
@@ -46,4 +49,20 @@
     $b : StockTick( company == "ACME", this ~metby[4] $a )
 then
     results_met_by.add( $b );
+end
+
+rule "overlaps operator"
+when
+    $a : ComplexEv( company == "ACME" )
+    $b : ComplexEv( company == "DROO", this ~overlaps[2,5,2,5] $a )
+then
+    results_overlaps.add( $b );
+end
+
+rule "overlapped-by operator"
+when
+    $a : ComplexEv( company == "DROO" )
+    $b : ComplexEv( company == "ACME", this ~overlappedby[2,5,2,5] $a )
+then
+    results_overlapped_by.add( $b );
 end
\ No newline at end of file




More information about the jboss-svn-commits mailing list