mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
TaskFormProcessor now displays package items correctly.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@21379 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -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<WorkflowTas
|
||||
|
||||
@Override
|
||||
protected Map<String, Object> getTransientValues(WorkflowTask item)
|
||||
{
|
||||
Map<String, Object> values = new HashMap<String, Object>(2);
|
||||
values.put(TransitionFieldProcessor.KEY, getTransitionValues(item));
|
||||
values.put(PackageItemsFieldProcessor.KEY, getPackageItemValues(item));
|
||||
return values;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param item
|
||||
* @return
|
||||
*/
|
||||
private Object getPackageItemValues(WorkflowTask item)
|
||||
{
|
||||
List<NodeRef> 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.<String, Object>singletonMap(TransitionFieldProcessor.KEY, "");
|
||||
return "";
|
||||
for (WorkflowTransition transition : transitions)
|
||||
{
|
||||
builder.append(transition.getId());
|
||||
@@ -146,8 +167,7 @@ public class TaskFormProcessor extends AbstractWorkflowFormProcessor<WorkflowTas
|
||||
builder.append(",");
|
||||
}
|
||||
builder.deleteCharAt(builder.length()-1);
|
||||
String values = builder.toString();
|
||||
return Collections.<String, Object>singletonMap(TransitionFieldProcessor.KEY, values);
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@@ -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<String> 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<NodeRef> 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();
|
||||
@@ -312,11 +333,6 @@ public class TaskFormProcessorTest extends TestCase
|
||||
assertTrue(nodeRefs.contains(new NodeRef(nodeRef2)));
|
||||
}
|
||||
|
||||
public void testPackageItems() throws Exception
|
||||
{
|
||||
//TODO Implement test.
|
||||
}
|
||||
|
||||
private void processPersist(String dataKey, String value)
|
||||
{
|
||||
FormData data = new FormData();
|
||||
|
Reference in New Issue
Block a user