RM-1540: Event is displayed for record moved to category with no disposition

RM-1345: Edit Disposition Date is not working for moved items



git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@74311 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Roy Wetherall
2014-06-20 05:02:06 +00:00
parent 0aa51d826c
commit 14d57cacb6
9 changed files with 427 additions and 96 deletions

View File

@@ -105,6 +105,8 @@
<bean id="rma.record" class="org.alfresco.module.org_alfresco_module_rm.model.rma.aspect.RecordAspect" parent="rm.baseBehaviour"> <bean id="rma.record" class="org.alfresco.module.org_alfresco_module_rm.model.rma.aspect.RecordAspect" parent="rm.baseBehaviour">
<property name="scriptService" ref="ScriptService" /> <property name="scriptService" ref="ScriptService" />
<property name="extendedSecurityService" ref="ExtendedSecurityService" /> <property name="extendedSecurityService" ref="ExtendedSecurityService" />
<property name="recordService" ref="RecordService" />
<property name="dispositionService" ref="DispositionService" />
</bean> </bean>
<bean id="rma.recordComponentIdentifier" class="org.alfresco.module.org_alfresco_module_rm.model.rma.aspect.RecordComponentIdentifierAspect" parent="rm.baseBehaviour"> <bean id="rma.recordComponentIdentifier" class="org.alfresco.module.org_alfresco_module_rm.model.rma.aspect.RecordComponentIdentifierAspect" parent="rm.baseBehaviour">

View File

@@ -472,7 +472,11 @@ public class DispositionActionImpl implements DispositionAction,
if (!events.isEmpty()) if (!events.isEmpty())
{ {
if (!getDispositionActionDefinition().eligibleOnFirstCompleteEvent()) // get the disposition action definition
DispositionActionDefinition dispositionActionDefinition = getDispositionActionDefinition();
if (dispositionActionDefinition != null)
{
if (!dispositionActionDefinition.eligibleOnFirstCompleteEvent())
{ {
// if one event is complete then the disposition action is eligible // if one event is complete then the disposition action is eligible
eligible = true; eligible = true;
@@ -498,6 +502,7 @@ public class DispositionActionImpl implements DispositionAction,
} }
} }
} }
}
// Update the property with the eligible value // Update the property with the eligible value
services.getNodeService().setProperty(getNodeRef(), PROP_DISPOSITION_EVENTS_ELIGIBLE, eligible); services.getNodeService().setProperty(getNodeRef(), PROP_DISPOSITION_EVENTS_ELIGIBLE, eligible);

View File

@@ -0,0 +1,65 @@
/**
*
*/
package org.alfresco.module.org_alfresco_module_rm.model.behaviour;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionAction;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
import org.alfresco.module.org_alfresco_module_rm.model.BaseBehaviourBean;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.namespace.QName;
/**
* Abstract disposable item, containing commonality between record and record folder.
*
* @author Roy Wetherall
* @since 2.2
*/
public abstract class AbstractDisposableItem extends BaseBehaviourBean
{
/** unwanted aspects */
protected QName[] unwantedAspects =
{
ASPECT_VITAL_RECORD,
ASPECT_DISPOSITION_LIFECYCLE,
RecordsManagementSearchBehaviour.ASPECT_RM_SEARCH
};
/** disposition service */
protected DispositionService dispositionService;
/**
* @param dispositionService disposition service
*/
public void setDispositionService(DispositionService dispositionService)
{
this.dispositionService = dispositionService;
}
/**
* Removes unwanted aspects
*
* @param nodeService
* @param nodeRef
*/
protected void cleanDisposableItem(NodeService nodeService, NodeRef nodeRef)
{
// Remove unwanted aspects
for (QName aspect : unwantedAspects)
{
if (nodeService.hasAspect(nodeRef, aspect))
{
nodeService.removeAspect(nodeRef, aspect);
}
}
// remove the current disposition action (if there is one)
DispositionAction dispositionAction = dispositionService.getNextDispositionAction(nodeRef);
if (dispositionAction != null)
{
nodeService.deleteNode(dispositionAction.getNodeRef());
}
}
}

View File

@@ -25,9 +25,9 @@ import java.util.Set;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies; import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies;
import org.alfresco.module.org_alfresco_module_rm.model.BaseBehaviourBean;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementCustomModel; import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementCustomModel;
import org.alfresco.module.org_alfresco_module_rm.model.behaviour.RecordsManagementSearchBehaviour; import org.alfresco.module.org_alfresco_module_rm.model.behaviour.AbstractDisposableItem;
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
import org.alfresco.module.org_alfresco_module_rm.security.ExtendedSecurityService; import org.alfresco.module.org_alfresco_module_rm.security.ExtendedSecurityService;
import org.alfresco.repo.copy.CopyBehaviourCallback; import org.alfresco.repo.copy.CopyBehaviourCallback;
import org.alfresco.repo.copy.CopyDetails; import org.alfresco.repo.copy.CopyDetails;
@@ -54,7 +54,7 @@ import org.alfresco.service.namespace.QName;
( (
defaultType = "rma:record" defaultType = "rma:record"
) )
public class RecordAspect extends BaseBehaviourBean public class RecordAspect extends AbstractDisposableItem
implements NodeServicePolicies.OnCreateChildAssociationPolicy, implements NodeServicePolicies.OnCreateChildAssociationPolicy,
RecordsManagementPolicies.OnCreateReference, RecordsManagementPolicies.OnCreateReference,
RecordsManagementPolicies.OnRemoveReference, RecordsManagementPolicies.OnRemoveReference,
@@ -70,6 +70,9 @@ public class RecordAspect extends BaseBehaviourBean
/** script service */ /** script service */
protected ScriptService scriptService; protected ScriptService scriptService;
/** record service */
protected RecordService recordService;
/** /**
* @param extendedSecurityService extended security service * @param extendedSecurityService extended security service
*/ */
@@ -86,6 +89,14 @@ public class RecordAspect extends BaseBehaviourBean
this.scriptService = scriptService; this.scriptService = scriptService;
} }
/**
* @param recordService record service
*/
public void setRecordService(RecordService recordService)
{
this.recordService = recordService;
}
/** /**
* Behaviour to ensure renditions have the appropriate extended security. * Behaviour to ensure renditions have the appropriate extended security.
* *
@@ -219,15 +230,18 @@ public class RecordAspect extends BaseBehaviourBean
// check the records parent has actually changed // check the records parent has actually changed
if (!oldChildAssocRef.getParentRef().equals(newChildAssocRef.getParentRef())) if (!oldChildAssocRef.getParentRef().equals(newChildAssocRef.getParentRef()))
{ {
final NodeRef newNodeRef = newChildAssocRef.getChildRef(); final NodeRef record = newChildAssocRef.getChildRef();
AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<Object>() AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<Object>()
{ {
public Object doWork() public Object doWork()
{ {
if (nodeService.exists(newNodeRef)) if (nodeService.exists(record))
{ {
// only remove the search details .. the rest will be resolved automatically // clean record
nodeService.removeAspect(newNodeRef, RecordsManagementSearchBehaviour.ASPECT_RM_SEARCH); cleanDisposableItem(nodeService, record);
// re-file in the new folder
recordService.file(record);
} }
return null; return null;
@@ -239,10 +253,10 @@ public class RecordAspect extends BaseBehaviourBean
/** /**
* Executes a reference script if present * Executes a reference script if present
* *
* @param policy * @param policy policy
* @param reference * @param reference reference
* @param from * @param from reference from
* @param to * @param to reference to
*/ */
private void executeReferenceScript(String policy, QName reference, NodeRef from, NodeRef to) private void executeReferenceScript(String policy, QName reference, NodeRef from, NodeRef to)
{ {

View File

@@ -22,10 +22,7 @@ import java.io.Serializable;
import java.util.Map; import java.util.Map;
import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionAction; import org.alfresco.module.org_alfresco_module_rm.model.behaviour.AbstractDisposableItem;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
import org.alfresco.module.org_alfresco_module_rm.model.BaseBehaviourBean;
import org.alfresco.module.org_alfresco_module_rm.model.behaviour.RecordsManagementSearchBehaviour;
import org.alfresco.module.org_alfresco_module_rm.record.RecordService; import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService; import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
import org.alfresco.module.org_alfresco_module_rm.vital.VitalRecordService; import org.alfresco.module.org_alfresco_module_rm.vital.VitalRecordService;
@@ -41,7 +38,6 @@ import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QName;
import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.ArrayUtils;
@@ -55,27 +51,16 @@ import org.apache.commons.lang.ArrayUtils;
( (
defaultType = "rma:recordFolder" defaultType = "rma:recordFolder"
) )
public class RecordFolderType extends BaseBehaviourBean public class RecordFolderType extends AbstractDisposableItem
implements NodeServicePolicies.OnMoveNodePolicy, implements NodeServicePolicies.OnMoveNodePolicy,
NodeServicePolicies.OnCreateChildAssociationPolicy NodeServicePolicies.OnCreateChildAssociationPolicy
{ {
/** unwanted aspects */
private QName[] unwantedAspects =
{
ASPECT_VITAL_RECORD,
ASPECT_DISPOSITION_LIFECYCLE,
RecordsManagementSearchBehaviour.ASPECT_RM_SEARCH
};
/** record service */ /** record service */
private RecordService recordService; private RecordService recordService;
/** record folder service */ /** record folder service */
private RecordFolderService recordFolderService; private RecordFolderService recordFolderService;
/** disposition service */
private DispositionService dispositionService;
/** vital record service */ /** vital record service */
protected VitalRecordService vitalRecordService; protected VitalRecordService vitalRecordService;
@@ -95,14 +80,6 @@ public class RecordFolderType extends BaseBehaviourBean
this.recordFolderService = recordFolderService; this.recordFolderService = recordFolderService;
} }
/**
* @param dispositionService disposition service
*/
public void setDispositionService(DispositionService dispositionService)
{
this.dispositionService = dispositionService;
}
/** /**
* @param vitalRecordService vital record service * @param vitalRecordService vital record service
*/ */
@@ -273,29 +250,4 @@ public class RecordFolderType extends BaseBehaviourBean
behaviourFilter.enableBehaviour(); behaviourFilter.enableBehaviour();
} }
} }
/**
* Removes unwanted aspects
*
* @param nodeService
* @param nodeRef
*/
private void cleanDisposableItem(NodeService nodeService, NodeRef nodeRef)
{
// Remove unwanted aspects
for (QName aspect : unwantedAspects)
{
if (nodeService.hasAspect(nodeRef, aspect))
{
nodeService.removeAspect(nodeRef, aspect);
}
}
// remove the current disposition action (if there is one)
DispositionAction dispositionAction = dispositionService.getNextDispositionAction(nodeRef);
if (dispositionAction != null)
{
nodeService.deleteNode(dispositionAction.getNodeRef());
}
}
} }

View File

@@ -0,0 +1,278 @@
/*
* Copyright (C) 2005-2014 Alfresco Software Limited.
*
* This file is part of Alfresco
*
* Alfresco is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Alfresco is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
package org.alfresco.module.org_alfresco_module_rm.test.integration.record;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.alfresco.module.org_alfresco_module_rm.action.impl.CutOffAction;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionAction;
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;
import org.springframework.extensions.webscripts.GUID;
/**
* Move record tests.
*
* @author Roy Wetherall
* @since 2.2
*/
@SuppressWarnings("unchecked")
public class MoveRecordTest extends BaseRMTestCase
{
private static final String OTHER_EVENT = "abolished";
/**
* Given a record is filed in a event disposition and moved then the
* record no longer has any disposition.
*
* @see https://issues.alfresco.com/jira/browse/RM-1540
*/
public void testMoveRecordEventDispositinoToNoDisposition() throws Exception
{
doBehaviourDrivenTest(new BehaviourDrivenTest()
{
NodeRef sourceCategory;
NodeRef sourceRecordFolder;
NodeRef destinationCategory;
NodeRef destinationRecordFolder;
NodeRef record;
public void given()
{
// create test data
sourceCategory = filePlanService.createRecordCategory(filePlan, GUID.generate());
utils.createBasicDispositionSchedule(sourceCategory, GUID.generate(), GUID.generate(), true, true);
sourceRecordFolder = recordFolderService.createRecordFolder(sourceCategory, GUID.generate());
destinationCategory = filePlanService.createRecordCategory(filePlan, GUID.generate());;
destinationRecordFolder = recordFolderService.createRecordFolder(destinationCategory, GUID.generate());
// create record
record = utils.createRecord(sourceRecordFolder, GUID.generate());
// check for the lifecycle aspect
assertFalse(nodeService.hasAspect(sourceRecordFolder, ASPECT_DISPOSITION_LIFECYCLE));
assertTrue(nodeService.hasAspect(record, ASPECT_DISPOSITION_LIFECYCLE));
// check the disposition action details
DispositionAction dispositionAction = dispositionService.getNextDispositionAction(record);
assertNotNull(dispositionAction);
assertNotNull(CutOffAction.NAME, dispositionAction.getName());
assertNull(dispositionAction.getAsOfDate());
assertFalse(dispositionService.isNextDispositionActionEligible(record));
assertNotNull(dispositionAction.getEventCompletionDetails(CommonRMTestUtils.DEFAULT_EVENT_NAME));
}
public void when() throws Exception
{
// check the search aspect details
assertTrue(nodeService.hasAspect(record, ASPECT_RM_SEARCH));
assertEquals(CutOffAction.NAME, nodeService.getProperty(record, PROP_RS_DISPOSITION_ACTION_NAME));
assertNull(nodeService.getProperty(record, PROP_RS_DISPOSITION_ACTION_AS_OF));
assertTrue(((List<String>)nodeService.getProperty(record, PROP_RS_DISPOSITION_EVENTS)).contains(CommonRMTestUtils.DEFAULT_EVENT_NAME));
// move record
fileFolderService.move(record, destinationRecordFolder, null);
}
public void then()
{
// check for the lifecycle aspect
assertFalse(nodeService.hasAspect(record, ASPECT_DISPOSITION_LIFECYCLE));
// check the disposition action details
assertNull(dispositionService.getNextDispositionAction(record));
// check the search aspect properties
assertFalse(nodeService.hasAspect(record, ASPECT_RM_SEARCH));
}
});
}
/**
* Given a record in a event disposition, when it moved to another event disposition then the record should have the
* new events, rather than the old ones.
*/
public void testMoveRecordEventDisToEventDis()
{
doBehaviourDrivenTest(new BehaviourDrivenTest()
{
NodeRef sourceCategory;
NodeRef sourceRecordFolder;
NodeRef destinationCategory;
NodeRef destinationRecordFolder;
NodeRef record;
public void given()
{
// create test data
sourceCategory = filePlanService.createRecordCategory(filePlan, GUID.generate());
utils.createBasicDispositionSchedule(sourceCategory, GUID.generate(), GUID.generate(), true, true);
sourceRecordFolder = recordFolderService.createRecordFolder(sourceCategory, GUID.generate());
destinationCategory = filePlanService.createRecordCategory(filePlan, GUID.generate());
utils.createDispositionSchedule(destinationCategory, GUID.generate(), GUID.generate(), true, true, false, OTHER_EVENT);
destinationRecordFolder = recordFolderService.createRecordFolder(destinationCategory, GUID.generate());
// create record
record = utils.createRecord(sourceRecordFolder, GUID.generate());
// check for the lifecycle aspect
assertFalse(nodeService.hasAspect(sourceRecordFolder, ASPECT_DISPOSITION_LIFECYCLE));
assertTrue(nodeService.hasAspect(record, ASPECT_DISPOSITION_LIFECYCLE));
// check the disposition action details
DispositionAction dispositionAction = dispositionService.getNextDispositionAction(record);
assertNotNull(dispositionAction);
assertNotNull(CutOffAction.NAME, dispositionAction.getName());
assertNull(dispositionAction.getAsOfDate());
assertFalse(dispositionService.isNextDispositionActionEligible(record));
assertNotNull(dispositionAction.getEventCompletionDetails(CommonRMTestUtils.DEFAULT_EVENT_NAME));
assertNull(dispositionAction.getEventCompletionDetails(OTHER_EVENT));
}
public void when() throws Exception
{
// check the search aspect details
assertTrue(nodeService.hasAspect(record, ASPECT_RM_SEARCH));
assertEquals(CutOffAction.NAME, nodeService.getProperty(record, PROP_RS_DISPOSITION_ACTION_NAME));
assertNull(nodeService.getProperty(record, PROP_RS_DISPOSITION_ACTION_AS_OF));
assertTrue(((List<String>)nodeService.getProperty(record, PROP_RS_DISPOSITION_EVENTS)).contains(CommonRMTestUtils.DEFAULT_EVENT_NAME));
// move record
fileFolderService.move(record, destinationRecordFolder, null);
}
public void then()
{
// check for the lifecycle aspect
assertTrue(nodeService.hasAspect(record, ASPECT_DISPOSITION_LIFECYCLE));
// check the disposition action details
DispositionAction dispositionAction = dispositionService.getNextDispositionAction(record);
assertNotNull(dispositionAction);
assertNotNull(CutOffAction.NAME, dispositionAction.getName());
assertNull(dispositionAction.getAsOfDate());
assertFalse(dispositionService.isNextDispositionActionEligible(record));
assertNull(dispositionAction.getEventCompletionDetails(CommonRMTestUtils.DEFAULT_EVENT_NAME));
assertNotNull(dispositionAction.getEventCompletionDetails(OTHER_EVENT));
// check the search aspect details
assertTrue(nodeService.hasAspect(record, ASPECT_RM_SEARCH));
assertEquals(CutOffAction.NAME, nodeService.getProperty(record, PROP_RS_DISPOSITION_ACTION_NAME));
assertNull(nodeService.getProperty(record, PROP_RS_DISPOSITION_ACTION_AS_OF));
assertTrue(((List<String>)nodeService.getProperty(record, PROP_RS_DISPOSITION_EVENTS)).contains(OTHER_EVENT));
}
});
}
/**
* Given a record in a event disposition, when it moved to a time disposition then the record should have the correct as of
* date and no longer have the events.
*/
public void testMoveRecordEventDisToTimeDis()
{
doBehaviourDrivenTest(new BehaviourDrivenTest()
{
NodeRef sourceCategory;
NodeRef sourceRecordFolder;
NodeRef destinationCategory;
NodeRef destinationRecordFolder;
NodeRef record;
public void given()
{
// create test data
sourceCategory = filePlanService.createRecordCategory(filePlan, GUID.generate());
utils.createBasicDispositionSchedule(sourceCategory, GUID.generate(), GUID.generate(), true, true);
sourceRecordFolder = recordFolderService.createRecordFolder(sourceCategory, GUID.generate());
destinationCategory = filePlanService.createRecordCategory(filePlan, GUID.generate());
DispositionSchedule dis = utils.createBasicDispositionSchedule(destinationCategory, GUID.generate(), GUID.generate(), true, false);
Map<QName, Serializable> adParams = new HashMap<QName, Serializable>(3);
adParams.put(PROP_DISPOSITION_ACTION_NAME, CutOffAction.NAME);
adParams.put(PROP_DISPOSITION_DESCRIPTION, GUID.generate());
adParams.put(PROP_DISPOSITION_PERIOD, CommonRMTestUtils.PERIOD_IMMEDIATELY);
dispositionService.addDispositionActionDefinition(dis, adParams);
destinationRecordFolder = recordFolderService.createRecordFolder(destinationCategory, GUID.generate());
// create record
record = utils.createRecord(sourceRecordFolder, GUID.generate());
// check for the lifecycle aspect
assertFalse(nodeService.hasAspect(sourceRecordFolder, ASPECT_DISPOSITION_LIFECYCLE));
assertTrue(nodeService.hasAspect(record, ASPECT_DISPOSITION_LIFECYCLE));
// check the disposition action details
DispositionAction dispositionAction = dispositionService.getNextDispositionAction(record);
assertNotNull(dispositionAction);
assertNotNull(CutOffAction.NAME, dispositionAction.getName());
assertNull(dispositionAction.getAsOfDate());
assertFalse(dispositionService.isNextDispositionActionEligible(record));
assertNotNull(dispositionAction.getEventCompletionDetails(CommonRMTestUtils.DEFAULT_EVENT_NAME));
assertNull(dispositionAction.getEventCompletionDetails(OTHER_EVENT));
}
public void when() throws Exception
{
// check the search aspect details
assertTrue(nodeService.hasAspect(record, ASPECT_RM_SEARCH));
assertEquals(CutOffAction.NAME, nodeService.getProperty(record, PROP_RS_DISPOSITION_ACTION_NAME));
assertNull(nodeService.getProperty(record, PROP_RS_DISPOSITION_ACTION_AS_OF));
assertTrue(((List<String>)nodeService.getProperty(record, PROP_RS_DISPOSITION_EVENTS)).contains(CommonRMTestUtils.DEFAULT_EVENT_NAME));
// move record
fileFolderService.move(record, destinationRecordFolder, null);
}
public void then()
{
// check for the lifecycle aspect
assertTrue(nodeService.hasAspect(record, ASPECT_DISPOSITION_LIFECYCLE));
// check the disposition action details
DispositionAction dispositionAction = dispositionService.getNextDispositionAction(record);
assertNotNull(dispositionAction);
assertNotNull(CutOffAction.NAME, dispositionAction.getName());
assertNotNull(dispositionAction.getAsOfDate());
assertTrue(dispositionService.isNextDispositionActionEligible(record));
assertNull(dispositionAction.getEventCompletionDetails(CommonRMTestUtils.DEFAULT_EVENT_NAME));
// check the search aspect details
assertTrue(nodeService.hasAspect(record, ASPECT_RM_SEARCH));
assertEquals(CutOffAction.NAME, nodeService.getProperty(record, PROP_RS_DISPOSITION_ACTION_NAME));
assertNotNull(nodeService.getProperty(record, PROP_RS_DISPOSITION_ACTION_AS_OF));
assertNull(((List<String>)nodeService.getProperty(record, PROP_RS_DISPOSITION_EVENTS)));
}
});
}
// TODO moveRecordNoDisToEventDis
// TODO moveRecordRecordDisToFolderDis
}

View File

@@ -32,7 +32,8 @@ import org.junit.runners.Suite.SuiteClasses;
@SuiteClasses( @SuiteClasses(
{ {
RejectRecordTest.class, RejectRecordTest.class,
CreateRecordTest.class CreateRecordTest.class,
MoveRecordTest.class
}) })
public class RecordTestSuite public class RecordTestSuite
{ {

View File

@@ -38,7 +38,7 @@ import org.alfresco.service.namespace.QName;
import org.springframework.extensions.webscripts.GUID; import org.springframework.extensions.webscripts.GUID;
/** /**
* Move record tests. * Move record folder tests.
* *
* @author Roy Wetherall * @author Roy Wetherall
* @since 2.2 * @since 2.2

View File

@@ -76,6 +76,11 @@ public class CommonRMTestUtils implements RecordsManagementModel
public static final String PERIOD_NONE = "none|0"; public static final String PERIOD_NONE = "none|0";
public static final String PERIOD_IMMEDIATELY = "immediately|0"; public static final String PERIOD_IMMEDIATELY = "immediately|0";
/**
* Constructor
*
* @param applicationContext application context
*/
public CommonRMTestUtils(ApplicationContext applicationContext) public CommonRMTestUtils(ApplicationContext applicationContext)
{ {
dispositionService = (DispositionService)applicationContext.getBean("DispositionService"); dispositionService = (DispositionService)applicationContext.getBean("DispositionService");
@@ -99,13 +104,7 @@ public class CommonRMTestUtils implements RecordsManagementModel
} }
/** /**
* * Create test disposition schedule
* @param container
* @param dispositionInstructions
* @param dispositionAuthority
* @param isRecordLevel
* @param defaultDispositionActions
* @return
*/ */
public DispositionSchedule createBasicDispositionSchedule( public DispositionSchedule createBasicDispositionSchedule(
NodeRef container, NodeRef container,
@@ -118,14 +117,7 @@ public class CommonRMTestUtils implements RecordsManagementModel
} }
/** /**
* * Create test disposition schedule
* @param container
* @param dispositionInstructions
* @param dispositionAuthority
* @param isRecordLevel
* @param defaultDispositionActions
* @param extendedDispositionSchedule
* @return
*/ */
public DispositionSchedule createDispositionSchedule( public DispositionSchedule createDispositionSchedule(
NodeRef container, NodeRef container,
@@ -134,6 +126,28 @@ public class CommonRMTestUtils implements RecordsManagementModel
boolean isRecordLevel, boolean isRecordLevel,
boolean defaultDispositionActions, boolean defaultDispositionActions,
boolean extendedDispositionSchedule) boolean extendedDispositionSchedule)
{
return createDispositionSchedule(
container,
dispositionInstructions,
dispositionAuthority,
isRecordLevel,
defaultDispositionActions,
extendedDispositionSchedule,
DEFAULT_EVENT_NAME);
}
/**
* Create test disposition schedule
*/
public DispositionSchedule createDispositionSchedule(
NodeRef container,
String dispositionInstructions,
String dispositionAuthority,
boolean isRecordLevel,
boolean defaultDispositionActions,
boolean extendedDispositionSchedule,
String defaultEvent)
{ {
Map<QName, Serializable> dsProps = new HashMap<QName, Serializable>(3); Map<QName, Serializable> dsProps = new HashMap<QName, Serializable>(3);
dsProps.put(PROP_DISPOSITION_AUTHORITY, dispositionAuthority); dsProps.put(PROP_DISPOSITION_AUTHORITY, dispositionAuthority);
@@ -148,7 +162,7 @@ public class CommonRMTestUtils implements RecordsManagementModel
adParams.put(PROP_DISPOSITION_DESCRIPTION, DEFAULT_DISPOSITION_DESCRIPTION); adParams.put(PROP_DISPOSITION_DESCRIPTION, DEFAULT_DISPOSITION_DESCRIPTION);
List<String> events = new ArrayList<String>(1); List<String> events = new ArrayList<String>(1);
events.add(DEFAULT_EVENT_NAME); events.add(defaultEvent);
adParams.put(PROP_DISPOSITION_EVENT, (Serializable)events); adParams.put(PROP_DISPOSITION_EVENT, (Serializable)events);
dispositionService.addDispositionActionDefinition(dispositionSchedule, adParams); dispositionService.addDispositionActionDefinition(dispositionSchedule, adParams);