[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