diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/action-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/action-context.xml
index aeaf6af44d..dfc411ea07 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/action-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/action-context.xml
@@ -22,6 +22,16 @@
{http://www.alfresco.org/model/content/1.0}content
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-fileplan-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-fileplan-context.xml
index 95ad0bf90e..898b546ea9 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-fileplan-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-fileplan-context.xml
@@ -12,13 +12,13 @@
-
+
+
-
@@ -62,5 +62,21 @@
+
+
+
+
+
+
+ UNFILED_RECORD_CONTAINER
+
+
+
+
+
+
\ No newline at end of file
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 391f3c6711..14740569ff 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
@@ -33,7 +33,10 @@
-
+
@@ -64,7 +67,7 @@
-
+
@@ -94,7 +97,7 @@
-
+
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 f316f9938c..916c601ed6 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
@@ -849,6 +849,7 @@
org.alfresco.module.org_alfresco_module_rm.record.RecordService.getRecordMetaDataAspects=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.record.RecordService.isDeclared=RM.Read.0
org.alfresco.module.org_alfresco_module_rm.record.RecordService.createRecordFromDocument=RM_ALLOW
+ org.alfresco.module.org_alfresco_module_rm.record.RecordService.getUnfiledRecordContainer=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.record.RecordService.*=RM_DENY
]]>
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/FilePlanComponentKind.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/FilePlanComponentKind.java
index 3f7da216df..e8b5b94324 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/FilePlanComponentKind.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/FilePlanComponentKind.java
@@ -35,5 +35,6 @@ public enum FilePlanComponentKind
RECORD,
TRANSFER,
HOLD,
- DISPOSITION_SCHEDULE;
+ DISPOSITION_SCHEDULE,
+ UNFILED_RECORD_CONTAINER;
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/RecordsManagementServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/RecordsManagementServiceImpl.java
index a2411a0c82..49fa37e409 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/RecordsManagementServiceImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/RecordsManagementServiceImpl.java
@@ -526,6 +526,10 @@ public class RecordsManagementServiceImpl implements RecordsManagementService,
{
result = FilePlanComponentKind.DISPOSITION_SCHEDULE;
}
+ else if (instanceOf(nodeRef, TYPE_UNFILED_RECORD_CONTAINER) == true)
+ {
+ result = FilePlanComponentKind.UNFILED_RECORD_CONTAINER;
+ }
}
return result;
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 c76ca0a65e..239250e7cd 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
@@ -282,12 +282,23 @@ public abstract class RMActionExecuterAbstractBase extends ActionExecuterAbstra
PropertyCheck.mandatory(this, "recordsManagementService", recordsManagementService);
PropertyCheck.mandatory(this, "recordsManagementAdminService", recordsManagementAdminService);
PropertyCheck.mandatory(this, "recordsManagementEventService", recordsManagementEventService);
+
for(AbstractCapability capability : capabilities)
{
capability.registerAction(this);
}
}
+ /**
+ * Indicates whether this records management action is public or not
+ *
+ * @return boolean true if public, false otherwise
+ */
+ public boolean isPublicAction()
+ {
+ return publicAction;
+ }
+
/**
* @see org.alfresco.repo.action.CommonResourceAbstractBase#setBeanName(java.lang.String)
*/
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/dm/FileRecordAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/dm/FileRecordAction.java
new file mode 100644
index 0000000000..5290b7d7b6
--- /dev/null
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/dm/FileRecordAction.java
@@ -0,0 +1,54 @@
+package org.alfresco.module.org_alfresco_module_rm.action.dm;
+
+import java.util.List;
+
+import org.alfresco.repo.action.ParameterDefinitionImpl;
+import org.alfresco.repo.action.executer.ActionExecuterAbstractBase;
+import org.alfresco.service.cmr.action.Action;
+import org.alfresco.service.cmr.action.ParameterDefinition;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
+import org.alfresco.service.cmr.model.FileFolderService;
+import org.alfresco.service.cmr.model.FileNotFoundException;
+import org.alfresco.service.cmr.repository.NodeRef;
+
+public class FileRecordAction extends ActionExecuterAbstractBase
+{
+ public static final String NAME = "file-record";
+ public static final String PARAM_DESTINATION_RECORD_FOLDER = "destination-record-folder";
+
+ /**
+ * FileFolder service
+ */
+ private FileFolderService fileFolderService;
+
+ public void setFileFolderService(FileFolderService fileFolderService)
+ {
+ this.fileFolderService = fileFolderService;
+ }
+
+ @Override
+ protected void addParameterDefinitions(List paramList)
+ {
+ paramList.add(new ParameterDefinitionImpl(
+ PARAM_DESTINATION_RECORD_FOLDER,
+ DataTypeDefinition.NODE_REF,
+ true,
+ getParamDisplayLabel(PARAM_DESTINATION_RECORD_FOLDER)));
+ }
+
+ /**
+ * @see org.alfresco.repo.action.executer.ActionExecuter#execute(org.alfresco.repo.ref.NodeRef, org.alfresco.repo.ref.NodeRef)
+ */
+ public void executeImpl(Action ruleAction, NodeRef actionedUponNodeRef)
+ {
+ NodeRef destinationParent = (NodeRef)ruleAction.getParameterValue(PARAM_DESTINATION_RECORD_FOLDER);
+ try
+ {
+ fileFolderService.move(actionedUponNodeRef, destinationParent, null);
+ }
+ catch (FileNotFoundException e)
+ {
+ // Do nothing
+ }
+ }
+}
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 5470a46f85..ab3b1f5a9a 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,6 +18,7 @@
*/
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;
@@ -59,7 +60,10 @@ public class RMActionProxyFactoryBean extends ProxyFactoryBean
{
public Void doWork() throws Exception
{
- 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/module/org_alfresco_module_rm/jscript/app/JSONConversionComponent.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/JSONConversionComponent.java
index 94b9e1bccf..fce108024a 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/JSONConversionComponent.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/JSONConversionComponent.java
@@ -140,7 +140,11 @@ public class JSONConversionComponent extends org.alfresco.repo.jscript.app.JSONC
rmNodeValues.put("kind", kind.toString());
// File plan node reference
- rmNodeValues.put("filePlan", recordsManagementService.getFilePlan(nodeRef).toString());
+ NodeRef filePlan = recordsManagementService.getFilePlan(nodeRef);
+ rmNodeValues.put("filePlan", filePlan.toString());
+
+ // Unfiled container node reference
+ rmNodeValues.put("unfiledRecordContainer", recordService.getUnfiledRecordContainer(filePlan).toString());
// Set the indicators array
setIndicators(rmNodeValues, nodeRef);
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordService.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordService.java
index f885c18921..037dd56ae9 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordService.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordService.java
@@ -64,5 +64,7 @@ public interface RecordService
// TODO NodeRef createAndFileRecord(NodeRef recordFolder, NodeRef document);
- // TODO void fileRecord(NodeRef recordFolder, NodeRef record);
+ // TODO void fileRecord(NodeRef recordFolder, NodeRef record);
+
+ public NodeRef getUnfiledRecordContainer(NodeRef filePlan);
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java
index 00c0aa89fa..dc53ecf1c9 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java
@@ -47,18 +47,25 @@ import org.alfresco.service.namespace.RegexQNamePattern;
*/
public class RecordServiceImpl implements RecordService, RecordsManagementModel
{
+ /** Node service **/
private NodeService nodeService;
+ /** Indentiy service */
private IdentifierService identifierService;
+ /** Records management service */
private RecordsManagementService recordsManagementService;
+ /** Dictionary service */
private DictionaryService dictionaryService;
+ /** Policy component */
private PolicyComponent policyComponent;
+ /** Permission service */
private PermissionService permissionService;
+ /** Records management security service */
private RecordsManagementSecurityService recordsManagementSecurityService;
/** List of available record meta-data aspects */
@@ -182,7 +189,7 @@ public class RecordServiceImpl implements RecordService, RecordsManagementModel
ChildAssociationRef parentAssoc = nodeService.getPrimaryParent(document);
/// get the new record container for the file plan
- NodeRef newRecordContainer = getNewRecordContainer(filePlan);
+ NodeRef newRecordContainer = getUnfiledRecordContainer(filePlan);
if (newRecordContainer == null)
{
throw new AlfrescoRuntimeException("Unable to create record, because new record container could not be found.");
@@ -219,12 +226,12 @@ public class RecordServiceImpl implements RecordService, RecordsManagementModel
* @param filePlan
* @return
*/
- private NodeRef getNewRecordContainer(NodeRef filePlan)
+ public NodeRef getUnfiledRecordContainer(NodeRef filePlan)
{
List assocs = nodeService.getChildAssocs(filePlan, ASSOC_UNFILED_RECORDS, RegexQNamePattern.MATCH_ALL);
if (assocs.size() != 1)
{
- throw new AlfrescoRuntimeException("Error getting the new record container, because the container cannot be indentified.");
+ throw new AlfrescoRuntimeException("Error getting the unfiled container, because the container cannot be indentified.");
}
return assocs.get(0).getChildRef();
}