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