package com.matteopelucco.workflow;
import info.magnolia.context.Context;
import info.magnolia.module.workflow.api.WorkflowConstants;
import info.magnolia.module.workflow.jbpm.humantask.HumanTask;
import info.magnolia.module.workflow.jbpm.humantask.definition.PublicationTaskDefinition;
import info.magnolia.module.workflow.jbpm.humantask.parameter.PublicationTaskParameterResolver;
import java.text.ParseException;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.kie.api.runtime.process.WorkItem;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ExtendedPublicationTaskParameterResolver extends PublicationTaskParameterResolver {
private static final Logger log = LoggerFactory.getLogger(ExtendedPublicationTaskParameterResolver.class);
public ExtendedPublicationTaskParameterResolver(PublicationTaskDefinition definition) {
super(definition);
}
@Override
public void setTaskParameters(HumanTask task, WorkItem workItem) {
super.setTaskParameters(task, workItem);
// EXTENDED LOGIC
PublicationTaskDefinition definition = getDefinition();
if (definition instanceof ExtendedConfiguredPublicationTaskDefinition) {
ExtendedConfiguredPublicationTaskDefinition extendedDefinition = (ExtendedConfiguredPublicationTaskDefinition) definition;
List<GroupsMapping> groupsMapping = extendedDefinition.getGroupsMapping();
forLoop: for (GroupsMapping groupsMap : groupsMapping) {
final String path = (String) task.getContent().get(Context.ATTRIBUTE_PATH);
final String workspace = (String) task.getContent().get(Context.ATTRIBUTE_REPOSITORY);
if (StringUtils.equals(groupsMap.getWorkspace(), workspace) && StringUtils.startsWith(path, groupsMap.getPath())) {
// mapping found!
List<String> groupIds = groupsMap.getGroups();
task.setGroupIds(groupIds);
continue forLoop;
}
task.getPath();
}
}
}
}