Merge feature/RM-4373_SpecialContainersEditable into feature/RM-4357_and_RM_4373

This commit is contained in:
Ana Bozianu
2016-11-17 11:13:48 +02:00
7 changed files with 56 additions and 8 deletions

View File

@@ -94,4 +94,20 @@
</property> </property>
</bean> </bean>
<bean id="rmEditTransferCapability"
parent="declarativeCapability">
<property name="name" value="EditTransfer"/>
<property name="private" value="true"/>
<property name="kinds">
<list>
<value>TRANSFER_CONTAINER</value>
<value>TRANSFER</value>
</list>
</property>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
</map>
</property>
</bean>
</beans> </beans>

View File

@@ -4,7 +4,7 @@
<beans> <beans>
<!-- Public Capabilities --> <!-- Public Capabilities -->
<bean id="rmCreateHoldCapability" <bean id="rmCreateHoldCapability"
parent="declarativeCapability"> parent="declarativeCapability">
<property name="name" value="CreateHold"/> <property name="name" value="CreateHold"/>
@@ -30,6 +30,7 @@
<property name="permission" value="EditHold"/> <property name="permission" value="EditHold"/>
<property name="kinds"> <property name="kinds">
<list> <list>
<value>HOLD_CONTAINER</value>
<value>HOLD</value> <value>HOLD</value>
</list> </list>
</property> </property>

View File

@@ -44,6 +44,7 @@
<ref bean="rmEditRecordMetadataCapability"/> <ref bean="rmEditRecordMetadataCapability"/>
<ref bean="rmModifyUnfiledRecordsContainerFolderCapability"/> <ref bean="rmModifyUnfiledRecordsContainerFolderCapability"/>
<ref bean="rmEditHoldCapability"/> <ref bean="rmEditHoldCapability"/>
<ref bean="rmEditTransferCapability"/>
</list> </list>
</property> </property>
</bean> </bean>
@@ -62,6 +63,7 @@
<ref bean="rmEditRecordMetadataCapability"/> <ref bean="rmEditRecordMetadataCapability"/>
<ref bean="rmModifyUnfiledRecordsContainerFolderCapability"/> <ref bean="rmModifyUnfiledRecordsContainerFolderCapability"/>
<ref bean="rmEditHoldCapability"/> <ref bean="rmEditHoldCapability"/>
<ref bean="rmEditTransferCapability"/>
</list> </list>
</property> </property>
</bean> </bean>

View File

@@ -44,4 +44,5 @@ rm.action.multiple.children.type-error-message=Operation failed. Children of typ
rm.action.create.transfer.container.child-error-message=Operation failed. Creation is not allowed in Transfer Container. rm.action.create.transfer.container.child-error-message=Operation failed. Creation is not allowed in Transfer Container.
rm.action.create.transfer.child-error-message=Operation failed. Creation is not allowed in Transfer Folders. rm.action.create.transfer.child-error-message=Operation failed. Creation is not allowed in Transfer Folders.
rm.action.create.record.folder.child-error-message=Only records can be created in record folders but it was {0} rm.action.create.record.folder.child-error-message=Only records can be created in record folders but it was {0}
rm.action.transfer-non-editable=The metadata of transfer nodes is not editable.

View File

@@ -129,7 +129,7 @@ public class FilePlanComponentAspect extends BaseBehaviourBean
) )
public void onUpdateProperties(final NodeRef nodeRef, final Map<QName, Serializable> before, final Map<QName, Serializable> after) public void onUpdateProperties(final NodeRef nodeRef, final Map<QName, Serializable> before, final Map<QName, Serializable> after)
{ {
AuthenticationUtil.runAs(new RunAsWork<Void>() AuthenticationUtil.runAsSystem(new RunAsWork<Void>()
{ {
@Override @Override
public Void doWork() public Void doWork()
@@ -141,7 +141,7 @@ public class FilePlanComponentAspect extends BaseBehaviourBean
return null; return null;
} }
}, AuthenticationUtil.getAdminUserName()); });
} }
/** /**

View File

@@ -27,6 +27,9 @@
package org.alfresco.module.org_alfresco_module_rm.model.rma.type; package org.alfresco.module.org_alfresco_module_rm.model.rma.type;
import java.io.Serializable;
import java.util.Map;
import org.alfresco.module.org_alfresco_module_rm.model.BaseBehaviourBean; import org.alfresco.module.org_alfresco_module_rm.model.BaseBehaviourBean;
import org.alfresco.repo.node.NodeServicePolicies; import org.alfresco.repo.node.NodeServicePolicies;
import org.alfresco.repo.node.integrity.IntegrityException; import org.alfresco.repo.node.integrity.IntegrityException;
@@ -34,6 +37,8 @@ import org.alfresco.repo.policy.annotation.Behaviour;
import org.alfresco.repo.policy.annotation.BehaviourBean; import org.alfresco.repo.policy.annotation.BehaviourBean;
import org.alfresco.repo.policy.annotation.BehaviourKind; import org.alfresco.repo.policy.annotation.BehaviourKind;
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.namespace.QName;
import org.springframework.extensions.surf.util.I18NUtil; import org.springframework.extensions.surf.util.I18NUtil;
/** /**
@@ -43,10 +48,15 @@ import org.springframework.extensions.surf.util.I18NUtil;
* @since 2.6 * @since 2.6
*/ */
@BehaviourBean(defaultType = "rma:transfer") @BehaviourBean(defaultType = "rma:transfer")
public class TransferType extends BaseBehaviourBean implements NodeServicePolicies.OnCreateChildAssociationPolicy public class TransferType extends BaseBehaviourBean
implements NodeServicePolicies.OnCreateChildAssociationPolicy,
NodeServicePolicies.OnUpdatePropertiesPolicy
{ {
private final static String MSG_ERROR_ADD_CHILD_TO_TRANSFER = "rm.action.create.transfer.child-error-message"; private final static String MSG_ERROR_ADD_CHILD_TO_TRANSFER = "rm.action.create.transfer.child-error-message";
private static final String BEHAVIOUR_NAME = "onCreateChildAssocsForTransferType"; private final static String MSG_ERROR_EDIT_TRANSFER_PROPERTIES = "rm.action.transfer-non-editable";
private static final String CREATE_CHILD_BEHAVIOUR_NAME = "onCreateChildAssocsForTransferType";
private static final String EDIT_PROPERTIES_BEHAVIOUR_NAME = "onEditTransferProperties";
/** /**
* Disable the behaviours for this transaction * Disable the behaviours for this transaction
@@ -54,7 +64,8 @@ public class TransferType extends BaseBehaviourBean implements NodeServicePolici
*/ */
public void disable() public void disable()
{ {
getBehaviour(BEHAVIOUR_NAME).disable(); getBehaviour(CREATE_CHILD_BEHAVIOUR_NAME).disable();
getBehaviour(EDIT_PROPERTIES_BEHAVIOUR_NAME).disable();
} }
/** /**
@@ -63,7 +74,8 @@ public class TransferType extends BaseBehaviourBean implements NodeServicePolici
*/ */
public void enable() public void enable()
{ {
getBehaviour(BEHAVIOUR_NAME).enable(); getBehaviour(CREATE_CHILD_BEHAVIOUR_NAME).enable();
getBehaviour(EDIT_PROPERTIES_BEHAVIOUR_NAME).enable();
} }
/** /**
@@ -73,10 +85,24 @@ public class TransferType extends BaseBehaviourBean implements NodeServicePolici
@Behaviour @Behaviour
( (
kind = BehaviourKind.ASSOCIATION, kind = BehaviourKind.ASSOCIATION,
name = BEHAVIOUR_NAME name = CREATE_CHILD_BEHAVIOUR_NAME
) )
public void onCreateChildAssociation(ChildAssociationRef childAssocRef, boolean isNewNode) public void onCreateChildAssociation(ChildAssociationRef childAssocRef, boolean isNewNode)
{ {
throw new IntegrityException(I18NUtil.getMessage(MSG_ERROR_ADD_CHILD_TO_TRANSFER), null); throw new IntegrityException(I18NUtil.getMessage(MSG_ERROR_ADD_CHILD_TO_TRANSFER), null);
} }
@Override
@Behaviour
(
kind = BehaviourKind.CLASS,
name = EDIT_PROPERTIES_BEHAVIOUR_NAME
)
public void onUpdateProperties(NodeRef nodeRef, Map<QName, Serializable> before, Map<QName, Serializable> after)
{
if(!authenticationUtil.isRunAsUserTheSystemUser())
{
throw new IntegrityException(I18NUtil.getMessage(MSG_ERROR_EDIT_TRANSFER_PROPERTIES), null);
}
}
} }

View File

@@ -182,6 +182,7 @@ public class TransferServiceImpl extends ServiceBaseImpl
NodeRef transferContainer = filePlanService.getTransferContainer(root); NodeRef transferContainer = filePlanService.getTransferContainer(root);
transferContainerType.disable(); transferContainerType.disable();
transferType.disable();
try try
{ {
transferNodeRef = nodeService.createNode(transferContainer, transferNodeRef = nodeService.createNode(transferContainer,
@@ -194,6 +195,7 @@ public class TransferServiceImpl extends ServiceBaseImpl
finally finally
{ {
transferContainerType.enable(); transferContainerType.enable();
transferType.enable();
} }
// Bind the hold node reference to the transaction // Bind the hold node reference to the transaction
AlfrescoTransactionSupport.bindResource(KEY_TRANSFER_NODEREF, transferNodeRef); AlfrescoTransactionSupport.bindResource(KEY_TRANSFER_NODEREF, transferNodeRef);