Update of 
/var/cvs/contributions/CMSContainer_Modules/workflow/src/java/com/finalist/cmsc/workflow
In directory 
james.mmbase.org:/tmp/cvs-serv5870/workflow/src/java/com/finalist/cmsc/workflow

Modified Files:
        LinkWorkflow.java PageWorkflow.java WorkflowManager.java 
        ContentWorkflow.java 
Log Message:
CMSC-970 A content element does not add a workflow item to the 2nd user who 
edits a element


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Modules/workflow/src/java/com/finalist/cmsc/workflow
See also: http://www.mmbase.org/jira/browse/CMSC-970


Index: LinkWorkflow.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Modules/workflow/src/java/com/finalist/cmsc/workflow/LinkWorkflow.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- LinkWorkflow.java   25 Jul 2008 15:54:54 -0000      1.11
+++ LinkWorkflow.java   8 Aug 2008 13:44:01 -0000       1.12
@@ -189,4 +189,9 @@
       return RepositoryUtil.getRole(node.getCloud(), channel, false);
    }
 
+   @Override
+   public void addUserToWorkflow(Node node) {
+      addUserToWorkflow(node, TYPE_LINK);
+   }
+
 }


Index: PageWorkflow.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Modules/workflow/src/java/com/finalist/cmsc/workflow/PageWorkflow.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- PageWorkflow.java   25 Jul 2008 15:54:54 -0000      1.9
+++ PageWorkflow.java   8 Aug 2008 13:44:01 -0000       1.10
@@ -167,7 +167,6 @@
       return hasWorkflow(node, TYPE_PAGE);
    }
 
-
    @Override
    protected Node getWorkflowNode(Node node) {
       return getWorkflowNode(node, TYPE_PAGE);
@@ -229,4 +228,11 @@
       return NavigationUtil.getRole(node.getCloud(), page, false);
    }
 
+
+   @Override
+   public void addUserToWorkflow(Node node) {
+      addUserToWorkflow(node, TYPE_PAGE);
+   }
+
+
 }


Index: WorkflowManager.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Modules/workflow/src/java/com/finalist/cmsc/workflow/WorkflowManager.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- WorkflowManager.java        25 Jul 2008 15:54:54 -0000      1.14
+++ WorkflowManager.java        8 Aug 2008 13:44:01 -0000       1.15
@@ -101,6 +101,26 @@
       return !list.isEmpty();
    }
 
+   protected void addUserToWorkflow(Node node, String type) {
+      Node user = SecurityUtil.getUserNode(cloud);
+
+      NodeList items = getWorkflows(node, type);
+      for (Iterator<Node> iterator = items.iterator(); iterator.hasNext();) {
+         Node workflowItem = iterator.next();
+         NodeList assignedUsers = getAssignedUsers(workflowItem);
+         boolean found = false;
+         for (Iterator<Node> iterator2 = assignedUsers.iterator(); 
iterator2.hasNext();) {
+            Node assignedUser = iterator2.next();
+            if (user.getNumber() == assignedUser.getNumber()) {
+               found = true;
+            }
+         }
+         if (!found) {
+            relateToUser(workflowItem, user);
+         }
+      }
+   }
+
 
    public abstract boolean isWorkflowElement(Node node, boolean 
isWorkflowItem);
 
@@ -108,6 +128,8 @@
    protected abstract List<Node> getUsersWithRights(Node channel, Role role);
 
 
+   public abstract void addUserToWorkflow(Node node);
+
    /**
     * Is the user allowed to approve the node
     *
@@ -278,8 +300,7 @@
       changeWorkflow(wfItem, status, remark);
 
       Node user = SecurityUtil.getUserNode(cloud);
-      RelationManager assignedrel = 
cloud.getRelationManager(WORKFLOW_MANAGER_NAME, SecurityUtil.USER, ASSIGNEDREL);
-      wfItem.createRelation(user, assignedrel).commit();
+      relateToUser(wfItem, user);
 
       RelationManager creatorrel = 
cloud.getRelationManager(WORKFLOW_MANAGER_NAME, SecurityUtil.USER, CREATORREL);
       wfItem.createRelation(user, creatorrel).commit();
@@ -471,6 +492,8 @@
    }
 
 
+
+
    protected void removeRelationsToUsers(Node workflowItem) {
       workflowItem.deleteRelations(ASSIGNEDREL);
    }
@@ -485,6 +508,17 @@
    }
 
 
+   private void relateToUser(Node workflowItem, Node user) {
+      RelationManager manager = 
cloud.getRelationManager(WORKFLOW_MANAGER_NAME, SecurityUtil.USER, ASSIGNEDREL);
+      workflowItem.createRelation(user, manager).commit();
+   }
+
+
+   protected NodeList getAssignedUsers(Node workflowItem) {
+      return workflowItem.getRelatedNodes(SecurityUtil.USER, ASSIGNEDREL, 
DESTINATION);
+   }
+
+
    public static boolean isWorkflowItem(Node node) {
       return WORKFLOW_MANAGER_NAME.equals(node.getNodeManager().getName());
    }
@@ -552,4 +586,5 @@
       return clone;
    }
 
+
 }
\ No newline at end of file


Index: ContentWorkflow.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Modules/workflow/src/java/com/finalist/cmsc/workflow/ContentWorkflow.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- ContentWorkflow.java        25 Jul 2008 15:54:54 -0000      1.8
+++ ContentWorkflow.java        8 Aug 2008 13:44:01 -0000       1.9
@@ -191,4 +191,9 @@
       return RepositoryUtil.getRole(node.getCloud(), creationNode, false);
    }
 
+   @Override
+   public void addUserToWorkflow(Node node) {
+      addUserToWorkflow(node, TYPE_CONTENT);
+   }
+
 }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to