Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. package com.matteopelucco.workflow;
  2.  
  3. import info.magnolia.context.Context;
  4. import info.magnolia.module.workflow.api.WorkflowConstants;
  5. import info.magnolia.module.workflow.jbpm.humantask.HumanTask;
  6. import info.magnolia.module.workflow.jbpm.humantask.definition.PublicationTaskDefinition;
  7. import info.magnolia.module.workflow.jbpm.humantask.parameter.PublicationTaskParameterResolver;
  8.  
  9. import java.text.ParseException;
  10. import java.util.Date;
  11. import java.util.HashMap;
  12. import java.util.List;
  13. import java.util.Map;
  14.  
  15. import org.apache.commons.lang3.StringUtils;
  16. import org.kie.api.runtime.process.WorkItem;
  17. import org.slf4j.Logger;
  18. import org.slf4j.LoggerFactory;
  19.  
  20. public class ExtendedPublicationTaskParameterResolver extends PublicationTaskParameterResolver {
  21.  
  22.     private static final Logger log = LoggerFactory.getLogger(ExtendedPublicationTaskParameterResolver.class);
  23.    
  24.     public ExtendedPublicationTaskParameterResolver(PublicationTaskDefinition definition) {
  25.         super(definition);
  26.     }
  27.  
  28.     @Override
  29.     public void setTaskParameters(HumanTask task, WorkItem workItem) {
  30.         super.setTaskParameters(task, workItem);
  31.  
  32.         // EXTENDED LOGIC
  33.         PublicationTaskDefinition definition = getDefinition();
  34.         if (definition instanceof ExtendedConfiguredPublicationTaskDefinition) {
  35.             ExtendedConfiguredPublicationTaskDefinition extendedDefinition = (ExtendedConfiguredPublicationTaskDefinition) definition;
  36.             List<GroupsMapping> groupsMapping = extendedDefinition.getGroupsMapping();
  37.  
  38.             forLoop: for (GroupsMapping groupsMap : groupsMapping) {
  39.  
  40.                 final String path = (String) task.getContent().get(Context.ATTRIBUTE_PATH);
  41.                 final String workspace = (String) task.getContent().get(Context.ATTRIBUTE_REPOSITORY);
  42.  
  43.                 if (StringUtils.equals(groupsMap.getWorkspace(), workspace) && StringUtils.startsWith(path, groupsMap.getPath())) {
  44.                     // mapping found!
  45.  
  46.                     List<String> groupIds = groupsMap.getGroups();
  47.                     task.setGroupIds(groupIds);
  48.                     continue forLoop;
  49.                 }
  50.  
  51.                 task.getPath();
  52.             }
  53.  
  54.         }
  55.  
  56.     }
  57.  
  58. }