From 83c229d4754851382bf266b433e182fc608f6905 Mon Sep 17 00:00:00 2001 From: Roy Wetherall Date: Thu, 28 Mar 2013 05:24:03 +0000 Subject: [PATCH] RM-638: A records admin can choose from a specialised list of RM relevant conditions when defining a records rule * refactor how we extend the rule's UI * existing rule's UI is left uneffected .. config no longer needs to be overriden .. so custom config will not effect RM * web scripts overriden to use RM specific action and condition UI config * actions and conditions not added to general pool of those available from the rules service ... means no filtering is required on the main UI * module filter used to override component and redirect to the overridden webscripts * server side support of records management conditions added * isFiled and isDeclared conditions added * TODO .. still a couple of lose ends to tie up git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@48659 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rm-action-context.xml | 4 +- .../rm-service-context.xml | 1 + .../rm-webscript-context.xml | 18 +-- ...dm-actionconditiondefinitions.get.desc.xml | 8 -- ...dm-actionconditiondefinitions.get.json.ftl | 1 - .../rule/dm-actiondefinitions.get.desc.xml | 8 -- .../rule/dm-actiondefinitions.get.json.ftl | 1 - .../action/RMActionExecuterAbstractBase.java | 12 ++ .../action/RecordsManagementAction.java | 14 +++ .../RecordsManagementActionCondition.java | 63 ++++++++++ ...dsManagementActionConditionDefinition.java | 4 +- ...tActionConditionEvaluatorAbstractBase.java | 107 +++++++++++++++- .../RecordsManagementActionDefinition.java | 3 +- .../RecordsManagementActionService.java | 14 +++ .../RecordsManagementActionServiceImpl.java | 22 +++- .../evaluator/DelegateActionCondition.java | 69 +++++++++++ .../capability/RMActionProxyFactoryBean.java | 10 +- .../rule/AbstractActionDefinitionsGet.java | 116 ------------------ .../rule/DmActionConditionDefinitionsGet.java | 43 ------- .../scripts/rule/DmActionDefinitionsGet.java | 43 ------- .../rule/RmActionConditionDefinitionsGet.java | 42 ++++++- .../scripts/rule/RmActionDefinitionsGet.java | 32 ++++- 22 files changed, 385 insertions(+), 250 deletions(-) delete mode 100644 rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/dm-actionconditiondefinitions.get.desc.xml delete mode 100644 rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/dm-actionconditiondefinitions.get.json.ftl delete mode 100644 rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/dm-actiondefinitions.get.desc.xml delete mode 100644 rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/dm-actiondefinitions.get.json.ftl create mode 100644 rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionCondition.java create mode 100644 rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/evaluator/DelegateActionCondition.java delete mode 100644 rm-server/source/java/org/alfresco/repo/web/scripts/rule/AbstractActionDefinitionsGet.java delete mode 100644 rm-server/source/java/org/alfresco/repo/web/scripts/rule/DmActionConditionDefinitionsGet.java delete mode 100644 rm-server/source/java/org/alfresco/repo/web/scripts/rule/DmActionDefinitionsGet.java diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml index ab802c31bd..a74f32d866 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml @@ -17,7 +17,9 @@ + class="org.alfresco.module.org_alfresco_module_rm.action.evaluator.CapabilityConditionEvaluator"> + + diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml index 05cf1464ae..25bf34ea39 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml @@ -764,6 +764,7 @@ - + - - - - - - + + - - - - - Get action condition definition collection for DM - Gets a collection of the available action condition definitions in DM. - /api/rm/dm-actionconditiondefinitions - argument - user - required - \ No newline at end of file diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/dm-actionconditiondefinitions.get.json.ftl b/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/dm-actionconditiondefinitions.get.json.ftl deleted file mode 100644 index 1515eae7dd..0000000000 --- a/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/dm-actionconditiondefinitions.get.json.ftl +++ /dev/null @@ -1 +0,0 @@ -<#include "actionconditiondefinitions.get.json.ftl"> \ No newline at end of file diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/dm-actiondefinitions.get.desc.xml b/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/dm-actiondefinitions.get.desc.xml deleted file mode 100644 index e2a48701e8..0000000000 --- a/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/dm-actiondefinitions.get.desc.xml +++ /dev/null @@ -1,8 +0,0 @@ - - Get action definition collection for DM - Gets a collection of the available action definitions in DM. - /api/rm/dm-actiondefinitions - argument - user - required - \ No newline at end of file diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/dm-actiondefinitions.get.json.ftl b/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/dm-actiondefinitions.get.json.ftl deleted file mode 100644 index 2b7650e50d..0000000000 --- a/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/dm-actiondefinitions.get.json.ftl +++ /dev/null @@ -1 +0,0 @@ -<#include "actiondefinitions.get.json.ftl"> \ No newline at end of file diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RMActionExecuterAbstractBase.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RMActionExecuterAbstractBase.java index 9ca08ba400..a0ae7e4b48 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RMActionExecuterAbstractBase.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RMActionExecuterAbstractBase.java @@ -296,6 +296,15 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe ((RecordsManagementActionDefinitionImpl)this.actionDefinition).setApplicableKinds(applicableKinds); return actionDefinition; } + + /** + * @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction#getRecordsManagementActionDefinition() + */ + @Override + public RecordsManagementActionDefinition getRecordsManagementActionDefinition() + { + return (RecordsManagementActionDefinition)getActionDefinition(); + } /** * Init method @@ -322,6 +331,7 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe * * @return boolean true if public, false otherwise */ + @Override public boolean isPublicAction() { return publicAction; @@ -631,4 +641,6 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe return eligible; } + + } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementAction.java index 6744989ad2..d653c3bfa2 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementAction.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementAction.java @@ -74,4 +74,18 @@ public interface RecordsManagementAction * @return the target nodeRef */ public NodeRef getImplicitTargetNodeRef(); + + /** + * + * @return + * @since 2.1 + */ + public RecordsManagementActionDefinition getRecordsManagementActionDefinition(); + + /** + * + * @return + * @since 2.1 + */ + public boolean isPublicAction(); } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionCondition.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionCondition.java new file mode 100644 index 0000000000..c8293253ac --- /dev/null +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionCondition.java @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2005-2011 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.action; + + + +/** + * Record Management Action Condition + * + * @author Roy Wetherall + * @since 2.1 + */ +public interface RecordsManagementActionCondition +{ + /** + * Get the name of the action condition + * + * @return String action condition name + */ + public String getName(); + + /** + * Get the label of the action condition + * + * @return String action condition label + */ + public String getLabel(); + + /** + * Get the description of the action condition + * + * @return String action condition description + */ + public String getDescription(); + + /** + * + * @return + */ + public RecordsManagementActionConditionDefinition getRecordsManagementActionConditionDefinition(); + + /** + * + * @return + */ + public boolean isPublicCondition(); +} diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionConditionDefinition.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionConditionDefinition.java index 0a321ebbe2..19b8c2feed 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionConditionDefinition.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionConditionDefinition.java @@ -18,6 +18,8 @@ */ package org.alfresco.module.org_alfresco_module_rm.action; +import org.alfresco.service.cmr.action.ActionConditionDefinition; + /** * Records management condition definition. * @@ -26,6 +28,6 @@ package org.alfresco.module.org_alfresco_module_rm.action; * @author Roy Wetherall * @since 2.1 */ -public interface RecordsManagementActionConditionDefinition +public interface RecordsManagementActionConditionDefinition extends ActionConditionDefinition { } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionConditionEvaluatorAbstractBase.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionConditionEvaluatorAbstractBase.java index 34c090c0dc..2dc2da194d 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionConditionEvaluatorAbstractBase.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionConditionEvaluatorAbstractBase.java @@ -23,6 +23,9 @@ import java.util.List; import org.alfresco.repo.action.evaluator.ActionConditionEvaluatorAbstractBase; import org.alfresco.service.cmr.action.ActionConditionDefinition; import org.alfresco.service.cmr.action.ParameterDefinition; +import org.springframework.beans.factory.BeanNameAware; +import org.springframework.extensions.surf.util.I18NUtil; +import org.springframework.util.StringUtils; /** * Records management action condition evaluator abstract base implementation. @@ -30,8 +33,92 @@ import org.alfresco.service.cmr.action.ParameterDefinition; * @author Roy Wetherall * @since 2.1 */ -public abstract class RecordsManagementActionConditionEvaluatorAbstractBase extends ActionConditionEvaluatorAbstractBase +public abstract class RecordsManagementActionConditionEvaluatorAbstractBase extends ActionConditionEvaluatorAbstractBase + implements RecordsManagementActionCondition, + BeanNameAware { + /** records management action service */ + private RecordsManagementActionService recordsManagementActionService; + + /** bean name */ + private String name; + + /** public condition */ + protected boolean publicCondition = true; + + /** + * @param recordsManagementActionService records management action service + */ + public void setRecordsManagementActionService(RecordsManagementActionService recordsManagementActionService) + { + this.recordsManagementActionService = recordsManagementActionService; + } + + /** + * @see org.alfresco.repo.action.evaluator.ActionConditionEvaluatorAbstractBase#init() + */ + @Override + public void init() + { + // override to prevent condition being registered with the core action service + recordsManagementActionService.register(this); + } + + @Override + public void setPublicCondition(boolean publicCondition) + { + this.publicCondition = publicCondition; + } + + /** + * @see org.alfresco.repo.action.CommonResourceAbstractBase#setBeanName(java.lang.String) + */ + @Override + public void setBeanName(String name) + { + this.name = name; + } + + /** + * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementAction#getName() + */ + public String getName() + { + return this.name; + } + + /** + * @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction#getLabel() + */ + public String getLabel() + { + String label = I18NUtil.getMessage(this.getTitleKey()); + + if (label == null) + { + // default to the name of the action with first letter capitalised + label = StringUtils.capitalize(this.name); + } + + return label; + } + + /** + * @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction#getDescription() + */ + public String getDescription() + { + String desc = I18NUtil.getMessage(this.getDescriptionKey()); + + if (desc == null) + { + // default to the name of the action with first letter capitalised + desc = StringUtils.capitalize(this.name); + } + + return desc; + } + /** * @see org.alfresco.repo.action.evaluator.ActionConditionEvaluatorAbstractBase#getActionConditionDefintion() * @@ -62,4 +149,22 @@ public abstract class RecordsManagementActionConditionEvaluatorAbstractBase exte // No param implementation by default } + /** + * @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionCondition#isPublicCondition() + */ + @Override + public boolean isPublicCondition() + { + return publicCondition; + } + + /** + * @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionCondition#getRecordsManagementActionConditionDefinition() + */ + @Override + public RecordsManagementActionConditionDefinition getRecordsManagementActionConditionDefinition() + { + return (RecordsManagementActionConditionDefinition)getActionConditionDefintion(); + } + } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionDefinition.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionDefinition.java index b5a1a461c9..d122e097c2 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionDefinition.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionDefinition.java @@ -21,6 +21,7 @@ package org.alfresco.module.org_alfresco_module_rm.action; import java.util.Set; import org.alfresco.module.org_alfresco_module_rm.FilePlanComponentKind; +import org.alfresco.service.cmr.action.ActionDefinition; /** * Extended action definition interface. @@ -28,7 +29,7 @@ import org.alfresco.module.org_alfresco_module_rm.FilePlanComponentKind; * @author Roy Wetherall * @since 2.1 */ -public interface RecordsManagementActionDefinition +public interface RecordsManagementActionDefinition extends ActionDefinition { /** * @return list of applicable file plan component kinds diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionService.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionService.java index 6d943d7412..2b796a5d0f 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionService.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionService.java @@ -39,6 +39,13 @@ public interface RecordsManagementActionService */ List getRecordsManagementActions(); + /** + * + * @return + * @since 2.1 + */ + List getRecordsManagementActionConditions(); + /** * Get a list of the available disposition actions. A disposition action is a records * management action that can be used when defining disposition instructions. @@ -112,4 +119,11 @@ public interface RecordsManagementActionService * @param rmAction records management action */ void register(RecordsManagementAction rmAction); + + /** + * + * @param rmCondition + * @since 2.1 + */ + void register(RecordsManagementActionCondition rmCondition); } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionServiceImpl.java index b34af27e62..fab7f67a18 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionServiceImpl.java @@ -55,7 +55,8 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi private static Log logger = LogFactory.getLog(RecordsManagementActionServiceImpl.class); /** Registered records management actions */ - private Map rmActions = new HashMap(6); + private Map rmActions = new HashMap(13); + private Map rmConditions = new HashMap(13); private Map dispositionActions = new HashMap(4); /** Policy component */ @@ -114,6 +115,14 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi } } + public void register(RecordsManagementActionCondition rmCondition) + { + if (rmConditions.containsKey(rmCondition.getName()) == false) + { + rmConditions.put(rmCondition.getName(), rmCondition); + } + } + /** * Invoke beforeRMActionExecution policy * @@ -156,6 +165,17 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi return Collections.unmodifiableList(result); } + /** + * @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#getRecordsManagementActionConditions() + */ + @Override + public List getRecordsManagementActionConditions() + { + List result = new ArrayList(rmConditions.size()); + result.addAll(rmConditions.values()); + return Collections.unmodifiableList(result); + } + /** * @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#getDispositionActions(org.alfresco.service.cmr.repository.NodeRef) */ diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/evaluator/DelegateActionCondition.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/evaluator/DelegateActionCondition.java new file mode 100644 index 0000000000..62b79d2607 --- /dev/null +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/evaluator/DelegateActionCondition.java @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2005-2012 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.action.evaluator; + +import java.util.List; + +import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionConditionEvaluatorAbstractBase; +import org.alfresco.repo.action.evaluator.ActionConditionEvaluator; +import org.alfresco.service.cmr.action.ActionCondition; +import org.alfresco.service.cmr.action.ParameterDefinition; +import org.alfresco.service.cmr.repository.NodeRef; + +/** + * Records management action condition who's implementation is delegated to an existing + * action condition. + *

+ * Useful for creating a RM version of an existing action condition implementation. + * + * @author Roy Wetherall + * @since 2.1 + */ +public class DelegateActionCondition extends RecordsManagementActionConditionEvaluatorAbstractBase +{ + /** Delegate action evaluator */ + private ActionConditionEvaluator actionConditionEvaluator; + + /** + * @param actionEvaluator action evaluator + */ + public void setActionConditionEvaluator(ActionConditionEvaluator actionConditionEvaluator) + { + this.actionConditionEvaluator = actionConditionEvaluator; + } + + /** + * @see org.alfresco.repo.action.evaluator.ActionConditionEvaluatorAbstractBase#evaluateImpl(org.alfresco.service.cmr.action.ActionCondition, org.alfresco.service.cmr.repository.NodeRef) + */ + @Override + protected boolean evaluateImpl(ActionCondition actionCondition, NodeRef actionedUponNodeRef) + { + return actionConditionEvaluator.evaluate(actionCondition, actionedUponNodeRef); + } + + /** + * @see org.alfresco.repo.action.ParameterizedItemAbstractBase#getParameterDefintions() + */ + @Override + protected List getParameterDefintions() + { + return actionConditionEvaluator.getActionConditionDefintion().getParameterDefinitions(); + } + +} diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMActionProxyFactoryBean.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMActionProxyFactoryBean.java index ab3b1f5a9a..c108110359 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMActionProxyFactoryBean.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMActionProxyFactoryBean.java @@ -18,11 +18,9 @@ */ package org.alfresco.module.org_alfresco_module_rm.capability; -import org.alfresco.module.org_alfresco_module_rm.action.RMActionExecuterAbstractBase; import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction; import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService; import org.alfresco.repo.action.RuntimeActionService; -import org.alfresco.repo.action.executer.ActionExecuter; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.springframework.aop.framework.ProxyFactoryBean; @@ -60,10 +58,10 @@ public class RMActionProxyFactoryBean extends ProxyFactoryBean { public Void doWork() throws Exception { - if (((RMActionExecuterAbstractBase)getTargetSource().getTarget()).isPublicAction() == true) - { - runtimeActionService.registerActionExecuter((ActionExecuter) getObject()); - } + // if (((RMActionExecuterAbstractBase)getTargetSource().getTarget()).isPublicAction() == true) + // { + // runtimeActionService.registerActionExecuter((ActionExecuter) getObject()); + // } recordsManagementActionService.register((RecordsManagementAction) getObject()); return null; } diff --git a/rm-server/source/java/org/alfresco/repo/web/scripts/rule/AbstractActionDefinitionsGet.java b/rm-server/source/java/org/alfresco/repo/web/scripts/rule/AbstractActionDefinitionsGet.java deleted file mode 100644 index bd33a2c5f1..0000000000 --- a/rm-server/source/java/org/alfresco/repo/web/scripts/rule/AbstractActionDefinitionsGet.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (C) 2005-2012 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.repo.web.scripts.rule; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionConditionDefinition; -import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionDefinition; -import org.alfresco.service.cmr.action.ActionConditionDefinition; -import org.alfresco.service.cmr.action.ActionDefinition; -import org.alfresco.service.cmr.action.ActionService; -import org.springframework.extensions.webscripts.DeclarativeWebScript; - -/** - * An abstract class for the java backed webscripts to get the filtered action definition list. - * - * @author Tuna Aksoy - * @since 2.1 - */ -public class AbstractActionDefinitionsGet extends DeclarativeWebScript -{ - private ActionService actionService; - - public void setActionService(ActionService actionService) - { - this.actionService = actionService; - } - - /** - * Returns a model with the filtered action definitions - * - * @param removeRmRelatedActionDefs if true the rm related action definitions will be removed, otherwise dm related actions - * @return Map the model with the filtered action definitions - */ - protected Map getModelWithFilteredActionDefinitions(boolean removeRmRelatedActionDefs) - { - // get all action definitions and filter them - List actiondefinitions = filterActionDefinitons(actionService.getActionDefinitions(), removeRmRelatedActionDefs); - - Map model = new HashMap(); - model.put("actiondefinitions", actiondefinitions); - - return model; - } - - /** - * - * @param removeRmDefs - * @return - */ - protected Map getModelWithFilteredActionConditionDefinitions(boolean removeRmDefs) - { - List defs = filterActionConditionDefinitons(actionService.getActionConditionDefinitions(), removeRmDefs); - - Map model = new HashMap(); - model.put("actionconditiondefinitions", defs); - - return model; - } - - /** - * Filters the action definition list - * - * @param actionDefinitions the list of action definitions to filter - * @param removeRmRelatedActionDefs if true the rm related action definitions will be removed, otherwise dm related actions - * @return List the filtered list of action definitions - */ - private List filterActionDefinitons(List actionDefinitions, boolean removeRmRelatedActionDefs) - { - for (Iterator iterator = actionDefinitions.iterator(); iterator.hasNext();) - { - if ((iterator.next() instanceof RecordsManagementActionDefinition) == removeRmRelatedActionDefs) - { - iterator.remove(); - } - } - return actionDefinitions; - } - - /** - * - * @param defs - * @param removeRmRelated - * @return - */ - private List filterActionConditionDefinitons(List defs, boolean removeRmRelated) - { - for (Iterator iterator = defs.iterator(); iterator.hasNext();) - { - if ((iterator.next() instanceof RecordsManagementActionConditionDefinition) == removeRmRelated) - { - iterator.remove(); - } - } - return defs; - } -} diff --git a/rm-server/source/java/org/alfresco/repo/web/scripts/rule/DmActionConditionDefinitionsGet.java b/rm-server/source/java/org/alfresco/repo/web/scripts/rule/DmActionConditionDefinitionsGet.java deleted file mode 100644 index 5a10df93c1..0000000000 --- a/rm-server/source/java/org/alfresco/repo/web/scripts/rule/DmActionConditionDefinitionsGet.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 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.repo.web.scripts.rule; - -import java.util.Map; - -import org.springframework.extensions.webscripts.Cache; -import org.springframework.extensions.webscripts.Status; -import org.springframework.extensions.webscripts.WebScriptRequest; - -/** - * Implementation for java backed webscript to get the DM related action condition definition list. - * - * @author Roy Wetherall - * @since 2.1 - */ -public class DmActionConditionDefinitionsGet extends AbstractActionDefinitionsGet -{ - /** - * @see org.springframework.extensions.webscripts.DeclarativeWebScript#executeImpl(org.springframework.extensions.webscripts.WebScriptRequest, org.springframework.extensions.webscripts.Status, org.springframework.extensions.webscripts.Cache) - */ - @Override - protected Map executeImpl(WebScriptRequest req, Status status, Cache cache) - { - return getModelWithFilteredActionConditionDefinitions(true); - } -} diff --git a/rm-server/source/java/org/alfresco/repo/web/scripts/rule/DmActionDefinitionsGet.java b/rm-server/source/java/org/alfresco/repo/web/scripts/rule/DmActionDefinitionsGet.java deleted file mode 100644 index 54ae738d98..0000000000 --- a/rm-server/source/java/org/alfresco/repo/web/scripts/rule/DmActionDefinitionsGet.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 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.repo.web.scripts.rule; - -import java.util.Map; - -import org.springframework.extensions.webscripts.Cache; -import org.springframework.extensions.webscripts.Status; -import org.springframework.extensions.webscripts.WebScriptRequest; - -/** - * Implementation for java backed webscript to get the DM related action definition list. - * - * @author Tuna Aksoy - * @since 2.1 - */ -public class DmActionDefinitionsGet extends AbstractActionDefinitionsGet -{ - /** - * @see org.springframework.extensions.webscripts.DeclarativeWebScript#executeImpl(org.springframework.extensions.webscripts.WebScriptRequest, org.springframework.extensions.webscripts.Status, org.springframework.extensions.webscripts.Cache) - */ - @Override - protected Map executeImpl(WebScriptRequest req, Status status, Cache cache) - { - return getModelWithFilteredActionDefinitions(true); - } -} diff --git a/rm-server/source/java/org/alfresco/repo/web/scripts/rule/RmActionConditionDefinitionsGet.java b/rm-server/source/java/org/alfresco/repo/web/scripts/rule/RmActionConditionDefinitionsGet.java index 3ab7743ffd..22db936be7 100644 --- a/rm-server/source/java/org/alfresco/repo/web/scripts/rule/RmActionConditionDefinitionsGet.java +++ b/rm-server/source/java/org/alfresco/repo/web/scripts/rule/RmActionConditionDefinitionsGet.java @@ -18,9 +18,17 @@ */ package org.alfresco.repo.web.scripts.rule; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; import java.util.Map; +import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionCondition; +import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService; +import org.alfresco.service.cmr.action.ActionConditionDefinition; +import org.alfresco.service.cmr.action.ActionService; import org.springframework.extensions.webscripts.Cache; +import org.springframework.extensions.webscripts.DeclarativeWebScript; import org.springframework.extensions.webscripts.Status; import org.springframework.extensions.webscripts.WebScriptRequest; @@ -30,14 +38,44 @@ import org.springframework.extensions.webscripts.WebScriptRequest; * @author Roy Wetherall * @since 2.1 */ -public class RmActionConditionDefinitionsGet extends AbstractActionDefinitionsGet +public class RmActionConditionDefinitionsGet extends DeclarativeWebScript { + private ActionService actionService; + + private RecordsManagementActionService recordsManagementActionService; + + public void setActionService(ActionService actionService) + { + this.actionService = actionService; + } + + public void setRecordsManagementActionService(RecordsManagementActionService recordsManagementActionService) + { + this.recordsManagementActionService = recordsManagementActionService; + } + /** * @see org.springframework.extensions.webscripts.DeclarativeWebScript#executeImpl(org.springframework.extensions.webscripts.WebScriptRequest, org.springframework.extensions.webscripts.Status, org.springframework.extensions.webscripts.Cache) */ @Override protected Map executeImpl(WebScriptRequest req, Status status, Cache cache) { - return getModelWithFilteredActionConditionDefinitions(false); + List dmDefs = actionService.getActionConditionDefinitions(); + List conditions = recordsManagementActionService.getRecordsManagementActionConditions(); + + List defs = new ArrayList(dmDefs.size()+conditions.size()); + defs.addAll(dmDefs); + for (RecordsManagementActionCondition condition: conditions) + { + if (condition.isPublicCondition() == true) + { + defs.add(condition.getRecordsManagementActionConditionDefinition()); + } + } + + Map model = new HashMap(); + model.put("actionconditiondefinitions", defs); + + return model; } } diff --git a/rm-server/source/java/org/alfresco/repo/web/scripts/rule/RmActionDefinitionsGet.java b/rm-server/source/java/org/alfresco/repo/web/scripts/rule/RmActionDefinitionsGet.java index 64af80e5c7..407f6ef7ae 100644 --- a/rm-server/source/java/org/alfresco/repo/web/scripts/rule/RmActionDefinitionsGet.java +++ b/rm-server/source/java/org/alfresco/repo/web/scripts/rule/RmActionDefinitionsGet.java @@ -18,9 +18,17 @@ */ package org.alfresco.repo.web.scripts.rule; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; import java.util.Map; +import java.util.Set; +import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction; +import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService; +import org.alfresco.service.cmr.action.ActionDefinition; import org.springframework.extensions.webscripts.Cache; +import org.springframework.extensions.webscripts.DeclarativeWebScript; import org.springframework.extensions.webscripts.Status; import org.springframework.extensions.webscripts.WebScriptRequest; @@ -30,14 +38,34 @@ import org.springframework.extensions.webscripts.WebScriptRequest; * @author Tuna Aksoy * @since 2.1 */ -public class RmActionDefinitionsGet extends AbstractActionDefinitionsGet +public class RmActionDefinitionsGet extends DeclarativeWebScript { + private RecordsManagementActionService recordsManagementActionService; + + public void setRecordsManagementActionService(RecordsManagementActionService recordsManagementActionService) + { + this.recordsManagementActionService = recordsManagementActionService; + } + /** * @see org.springframework.extensions.webscripts.DeclarativeWebScript#executeImpl(org.springframework.extensions.webscripts.WebScriptRequest, org.springframework.extensions.webscripts.Status, org.springframework.extensions.webscripts.Cache) */ @Override protected Map executeImpl(WebScriptRequest req, Status status, Cache cache) { - return getModelWithFilteredActionDefinitions(false); + List actions = recordsManagementActionService.getRecordsManagementActions(); + Set defs = new HashSet(actions.size()); + for (RecordsManagementAction action : actions) + { + if (action.isPublicAction() == true) + { + defs.add(action.getRecordsManagementActionDefinition()); + } + } + + Map model = new HashMap(); + model.put("actiondefinitions", defs); + + return model; } }