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:
N Smith
2010-07-23 13:34:55 +00:00
parent 41c4dc19fc
commit 1d8563c867
2 changed files with 47 additions and 11 deletions

View File

@@ -26,13 +26,15 @@
package org.alfresco.repo.forms.processor.workflow; package org.alfresco.repo.forms.processor.workflow;
import java.io.Serializable; import java.io.Serializable;
import java.util.Collections; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import org.alfresco.repo.forms.processor.FieldProcessorRegistry; import org.alfresco.repo.forms.processor.FieldProcessorRegistry;
import org.alfresco.repo.forms.processor.node.ItemData; import org.alfresco.repo.forms.processor.node.ItemData;
import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.dictionary.TypeDefinition; 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.WorkflowService;
import org.alfresco.service.cmr.workflow.WorkflowTask; import org.alfresco.service.cmr.workflow.WorkflowTask;
import org.alfresco.service.cmr.workflow.WorkflowTransition; 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.alfresco.service.namespace.QName;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.springframework.util.StringUtils;
/** /**
* @author Nick Smith * @author Nick Smith
@@ -133,11 +136,29 @@ public class TaskFormProcessor extends AbstractWorkflowFormProcessor<WorkflowTas
@Override @Override
protected Map<String, Object> getTransientValues(WorkflowTask item) 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(); StringBuilder builder = new StringBuilder();
WorkflowTransition[] transitions = item.definition.node.transitions; WorkflowTransition[] transitions = item.definition.node.transitions;
if(transitions == null) if(transitions == null)
return Collections.<String, Object>singletonMap(TransitionFieldProcessor.KEY, ""); return "";
for (WorkflowTransition transition : transitions) for (WorkflowTransition transition : transitions)
{ {
builder.append(transition.getId()); builder.append(transition.getId());
@@ -146,8 +167,7 @@ public class TaskFormProcessor extends AbstractWorkflowFormProcessor<WorkflowTas
builder.append(","); builder.append(",");
} }
builder.deleteCharAt(builder.length()-1); builder.deleteCharAt(builder.length()-1);
String values = builder.toString(); return builder.toString();
return Collections.<String, Object>singletonMap(TransitionFieldProcessor.KEY, values);
} }
/* (non-Javadoc) /* (non-Javadoc)

View File

@@ -87,6 +87,8 @@ public class TaskFormProcessorTest extends TestCase
private static final QName ASSIGNEE_NAME = WorkflowModel.ASSOC_ASSIGNEE; 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 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_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 static final NodeRef PCKG_NODE = new NodeRef(NamespaceService.BPM_MODEL_1_0_URI + "/FakePackage");
private WorkflowService workflowService; private WorkflowService workflowService;
@@ -194,15 +196,15 @@ public class TaskFormProcessorTest extends TestCase
{ {
Form form = processForm(); Form form = processForm();
List<String> fieldDefs = form.getFieldDefinitionNames(); List<String> fieldDefs = form.getFieldDefinitionNames();
assertEquals(9, fieldDefs.size());
assertTrue(fieldDefs.contains(ASSIGNEE_NAME.toPrefixString(namespaceService))); assertTrue(fieldDefs.contains(ASSIGNEE_NAME.toPrefixString(namespaceService)));
assertTrue(fieldDefs.contains(ACTORS_NAME.toPrefixString(namespaceService))); assertTrue(fieldDefs.contains(ACTORS_NAME.toPrefixString(namespaceService)));
assertTrue(fieldDefs.contains(DESC_NAME.toPrefixString(namespaceService))); assertTrue(fieldDefs.contains(DESC_NAME.toPrefixString(namespaceService)));
assertTrue(fieldDefs.contains(STATUS_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()); Serializable fieldData = (Serializable) Arrays.asList(FAKE_NODE.toString());
FormData formData = form.getFormData(); FormData formData = form.getFormData();
assertEquals(7, formData.getNumberOfFields());
assertEquals(fieldData, formData.getFieldData("assoc_bpm_assignee").getValue()); assertEquals(fieldData, formData.getFieldData("assoc_bpm_assignee").getValue());
checkPackageActionGroups(formData); checkPackageActionGroups(formData);
assertEquals(WorkflowTaskState.IN_PROGRESS, formData.getFieldData("prop_bpm_status").getValue()); assertEquals(WorkflowTaskState.IN_PROGRESS, formData.getFieldData("prop_bpm_status").getValue());
@@ -229,6 +231,25 @@ public class TaskFormProcessorTest extends TestCase
checkSingleProperty(form, fieldName, transitionValues); 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) private WorkflowTransition makeTransition(String id, String title)
{ {
WorkflowTransition transition = new WorkflowTransition(); WorkflowTransition transition = new WorkflowTransition();
@@ -312,11 +333,6 @@ public class TaskFormProcessorTest extends TestCase
assertTrue(nodeRefs.contains(new NodeRef(nodeRef2))); assertTrue(nodeRefs.contains(new NodeRef(nodeRef2)));
} }
public void testPackageItems() throws Exception
{
//TODO Implement test.
}
private void processPersist(String dataKey, String value) private void processPersist(String dataKey, String value)
{ {
FormData data = new FormData(); FormData data = new FormData();