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

Modified Files:
        ContentWorkflow.java AssetWorkflow.java WorkflowManager.java 
        RepositoryWorkflow.java 
Log Message:
CMSC-1087 -changes the status box of a page to a dynamic tree in the Workflow 
section of the CMSc


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-1087


Index: ContentWorkflow.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Modules/workflow/src/java/com/finalist/cmsc/workflow/ContentWorkflow.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- ContentWorkflow.java        11 Nov 2008 08:03:22 -0000      1.10
+++ ContentWorkflow.java        18 Nov 2008 01:44:57 -0000      1.11
@@ -29,6 +29,10 @@
    private static final Logger log = 
Logging.getLoggerInstance(ContentWorkflow.class.getName());
 
    public static final String TYPE_CONTENT = "content";
+   public static final String NODETYPE_ARTICLE = "article";
+   public static final String NODETYPE_BANNERS = "banners";
+   public static final String NODETYPE_LINK = "link";
+   public static final String NODETYPE_FAQITEM = "faqitem";
 
 
    public ContentWorkflow(Cloud cloud) {


Index: AssetWorkflow.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Modules/workflow/src/java/com/finalist/cmsc/workflow/AssetWorkflow.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- AssetWorkflow.java  11 Nov 2008 08:03:22 -0000      1.2
+++ AssetWorkflow.java  18 Nov 2008 01:44:57 -0000      1.3
@@ -29,6 +29,9 @@
    private static final Logger log = 
Logging.getLoggerInstance(AssetWorkflow.class.getName());
 
    public static final String TYPE_ASSET = "asset";
+   public static final String NODETYPE_IMAGES = "images";
+   public static final String NODETYPE_ATTACHMENTS = "attachments";
+   public static final String NODETYPE_URLS = "urls";
 
 
    public AssetWorkflow(Cloud cloud) {


Index: WorkflowManager.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Modules/workflow/src/java/com/finalist/cmsc/workflow/WorkflowManager.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- WorkflowManager.java        11 Nov 2008 08:03:22 -0000      1.18
+++ WorkflowManager.java        18 Nov 2008 01:44:57 -0000      1.19
@@ -1,18 +1,37 @@
 package com.finalist.cmsc.workflow;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
 
 import org.apache.commons.lang.StringUtils;
-import org.mmbase.bridge.*;
+import org.mmbase.bridge.Cloud;
+import org.mmbase.bridge.Field;
+import org.mmbase.bridge.Node;
+import org.mmbase.bridge.NodeList;
+import org.mmbase.bridge.NodeManager;
+import org.mmbase.bridge.NodeQuery;
+import org.mmbase.bridge.Query;
+import org.mmbase.bridge.RelationManager;
 import org.mmbase.module.core.MMBase;
 import org.mmbase.module.core.MMObjectBuilder;
 import org.mmbase.module.core.MMObjectNode;
-import org.mmbase.storage.search.*;
+import org.mmbase.storage.search.AggregatedField;
+import org.mmbase.storage.search.CompositeConstraint;
+import org.mmbase.storage.search.Constraint;
+import org.mmbase.storage.search.FieldCompareConstraint;
+import org.mmbase.storage.search.FieldValueConstraint;
+import org.mmbase.storage.search.RelationStep;
+import org.mmbase.storage.search.Step;
 import org.mmbase.util.logging.Logger;
 import org.mmbase.util.logging.Logging;
 
 import com.finalist.cmsc.mmbase.RelationUtil;
-import com.finalist.cmsc.security.*;
+import com.finalist.cmsc.security.Role;
+import com.finalist.cmsc.security.SecurityUtil;
+import com.finalist.cmsc.security.UserRole;
 import com.finalist.cmsc.services.publish.Publish;
 import com.finalist.cmsc.services.workflow.Workflow;
 import com.finalist.cmsc.services.workflow.WorkflowException;
@@ -88,6 +107,19 @@
       return null;
    }
 
+   protected Node getWorkflowNode(Node node, String type, String nodetype) {
+      NodeList list = getWorkflows(node);
+      for (Iterator<Node> iter = list.iterator(); iter.hasNext();) {
+         Node workflow = iter.next();
+         if 
(!workflow.getStringValue(TYPE_FIELD).equals(type)||!workflow.getStringValue(NODETYPE_FIELD).equals(nodetype))
 {
+            iter.remove();
+         }
+      }
+      if (!list.isEmpty()) {
+         return list.getNode(0);
+      }
+      return null;
+   }
 
    /**
     * Check if a contentnode has a workflow
@@ -105,6 +137,15 @@
       return !list.isEmpty();
    }
 
+   protected boolean hasWorkflow(Node node, String type, String nodetype) {
+      if (!isWorkflowElement(node, false)) {
+         return false;
+      }
+      NodeList list = getWorkflows(node, type, nodetype);
+      log.debug("Node " + node.getNumber() + " has workflow " + 
!list.isEmpty());
+      return !list.isEmpty();
+   }
+
    protected void addUserToWorkflow(Node node, String type) {
       Node user = SecurityUtil.getUserNode(cloud);
 
@@ -125,6 +166,25 @@
       }
    }
 
+   protected void addUserToWorkflow(Node node, String type, String nodetype) {
+      Node user = SecurityUtil.getUserNode(cloud);
+
+      NodeList items = getWorkflows(node, type, nodetype);
+      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);
 
@@ -254,6 +314,18 @@
       return list;
    }
 
+   protected NodeList getWorkflows(Node node, String type, String nodetype) {
+      NodeList list = getWorkflows(node);
+      if (!TYPE_ALL.equals(type)) {
+         for (Iterator<Node> iter = list.iterator(); iter.hasNext();) {
+            Node workflow = iter.next();
+            if 
(!workflow.getStringValue(TYPE_FIELD).equals(type)||!workflow.getStringValue(NODETYPE_FIELD).equals(nodetype))
 {
+               iter.remove();
+            }
+         }
+      }
+      return list;
+   }
 
    /**
     * Get status of the workflow of a node
@@ -495,6 +567,14 @@
       }
    }
 
+   protected void complete(Node contentNode, String type, String nodetype) {
+      NodeList workflows = getWorkflows(contentNode, type, nodetype);
+      for (Iterator<Node> iter = workflows.iterator(); iter.hasNext();) {
+         Node workflow = iter.next();
+         deleteWorkflow(workflow);
+      }
+   }
+
 
    private void deleteWorkflow(Node workflow) {
       removeRelationsToUsers(workflow);
@@ -567,11 +647,26 @@
 
    public static Constraint getTypeConstraint(NodeQuery query, String type) {
       Field field = getManager(query.getCloud()).getField(TYPE_FIELD);
-      FieldValueConstraint constraint = 
query.createConstraint(query.getStepField(field), FieldCompareConstraint.EQUAL,
+      Constraint constraint;
+      
if(StringUtils.isNotBlank(type)&&RepositoryWorkflow.TYPE_ALLCONTENT.equals(type)){
+         FieldValueConstraint contentConstraint = 
query.createConstraint(query.getStepField(field), FieldCompareConstraint.EQUAL,
+               ContentWorkflow.TYPE_CONTENT);
+         FieldValueConstraint assetConstraint = 
query.createConstraint(query.getStepField(field), FieldCompareConstraint.EQUAL,
+               AssetWorkflow.TYPE_ASSET);
+         constraint = query.createConstraint(contentConstraint, 
CompositeConstraint.LOGICAL_OR, assetConstraint);
+      }else{
+         constraint = query.createConstraint(query.getStepField(field), 
FieldCompareConstraint.EQUAL,
             type);
+      }
       return constraint;
    }
 
+   public static Constraint getNodetypeConstraint(NodeQuery query, String 
nodetype) {
+      Field field = getManager(query.getCloud()).getField(NODETYPE_FIELD);
+      FieldValueConstraint constraint = 
query.createConstraint(query.getStepField(field), FieldCompareConstraint.EQUAL,
+            nodetype);
+      return constraint;
+   }
 
    public static Query createStatusQuery(Cloud cloud) {
       Node userNode = SecurityUtil.getUserNode(cloud);
@@ -588,6 +683,7 @@
       Query clone = query.aggregatingClone();
 
       clone.addAggregatedField(step3, workflowManager.getField(TYPE_FIELD), 
AggregatedField.AGGREGATION_TYPE_GROUP_BY);
+      clone.addAggregatedField(step3, 
workflowManager.getField(NODETYPE_FIELD), 
AggregatedField.AGGREGATION_TYPE_GROUP_BY);
       clone
             .addAggregatedField(step3, workflowManager.getField(STATUS_FIELD),
                   AggregatedField.AGGREGATION_TYPE_GROUP_BY);


Index: RepositoryWorkflow.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Modules/workflow/src/java/com/finalist/cmsc/workflow/RepositoryWorkflow.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- RepositoryWorkflow.java     10 Nov 2008 05:47:07 -0000      1.6
+++ RepositoryWorkflow.java     18 Nov 2008 01:44:57 -0000      1.7
@@ -18,6 +18,8 @@
 
 public abstract class RepositoryWorkflow extends WorkflowManager {
 
+   public static final String TYPE_ALLCONTENT = "allcontent";
+
    public RepositoryWorkflow(Cloud cloud) {
       super(cloud);
    }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to