mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged V3.2 to HEAD
17307: Merged DEV/BELARUS/V3.2-2009_10_19 to V3.2 17121: ETHREEOH-2999: Accessing Recent snapshots fails in a web project that is created from an already existing project 17223: ETHREEEOH-2999: (post-review changes) 17346: ETHREEOH-2824 - further perf improvement for multiple single submits (to active workflow sandboxes) from large modified list 17375: Fix ETHREEOH-1643 - WCM revert file & version history, including a few unreported WCM / UI revert file issues 17380: ETHREEOH-1643 - fix build/test fallout git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@18110 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
*/
|
||||
package org.alfresco.wcm.util;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
@@ -36,6 +37,8 @@ import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
|
||||
import org.alfresco.service.cmr.avm.AVMNotFoundException;
|
||||
import org.alfresco.service.cmr.avm.AVMService;
|
||||
import org.alfresco.service.cmr.avm.LayeringDescriptor;
|
||||
import org.alfresco.service.cmr.avmsync.AVMDifference;
|
||||
import org.alfresco.service.cmr.avmsync.AVMSyncService;
|
||||
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowService;
|
||||
@@ -56,7 +59,7 @@ import org.apache.commons.logging.LogFactory;
|
||||
public class WCMWorkflowUtil
|
||||
{
|
||||
private static final Log logger = LogFactory.getLog(WCMWorkflowUtil.class);
|
||||
|
||||
|
||||
public static NodeRef createWorkflowPackage(WorkflowService workflowService, AVMService avmService, SandboxInfo sandboxInfo)
|
||||
{
|
||||
// create package paths (layered to user sandbox area as target)
|
||||
@@ -81,25 +84,30 @@ public class WCMWorkflowUtil
|
||||
|
||||
public static List<WorkflowTask> getAssociatedTasksForSandbox(WorkflowService workflowService, final String storeName)
|
||||
{
|
||||
long start = System.currentTimeMillis();
|
||||
|
||||
String fromPath = WCMUtil.buildStoreRootPath(storeName);
|
||||
WorkflowTaskQuery query = new WorkflowTaskQuery();
|
||||
|
||||
|
||||
HashMap<QName, Object> props = new HashMap<QName, Object>(1, 1.0f);
|
||||
|
||||
|
||||
props.put(WCMWorkflowModel.PROP_FROM_PATH, fromPath);
|
||||
query.setProcessCustomProps(props);
|
||||
query.setActive(true);
|
||||
|
||||
|
||||
List<WorkflowTask> tasks = workflowService.queryTasks(query);
|
||||
|
||||
if (logger.isDebugEnabled())
|
||||
|
||||
if (logger.isTraceEnabled())
|
||||
{
|
||||
logger.debug("found " + tasks.size() + " tasks originating user sandbox " + fromPath);
|
||||
logger.trace("getAssociatedTasksForSandbox: "+storeName+" (found "+tasks.size()+" tasks originating user sandbox "+fromPath+") in "+(System.currentTimeMillis()-start)+" msecs");
|
||||
}
|
||||
|
||||
return tasks;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @deprecated since 3.2
|
||||
*/
|
||||
public static List<WorkflowTask> getAssociatedTasksForNode(AVMService avmService, AVMNodeDescriptor node, List<WorkflowTask> tasks)
|
||||
{
|
||||
List<WorkflowTask> result = new LinkedList<WorkflowTask>();
|
||||
@@ -139,10 +147,58 @@ public class WCMWorkflowUtil
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @deprecated since 3.2
|
||||
*/
|
||||
public static List<WorkflowTask> getAssociatedTasksForNode(WorkflowService workflowService, AVMService avmService, AVMNodeDescriptor node)
|
||||
{
|
||||
final List<WorkflowTask> tasks = WCMWorkflowUtil.getAssociatedTasksForSandbox(workflowService, WCMUtil.getSandboxStoreId(node.getPath()));
|
||||
final List<WorkflowTask> tasks = getAssociatedTasksForSandbox(workflowService, WCMUtil.getSandboxStoreId(node.getPath()));
|
||||
return getAssociatedTasksForNode(avmService, node, tasks);
|
||||
}
|
||||
|
||||
public static List<String> getAssociatedPathsForSandbox(AVMSyncService avmSyncService, WorkflowService workflowService, String sandboxName)
|
||||
{
|
||||
long start = System.currentTimeMillis();
|
||||
|
||||
List<WorkflowTask> tasks = getAssociatedTasksForSandbox(workflowService, sandboxName);
|
||||
List<String> storeRelativePaths = getAssociatedPathsForSandboxTasks(avmSyncService, sandboxName, tasks);
|
||||
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug("getAssociatedPathsForSandbox: "+sandboxName+" (tasks="+tasks.size()+", paths="+storeRelativePaths.size()+") in "+(System.currentTimeMillis()-start)+" msecs");
|
||||
}
|
||||
|
||||
return storeRelativePaths;
|
||||
}
|
||||
|
||||
private static List<String> getAssociatedPathsForSandboxTasks(AVMSyncService avmSyncService, String sandboxName, List<WorkflowTask> tasks)
|
||||
{
|
||||
long start = System.currentTimeMillis();
|
||||
|
||||
String stagingSandboxName = WCMUtil.buildStagingStoreName(WCMUtil.getWebProjectStoreId(sandboxName));
|
||||
List<String> storeRelativePaths = new ArrayList<String>(tasks.size());
|
||||
|
||||
for (WorkflowTask task : tasks)
|
||||
{
|
||||
final NodeRef ref = task.path.instance.workflowPackage;
|
||||
|
||||
String wfPath = AVMNodeConverter.ToAVMVersionPath(ref).getSecond();
|
||||
String stagingSandboxPath = WCMUtil.getCorrespondingPath(wfPath, stagingSandboxName);
|
||||
|
||||
List<AVMDifference> diffs = avmSyncService.compare(-1, wfPath, -1, stagingSandboxPath, null);
|
||||
|
||||
for (AVMDifference diff : diffs)
|
||||
{
|
||||
storeRelativePaths.add(WCMUtil.getStoreRelativePath(diff.getSourcePath()));
|
||||
}
|
||||
}
|
||||
|
||||
if (logger.isTraceEnabled())
|
||||
{
|
||||
logger.trace("getAssociatedPathsForSandboxTasks: "+sandboxName+" (tasks="+tasks.size()+", paths="+storeRelativePaths.size()+") in "+(System.currentTimeMillis()-start)+" msecs");
|
||||
}
|
||||
|
||||
return storeRelativePaths;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user