mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Fixed tests (for disposition schedules with event based actions).
This commit is contained in:
@@ -71,6 +71,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<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
|
||||
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
|
||||
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<ChildAssociationRef> assocs = nodeService.getChildAssocs(folderDS);
|
||||
if (assocs != null && assocs.size() > 0)
|
||||
DispositionSchedule ds = new DispositionScheduleImpl(serviceRegistry, nodeService, folderDS);
|
||||
List<DispositionActionDefinition> 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;
|
||||
|
@@ -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<QName, Serializable> cutOff = new HashMap<QName, Serializable>(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
|
||||
|
@@ -657,7 +657,7 @@ public class DispositionServiceImplTest extends BaseRMTestCase
|
||||
checkDisposableItemChanged(mhRecordFolder42);
|
||||
checkDisposableItemChanged(record43);
|
||||
checkDisposableItemUnchanged(mhRecordFolder44);
|
||||
checkDisposableItemUnchanged(record45);;
|
||||
checkDisposableItemUnchanged(record45);
|
||||
}
|
||||
});
|
||||
|
||||
|
Reference in New Issue
Block a user