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);
protected static final String ATTRIBUTE_ALERT = "alert";
public ExtendedPublicationTaskParameterResolver(PublicationTaskDefinition definition) {
super(definition);
}
@Override
public void setTaskParameters(HumanTask task, WorkItem workItem) {
String taskName = (String) workItem.getParameter(TASK_NAME);
task.setName(taskName);
task.setActorIds(getDefinition().getActors());
task.setGroupIds(getDefinition().getGroups());
Map<String, Object> content = (Map<String, Object>) workItem.getParameter(WorkflowConstants.VARIABLE_DATA);
if (content != null) {
task.setComment((String) content.get(Context.ATTRIBUTE_COMMENT));
task.setRequestor((String) content.get(Context.ATTRIBUTE_REQUESTOR));
setTaskContent(task, content);
}
}
private void setTaskContent(HumanTask task, final Map<String, Object> content) {
Map<String, Object> taskContent = new HashMap<String, Object>() {
{
put(Context.ATTRIBUTE_REPOSITORY, content.get(Context.ATTRIBUTE_REPOSITORY));
put(Context.ATTRIBUTE_PATH, content.get(Context.ATTRIBUTE_PATH));
put(Context.ATTRIBUTE_UUID, content.get(Context.ATTRIBUTE_UUID));
put(Context.ATTRIBUTE_RECURSIVE, content.get(Context.ATTRIBUTE_RECURSIVE));
put(Context.ATTRIBUTE_COMMENT, content.get(Context.ATTRIBUTE_COMMENT));
put(WorkflowConstants.ATTRIBUTE_REQUESTOR, content.get(WorkflowConstants.ATTRIBUTE_REQUESTOR));
put(WorkflowConstants.PUBLICATION_DATE, getDate(content.get(WorkflowConstants.PUBLICATION_DATE)));
// additional parameters
put(ATTRIBUTE_ALERT, content.get(ATTRIBUTE_ALERT));
}
};
task.setContent(taskContent);
}
private Date getDate(Object dateString) {
// nothing changed here
}
}