disable on update properties for frozen items when setting the record search properties

This commit is contained in:
Rodica Sutu
2019-08-27 09:34:30 +03:00
parent 5e516a57b9
commit ba9a192950
3 changed files with 83 additions and 19 deletions

View File

@@ -52,6 +52,7 @@
<property name="nodeService" ref="nodeService"/>
<property name="recordService" ref="recordService"/>
<property name="recordFolderService" ref="RecordFolderService"/>
<property name="frozenAspect" ref="rma.freeze" />
</bean>
<bean id="rm.baseBehaviour" abstract="true" parent="baseService">

View File

@@ -45,6 +45,7 @@ import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSchedul
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
import org.alfresco.module.org_alfresco_module_rm.event.EventCompletionDetails;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.module.org_alfresco_module_rm.model.rma.aspect.FrozenAspect;
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.vital.VitalRecordDefinition;
@@ -99,6 +100,11 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel
/** Record service*/
private RecordService recordService;
/**
* Frozen aspect
*/
private FrozenAspect frozenAspect;
/**
* @param nodeService the nodeService to set
*/
@@ -155,6 +161,15 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel
this.recordService = recordService;
}
/**
* @param frozenAspect frozen aspect
*/
public void setFrozenAspect(FrozenAspect frozenAspect)
{
this.frozenAspect = frozenAspect;
}
/** on add search aspect behaviour */
private JavaBehaviour onAddSearchAspect = new JavaBehaviour(this, "rmSearchAspectAdd", NotificationFrequency.TRANSACTION_COMMIT);
@@ -800,7 +815,9 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel
if (!methodCached("setVitalRecordDefinitionDetails", nodeRef))
{
VitalRecordDefinition vrd = vitalRecordService.getVitalRecordDefinition(nodeRef);
try
{
frozenAspect.disableOnPropUpdateFrozenAspect();
if (vrd != null && vrd.isEnabled() && vrd.getReviewPeriod() != null)
{
// Set the property values
@@ -822,6 +839,12 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel
nodeService.setProperty(nodeRef, PROP_RS_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION, null);
}
}
finally
{
frozenAspect.enableOnPropUpdateFrozenAspect();
}
}
}
/**
@@ -871,6 +894,9 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel
{
if (schedule != null)
{
try
{
frozenAspect.disableOnPropUpdateFrozenAspect();
nodeService.setProperty(recordOrFolder, PROP_RS_DISPOITION_AUTHORITY, schedule.getDispositionAuthority());
nodeService.setProperty(recordOrFolder, PROP_RS_DISPOITION_INSTRUCTIONS, schedule.getDispositionInstructions());
@@ -880,6 +906,11 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel
logger.debug("Set rma:recordSearchDispositionInstructions for node " + recordOrFolder + " to: " + schedule.getDispositionInstructions());
}
}
finally
{
frozenAspect.enableOnPropUpdateFrozenAspect();
}
}
}
/**

View File

@@ -68,6 +68,11 @@ public class FrozenAspect extends BaseBehaviourBean
NodeServicePolicies.OnUpdatePropertiesPolicy,
NodeServicePolicies.BeforeMoveNodePolicy
{
/**
* Behaviour name for on update properties for frozen aspect
*/
private static final String ON_UPDATE_PROP_FROZEN_BEHAVIOUR_NAME = "onUpdatePropertiesFrozenAspect";
/** freeze service */
protected FreezeService freezeService;
@@ -79,6 +84,32 @@ public class FrozenAspect extends BaseBehaviourBean
this.freezeService = freezeService;
}
/**
* Disable the on update properties for frozen aspect behaviour
*/
public void disableOnPropUpdateFrozenAspect()
{
org.alfresco.repo.policy.Behaviour behaviour = getBehaviour(ON_UPDATE_PROP_FROZEN_BEHAVIOUR_NAME);
if (behaviour != null)
{
behaviour.disable();
}
}
/**
* Enable the on update properties for frozen aspect
*/
public void enableOnPropUpdateFrozenAspect()
{
org.alfresco.repo.policy.Behaviour behaviour = getBehaviour(ON_UPDATE_PROP_FROZEN_BEHAVIOUR_NAME);
if (behaviour != null && !behaviour.isEnabled())
{
behaviour.enable();
}
}
/**
* Ensure that no frozen node is deleted.
*
@@ -229,6 +260,7 @@ public class FrozenAspect extends BaseBehaviourBean
@Behaviour
(
kind = BehaviourKind.CLASS,
name = ON_UPDATE_PROP_FROZEN_BEHAVIOUR_NAME,
notificationFrequency = NotificationFrequency.FIRST_EVENT
)
public void onUpdateProperties(NodeRef nodeRef, Map<QName, Serializable> before, Map<QName, Serializable> after)