Fixed tests (for disposition schedules with event based actions).

This commit is contained in:
roxana
2016-10-17 11:01:22 +03:00
parent fa042c81ae
commit 3ea86fa148
3 changed files with 51 additions and 25 deletions

View File

@@ -71,6 +71,8 @@ public class DispositionServiceImpl extends ServiceBaseImpl
/** Logger */ /** Logger */
private static final Logger LOGGER = LoggerFactory.getLogger(DispositionServiceImpl.class); private static final Logger LOGGER = LoggerFactory.getLogger(DispositionServiceImpl.class);
private static final String PERIOD_IMMEDIATELY = "immediately";
/** Transaction mode for setting next action */ /** Transaction mode for setting next action */
public enum WriteMode {READ_ONLY, DATE_ONLY, DATE_AND_NAME}; 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 dispositionActionDefinition disposition action definition
* @param allowContextFromAsOf true if the context date is allowed to be obtained from the disposition "as of" property. * @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<ChildAssociationRef> 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 // Create the properties
Map<QName, Serializable> props = new HashMap<QName, Serializable>(10); Map<QName, Serializable> props = new HashMap<QName, Serializable>(10);
@@ -667,6 +675,7 @@ public class DispositionServiceImpl extends ServiceBaseImpl
// For every event create an entry on the action // For every event create an entry on the action
da.addEventCompletionDetails(event); da.addEventCompletionDetails(event);
} }
return da;
} }
/** /**
@@ -699,7 +708,7 @@ public class DispositionServiceImpl extends ServiceBaseImpl
} }
else else
{ {
if (period.getPeriodType().equals("immediately")) if (period.getPeriodType().equals(PERIOD_IMMEDIATELY))
{ {
contextDate = (Date)nodeService.getProperty(nodeRef, ContentModel.PROP_CREATED); contextDate = (Date)nodeService.getProperty(nodeRef, ContentModel.PROP_CREATED);
} }
@@ -1130,13 +1139,16 @@ public class DispositionServiceImpl extends ServiceBaseImpl
} }
} }
} }
if (nextDispositionActionDate == null || dispositionNodeRef == null) if (dispositionNodeRef == null)
{ {
return null; return null;
} }
WriteMode mode = null; WriteMode mode = null;
if (!nextDispositionActionDate.equals(recordNextDispositionActionDate) if (recordNextDispositionActionDate != null)
&& recordNextDispositionActionDate.before(nextDispositionActionDate)) {
if ((nextDispositionActionDate == null)
|| (!nextDispositionActionDate.equals(recordNextDispositionActionDate)
&& recordNextDispositionActionDate.before(nextDispositionActionDate)))
{ {
mode = WriteMode.DATE_ONLY; mode = WriteMode.DATE_ONLY;
} }
@@ -1144,6 +1156,19 @@ public class DispositionServiceImpl extends ServiceBaseImpl
{ {
mode = WriteMode.READ_ONLY; mode = WriteMode.READ_ONLY;
} }
}
else
{
if (nextDispositionActionDate != null)
{
mode = WriteMode.DATE_ONLY;
}
else
{
mode = WriteMode.READ_ONLY;
}
}
return new NextActionFromDisposition(dispositionNodeRef, nextDispositionAction.getNodeRef(), return new NextActionFromDisposition(dispositionNodeRef, nextDispositionAction.getNodeRef(),
recordNextDispositionActionName, nextDispositionActionDate, mode); recordNextDispositionActionName, nextDispositionActionDate, mode);
} }
@@ -1164,28 +1189,33 @@ public class DispositionServiceImpl extends ServiceBaseImpl
NodeRef folderDS = getDispositionScheduleImpl(folder); NodeRef folderDS = getDispositionScheduleImpl(folder);
if (folderDS != null) if (folderDS != null)
{ {
List<ChildAssociationRef> assocs = nodeService.getChildAssocs(folderDS); DispositionSchedule ds = new DispositionScheduleImpl(serviceRegistry, nodeService, folderDS);
if (assocs != null && assocs.size() > 0) List<DispositionActionDefinition> dispositionActionDefinitions = ds.getDispositionActionDefinitions();
if (dispositionActionDefinitions != null && dispositionActionDefinitions.size() > 0)
{ {
NodeRef firstAction = assocs.get(0).getChildRef(); DispositionActionDefinition firstDispositionActionDef = dispositionActionDefinitions.get(0);
DispositionAction firstDispositionAction = new DispositionActionImpl(serviceRegistry, firstAction);
if (newAction == null) if (newAction == null)
{ {
newAction = firstAction; DispositionAction firstDispositionAction = initialiseDispositionAction(record, firstDispositionActionDef, true);
newAction = firstDispositionAction.getNodeRef();
newDispositionActionName = (String)nodeService.getProperty(newAction, PROP_DISPOSITION_ACTION_NAME); 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(); 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; dispositionNodeRef = folderDS;
} }
} }
} }
if (newDispositionActionName == null || newDispositionActionDateAsOf == null if (newDispositionActionName == null
|| dispositionNodeRef == null || newAction == null) || dispositionNodeRef == null || newAction == null)
{ {
return null; return null;

View File

@@ -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.action.impl.TransferAction;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSchedule; 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.BaseRMTestCase;
import org.alfresco.module.org_alfresco_module_rm.test.util.CommonRMTestUtils;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QName;
@@ -95,11 +96,6 @@ public class UpdateNextDispositionActionTest extends BaseRMTestCase
// complete record // complete record
utils.completeRecord(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 // cut off
rmActionService.executeRecordsManagementAction(record, CutOffAction.NAME, null); rmActionService.executeRecordsManagementAction(record, CutOffAction.NAME, null);
} }
@@ -120,7 +116,7 @@ public class UpdateNextDispositionActionTest extends BaseRMTestCase
Map<QName, Serializable> cutOff = new HashMap<QName, Serializable>(3); Map<QName, Serializable> cutOff = new HashMap<QName, Serializable>(3);
cutOff.put(PROP_DISPOSITION_ACTION_NAME, CutOffAction.NAME); cutOff.put(PROP_DISPOSITION_ACTION_NAME, CutOffAction.NAME);
cutOff.put(PROP_DISPOSITION_DESCRIPTION, generate()); 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); dispositionService.addDispositionActionDefinition(ds, cutOff);
// create the properties for TRANSFER action and add it to the disposition action definition // create the properties for TRANSFER action and add it to the disposition action definition

View File

@@ -657,7 +657,7 @@ public class DispositionServiceImplTest extends BaseRMTestCase
checkDisposableItemChanged(mhRecordFolder42); checkDisposableItemChanged(mhRecordFolder42);
checkDisposableItemChanged(record43); checkDisposableItemChanged(record43);
checkDisposableItemUnchanged(mhRecordFolder44); checkDisposableItemUnchanged(mhRecordFolder44);
checkDisposableItemUnchanged(record45);; checkDisposableItemUnchanged(record45);
} }
}); });