From 070b3cf91ea82ba431420b41e4261eca5c01423a Mon Sep 17 00:00:00 2001 From: Roy Wetherall Date: Mon, 30 Sep 2013 00:16:32 +0000 Subject: [PATCH] RM-996: Reject action is available for destruction report git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@56136 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rm-capabilities-condition-context.xml | 7 ++ .../rm-capabilities-record-context.xml | 1 + .../condition/IsPropertySetCondition.java | 83 +++++++++++++++++++ .../job/DispositionLifecycleJobExecuter.java | 8 +- 4 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/IsPropertySetCondition.java diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-condition-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-condition-context.xml index b48f829464..0085ecb34e 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-condition-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-condition-context.xml @@ -193,5 +193,12 @@ parent="capabilityCondition.base" class="org.alfresco.module.org_alfresco_module_rm.capability.declarative.condition.FailCapabilityCondition"> + + + + + \ No newline at end of file diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-record-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-record-context.xml index 7c45f5ce8c..032486de79 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-record-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-record-context.xml @@ -265,6 +265,7 @@ + diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/IsPropertySetCondition.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/IsPropertySetCondition.java new file mode 100644 index 0000000000..20ced1a648 --- /dev/null +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/IsPropertySetCondition.java @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2005-2013 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ +package org.alfresco.module.org_alfresco_module_rm.capability.declarative.condition; + +import org.alfresco.module.org_alfresco_module_rm.capability.declarative.AbstractCapabilityCondition; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.namespace.NamespaceService; +import org.alfresco.service.namespace.QName; +import org.alfresco.util.ParameterCheck; + +/** + * Indicates whether a property is set or not. + * + * @author Roy Wetherall + * @since 2.1 + */ +public class IsPropertySetCondition extends AbstractCapabilityCondition +{ + /** property name (eg: rma:location) */ + private String propertyName; + + /** namespace service */ + private NamespaceService namespaceService; + + /** + * @param propertyName property name (eg: rma:location) + */ + public void setPropertyName(String propertyName) + { + this.propertyName = propertyName; + } + + /** + * @param namespaceService namespace service + */ + public void setNamespaceService(NamespaceService namespaceService) + { + this.namespaceService = namespaceService; + } + + /** + * @return QName property qname + */ + protected QName getPropertyQName() + { + return QName.createQName(propertyName, namespaceService); + } + + /** + * @see org.alfresco.module.org_alfresco_module_rm.capability.declarative.CapabilityCondition#evaluate(org.alfresco.service.cmr.repository.NodeRef) + */ + @Override + public boolean evaluate(NodeRef nodeRef) + { + ParameterCheck.mandatory("nodeRef", nodeRef); + + boolean result = false; + + if (nodeService.getProperty(nodeRef, getPropertyQName()) != null) + { + result = true; + } + + return result; + } + +} diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/job/DispositionLifecycleJobExecuter.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/job/DispositionLifecycleJobExecuter.java index 713f763ff0..141be63303 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/job/DispositionLifecycleJobExecuter.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/job/DispositionLifecycleJobExecuter.java @@ -102,7 +102,7 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute for (NodeRef node : resultNodes) { final NodeRef currentNode = node; - + RetryingTransactionCallback processTranCB = new RetryingTransactionCallback() { public Boolean execute() throws Throwable @@ -138,7 +138,11 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute /** * Now do the work, one action in each transaction */ - retryingTransactionHelper.doInTransaction(processTranCB); + + if (nodeService.exists(currentNode) == false) + { + retryingTransactionHelper.doInTransaction(processTranCB); + } } logger.debug("Job Finished");