diff --git a/source/java/org/alfresco/repo/forms/processor/workflow/TaskFormProcessor.java b/source/java/org/alfresco/repo/forms/processor/workflow/TaskFormProcessor.java index 57e069ce7a..bf38b3c9bd 100644 --- a/source/java/org/alfresco/repo/forms/processor/workflow/TaskFormProcessor.java +++ b/source/java/org/alfresco/repo/forms/processor/workflow/TaskFormProcessor.java @@ -26,13 +26,15 @@ package org.alfresco.repo.forms.processor.workflow; import java.io.Serializable; -import java.util.Collections; +import java.util.HashMap; +import java.util.List; import java.util.Map; import org.alfresco.repo.forms.processor.FieldProcessorRegistry; import org.alfresco.repo.forms.processor.node.ItemData; import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.dictionary.TypeDefinition; +import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.workflow.WorkflowService; import org.alfresco.service.cmr.workflow.WorkflowTask; import org.alfresco.service.cmr.workflow.WorkflowTransition; @@ -40,6 +42,7 @@ import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.springframework.util.StringUtils; /** * @author Nick Smith @@ -133,11 +136,29 @@ public class TaskFormProcessor extends AbstractWorkflowFormProcessor getTransientValues(WorkflowTask item) + { + Map values = new HashMap(2); + values.put(TransitionFieldProcessor.KEY, getTransitionValues(item)); + values.put(PackageItemsFieldProcessor.KEY, getPackageItemValues(item)); + return values; + } + + /** + * @param item + * @return + */ + private Object getPackageItemValues(WorkflowTask item) + { + List items = workflowService.getPackageContents(item.getId()); + return StringUtils.collectionToCommaDelimitedString(items); + } + + private String getTransitionValues(WorkflowTask item) { StringBuilder builder = new StringBuilder(); WorkflowTransition[] transitions = item.definition.node.transitions; if(transitions == null) - return Collections.singletonMap(TransitionFieldProcessor.KEY, ""); + return ""; for (WorkflowTransition transition : transitions) { builder.append(transition.getId()); @@ -146,8 +167,7 @@ public class TaskFormProcessor extends AbstractWorkflowFormProcessorsingletonMap(TransitionFieldProcessor.KEY, values); + return builder.toString(); } /* (non-Javadoc) diff --git a/source/java/org/alfresco/repo/forms/processor/workflow/TaskFormProcessorTest.java b/source/java/org/alfresco/repo/forms/processor/workflow/TaskFormProcessorTest.java index b002d96634..9f9cf46eeb 100644 --- a/source/java/org/alfresco/repo/forms/processor/workflow/TaskFormProcessorTest.java +++ b/source/java/org/alfresco/repo/forms/processor/workflow/TaskFormProcessorTest.java @@ -87,6 +87,8 @@ public class TaskFormProcessorTest extends TestCase private static final QName ASSIGNEE_NAME = WorkflowModel.ASSOC_ASSIGNEE; private static final QName ASSOC_WITH_ = QName.createQName(NamespaceService.BPM_MODEL_1_0_URI, "some_assoc"); private static final NodeRef FAKE_NODE = new NodeRef(NamespaceService.BPM_MODEL_1_0_URI + "/FakeNode"); + private static final NodeRef FAKE_NODE2 = new NodeRef(NamespaceService.BPM_MODEL_1_0_URI + "/FakeNode2"); + private static final NodeRef FAKE_NODE3 = new NodeRef(NamespaceService.BPM_MODEL_1_0_URI + "/FakeNode3"); private static final NodeRef PCKG_NODE = new NodeRef(NamespaceService.BPM_MODEL_1_0_URI + "/FakePackage"); private WorkflowService workflowService; @@ -194,15 +196,15 @@ public class TaskFormProcessorTest extends TestCase { Form form = processForm(); List fieldDefs = form.getFieldDefinitionNames(); - assertEquals(9, fieldDefs.size()); assertTrue(fieldDefs.contains(ASSIGNEE_NAME.toPrefixString(namespaceService))); assertTrue(fieldDefs.contains(ACTORS_NAME.toPrefixString(namespaceService))); assertTrue(fieldDefs.contains(DESC_NAME.toPrefixString(namespaceService))); assertTrue(fieldDefs.contains(STATUS_NAME.toPrefixString(namespaceService))); + assertTrue(fieldDefs.contains(PackageItemsFieldProcessor.KEY)); + assertTrue(fieldDefs.contains(TransitionFieldProcessor.KEY)); Serializable fieldData = (Serializable) Arrays.asList(FAKE_NODE.toString()); FormData formData = form.getFormData(); - assertEquals(7, formData.getNumberOfFields()); assertEquals(fieldData, formData.getFieldData("assoc_bpm_assignee").getValue()); checkPackageActionGroups(formData); assertEquals(WorkflowTaskState.IN_PROGRESS, formData.getFieldData("prop_bpm_status").getValue()); @@ -229,6 +231,25 @@ public class TaskFormProcessorTest extends TestCase checkSingleProperty(form, fieldName, transitionValues); } + + public void testGeneratePackageItems() throws Exception + { + // Check empty package + String fieldName = PackageItemsFieldProcessor.KEY; + Form form = processForm(fieldName); + String packageItems = ""; + checkSingleAssociation(form, fieldName, packageItems); + + // Effectively add 3 items to package. + List value = Arrays.asList(FAKE_NODE, FAKE_NODE2, FAKE_NODE3); + when(workflowService.getPackageContents(TASK_ID)) + .thenReturn(value); + + form = processForm(fieldName); + packageItems = FAKE_NODE+","+FAKE_NODE2+","+FAKE_NODE3; + checkSingleAssociation(form, fieldName, packageItems); + } + private WorkflowTransition makeTransition(String id, String title) { WorkflowTransition transition = new WorkflowTransition(); @@ -311,11 +332,6 @@ public class TaskFormProcessorTest extends TestCase assertTrue(nodeRefs.contains(new NodeRef(nodeRef1))); assertTrue(nodeRefs.contains(new NodeRef(nodeRef2))); } - - public void testPackageItems() throws Exception - { - //TODO Implement test. - } private void processPersist(String dataKey, String value) {