mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-10-08 14:51:49 +00:00
RM-577: Code refactoring
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@46157 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -26,9 +26,8 @@
|
|||||||
|
|
||||||
<!-- Hide record action -->
|
<!-- Hide record action -->
|
||||||
<bean id="hide-record" parent="action-executer" class="org.alfresco.module.org_alfresco_module_rm.action.dm.HideRecordAction">
|
<bean id="hide-record" parent="action-executer" class="org.alfresco.module.org_alfresco_module_rm.action.dm.HideRecordAction">
|
||||||
<property name="permissionService" ref="PermissionService"/>
|
|
||||||
<property name="nodeService" ref="NodeService" />
|
<property name="nodeService" ref="NodeService" />
|
||||||
<property name="extendedSecurityService" ref="ExtendedSecurityService" />
|
<property name="recordService" ref="RecordService" />
|
||||||
<property name="publicAction" value="false"/>
|
<property name="publicAction" value="false"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
@@ -1149,6 +1149,7 @@
|
|||||||
org.alfresco.module.org_alfresco_module_rm.record.RecordService.isDeclared=RM.Read.0
|
org.alfresco.module.org_alfresco_module_rm.record.RecordService.isDeclared=RM.Read.0
|
||||||
org.alfresco.module.org_alfresco_module_rm.record.RecordService.isFiled=RM.Read.0
|
org.alfresco.module.org_alfresco_module_rm.record.RecordService.isFiled=RM.Read.0
|
||||||
org.alfresco.module.org_alfresco_module_rm.record.RecordService.createRecord=RM_ALLOW
|
org.alfresco.module.org_alfresco_module_rm.record.RecordService.createRecord=RM_ALLOW
|
||||||
|
org.alfresco.module.org_alfresco_module_rm.record.RecordService.hideRecord=RM_ALLOW
|
||||||
org.alfresco.module.org_alfresco_module_rm.record.RecordService.*=RM_DENY
|
org.alfresco.module.org_alfresco_module_rm.record.RecordService.*=RM_DENY
|
||||||
]]>
|
]]>
|
||||||
</value>
|
</value>
|
||||||
|
@@ -20,19 +20,13 @@ package org.alfresco.module.org_alfresco_module_rm.action.dm;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.alfresco.model.ContentModel;
|
|
||||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.security.ExtendedSecurityService;
|
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
|
||||||
import org.alfresco.repo.action.executer.ActionExecuterAbstractBase;
|
import org.alfresco.repo.action.executer.ActionExecuterAbstractBase;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
|
||||||
import org.alfresco.repo.security.permissions.AccessDeniedException;
|
|
||||||
import org.alfresco.service.cmr.action.Action;
|
import org.alfresco.service.cmr.action.Action;
|
||||||
import org.alfresco.service.cmr.action.ParameterDefinition;
|
import org.alfresco.service.cmr.action.ParameterDefinition;
|
||||||
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.cmr.repository.NodeService;
|
||||||
import org.alfresco.service.cmr.security.AccessStatus;
|
|
||||||
import org.alfresco.service.cmr.security.PermissionService;
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
@@ -56,11 +50,8 @@ public class HideRecordAction extends ActionExecuterAbstractBase implements Reco
|
|||||||
/** Node service */
|
/** Node service */
|
||||||
private NodeService nodeService;
|
private NodeService nodeService;
|
||||||
|
|
||||||
/** Permission service */
|
/** Record service */
|
||||||
private PermissionService permissionService;
|
private RecordService recordService;
|
||||||
|
|
||||||
/** Extended security service */
|
|
||||||
private ExtendedSecurityService extendedSecurityService;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param nodeService node service
|
* @param nodeService node service
|
||||||
@@ -71,19 +62,11 @@ public class HideRecordAction extends ActionExecuterAbstractBase implements Reco
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param permissionService permission service
|
* @param recordService record service
|
||||||
*/
|
*/
|
||||||
public void setPermissionService(PermissionService permissionService)
|
public void setRecordService(RecordService recordService)
|
||||||
{
|
{
|
||||||
this.permissionService = permissionService;
|
this.recordService = recordService;
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param extendedSecurityService extended security service
|
|
||||||
*/
|
|
||||||
public void setExtendedSecurityService(ExtendedSecurityService extendedSecurityService)
|
|
||||||
{
|
|
||||||
this.extendedSecurityService = extendedSecurityService;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -94,41 +77,16 @@ public class HideRecordAction extends ActionExecuterAbstractBase implements Reco
|
|||||||
{
|
{
|
||||||
if (nodeService.hasAspect(actionedUponNodeRef, ASPECT_RECORD) == false)
|
if (nodeService.hasAspect(actionedUponNodeRef, ASPECT_RECORD) == false)
|
||||||
{
|
{
|
||||||
// We cannot hide a document which is not a record
|
// we cannot hide a document which is not a record
|
||||||
if (logger.isDebugEnabled() == true)
|
if (logger.isDebugEnabled() == true)
|
||||||
{
|
{
|
||||||
logger.debug("Cannot hide the document, because '" + actionedUponNodeRef.toString() + "' is not a record.");
|
logger.debug("Cannot hide the document, because '" + actionedUponNodeRef.toString() + "' is not a record.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (permissionService.hasPermission(actionedUponNodeRef, PermissionService.WRITE) != AccessStatus.ALLOWED)
|
|
||||||
{
|
|
||||||
// We do a sanity check to ensure that the user has at least write permissions on the record
|
|
||||||
throw new AccessDeniedException("Cannot hide record, because the user '" + AuthenticationUtil.getFullyAuthenticatedUser() + "' does not have write permissions on the record '" + actionedUponNodeRef.toString() + "'.");
|
|
||||||
}
|
|
||||||
else if (nodeService.hasAspect(actionedUponNodeRef, ContentModel.ASPECT_HIDDEN) == true)
|
|
||||||
{
|
|
||||||
// We cannot hide records which are already hidden
|
|
||||||
if (logger.isDebugEnabled() == true)
|
|
||||||
{
|
|
||||||
logger.debug("Cannot hide record, because '" + actionedUponNodeRef.toString() + "' is already hidden.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// remove the child association
|
// hide the record from the collaboration site
|
||||||
NodeRef originatingLocation = (NodeRef) nodeService.getProperty(actionedUponNodeRef, PROP_RECORD_ORIGINATING_LOCATION);
|
recordService.hideRecord(actionedUponNodeRef);
|
||||||
List<ChildAssociationRef> parentAssocs = nodeService.getParentAssocs(actionedUponNodeRef);
|
|
||||||
for (ChildAssociationRef childAssociationRef : parentAssocs)
|
|
||||||
{
|
|
||||||
if (childAssociationRef.isPrimary() == false && childAssociationRef.getParentRef().equals(originatingLocation))
|
|
||||||
{
|
|
||||||
nodeService.removeChildAssociation(childAssociationRef);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// remove the extended security from the node ... this prevents the users from continuing to see the record in searchs and other linked locations
|
|
||||||
extendedSecurityService.removeAllExtendedReaders(actionedUponNodeRef);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -56,7 +56,7 @@ import org.springframework.extensions.surf.util.I18NUtil;
|
|||||||
* Freeze Service Implementation
|
* Freeze Service Implementation
|
||||||
*
|
*
|
||||||
* @author Roy Wetherall
|
* @author Roy Wetherall
|
||||||
* @author Tuna Askoy
|
* @author Tuna Aksoy
|
||||||
* @since 2.1
|
* @since 2.1
|
||||||
*/
|
*/
|
||||||
public class FreezeServiceImpl implements FreezeService,
|
public class FreezeServiceImpl implements FreezeService,
|
||||||
|
@@ -58,7 +58,7 @@ public interface RecordService
|
|||||||
/**
|
/**
|
||||||
* Creates a new unfiled record from an existing node.
|
* Creates a new unfiled record from an existing node.
|
||||||
* <p>
|
* <p>
|
||||||
* Note that the node reference of the record will be the same as the origional
|
* Note that the node reference of the record will be the same as the original
|
||||||
* document.
|
* document.
|
||||||
*
|
*
|
||||||
* @param filePlan The filePlan in which the record should be placed
|
* @param filePlan The filePlan in which the record should be placed
|
||||||
@@ -83,10 +83,17 @@ public interface RecordService
|
|||||||
boolean isFiled(NodeRef record);
|
boolean isFiled(NodeRef record);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Rejects a node with the provided reason
|
* Hides a record within a collaboration site
|
||||||
*
|
*
|
||||||
* @param nodeRef node reference
|
* @param nodeRef The record which should be hidden
|
||||||
* @param reason reject reason
|
*/
|
||||||
|
void hideRecord(NodeRef nodeRef);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rejects a record with the provided reason
|
||||||
|
*
|
||||||
|
* @param nodeRef The record which will be rejected
|
||||||
|
* @param reason The reason for rejection
|
||||||
*/
|
*/
|
||||||
void rejectRecord(NodeRef nodeRef, String reason);
|
void rejectRecord(NodeRef nodeRef, String reason);
|
||||||
}
|
}
|
||||||
|
@@ -445,6 +445,54 @@ public class RecordServiceImpl implements RecordService,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.alfresco.module.org_alfresco_module_rm.record.RecordService#hideRecord(org.alfresco.service.cmr.repository.NodeRef)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void hideRecord(final NodeRef nodeRef)
|
||||||
|
{
|
||||||
|
ParameterCheck.mandatory("NodeRef", nodeRef);
|
||||||
|
|
||||||
|
// first we do a sanity check to ensure that the user has at least write permissions on the record
|
||||||
|
if (permissionService.hasPermission(nodeRef, PermissionService.WRITE) != AccessStatus.ALLOWED)
|
||||||
|
{
|
||||||
|
throw new AccessDeniedException(
|
||||||
|
"Cannot hide record, because the user '"
|
||||||
|
+ AuthenticationUtil.getRunAsUser()
|
||||||
|
+ "' does not have write permissions on the record '"
|
||||||
|
+ nodeRef.toString() + "'.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// do the work of hiding the record as the system user
|
||||||
|
AuthenticationUtil.runAsSystem(new RunAsWork<Void>()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public Void doWork() throws Exception
|
||||||
|
{
|
||||||
|
// remove the child association
|
||||||
|
NodeRef originatingLocation = (NodeRef) nodeService.getProperty(nodeRef, PROP_RECORD_ORIGINATING_LOCATION);
|
||||||
|
List<ChildAssociationRef> parentAssocs = nodeService.getParentAssocs(nodeRef);
|
||||||
|
for (ChildAssociationRef childAssociationRef : parentAssocs)
|
||||||
|
{
|
||||||
|
if (childAssociationRef.isPrimary() == false && childAssociationRef.getParentRef().equals(originatingLocation))
|
||||||
|
{
|
||||||
|
nodeService.removeChildAssociation(childAssociationRef);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// remove the extended security from the node
|
||||||
|
// this prevents the users from continuing to see the record in searchs and other linked locations
|
||||||
|
extendedSecurityService.removeAllExtendedReaders(nodeRef);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.alfresco.module.org_alfresco_module_rm.record.RecordService#rejectRecord(org.alfresco.service.cmr.repository.NodeRef, java.lang.String)
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void rejectRecord(final NodeRef nodeRef, final String reason)
|
public void rejectRecord(final NodeRef nodeRef, final String reason)
|
||||||
{
|
{
|
||||||
|
@@ -40,7 +40,7 @@ import org.alfresco.service.namespace.QName;
|
|||||||
* Records Service Implementation Test
|
* Records Service Implementation Test
|
||||||
*
|
*
|
||||||
* @author Roy Wetherall
|
* @author Roy Wetherall
|
||||||
* @author Tuna Askoy
|
* @author Tuna Aksoy
|
||||||
* @since 2.1
|
* @since 2.1
|
||||||
*/
|
*/
|
||||||
public class RecordServiceImplTest extends BaseRMTestCase
|
public class RecordServiceImplTest extends BaseRMTestCase
|
||||||
|
Reference in New Issue
Block a user