[jboss-svn-commits] JBL Code SVN: r17285 - in labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools: base and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Dec 17 09:35:42 EST 2007


Author: mgroch
Date: 2007-12-17 09:35:42 -0500 (Mon, 17 Dec 2007)
New Revision: 17285

Modified:
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/WorkingMemory.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/SequentialKnowledgeHelper.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractFactHandleFactory.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/InternalWorkingMemoryActions.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooFactHandleFactory.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/spi/FactHandleFactory.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java
Log:
JBRULES-1374
addition of an alternative insert() method which takes a duration as additional parameter in order to support durative events => adaptation of associated classes

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/WorkingMemory.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/WorkingMemory.java	2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/WorkingMemory.java	2007-12-17 14:35:42 UTC (rev 17285)
@@ -214,6 +214,21 @@
      *             If a RuntimeException error occurs.
      */
     FactHandle insert(Object object) throws FactException;
+    
+    /**
+     * Assert a fact with inherent duration.
+     * 
+     * @param object
+     *            The fact object.
+     * @param duration
+     *            The duration of the fact.
+     * 
+     * @return The new fact-handle associated with the object.
+     * 
+     * @throws FactException
+     *             If a RuntimeException error occurs.
+     */
+    FactHandle insert(Object object, long duration) throws FactException;
 
     /**
      * Retrieve the QueryResults of the specified query.
@@ -264,6 +279,29 @@
      */
     FactHandle insert(Object object,
                             boolean dynamic) throws FactException;
+    
+    /**
+     * Insert a fact with inherent duration registering JavaBean 
+     * <code>PropertyChangeListeners</code> on the Object to 
+     * automatically trigger <code>update</code> calls
+     * if <code>dynamic</code> is <code>true</code>.
+     * 
+     * @param object
+     *            The fact object.
+     * @param duration
+     *            The duration of the fact.
+     * @param dynamic
+     *            true if Drools should add JavaBean
+     *            <code>PropertyChangeListeners</code> to the object.
+     * 
+     * @return The new fact-handle associated with the object.
+     * 
+     * @throws FactException
+     *             If a RuntimeException error occurs.
+     */
+    FactHandle insert(Object object,
+    				  long duration,
+                      boolean dynamic) throws FactException;
 
     /**
      * Retract a fact.

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java	2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java	2007-12-17 14:35:42 UTC (rev 17285)
@@ -52,31 +52,70 @@
 
     public void insert(final Object object) throws FactException {
         insert( object,
+        		0,
                 false );
     }
 
+    public void insert(final Object object, 
+    				   final long duration) throws FactException {
+        insert( object,
+        		duration,
+                false );
+    }
+    
     public void insert(final Object object,
                        final boolean dynamic) throws FactException {
         this.workingMemory.insert( object,
+        						   0,
                                    dynamic,
                                    false,
                                    this.rule,
                                    this.activation );
     }
+    
+    public void insert(final Object object,
+    				   final long duration,
+    				   final boolean dynamic) throws FactException {
+		this.workingMemory.insert( object,
+								duration,
+		                        dynamic,
+		                        false,
+		                        this.rule,
+		                        this.activation );
+	}
 
     public void insertLogical(final Object object) throws FactException {
         insertLogical( object,
+        			   0,
                        false );
     }
 
+    public void insertLogical(final Object object, final long duration) throws FactException {
+        insertLogical( object,
+        			   duration,
+                       false );
+    }
+    
     public void insertLogical(final Object object,
                               final boolean dynamic) throws FactException {
         this.workingMemory.insert( object,
+        						   0,
                                    dynamic,
                                    true,
                                    this.rule,
                                    this.activation );
     }
+    
+    public void insertLogical(final Object object,
+    						  final long duration,
+    						  final boolean dynamic) throws FactException {
+		this.workingMemory.insert( object,
+								   duration,
+								   dynamic,
+								   true,
+								   this.rule,
+								   this.activation );
+	}
 
     public void update(final FactHandle handle,
                        final Object newObject) throws FactException {

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/SequentialKnowledgeHelper.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/SequentialKnowledgeHelper.java	2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/SequentialKnowledgeHelper.java	2007-12-17 14:35:42 UTC (rev 17285)
@@ -56,17 +56,33 @@
 
     public void insert(final Object object) throws FactException {        
     }
+    
+    public void insert(final Object object, final long duration) throws FactException {        
+    }
 
     public void insert(final Object object,
                        final boolean dynamic) throws FactException {
     }
+    
+    public void insert(final Object object,
+    				   final long duration,
+    				   final boolean dynamic) throws FactException {
+    }
 
     public void insertLogical(final Object object) throws FactException {
     }
+    
+    public void insertLogical(final Object object, final long duration) throws FactException {
+    }
 
     public void insertLogical(final Object object,
                               final boolean dynamic) throws FactException {
     }
+    
+    public void insertLogical(final Object object,
+    						  final long duration,
+            				  final boolean dynamic) throws FactException {
+    }
 
     public void update(final FactHandle handle,
                        final Object newObject) throws FactException {

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractFactHandleFactory.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractFactHandleFactory.java	2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractFactHandleFactory.java	2007-12-17 14:35:42 UTC (rev 17285)
@@ -45,15 +45,36 @@
             return newFactHandle( this.factHandlePool.pop(),
                                   object, 
                                   isEvent,
+                                  0,
                                   workingMemory );
         }
 
         return newFactHandle( this.id++,
                               object,
                               isEvent,
+                              0,
                               workingMemory );
     }
+    
+    /* (non-Javadoc)
+     * @see org.drools.reteoo.FactHandleFactory#newFactHandle()
+     */
+    public final InternalFactHandle newFactHandle( final Object object, final boolean isEvent, long duration, final WorkingMemory workingMemory ) {
+        if ( !this.factHandlePool.isEmpty() ) {
+            return newFactHandle( this.factHandlePool.pop(),
+                                  object, 
+                                  isEvent,
+                                  duration,
+                                  workingMemory );
+        }
 
+        return newFactHandle( this.id++,
+                              object,
+                              isEvent,
+                              duration,
+                              workingMemory );
+    }
+
     /* (non-Javadoc)
      * @see org.drools.reteoo.FactHandleFactory#newFactHandle(long)
      */
@@ -65,8 +86,25 @@
                               object,
                               this.counter++,
                               isEvent,
+                              0,
                               workingMemory );
     }
+    
+    /* (non-Javadoc)
+     * @see org.drools.reteoo.FactHandleFactory#newFactHandle(long)
+     */
+    protected final InternalFactHandle newFactHandle(final long id,
+                                                     final Object object,
+                                                     final boolean isEvent,
+                                                     final long duration,
+                                                     final WorkingMemory workingMemory ) {
+        return newFactHandle( id,
+                              object,
+                              this.counter++,
+                              isEvent,
+                              duration,
+                              workingMemory );
+    }
 
     /* (non-Javadoc)
      * @see org.drools.reteoo.FactHandleFactory#newFactHandle(long)
@@ -76,6 +114,16 @@
                                                         final long recency,
                                                         final boolean isEvent, 
                                                         final WorkingMemory workingMemory );
+    
+    /* (non-Javadoc)
+     * @see org.drools.reteoo.FactHandleFactory#newFactHandle(long)
+     */
+    protected abstract InternalFactHandle newFactHandle(final long id,
+                                                        final Object object,
+                                                        final long recency,
+                                                        final boolean isEvent,
+                                                        final long duration,
+                                                        final WorkingMemory workingMemory );
 
     /* (non-Javadoc)
      * @see org.drools.reteoo.FactHandleFactory#increaseFactHandleRecency(org.drools.FactHandle)

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java	2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java	2007-12-17 14:35:42 UTC (rev 17285)
@@ -684,7 +684,18 @@
      * @see WorkingMemory
      */
     public FactHandle insert(final Object object) throws FactException {
+        return insert( object,  /* Not-Dynamic */
+        			   0,
+                       false,
+                       false,
+                       null,
+                       null );
+    }
+    
+    public FactHandle insert(final Object object, 
+    						 final long duration) throws FactException {
         return insert( object, /* Not-Dynamic */
+        			   duration,
                        false,
                        false,
                        null,
@@ -695,30 +706,65 @@
      * @see WorkingMemory
      */
     public FactHandle insertLogical(final Object object) throws FactException {
+        return insert( object,  //Not-Dynamic 
+        			   0,
+                       false,
+                       true,
+                       null,
+                       null );
+    }
+    
+    public FactHandle insertLogical(final Object object, 
+    								final long duration) throws FactException {
         return insert( object, /* Not-Dynamic */
+        			   duration,
                        false,
                        true,
                        null,
                        null );
     }
 
-    public FactHandle insert(final Object object,
+   public FactHandle insert(final Object object,
                              final boolean dynamic) throws FactException {
         return insert( object,
+        			   0,
                        dynamic,
                        false,
                        null,
                        null );
     }
+    
+    public FactHandle insert(final Object object,
+    						 final long duration,
+            				 final boolean dynamic) throws FactException {
+	return insert( object,
+				   duration,
+				   dynamic,
+				   false,
+				   null,
+				   null );
+	}
 
     public FactHandle insertLogical(final Object object,
                                     final boolean dynamic) throws FactException {
         return insert( object,
+        			   0,
                        dynamic,
                        true,
                        null,
                        null );
     }
+    
+    public FactHandle insertLogical(final Object object,
+    								final long duration,
+            						final boolean dynamic) throws FactException {
+		return insert( object,
+					   duration,
+					   dynamic,
+					   true,
+					   null,
+					   null );
+	}
 
     public FactHandle insert(final Object object,
                              final boolean dynamic,
@@ -727,15 +773,47 @@
                              final Activation activation) throws FactException {
         return this.insert( EntryPoint.DEFAULT,
                             object,
+                            0,
                             dynamic,
                             logical,
                             rule,
                             activation );
 
     }
+    
+    public FactHandle insert(final Object object,
+    						final long duration,
+				            final boolean dynamic,
+				            boolean logical,
+				            final Rule rule,
+				            final Activation activation) throws FactException {
+    	return this.insert( EntryPoint.DEFAULT,
+    						object,
+    						duration,
+    						dynamic,
+    						logical,
+    						rule,
+    						activation );
+    }
 
     protected FactHandle insert(final EntryPoint entryPoint,
+            final Object object,
+            final boolean dynamic,
+            boolean logical,
+            final Rule rule,
+            final Activation activation) throws FactException {
+    	return this.insert(entryPoint, 
+    					   object,
+    					   0,
+                           dynamic,
+                           logical,
+                           rule,
+                           activation);
+    }
+    
+    protected FactHandle insert(final EntryPoint entryPoint,
                                 final Object object,
+                                final long duration,
                                 final boolean dynamic,
                                 boolean logical,
                                 final Rule rule,
@@ -753,6 +831,7 @@
         if ( isSequential() ) {
             handle = this.handleFactory.newFactHandle( object,
                                                        typeConf.isEvent(),
+                                                       duration,
                                                        this );
             addHandleToMaps( handle );
             insert( entryPoint,
@@ -808,6 +887,7 @@
                     // assert
                     handle = this.handleFactory.newFactHandle( object,
                                                                typeConf.isEvent(),
+                                                               duration,
                                                                this );
                     addHandleToMaps( handle );
 
@@ -864,6 +944,7 @@
                             key.setStatus( EqualityKey.STATED );
                             handle = this.handleFactory.newFactHandle( object,
                                                                        typeConf.isEvent(),
+                                                                       duration,
                                                                        this );
                             handle.setEqualityKey( key );
                             key.addFactHandle( handle );
@@ -874,6 +955,7 @@
                     } else {
                         handle = this.handleFactory.newFactHandle( object,
                                                                    typeConf.isEvent(),
+                                                                   duration,
                                                                    this );
                         addHandleToMaps( handle );
                         key.addFactHandle( handle );
@@ -903,6 +985,7 @@
                 }
                 handle = this.handleFactory.newFactHandle( object,
                                                            typeConf.isEvent(),
+                                                           duration,
                                                            this );
                 addHandleToMaps( handle );
 

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/InternalWorkingMemoryActions.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/InternalWorkingMemoryActions.java	2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/InternalWorkingMemoryActions.java	2007-12-17 14:35:42 UTC (rev 17285)
@@ -35,14 +35,25 @@
                         Rule rule,
                         Activation activation) throws FactException;
 
-    FactHandle insert(Object object,
+    /*FactHandle insert(Object object,
                       boolean dynamic,
                       boolean logical,
                       Rule rule,
-                      Activation activation) throws FactException;
+                      Activation activation) throws FactException;*/
+    
+    FactHandle insert(Object object,
+    		long duration,
+            boolean dynamic,
+            boolean logical,
+            Rule rule,
+            Activation activation) throws FactException;
 
+    /*public FactHandle insertLogical(Object object,
+                                    boolean dynamic) throws FactException;*/
+    
     public FactHandle insertLogical(Object object,
-                                    boolean dynamic) throws FactException;
+    								long duration,
+    								boolean dynamic) throws FactException;
 
     public void modifyRetract(final FactHandle factHandle,
                               final Rule rule,

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java	2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java	2007-12-17 14:35:42 UTC (rev 17285)
@@ -373,7 +373,7 @@
 
         // First alpha node filters
         boolean isAllowed = true;
-        final InternalFactHandle createdHandle = workingMemory.getFactHandleFactory().newFactHandle( result, false, workingMemory ); // so far, result is not an event
+        final InternalFactHandle createdHandle = workingMemory.getFactHandleFactory().newFactHandle( result, false, 0, workingMemory ); // so far, result is not an event
         for ( int i = 0, length = this.resultConstraints.length; i < length; i++ ) {
             if ( !this.resultConstraints[i].isAllowed( createdHandle,
                                                        workingMemory ) ) {

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooFactHandleFactory.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooFactHandleFactory.java	2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooFactHandleFactory.java	2007-12-17 14:35:42 UTC (rev 17285)
@@ -50,6 +50,29 @@
                                           recency );
         }
     }
+    
+    /* (non-Javadoc)
+     * @see org.drools.reteoo.FactHandleFactory#newFactHandle(long)
+     */
+    protected final InternalFactHandle newFactHandle(final long id,
+                                                     final Object object,
+                                                     final long recency,
+                                                     final boolean isEvent,
+                                                     final long duration,
+                                                     final WorkingMemory workingMemory ) {
+        if ( isEvent ) {
+            SessionClock clock = ((TemporalSession) workingMemory).getSessionClock(); 
+            return new EventFactHandle( id,
+                                        object,
+                                        recency,
+                                        clock.getCurrentTime(),
+                                        duration );  // primitive events have 0 duration
+        } else {
+            return new DefaultFactHandle( id,
+                                          object,
+                                          recency );
+        }
+    }
 
     /* (non-Javadoc)
      * @see org.drools.reteoo.FactHandleFactory#newInstance()

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java	2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java	2007-12-17 14:35:42 UTC (rev 17285)
@@ -89,7 +89,7 @@
     public QueryResults getQueryResults(final String query, final Object[] arguments) {
 
         Object object = new DroolsQuery( query, arguments );
-        InternalFactHandle handle = this.handleFactory.newFactHandle( object, false, this );
+        InternalFactHandle handle = this.handleFactory.newFactHandle( object, false, 0, this );
         
         insert( EntryPoint.DEFAULT, // query dummy objects always use default entry point
                 handle,

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/spi/FactHandleFactory.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/spi/FactHandleFactory.java	2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/spi/FactHandleFactory.java	2007-12-17 14:35:42 UTC (rev 17285)
@@ -33,12 +33,19 @@
 public interface FactHandleFactory
     extends
     Serializable {
-    /**
+   /**
      * Construct a handle with a new id.
      * 
      * @return The handle.
      */
     InternalFactHandle newFactHandle(Object object, boolean isEvent, WorkingMemory workingMemory );
+    
+    /**
+     * Construct a handle with a new id and a duration.
+     * 
+     * @return The handle.
+     */
+    InternalFactHandle newFactHandle(Object object, boolean isEvent, long duration, WorkingMemory workingMemory );
 
     /**
      * Increases the recency of the FactHandle

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java	2007-12-17 14:35:23 UTC (rev 17284)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java	2007-12-17 14:35:42 UTC (rev 17285)
@@ -53,6 +53,17 @@
      *             returned as a FactException
      */
     void insert(Object object) throws FactException;
+    
+    /**
+     * Asserts an object, notice that it does not return the FactHandle
+     * 
+     * @param object -
+     *            the object to be asserted
+     * @throws FactException -
+     *             Exceptions can be thrown by conditions which are wrapped and
+     *             returned as a FactException
+     */
+    void insert(Object object, long duration) throws FactException;
 
     /**
      * Asserts an object specifying that it implement the onPropertyChange
@@ -68,11 +79,33 @@
      */
     void insert(Object object,
                       boolean dynamic) throws FactException;
+    
+    /**
+     * Asserts an object specifying that it implement the onPropertyChange
+     * listener, notice that it does not return the FactHandle.
+     * 
+     * @param object -
+     *            the object to be asserted
+     * @param dynamic -
+     *            specifies the object implements onPropertyChangeListener
+     * @throws FactException -
+     *             Exceptions can be thrown by conditions which are wrapped and
+     *             returned as a FactException
+     */
+    void insert(Object object,
+    			long duration,
+                boolean dynamic) throws FactException;
 
     public void insertLogical(Object object) throws FactException;
+    
+    public void insertLogical(Object object, long duration) throws FactException;
 
     public void insertLogical(Object object,
                                     boolean dynamic) throws FactException;
+    
+    public void insertLogical(Object object,
+    						  long duration,
+    						  boolean dynamic) throws FactException;
 
     void update(FactHandle handle,
                       Object newObject) throws FactException;




More information about the jboss-svn-commits mailing list