mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
RM: Fixes to creation of unfiled record
* should prevent duplicates being created * need to refactor creation into a service (possibly a file plan service) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@44523 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -426,6 +426,7 @@
|
|||||||
<property name="policyComponent" ref="policyComponent"/>
|
<property name="policyComponent" ref="policyComponent"/>
|
||||||
<property name="recordsManagementService" ref="RecordsManagementService"/>
|
<property name="recordsManagementService" ref="RecordsManagementService"/>
|
||||||
<property name="modelSecurityService" ref="modelSecurityService" />
|
<property name="modelSecurityService" ref="modelSecurityService" />
|
||||||
|
<property name="recordService" ref="RecordService" />
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="RecordsManagementSecurityService" class="org.springframework.aop.framework.ProxyFactoryBean">
|
<bean id="RecordsManagementSecurityService" class="org.springframework.aop.framework.ProxyFactoryBean">
|
||||||
|
@@ -146,10 +146,13 @@ public class JSONConversionComponent extends org.alfresco.repo.jscript.app.JSONC
|
|||||||
|
|
||||||
// Unfiled container node reference
|
// Unfiled container node reference
|
||||||
NodeRef unfiledRecordContainer = recordService.getUnfiledContainer(filePlan);
|
NodeRef unfiledRecordContainer = recordService.getUnfiledContainer(filePlan);
|
||||||
rmNodeValues.put("unfiledRecordContainer", unfiledRecordContainer.toString());
|
if (unfiledRecordContainer != null)
|
||||||
rmNodeValues.put("properties", propertiesToJSON(unfiledRecordContainer, useShortQName));
|
{
|
||||||
QName type = fileFolderService.getFileInfo(unfiledRecordContainer).getType();
|
rmNodeValues.put("unfiledRecordContainer", unfiledRecordContainer.toString());
|
||||||
rmNodeValues.put("type", useShortQName ? type.toPrefixString(namespaceService) : type.toString());
|
rmNodeValues.put("properties", propertiesToJSON(unfiledRecordContainer, useShortQName));
|
||||||
|
QName type = fileFolderService.getFileInfo(unfiledRecordContainer).getType();
|
||||||
|
rmNodeValues.put("type", useShortQName ? type.toPrefixString(namespaceService) : type.toString());
|
||||||
|
}
|
||||||
|
|
||||||
// Set the indicators array
|
// Set the indicators array
|
||||||
setIndicators(rmNodeValues, nodeRef);
|
setIndicators(rmNodeValues, nodeRef);
|
||||||
|
@@ -210,13 +210,27 @@ public class RecordServiceImpl implements RecordService, RecordsManagementModel
|
|||||||
public NodeRef getUnfiledContainer(NodeRef filePlan)
|
public NodeRef getUnfiledContainer(NodeRef filePlan)
|
||||||
{
|
{
|
||||||
ParameterCheck.mandatory("filePlan", filePlan);
|
ParameterCheck.mandatory("filePlan", filePlan);
|
||||||
|
|
||||||
|
if (recordsManagementService.isFilePlan(filePlan) == false)
|
||||||
|
{
|
||||||
|
throw new AlfrescoRuntimeException("Unable to get the unfiled container, because passed node is not a file plan.");
|
||||||
|
}
|
||||||
|
|
||||||
|
NodeRef result = null;
|
||||||
|
|
||||||
List<ChildAssociationRef> assocs = nodeService.getChildAssocs(filePlan, ASSOC_UNFILED_RECORDS,
|
List<ChildAssociationRef> assocs = nodeService.getChildAssocs(filePlan, ASSOC_UNFILED_RECORDS,
|
||||||
RegexQNamePattern.MATCH_ALL);
|
RegexQNamePattern.MATCH_ALL);
|
||||||
if (assocs.size() != 1) { throw new AlfrescoRuntimeException(
|
if (assocs.size() > 1)
|
||||||
"Error getting the unfiled container, because the container cannot be indentified."); }
|
{
|
||||||
|
throw new AlfrescoRuntimeException(
|
||||||
return assocs.get(0).getChildRef();
|
"Unable to get the unfiled container, because the container cannot be indentified.");
|
||||||
|
}
|
||||||
|
else if (assocs.size() == 1 )
|
||||||
|
{
|
||||||
|
result = assocs.get(0).getChildRef();
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -37,6 +37,7 @@ import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService;
|
|||||||
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
|
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
|
||||||
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.model.security.ModelSecurityService;
|
import org.alfresco.module.org_alfresco_module_rm.model.security.ModelSecurityService;
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
|
||||||
import org.alfresco.repo.node.NodeServicePolicies;
|
import org.alfresco.repo.node.NodeServicePolicies;
|
||||||
import org.alfresco.repo.policy.JavaBehaviour;
|
import org.alfresco.repo.policy.JavaBehaviour;
|
||||||
import org.alfresco.repo.policy.PolicyComponent;
|
import org.alfresco.repo.policy.PolicyComponent;
|
||||||
@@ -86,6 +87,9 @@ public class RecordsManagementSecurityServiceImpl implements RecordsManagementSe
|
|||||||
|
|
||||||
/** Model security service */
|
/** Model security service */
|
||||||
private ModelSecurityService modelSecurityService;
|
private ModelSecurityService modelSecurityService;
|
||||||
|
|
||||||
|
/** Record service */
|
||||||
|
private RecordService recordService;
|
||||||
|
|
||||||
/** Node service */
|
/** Node service */
|
||||||
private NodeService nodeService;
|
private NodeService nodeService;
|
||||||
@@ -148,6 +152,16 @@ public class RecordsManagementSecurityServiceImpl implements RecordsManagementSe
|
|||||||
{
|
{
|
||||||
this.recordsManagementService = recordsManagementService;
|
this.recordsManagementService = recordsManagementService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set record service
|
||||||
|
*
|
||||||
|
* @param recordService record service
|
||||||
|
*/
|
||||||
|
public void setRecordService(RecordService recordService)
|
||||||
|
{
|
||||||
|
this.recordService = recordService;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the node service
|
* Set the node service
|
||||||
@@ -239,22 +253,27 @@ public class RecordsManagementSecurityServiceImpl implements RecordsManagementSe
|
|||||||
*/
|
*/
|
||||||
private NodeRef createUnfiledContainer(NodeRef rmRootNode, String allRoles)
|
private NodeRef createUnfiledContainer(NodeRef rmRootNode, String allRoles)
|
||||||
{
|
{
|
||||||
// create the properties map
|
NodeRef container = recordService.getUnfiledContainer(rmRootNode);
|
||||||
Map<QName, Serializable> properties = new HashMap<QName, Serializable>(1);
|
|
||||||
properties.put(ContentModel.PROP_NAME, NAME_UNFILED_CONTAINER);
|
if (container == null)
|
||||||
|
{
|
||||||
// create the unfiled container
|
// create the properties map
|
||||||
NodeRef container = nodeService.createNode(
|
Map<QName, Serializable> properties = new HashMap<QName, Serializable>(1);
|
||||||
rmRootNode,
|
properties.put(ContentModel.PROP_NAME, NAME_UNFILED_CONTAINER);
|
||||||
ASSOC_UNFILED_RECORDS,
|
|
||||||
QName.createQName(RM_URI, NAME_UNFILED_CONTAINER),
|
// create the unfiled container
|
||||||
TYPE_UNFILED_RECORD_CONTAINER,
|
container = nodeService.createNode(
|
||||||
properties).getChildRef();
|
rmRootNode,
|
||||||
|
ASSOC_UNFILED_RECORDS,
|
||||||
// set inheritance to false
|
QName.createQName(RM_URI, NAME_UNFILED_CONTAINER),
|
||||||
permissionService.setInheritParentPermissions(container, false);
|
TYPE_UNFILED_RECORD_CONTAINER,
|
||||||
permissionService.setPermission(container, allRoles, RMPermissionModel.READ_RECORDS, true);
|
properties).getChildRef();
|
||||||
permissionService.setPermission(container, ExtendedReaderDynamicAuthority.EXTENDED_READER, RMPermissionModel.READ_RECORDS, true);
|
|
||||||
|
// set inheritance to false
|
||||||
|
permissionService.setInheritParentPermissions(container, false);
|
||||||
|
permissionService.setPermission(container, allRoles, RMPermissionModel.READ_RECORDS, true);
|
||||||
|
permissionService.setPermission(container, ExtendedReaderDynamicAuthority.EXTENDED_READER, RMPermissionModel.READ_RECORDS, true);
|
||||||
|
}
|
||||||
|
|
||||||
return container;
|
return container;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user