Map<String, GWTJahiaWorkflowHistoryProcess> gwtWorkflowsMap = new HashMap<String, GWTJahiaWorkflowHistoryProcess>();
List<WorkflowTask> tasks = service.getTasksForUser(user, locale);
for (WorkflowTask task : tasks) {
GWTJahiaWorkflowHistoryProcess gwtWfHistory = gwtWorkflowsMap.get(task.getProcessId());
if (gwtWfHistory == null) {
gwtWfHistory = getGWTJahiaHistoryProcess(service.getHistoryWorkflow(task.getProcessId(), task.getProvider(), locale));
try {
JCRNodeWrapper nodeWrapper = JCRSessionFactory.getInstance().getCurrentUserSession(null,locale).getNodeByIdentifier(
gwtWfHistory.getNodeId());
gwtWfHistory.set("nodeWrapper", ((NavigationHelper)SpringContextSingleton.getInstance().getContext().getBeansOfType(NavigationHelper.class).values().iterator().next()).getGWTJahiaNode(nodeWrapper));
} catch (ItemNotFoundException e) {
continue;
} catch (RepositoryException e) {
logger.warn(e.getMessage(), e);
continue;
}
gwtWfHistory.setAvailableTasks(new ArrayList<GWTJahiaWorkflowTask>());
gwtWorkflowsMap.put(task.getProcessId(), gwtWfHistory);
gwtWorkflows.add(gwtWfHistory);
final Workflow wf = WorkflowService.getInstance().getWorkflow(gwtWfHistory.getProvider(), gwtWfHistory.getProcessId(), locale);
if(wf!=null) {
gwtWfHistory.setRunningWorkflow(getGWTJahiaWorkflow(wf));
}
}
gwtWfHistory.getAvailableTasks().add(getGWTJahiaWorkflowTask(task));
}
List<Workflow> workflows = service.getWorkflowsForUser(user, locale);
for (Workflow wf : workflows) {
GWTJahiaWorkflowHistoryProcess gwtWfHistory = gwtWorkflowsMap.get(wf.getId());
if (gwtWfHistory == null) {
gwtWfHistory = getGWTJahiaHistoryProcess(service.getHistoryWorkflow(wf.getId(), wf.getProvider(), locale));
try {
JCRNodeWrapper nodeWrapper = JCRSessionFactory.getInstance().getCurrentUserSession(org.jahia.api.Constants.EDIT_WORKSPACE,locale).getNodeByIdentifier(
gwtWfHistory.getNodeId());
gwtWfHistory.set("nodeWrapper", ((NavigationHelper)SpringContextSingleton.getInstance().getContext().getBeansOfType(NavigationHelper.class).values().iterator().next()).getGWTJahiaNode(nodeWrapper));
} catch (RepositoryException e) {
logger.warn(e.getMessage(), e);
continue;
}
gwtWorkflowsMap.put(wf.getId(), gwtWfHistory);
gwtWorkflows.add(gwtWfHistory);
gwtWfHistory.setRunningWorkflow(getGWTJahiaWorkflow(wf));
gwtWfHistory.setAvailableTasks(new ArrayList<GWTJahiaWorkflowTask>());
}
}
return gwtWorkflows;
}