mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-10-08 14:51:49 +00:00
disable on update properties for frozen items when setting the record search properties
This commit is contained in:
@@ -52,6 +52,7 @@
|
|||||||
<property name="nodeService" ref="nodeService"/>
|
<property name="nodeService" ref="nodeService"/>
|
||||||
<property name="recordService" ref="recordService"/>
|
<property name="recordService" ref="recordService"/>
|
||||||
<property name="recordFolderService" ref="RecordFolderService"/>
|
<property name="recordFolderService" ref="RecordFolderService"/>
|
||||||
|
<property name="frozenAspect" ref="rma.freeze" />
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="rm.baseBehaviour" abstract="true" parent="baseService">
|
<bean id="rm.baseBehaviour" abstract="true" parent="baseService">
|
||||||
|
@@ -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.disposition.DispositionService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.event.EventCompletionDetails;
|
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.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.record.RecordService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
|
import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.vital.VitalRecordDefinition;
|
import org.alfresco.module.org_alfresco_module_rm.vital.VitalRecordDefinition;
|
||||||
@@ -99,6 +100,11 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel
|
|||||||
/** Record service*/
|
/** Record service*/
|
||||||
private RecordService recordService;
|
private RecordService recordService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Frozen aspect
|
||||||
|
*/
|
||||||
|
private FrozenAspect frozenAspect;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param nodeService the nodeService to set
|
* @param nodeService the nodeService to set
|
||||||
*/
|
*/
|
||||||
@@ -155,6 +161,15 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel
|
|||||||
this.recordService = recordService;
|
this.recordService = recordService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param frozenAspect frozen aspect
|
||||||
|
*/
|
||||||
|
public void setFrozenAspect(FrozenAspect frozenAspect)
|
||||||
|
{
|
||||||
|
this.frozenAspect = frozenAspect;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/** on add search aspect behaviour */
|
/** on add search aspect behaviour */
|
||||||
private JavaBehaviour onAddSearchAspect = new JavaBehaviour(this, "rmSearchAspectAdd", NotificationFrequency.TRANSACTION_COMMIT);
|
private JavaBehaviour onAddSearchAspect = new JavaBehaviour(this, "rmSearchAspectAdd", NotificationFrequency.TRANSACTION_COMMIT);
|
||||||
|
|
||||||
@@ -800,7 +815,9 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel
|
|||||||
if (!methodCached("setVitalRecordDefinitionDetails", nodeRef))
|
if (!methodCached("setVitalRecordDefinitionDetails", nodeRef))
|
||||||
{
|
{
|
||||||
VitalRecordDefinition vrd = vitalRecordService.getVitalRecordDefinition(nodeRef);
|
VitalRecordDefinition vrd = vitalRecordService.getVitalRecordDefinition(nodeRef);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
frozenAspect.disableOnPropUpdateFrozenAspect();
|
||||||
if (vrd != null && vrd.isEnabled() && vrd.getReviewPeriod() != null)
|
if (vrd != null && vrd.isEnabled() && vrd.getReviewPeriod() != null)
|
||||||
{
|
{
|
||||||
// Set the property values
|
// Set the property values
|
||||||
@@ -822,6 +839,12 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel
|
|||||||
nodeService.setProperty(nodeRef, PROP_RS_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION, null);
|
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)
|
if (schedule != null)
|
||||||
{
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
frozenAspect.disableOnPropUpdateFrozenAspect();
|
||||||
nodeService.setProperty(recordOrFolder, PROP_RS_DISPOITION_AUTHORITY, schedule.getDispositionAuthority());
|
nodeService.setProperty(recordOrFolder, PROP_RS_DISPOITION_AUTHORITY, schedule.getDispositionAuthority());
|
||||||
nodeService.setProperty(recordOrFolder, PROP_RS_DISPOITION_INSTRUCTIONS, schedule.getDispositionInstructions());
|
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());
|
logger.debug("Set rma:recordSearchDispositionInstructions for node " + recordOrFolder + " to: " + schedule.getDispositionInstructions());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
frozenAspect.enableOnPropUpdateFrozenAspect();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -68,6 +68,11 @@ public class FrozenAspect extends BaseBehaviourBean
|
|||||||
NodeServicePolicies.OnUpdatePropertiesPolicy,
|
NodeServicePolicies.OnUpdatePropertiesPolicy,
|
||||||
NodeServicePolicies.BeforeMoveNodePolicy
|
NodeServicePolicies.BeforeMoveNodePolicy
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Behaviour name for on update properties for frozen aspect
|
||||||
|
*/
|
||||||
|
private static final String ON_UPDATE_PROP_FROZEN_BEHAVIOUR_NAME = "onUpdatePropertiesFrozenAspect";
|
||||||
|
|
||||||
/** freeze service */
|
/** freeze service */
|
||||||
protected FreezeService freezeService;
|
protected FreezeService freezeService;
|
||||||
|
|
||||||
@@ -79,6 +84,32 @@ public class FrozenAspect extends BaseBehaviourBean
|
|||||||
this.freezeService = freezeService;
|
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.
|
* Ensure that no frozen node is deleted.
|
||||||
*
|
*
|
||||||
@@ -229,6 +260,7 @@ public class FrozenAspect extends BaseBehaviourBean
|
|||||||
@Behaviour
|
@Behaviour
|
||||||
(
|
(
|
||||||
kind = BehaviourKind.CLASS,
|
kind = BehaviourKind.CLASS,
|
||||||
|
name = ON_UPDATE_PROP_FROZEN_BEHAVIOUR_NAME,
|
||||||
notificationFrequency = NotificationFrequency.FIRST_EVENT
|
notificationFrequency = NotificationFrequency.FIRST_EVENT
|
||||||
)
|
)
|
||||||
public void onUpdateProperties(NodeRef nodeRef, Map<QName, Serializable> before, Map<QName, Serializable> after)
|
public void onUpdateProperties(NodeRef nodeRef, Map<QName, Serializable> before, Map<QName, Serializable> after)
|
||||||
|
Reference in New Issue
Block a user