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 7abdc3e77a..2cadb9e1e3 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
@@ -1581,4 +1581,49 @@
+
+
+
+
+
+
+
+
+
+ org.alfresco.module.org_alfresco_module_rm.recordableversion.RecordableVersionConfigService
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${server.transaction.mode.default}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml
index 9ceeb3a195..0203627fda 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml
@@ -618,11 +618,13 @@
+
+
\ No newline at end of file
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/recordableversion/RecordableVersionConfigService.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/recordableversion/RecordableVersionConfigService.java
new file mode 100644
index 0000000000..1d5b759e45
--- /dev/null
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/recordableversion/RecordableVersionConfigService.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2005-2014 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.recordableversion;
+
+import java.util.List;
+
+import org.alfresco.module.org_alfresco_module_rm.script.slingshot.Version;
+import org.alfresco.service.cmr.repository.NodeRef;
+
+/**
+ * Recordable version config service interface
+ *
+ * @author Tuna Aksoy
+ * @since 2.3
+ */
+public interface RecordableVersionConfigService
+{
+ /**
+ * Gets the recordable versions
+ *
+ * @param nodeRef The node reference for which the recordable versions should be retrieved
+ * @return The list of recordable versions
+ */
+ List getVersions(NodeRef nodeRef);
+
+ /**
+ * Sets the recordable version for the given node
+ *
+ * @param nodeRef The node reference for which the recorable version should be set
+ * @param version The version to be set
+ */
+ void setVersion(NodeRef nodeRef, String version);
+}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/recordableversion/RecordableVersionConfigServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/recordableversion/RecordableVersionConfigServiceImpl.java
new file mode 100644
index 0000000000..a73e03a06c
--- /dev/null
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/recordableversion/RecordableVersionConfigServiceImpl.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2005-2014 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.recordableversion;
+
+import static org.alfresco.module.org_alfresco_module_rm.version.RecordableVersionPolicy.NONE;
+import static org.alfresco.util.ParameterCheck.mandatory;
+import static org.alfresco.util.ParameterCheck.mandatoryString;
+import static org.apache.commons.lang.StringUtils.isNotBlank;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.alfresco.module.org_alfresco_module_rm.script.slingshot.Version;
+import org.alfresco.module.org_alfresco_module_rm.version.RecordableVersionModel;
+import org.alfresco.module.org_alfresco_module_rm.version.RecordableVersionPolicy;
+import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.repository.NodeService;
+
+/**
+ * Recordable version config service
+ *
+ * @author Tuna Aksoy
+ * @since 2.3
+ */
+public class RecordableVersionConfigServiceImpl implements RecordableVersionConfigService, RecordableVersionModel
+{
+ /** Node service */
+ private NodeService nodeService;
+
+ /**
+ * Gets the node service
+ *
+ * @return The node service
+ */
+ protected NodeService getNodeService()
+ {
+ return this.nodeService;
+ }
+
+ /**
+ * Sets the node service
+ *
+ * @param nodeService The node service
+ */
+ public void setNodeService(NodeService nodeService)
+ {
+ this.nodeService = nodeService;
+ }
+
+ /**
+ * @see org.alfresco.module.org_alfresco_module_rm.recordableversion.RecordableVersionConfigService#getVersions(org.alfresco.service.cmr.repository.NodeRef)
+ */
+ @Override
+ public List getVersions(NodeRef nodeRef)
+ {
+ mandatory("nodeRef", nodeRef);
+
+ RecordableVersionPolicy[] recordableVersionPolicies = RecordableVersionPolicy.values();
+ List versions = new ArrayList(recordableVersionPolicies.length);
+
+ for (RecordableVersionPolicy recordableVersionPolicy : recordableVersionPolicies)
+ {
+ String policy = recordableVersionPolicy.toString();
+ boolean selected = isVersionPolicySelected(recordableVersionPolicy, nodeRef);
+ versions.add(new Version(policy, selected));
+ }
+
+ return versions;
+ }
+
+ /**
+ * @see org.alfresco.module.org_alfresco_module_rm.recordableversion.RecordableVersionConfigService#setVersion(org.alfresco.service.cmr.repository.NodeRef, java.lang.String)
+ */
+ @Override
+ public void setVersion(NodeRef nodeRef, String version)
+ {
+ mandatory("nodeRef", nodeRef);
+ mandatoryString("recordedVersion", version);
+
+ RecordableVersionPolicy recordableVersionPolicy = RecordableVersionPolicy.valueOf(version);
+ getNodeService().setProperty(nodeRef, PROP_RECORDABLE_VERSION_POLICY, recordableVersionPolicy);
+ }
+
+ /**
+ * Checks if the specified recordable version policy has been selected for the document
+ *
+ * @param recordableVersionPolicy The recordable version policy
+ * @param nodeRef Node reference of the document
+ * @return true if the specified recordable version policy has been selected for the document, false otherwise
+ */
+ private boolean isVersionPolicySelected(RecordableVersionPolicy recordableVersionPolicy, NodeRef nodeRef)
+ {
+ boolean isVersionPolicySelected = false;
+ String policy = (String) getNodeService().getProperty(nodeRef, PROP_RECORDABLE_VERSION_POLICY);
+ if (isNotBlank(policy))
+ {
+ if (RecordableVersionPolicy.valueOf(policy).equals(recordableVersionPolicy))
+ {
+ isVersionPolicySelected = true;
+ }
+ }
+ else
+ {
+ if (recordableVersionPolicy.equals(NONE))
+ {
+ isVersionPolicySelected = true;
+ }
+ }
+ return isVersionPolicySelected;
+ }
+}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/slingshot/RecordedVersionConfigGet.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/slingshot/RecordedVersionConfigGet.java
index fbb37d6f46..d3b8eb3ee0 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/slingshot/RecordedVersionConfigGet.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/slingshot/RecordedVersionConfigGet.java
@@ -18,16 +18,13 @@
*/
package org.alfresco.module.org_alfresco_module_rm.script.slingshot;
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.alfresco.module.org_alfresco_module_rm.recordableversion.RecordableVersionConfigService;
import org.alfresco.module.org_alfresco_module_rm.script.AbstractRmWebScript;
-import org.alfresco.module.org_alfresco_module_rm.version.RecordableVersionModel;
-import org.alfresco.module.org_alfresco_module_rm.version.RecordableVersionPolicy;
import org.alfresco.service.cmr.repository.NodeRef;
-import org.apache.commons.lang.StringUtils;
import org.springframework.extensions.webscripts.Cache;
import org.springframework.extensions.webscripts.Status;
import org.springframework.extensions.webscripts.WebScriptRequest;
@@ -38,68 +35,41 @@ import org.springframework.extensions.webscripts.WebScriptRequest;
* @author Tuna Aksoy
* @since 2.3
*/
-public class RecordedVersionConfigGet extends AbstractRmWebScript implements RecordableVersionModel
+public class RecordedVersionConfigGet extends AbstractRmWebScript
{
+ /** Recordable version config service */
+ private RecordableVersionConfigService recordableVersionConfigService;
+
+ /**
+ * Gets the recordable version config service
+ *
+ * @return The recordable version config service
+ */
+ protected RecordableVersionConfigService getRecordableVersionConfigService()
+ {
+ return this.recordableVersionConfigService;
+ }
+
+ /**
+ * Sets the recordable version config service
+ *
+ * @param recordableVersionConfigService The recordable version config service
+ */
+ public void setRecordableVersionConfigService(RecordableVersionConfigService recordableVersionConfigService)
+ {
+ this.recordableVersionConfigService = recordableVersionConfigService;
+ }
+
/**
* @see org.alfresco.web.scripts.DeclarativeWebScript#executeImpl(org.alfresco.web.scripts.WebScriptRequest, org.alfresco.web.scripts.Status, org.alfresco.web.scripts.Cache)
*/
@Override
protected Map executeImpl(WebScriptRequest req, Status status, Cache cache)
{
- RecordableVersionPolicy[] recordableVersionPolicies = RecordableVersionPolicy.values();
- List