From 3ea86fa1480aa9b205792a62d5fd07dfbdf9b606 Mon Sep 17 00:00:00 2001 From: roxana Date: Mon, 17 Oct 2016 11:01:22 +0300 Subject: [PATCH] Fixed tests (for disposition schedules with event based actions). --- .../disposition/DispositionServiceImpl.java | 66 ++++++++++++++----- .../UpdateNextDispositionActionTest.java | 8 +-- .../service/DispositionServiceImplTest.java | 2 +- 3 files changed, 51 insertions(+), 25 deletions(-) diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionServiceImpl.java index 317733d922..f46a83d810 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionServiceImpl.java @@ -70,6 +70,8 @@ public class DispositionServiceImpl extends ServiceBaseImpl { /** Logger */ private static final Logger LOGGER = LoggerFactory.getLogger(DispositionServiceImpl.class); + + private static final String PERIOD_IMMEDIATELY = "immediately"; /** Transaction mode for setting next action */ public enum WriteMode {READ_ONLY, DATE_ONLY, DATE_AND_NAME}; @@ -636,8 +638,14 @@ public class DispositionServiceImpl extends ServiceBaseImpl * @param dispositionActionDefinition disposition action definition * @param allowContextFromAsOf true if the context date is allowed to be obtained from the disposition "as of" property. */ - private void initialiseDispositionAction(NodeRef nodeRef, DispositionActionDefinition dispositionActionDefinition, boolean allowContextFromAsOf) + private DispositionAction initialiseDispositionAction(NodeRef nodeRef, DispositionActionDefinition dispositionActionDefinition, boolean allowContextFromAsOf) { + List childAssocs = nodeService.getChildAssocs(nodeRef, ASSOC_NEXT_DISPOSITION_ACTION, ASSOC_NEXT_DISPOSITION_ACTION, 1, true); + if (childAssocs != null && childAssocs.size() > 0) + { + return new DispositionActionImpl(serviceRegistry, childAssocs.get(0).getChildRef()); + } + // Create the properties Map props = new HashMap(10); @@ -667,6 +675,7 @@ public class DispositionServiceImpl extends ServiceBaseImpl // For every event create an entry on the action da.addEventCompletionDetails(event); } + return da; } /** @@ -699,7 +708,7 @@ public class DispositionServiceImpl extends ServiceBaseImpl } else { - if (period.getPeriodType().equals("immediately")) + if (period.getPeriodType().equals(PERIOD_IMMEDIATELY)) { contextDate = (Date)nodeService.getProperty(nodeRef, ContentModel.PROP_CREATED); } @@ -1130,20 +1139,36 @@ public class DispositionServiceImpl extends ServiceBaseImpl } } } - if (nextDispositionActionDate == null || dispositionNodeRef == null) + if (dispositionNodeRef == null) { return null; } WriteMode mode = null; - if (!nextDispositionActionDate.equals(recordNextDispositionActionDate) - && recordNextDispositionActionDate.before(nextDispositionActionDate)) + if (recordNextDispositionActionDate != null) { - mode = WriteMode.DATE_ONLY; + if ((nextDispositionActionDate == null) + || (!nextDispositionActionDate.equals(recordNextDispositionActionDate) + && recordNextDispositionActionDate.before(nextDispositionActionDate))) + { + mode = WriteMode.DATE_ONLY; + } + else + { + mode = WriteMode.READ_ONLY; + } } else { - mode = WriteMode.READ_ONLY; + if (nextDispositionActionDate != null) + { + mode = WriteMode.DATE_ONLY; + } + else + { + mode = WriteMode.READ_ONLY; + } } + return new NextActionFromDisposition(dispositionNodeRef, nextDispositionAction.getNodeRef(), recordNextDispositionActionName, nextDispositionActionDate, mode); } @@ -1164,28 +1189,33 @@ public class DispositionServiceImpl extends ServiceBaseImpl NodeRef folderDS = getDispositionScheduleImpl(folder); if (folderDS != null) { - List assocs = nodeService.getChildAssocs(folderDS); - if (assocs != null && assocs.size() > 0) + DispositionSchedule ds = new DispositionScheduleImpl(serviceRegistry, nodeService, folderDS); + List dispositionActionDefinitions = ds.getDispositionActionDefinitions(); + + if (dispositionActionDefinitions != null && dispositionActionDefinitions.size() > 0) { - NodeRef firstAction = assocs.get(0).getChildRef(); - DispositionAction firstDispositionAction = new DispositionActionImpl(serviceRegistry, firstAction); + DispositionActionDefinition firstDispositionActionDef = dispositionActionDefinitions.get(0); if (newAction == null) { - newAction = firstAction; + DispositionAction firstDispositionAction = initialiseDispositionAction(record, firstDispositionActionDef, true); + newAction = firstDispositionAction.getNodeRef(); newDispositionActionName = (String)nodeService.getProperty(newAction, PROP_DISPOSITION_ACTION_NAME); - newDispositionActionDateAsOf = getDispositionActionDate(record, folderDS, newDispositionActionName); - } - else if (firstDispositionAction.getAsOfDate() != null && newDispositionActionDateAsOf.before(firstDispositionAction.getAsOfDate())) - { - newDispositionActionName = (String)nodeService.getProperty(firstAction, PROP_DISPOSITION_ACTION_NAME); newDispositionActionDateAsOf = firstDispositionAction.getAsOfDate(); } + else if (firstDispositionActionDef.getPeriod() != null) { + Date firstActionDate = calculateAsOfDate(record, firstDispositionActionDef, true); + if (newDispositionActionDateAsOf.before(firstActionDate)) + { + newDispositionActionName =firstDispositionActionDef.getName(); + newDispositionActionDateAsOf = firstActionDate; + } + } dispositionNodeRef = folderDS; } } } - if (newDispositionActionName == null || newDispositionActionDateAsOf == null + if (newDispositionActionName == null || dispositionNodeRef == null || newAction == null) { return null; diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/disposition/UpdateNextDispositionActionTest.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/disposition/UpdateNextDispositionActionTest.java index b8d6dcb618..d8dbb0b078 100644 --- a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/disposition/UpdateNextDispositionActionTest.java +++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/disposition/UpdateNextDispositionActionTest.java @@ -36,6 +36,7 @@ import org.alfresco.module.org_alfresco_module_rm.action.impl.EditDispositionAct import org.alfresco.module.org_alfresco_module_rm.action.impl.TransferAction; import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSchedule; import org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase; +import org.alfresco.module.org_alfresco_module_rm.test.util.CommonRMTestUtils; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.namespace.QName; @@ -95,11 +96,6 @@ public class UpdateNextDispositionActionTest extends BaseRMTestCase // complete record utils.completeRecord(record); - // set the disposition as of date to now on the record - rmActionService.executeRecordsManagementAction(record, - EditDispositionActionAsOfDateAction.NAME, - Collections.singletonMap(EditDispositionActionAsOfDateAction.PARAM_AS_OF_DATE, (Serializable)new Date())); - // cut off rmActionService.executeRecordsManagementAction(record, CutOffAction.NAME, null); } @@ -120,7 +116,7 @@ public class UpdateNextDispositionActionTest extends BaseRMTestCase Map cutOff = new HashMap(3); cutOff.put(PROP_DISPOSITION_ACTION_NAME, CutOffAction.NAME); cutOff.put(PROP_DISPOSITION_DESCRIPTION, generate()); - cutOff.put(PROP_DISPOSITION_PERIOD, PERIOD_ONE_WEEK); + cutOff.put(PROP_DISPOSITION_PERIOD, CommonRMTestUtils.PERIOD_IMMEDIATELY); dispositionService.addDispositionActionDefinition(ds, cutOff); // create the properties for TRANSFER action and add it to the disposition action definition diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/DispositionServiceImplTest.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/DispositionServiceImplTest.java index e3853bfc30..29ab764296 100644 --- a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/DispositionServiceImplTest.java +++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/DispositionServiceImplTest.java @@ -657,7 +657,7 @@ public class DispositionServiceImplTest extends BaseRMTestCase checkDisposableItemChanged(mhRecordFolder42); checkDisposableItemChanged(record43); checkDisposableItemUnchanged(mhRecordFolder44); - checkDisposableItemUnchanged(record45);; + checkDisposableItemUnchanged(record45); } });