[jboss-svn-commits] JBL Code SVN: r22338 - in labs/jbossrules/trunk/drools-process/drools-process-task/src: main/java/org/drools/task/service and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Sep 2 22:14:09 EDT 2008


Author: mark.proctor at jboss.com
Date: 2008-09-02 22:14:09 -0400 (Tue, 02 Sep 2008)
New Revision: 22338

Added:
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/TaskOperation.java
Modified:
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/CommandName.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskService.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/persistence.xml
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceTaskUpdate.java
Log:
JBRULES-1745 WS-Human-Task
-Can now remove comments and attachments

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/TaskOperation.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/TaskOperation.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/TaskOperation.java	2008-09-03 02:14:09 UTC (rev 22338)
@@ -0,0 +1,29 @@
+package org.drools.task;
+
+public class TaskOperation {
+    public void changeStatus(Task task, Status newStatus, User user) {
+        switch (newStatus) {
+            case Reserved : {
+                // must be business admin/potential owner
+                // claim, stop
+                break;
+            }
+            case InProgress : {
+                // must be actual owner
+                // start
+            }
+            case Ready : {
+                // must be business admin/potential owner
+                // release
+                break;
+            }
+            case Suspended : {
+                break;
+            }
+            case Completed : {
+                break;
+            }
+        }
+    }
+   
+}

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/CommandName.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/CommandName.java	2008-09-03 02:12:32 UTC (rev 22337)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/CommandName.java	2008-09-03 02:14:09 UTC (rev 22338)
@@ -12,12 +12,18 @@
     
     AddAttachmentRequest,
     AddAttachmentResponse,
+    DeleteAttachmentRequest,
+    DeleteAttachmentResponse,    
     GetAttachmentContentRequest,
     GetAttachmentContentResponse,
     
     AddCommentRequest,
     AddCommentResponse,
+    DeleteCommentRequest,    
+    DeleteCommentResponse,
     
+
+    
     Query_TasksOwned,
     
     Query_TasksAssignedAsBusinessAdministrator,

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java	2008-09-03 02:12:32 UTC (rev 22337)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java	2008-09-03 02:14:09 UTC (rev 22338)
@@ -134,7 +134,16 @@
         session.write( cmd );         
     }
     
+    public void deleteComment(long taskId, long commentId) {
+        List args = new ArrayList( 2 );
+        args.add( taskId );
+        args.add( commentId );
+        Command cmd = new Command( counter.getAndIncrement(), CommandName.DeleteCommentRequest, args);
+        
+        session.write( cmd );
+    }
     
+    
     public void addAttachment(long taskId, Attachment attachment, AttachmentContent content, AddAttachmentResponseHandler responseHandler ) {
         List args = new ArrayList( 2 );
         args.add( taskId );
@@ -147,6 +156,16 @@
         session.write( cmd );        
     }
     
+    public void deleteAttachment(long taskId, long attachmentId, long contentId) {
+        List args = new ArrayList( 3 );
+        args.add( taskId );
+        args.add( attachmentId );
+        args.add( contentId );
+        Command cmd = new Command( counter.getAndIncrement(), CommandName.DeleteAttachmentRequest, args);
+        
+        session.write( cmd );
+    }    
+    
     public void getAttachmentContent(long contentId, GetAttachmentContentResponseHandler responseHandler) {
         List args = new ArrayList( 1 );
         args.add( contentId );

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java	2008-09-03 02:12:32 UTC (rev 22337)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java	2008-09-03 02:14:09 UTC (rev 22338)
@@ -68,6 +68,12 @@
                 session.write( resultsCmnd );                       
                 break;
             }
+            case DeleteCommentRequest : {
+                long taskId = ( Long ) cmd.getArguments().get( 0 );
+                long commentId = ( Long ) cmd.getArguments().get( 1 );
+                service.deleteComment( taskId, commentId );
+                break;
+            }
             case  AddAttachmentRequest : {
                 Attachment attachment = ( Attachment ) cmd.getArguments().get( 1 );
                 AttachmentContent content = ( AttachmentContent ) cmd.getArguments().get( 2 ); 
@@ -82,6 +88,13 @@
                 session.write( resultsCmnd );                    
                 break;
             }
+            case DeleteAttachmentRequest : {
+                long taskId = ( Long ) cmd.getArguments().get( 0 );
+                long attachmentId = ( Long ) cmd.getArguments().get( 1 );
+                long contentId = ( Long ) cmd.getArguments().get( 2 );
+                service.deleteAttachment( taskId, attachmentId, contentId );
+                break;
+            }
             case GetAttachmentContentRequest : {
                 long contentId = ( Long ) cmd.getArguments().get( 0 );
                 AttachmentContent content = service.getAttachmentContent( contentId );

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskService.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskService.java	2008-09-03 02:12:32 UTC (rev 22337)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskService.java	2008-09-03 02:14:09 UTC (rev 22338)
@@ -6,6 +6,7 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
+import java.util.Iterator;
 import java.util.List;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ScheduledThreadPoolExecutor;
@@ -31,8 +32,10 @@
 public class TaskService {
     EntityManagerFactory             emf;
 
+    //@TODO we should not be re-using the same em, create as needed (but have issues with closing the em while returned objects are still in use
     EntityManager                    em;
 
+    //@TODO these should all be named querries
     Query                            tasksAssignedAsBusinessAdministrator;
     Query                            tasksAssignedAsExcludedOwner;
     Query                            tasksAssignedAsPotentialOwner;
@@ -204,6 +207,46 @@
         AttachmentContent content = em.find( AttachmentContent.class, contentId );
         return content;
     }      
+    
+    public void deleteAttachment(long taskId, long attachmentId, long attachmentContentId) {
+        // @TODO I can't get this to work with HQL deleting the Attachment. Hibernate needs both the item removed from the collection
+        // and also the item deleted, so for now have to load the entire Task, I suspect that this is due to using the same EM which 
+        // is caching things.
+        Task task = em.find( Task.class, taskId );
+        
+        em.getTransaction().begin();
+        for( Iterator<Attachment> it = task.getTaskData().getAttachments().iterator(); it.hasNext(); ) {
+            Attachment attachment = it.next();
+            if ( attachment.getId() == attachmentId ) {
+                it.remove();
+                em.remove( attachment ); // need to do this otherwise it just removes the link id, without removing the attachment
+                break;
+            }
+        }
+        
+        // we do this as HQL to avoid streaming in the entire HQL
+        String deleteContent = "delete from AttachmentContent where id = :id";
+        em.createQuery( deleteContent ).setParameter( "id", attachmentContentId ).executeUpdate();
+        
+        em.getTransaction().commit();       
+    }
+    
+    public void deleteComment(long taskId, long commentId) {
+        // @TODO I can't get this to work with HQL deleting the Comment. Hibernate needs both the item removed from the collection
+        // and also the item deleted, so for now have to load the entire Task, I suspect that this is due to using the same EM which 
+        // is caching things.
+        Task task = em.find( Task.class, taskId );
+        em.getTransaction().begin();
+        for( Iterator<Comment> it = task.getTaskData().getComments().iterator(); it.hasNext(); ) {
+            Comment comment = it.next();
+            if ( comment.getId() == commentId ) {
+                it.remove();
+                em.remove( comment ); // need to do this otherwise it just removes the link id, without removing the comment
+                break;
+            }
+        }        
+        em.getTransaction().commit();
+    }
 
     public Task getTask(long taskId) {
         Task task = em.find( Task.class,

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/persistence.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/persistence.xml	2008-09-03 02:12:32 UTC (rev 22337)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/persistence.xml	2008-09-03 02:14:09 UTC (rev 22338)
@@ -38,7 +38,7 @@
 	        <property name="hibernate.connection.autocommit" value="false" /> 	               
 	        <property name="hibernate.max_fetch_depth" value="3"/>
 		    <property name="hibernate.hbm2ddl.auto" value="update" />
-            <property name="hibernate.show_sql" value="false" />		    
+            <property name="hibernate.show_sql" value="true" />		    
 	    </properties>        
     </persistence-unit>
     

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceTaskUpdate.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceTaskUpdate.java	2008-09-03 02:12:32 UTC (rev 22337)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceTaskUpdate.java	2008-09-03 02:14:09 UTC (rev 22338)
@@ -122,9 +122,19 @@
         // make two collections the same and compare
         comments1.add( comment );
         assertTrue( CollectionUtils.equals( comments1, comments2 ) );
+        
+        client.deleteComment( taskId, addCommentResponseHandler.getCommentId() );
+        
+        getTaskResponseHandler = new BlockingGetTaskResponseHandler(); 
+        client.getTask( taskId, getTaskResponseHandler );
+        task1 = getTaskResponseHandler.getTask(); 
+        comments2 = task1.getTaskData().getComments();
+        assertEquals(1, comments2.size() );   
+        
+        assertEquals( "This is my comment1!!!!!", comments2.get( 0 ).getText() );
     }
     
-    public void testAddAttachment() {
+    public void testAddRemoveAttachment() throws Exception {
         Map  vars = new HashedMap();     
         vars.put( "users", users );
         vars.put( "groups", groups );        
@@ -217,7 +227,19 @@
         attachment.setSize( 26 );
         attachment.setContentId( addAttachmentResponseHandler.getContentId() );
         attachments1.add( attachment );
-        assertTrue( CollectionUtils.equals( attachments2, attachments1 ) );       
+        assertTrue( CollectionUtils.equals( attachments2, attachments1 ) );      
+        
+        client.deleteAttachment( taskId, addAttachmentResponseHandler.getAttachmentId(), addAttachmentResponseHandler.getContentId() );
+        
+        Thread.sleep( 3000 );
+        
+        getTaskResponseHandler = new BlockingGetTaskResponseHandler(); 
+        client.getTask( taskId, getTaskResponseHandler );
+        task1 = getTaskResponseHandler.getTask();
+        attachments2 = task1.getTaskData().getAttachments();
+        assertEquals(1, attachments2.size() );        
+        
+        assertEquals( "file1.txt", attachments2.get( 0 ).getName());
     }    
 
     public static class BlockingGetTaskResponseHandler implements GetTaskResponseHandler {




More information about the jboss-svn-commits mailing list