[RM-799] Can't move folders. The move action should no longer be visible when there is a disposition schedule attached. Moves are now allowed to other categories. Folder to folder moves are not allowed.

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@54872 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Jared Ottley
2013-09-03 20:48:19 +00:00
parent 7fa2ecbc8a
commit f17bb35f19
2 changed files with 38 additions and 31 deletions

View File

@@ -40,6 +40,7 @@
<entry key="capabilityCondition.cutoff" value="false"/>
<entry key="capabilityCondition.frozen" value="false"/>
<entry key="capabilityCondition.closed" value="false"/>
<entry key="capabilityCondition.hasDispositionAsOfDate" value="false"/>
</map>
</property>
<property name="group"><ref bean="folderControlGroup"/></property>

View File

@@ -25,9 +25,10 @@ import java.util.Map;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementServiceRegistry;
import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
import org.alfresco.module.org_alfresco_module_rm.identifier.IdentifierService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
import org.alfresco.repo.copy.CopyBehaviourCallback;
import org.alfresco.repo.copy.CopyDetails;
import org.alfresco.repo.copy.DefaultCopyBehaviourCallback;
@@ -184,45 +185,50 @@ public class RecordCopyBehaviours implements RecordsManagementModel
* @param oldChildAssocRef
* @param newChildAssocRef
*/
@SuppressWarnings("unused")
public void onMoveRecordFolderNode(ChildAssociationRef oldChildAssocRef, ChildAssociationRef newChildAssocRef)
{
if (oldChildAssocRef.getParentRef().equals(newChildAssocRef.getParentRef()) == false)
{
final NodeRef newNodeRef = newChildAssocRef.getChildRef();
final NodeService nodeService = rmServiceRegistry.getNodeService();
final RecordsManagementService rmService = rmServiceRegistry.getRecordsManagementService();
final RecordsManagementActionService rmActionService = rmServiceRegistry.getRecordsManagementActionService();
if (!nodeService.getType(newChildAssocRef.getParentRef()).equals(TYPE_RECORD_FOLDER))
{
if (!oldChildAssocRef.getParentRef().equals(newChildAssocRef.getParentRef()))
{
final NodeRef oldNodeRef = oldChildAssocRef.getChildRef();
final NodeRef newNodeRef = newChildAssocRef.getChildRef();
AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<Object>()
{
public Object doWork() throws Exception
{
if (nodeService.exists(newNodeRef) == true)
final RecordsManagementService rmService = rmServiceRegistry.getRecordsManagementService();
final DispositionService rmDispositionService = rmServiceRegistry.getDispositionService();
final RecordService rmRecordService = rmServiceRegistry.getRecordService();
if (rmDispositionService.getDispositionSchedule(oldNodeRef) != null || rmService.isCutoff(oldNodeRef))
{
throw new UnsupportedOperationException("Moving a record folder that has a disposition schedule or is cutoff is not suported.");
}
else
{
// Remove unwanted aspects
removeUnwantedAspects(nodeService, newNodeRef);
// TODO .. this isn't right!!
// .. what if the folder is in motion .. do we really want to lose all the disposition information?
// .. how do we merge from one disposition schedule to another
// .. for now throw unsupportedOperationException and refactor when considered
throw new UnsupportedOperationException("Moving a record folder is currently not supported.");
// // Trigger folder setup
// rmActionService.executeRecordsManagementAction(newNodeRef, "setupRecordFolder");
//
// // Sort out the child records
// for (NodeRef record : rmService.getRecords(newNodeRef))
// {
// removeUnwantedAspects(nodeService, record);
// rmActionService.executeRecordsManagementAction(record, "file");
// }
// Sort out the child records
for (NodeRef record : rmService.getRecords(newNodeRef))
{
// Re-initiate the records in the new folder.
rmRecordService.file(record);
}
}
return null;
}
}, AuthenticationUtil.getAdminUserName());
}, AuthenticationUtil.getSystemUserName());
}
}
else
{
throw new UnsupportedOperationException("Cannot move record folder into another record folder.");
}
}