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 0085ecb34e..b4c08ab445 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
@@ -7,12 +7,13 @@
-
-
+
+
+
-
+
@@ -128,7 +129,7 @@
-
+
@@ -175,7 +176,7 @@
parent="capabilityCondition.base"
class="org.alfresco.module.org_alfresco_module_rm.capability.declarative.condition.IsRecordCategoryCondition">
-
+
@@ -200,5 +201,5 @@
-
+
\ No newline at end of file
diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-group-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-group-context.xml
index c14db066d1..99fe40a51f 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-group-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-group-context.xml
@@ -7,6 +7,7 @@
parent="rmBaseCapability"
class="org.alfresco.module.org_alfresco_module_rm.capability.impl.CreateCapability">
+
@@ -149,7 +150,7 @@
@@ -165,7 +166,7 @@
diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/module-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/module-context.xml
index 3d42979a63..fea08301e7 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/module-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/module-context.xml
@@ -44,10 +44,10 @@
-
+
-
+
@@ -118,7 +118,6 @@
-
@@ -126,7 +125,6 @@
-
@@ -136,12 +134,12 @@
-
+
@@ -172,7 +170,6 @@
-
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 ea568b59d7..24c2b8c2a3 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
@@ -128,7 +128,6 @@
-
@@ -138,6 +137,7 @@
+
-
+
@@ -836,7 +836,7 @@
-
+
diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-job-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-job-context.xml
index 21358a322b..072f0cce70 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-job-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-job-context.xml
@@ -7,37 +7,37 @@
-
+
-
-
org.alfresco.module.org_alfresco_module_rm.job.RecordsManagementJob
-
-
-
-
+
+
-
+
@@ -47,7 +47,7 @@
- 0 0/15 * * * ?
+ 0 0/15 * * * ?
@@ -57,26 +57,26 @@
org.alfresco.module.org_alfresco_module_rm.job.RecordsManagementJob
-
+
-
+
-
-
-
+
@@ -86,37 +86,37 @@
- 0 0/15 * * * ?
+ 0 0/15 * * * ?
-
+
org.alfresco.module.org_alfresco_module_rm.job.RecordsManagementJob
-
+
-
+
-
+
- 0/30 * * * * ?
+ 0/30 * * * * ?
-
-
@@ -125,16 +125,15 @@
-
+
-
-
-
-
+
+
\ No newline at end of file
diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml
index f7dc62dc12..b0b0dd26b0 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml
@@ -87,11 +87,12 @@
-
+
+
diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-public-services-security-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-public-services-security-context.xml
index b219f60cf6..d64a6a7835 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-public-services-security-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-public-services-security-context.xml
@@ -46,7 +46,6 @@
-
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 dc9a296198..0286f0c255 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
@@ -122,12 +122,12 @@
-
+
@@ -184,6 +184,9 @@
+
+
+
@@ -506,9 +509,9 @@
init-method="init">
-
+
@@ -563,7 +566,7 @@
+ init-method="init" depends-on="org_alfresco_module_rm_dictionaryBootstrap">
@@ -573,7 +576,7 @@
-
+
@@ -970,13 +973,13 @@
-
+
@@ -1047,7 +1050,6 @@
-
@@ -1105,7 +1107,7 @@
org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService.auditEvent=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService.clearAuditLog=RM_CAP.0.rma:filePlanComponent.DeleteAudit
org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService.getAuditTrail=RM_ALLOW
- org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService.getAuditTrailFile=RM_ALLOW
+ org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService.getAuditTrailFile=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService.getDateAuditLogLastStarted=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService.getDateAuditLogLastStopped=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService.isAuditLogEnabled=RM_ALLOW
@@ -1126,6 +1128,59 @@
+
+
+
+
+
+
+ org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${server.transaction.mode.default}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1136,15 +1191,17 @@
-
-
+
+
+
+
@@ -1248,7 +1305,6 @@
-
@@ -1485,6 +1541,7 @@
+
diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-ui-evaluators-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-ui-evaluators-context.xml
index e7cf19c2dd..fbec50a811 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-ui-evaluators-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-ui-evaluators-context.xml
@@ -6,7 +6,6 @@
-
@@ -15,13 +14,14 @@
-
+
+
-
+
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 3f1ce339f8..ad81f2962f 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
@@ -7,7 +7,6 @@
-
@@ -145,7 +144,6 @@
-
@@ -224,7 +222,6 @@
-
@@ -250,7 +247,6 @@
class="org.alfresco.module.org_alfresco_module_rm.script.TransferReportGet"
parent="rmBaseTransferWebscript">
-
@@ -260,7 +256,6 @@
class="org.alfresco.module.org_alfresco_module_rm.script.TransferReportPost"
parent="rmBaseTransferWebscript">
-
@@ -392,7 +387,6 @@
-
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/RecordsManagementService.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/RecordsManagementService.java
index 0d31fd1441..479446e51e 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/RecordsManagementService.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/RecordsManagementService.java
@@ -23,303 +23,243 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanComponentKind;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
+import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.namespace.QName;
/**
* Records management service interface.
- *
+ *
* Allows simple creation, manipulation and querying of records management components.
- *
+ *
* @author Roy Wetherall
*/
public interface RecordsManagementService
{
- /********** RM Component methods **********/
-
/**
- * @deprecated as of 2.1, see {@link FilePlanService#isFilePlan(NodeRef)}
+ * @deprecated As of 2.1, see {@link FilePlanService#isFilePlan(NodeRef)}
*/
@Deprecated
boolean isFilePlanComponent(NodeRef nodeRef);
-
+
/**
* @since 2.0
- * @deprecated as of 2.1, see {@link FilePlanService#getFilePlanComponentKind(NodeRef)}
+ * @deprecated As of 2.1, see {@link FilePlanService#getFilePlanComponentKind(NodeRef)}
*/
@Deprecated
FilePlanComponentKind getFilePlanComponentKind(NodeRef nodeRef);
-
+
/**
* @since 2.0
- * @deprecated as of 2.1, see {@link FilePlanService#getFilePlanComponentKindFromType(QName)}
+ * @deprecated As of 2.1, see {@link FilePlanService#getFilePlanComponentKindFromType(QName)}
*/
@Deprecated
FilePlanComponentKind getFilePlanComponentKindFromType(QName type);
-
+
/**
- * @deprecated as of 2.1, see {@link FilePlanService#isFilePlanContainer(NodeRef)}
+ * @deprecated As of 2.1, see {@link FilePlanService#isFilePlanContainer(NodeRef)}
*/
@Deprecated
boolean isRecordsManagementContainer(NodeRef nodeRef);
-
+
/**
- * @deprecated as of 2.1, see {@link FilePlanService#isFilePlan(NodeRef)}
+ * @deprecated As of 2.1, see {@link FilePlanService#isFilePlan(NodeRef)}
*/
@Deprecated
boolean isFilePlan(NodeRef nodeRef);
-
+
/**
- * @deprecated as of 2.1, see {@link FilePlanService#isRecordCategory(NodeRef)}
+ * @deprecated As of 2.1, see {@link FilePlanService#isRecordCategory(NodeRef)}
*/
@Deprecated
- boolean isRecordCategory(NodeRef nodeRef);
-
+ boolean isRecordCategory(NodeRef nodeRef);
+
/**
- * Indicates whether the given node is a record folder or not.
- *
- * @param nodeRef node reference
- * @return boolean true if record folder, false otherwise
+ * @deprecated As of 2.2, see {@link RecordFolderService#isRecordFolder(NodeRef)}
*/
- boolean isRecordFolder(NodeRef nodeRef); // record folder service
-
+ @Deprecated
+ boolean isRecordFolder(NodeRef nodeRef);
+
/**
* Indicates whether the given node is a transfer (container) or not.
- *
+ *
* @param nodeRef node reference
* @return boolean true if transfer, false otherwise
- *
+ *
* @since 2.0
*/
boolean isTransfer(NodeRef nodeRef); // transfer service
-
+
/**
- * Indicates whether the given node (record or record folder) is a metadata stub or not.
- *
- * @param nodeRef node reference
- * @return boolean true if a metadata stub, false otherwise
- *
* @since 2.0
+ * @deprecated As of 2.2, see {@link RecordService#isMetadataStub(NodeRef)}
*/
- boolean isMetadataStub(NodeRef nodeRef); // record service
-
+ @Deprecated
+ boolean isMetadataStub(NodeRef nodeRef);
+
/**
- * Indicates whether the item is cutoff or not.
- *
- * @param nodeRef node reference
- * @return boolean true if the item is cutoff, false otherwise
- *
* @since 2.0
+ * @deprecated As of 2.2, see {@link DispositionService#isCutoff(NodeRef)}
*/
- boolean isCutoff(NodeRef nodeRef); // disposition service ??
-
+ boolean isCutoff(NodeRef nodeRef);
+
/**
- * @deprecated as of 2.1, see {@link FilePlanService#getNodeRefPath(NodeRef)}
+ * @deprecated As of 2.1, see {@link FilePlanService#getNodeRefPath(NodeRef)}
*/
@Deprecated
List getNodeRefPath(NodeRef nodeRef);
-
+
/**
* @deprecated As of 2.1, see {@link FilePlanService#getFilePlan(NodeRef)}
*/
@Deprecated
NodeRef getFilePlan(NodeRef nodeRef);
-
- /********** File Plan Methods **********/
-
+
/**
* @deprecated As of 2.1, see {@link FilePlanService#getFilePlans()}
*/
@Deprecated
List getFilePlans();
-
+
/**
- * @deprecated as of 2.1, see {@link FilePlanService#createFilePlan(NodeRef, String, QName)}
+ * @deprecated As of 2.1, see {@link FilePlanService#createFilePlan(NodeRef, String, QName)}
*/
@Deprecated
NodeRef createFilePlan(NodeRef parent, String name, QName type);
-
+
/**
- * @deprecated as of 2.1, see {@link FilePlanService#createFilePlan(NodeRef, String, QName, Map)}
+ * @deprecated As of 2.1, see {@link FilePlanService#createFilePlan(NodeRef, String, QName, Map)}
*/
@Deprecated
NodeRef createFilePlan(NodeRef parent, String name, QName type, Map properties);
-
+
/**
- * @deprecated as of 2.1, see {@link FilePlanService#createFilePlan(NodeRef, String)}
+ * @deprecated As of 2.1, see {@link FilePlanService#createFilePlan(NodeRef, String)}
*/
@Deprecated
NodeRef createFilePlan(NodeRef parent, String name);
-
+
/**
- * @deprecated as of 2.1, see {@link FilePlanService#createFilePlan(NodeRef, String, Map)}
+ * @deprecated As of 2.1, see {@link FilePlanService#createFilePlan(NodeRef, String, Map)}
*/
@Deprecated
NodeRef createFilePlan(NodeRef parent, String name, Map properties);
-
-
- /********** Record Category Methods **********/
-
+
/**
- * @deprecated as of 2.1, see {@link FilePlanService#getAllContained(NodeRef, boolean)}
+ * @deprecated As of 2.1, see {@link FilePlanService#getAllContained(NodeRef, boolean)}
*/
@Deprecated
List getAllContained(NodeRef recordCategory, boolean deep);
-
+
/**
- * @deprecated as of 2.1, see {@link FilePlanService#getAllContained(NodeRef)}
+ * @deprecated As of 2.1, see {@link FilePlanService#getAllContained(NodeRef)}
*/
@Deprecated
- List getAllContained(NodeRef recordCategory);
-
+ List getAllContained(NodeRef recordCategory);
+
/**
- * @deprecated as of 2.1, see {@link FilePlanService#getContainedRecordCategories(NodeRef, boolean)}
+ * @deprecated As of 2.1, see {@link FilePlanService#getContainedRecordCategories(NodeRef, boolean)}
*/
@Deprecated
List getContainedRecordCategories(NodeRef recordCategory, boolean deep);
-
+
/**
- * @deprecated as of 2.1, see {@link FilePlanService#getContainedRecordCategories(NodeRef)}
+ * @deprecated As of 2.1, see {@link FilePlanService#getContainedRecordCategories(NodeRef)}
*/
@Deprecated
List getContainedRecordCategories(NodeRef recordCategory);
-
+
/**
- * @deprecated as of 2.1, see {@link FilePlanService#getContainedRecordCategories(NodeRef, boolean)}
+ * @deprecated As of 2.1, see {@link FilePlanService#getContainedRecordCategories(NodeRef, boolean)}
*/
@Deprecated
List getContainedRecordFolders(NodeRef container, boolean deep);
-
+
/**
- * @deprecated as of 2.1, see {@link FilePlanService#getContainedRecordFolders(NodeRef)}
+ * @deprecated As of 2.1, see {@link FilePlanService#getContainedRecordFolders(NodeRef)}
*/
@Deprecated
List getContainedRecordFolders(NodeRef container);
-
+
/**
- * @deprecated as of 2.1, see {@link FilePlanService#createRecordCategory(NodeRef, String, QName)}
+ * @deprecated As of 2.1, see {@link FilePlanService#createRecordCategory(NodeRef, String, QName)}
*/
@Deprecated
NodeRef createRecordCategory(NodeRef parent, String name, QName type);
-
+
/**
- * @deprecated as of 2.1, see {@link FilePlanService#createRecordCategory(NodeRef, String, QName, Map)}
+ * @deprecated As of 2.1, see {@link FilePlanService#createRecordCategory(NodeRef, String, QName, Map)}
*/
@Deprecated
NodeRef createRecordCategory(NodeRef parent, String name, QName type, Map properties);
-
+
/**
- * @deprecated as of 2.1, see {@link FilePlanService#createRecordCategory(NodeRef, String)}
+ * @deprecated As of 2.1, see {@link FilePlanService#createRecordCategory(NodeRef, String)}
*/
@Deprecated
NodeRef createRecordCategory(NodeRef parent, String name);
-
+
/**
- * @deprecated as of 2.1, see {@link FilePlanService#createRecordCategory(NodeRef, String, Map)}
+ * @deprecated As of 2.1, see {@link FilePlanService#createRecordCategory(NodeRef, String, Map)}
*/
@Deprecated
NodeRef createRecordCategory(NodeRef parent, String name, Map properties);
-
-
- /********** Record Folder methods **********/
-
- /**
- * Indicates whether the contents of a record folder are all declared.
- *
- * @param nodeRef node reference (record folder)
- * @return boolean true if record folder contents are declared, false otherwise
- */
- boolean isRecordFolderDeclared(NodeRef nodeRef);
-
- /**
- * Indicates whether a record folder is closed or not.
- *
- * @param nodeRef node reference (record folder)
- * @return boolean true if record folder is closed, false otherwise
- *
- * @since 2.0
- */
- boolean isRecordFolderClosed(NodeRef nodeRef);
-
- // TODO NodeRef getRecordFolderByPath(String path);
-
- // TODO NodeRef getRecordFolderById(String id);
-
- // TODO NodeRef getRecordFolderByName(NodeRef parent, String name);
-
-
- /**
- * Create a record folder in the rm container. The record folder with take the name and type
- * provided.
- *
- * @param rmContainer records management container
- * @param name name
- * @param type type
- * @return NodeRef node reference of record folder
- */
- NodeRef createRecordFolder(NodeRef rmContainer, String name, QName type);
-
- /**
- *
- * @param rmContainer
- * @param name
- * @param type
- * @param properties
- * @return
- */
- NodeRef createRecordFolder(NodeRef rmContainer, String name, QName type, Map properties);
-
- /**
- * Type defaults to rm:recordFolder
- *
- * @see RecordsManagementService#createRecordCategory(NodeRef, String, QName)
- *
- * @param rmContainer records management container
- * @param name name
- * @return NodeRef node reference of record folder
- */
- NodeRef createRecordFolder(NodeRef parent, String name);
-
- /**
- *
- * @param parent
- * @param name
- * @param properties
- * @return
- */
- NodeRef createRecordFolder(NodeRef parent, String name, Map properties);
-
- // TODO void deleteRecordFolder(NodeRef recordFolder);
-
- // TODO List getParentRecordsManagementContainers(NodeRef container); // also applicable to record folders
-
- /**
- * Gets a list of all the records within a record folder
- *
- * @param recordFolder record folder
- * @return List list of records in the record folder
- */
- // TODO rename to getContainedRecords(NodeRef recordFolder);
- List getRecords(NodeRef recordFolder);
-
- // TODO move? copy? link?
-
- /**
- * Get all the record folders that a record is filed into.
- *
- * @param record the record node reference
- * @return List list of folder record node references
- */
- // TODO rename to List getParentRecordFolders(NodeRef record);
- List getRecordFolders(NodeRef record);
-
- /********** Deprecated **********/
- /**
+ /**
+ * @deprecated As of 2.2, see {@link RecordFolderService#isRecordFolderDeclared(NodeRef)}
+ */
+ @Deprecated
+ boolean isRecordFolderDeclared(NodeRef nodeRef);
+
+ /**
+ * @since 2.0
+ * @deprecated As of 2.2, see {@link RecordFolderService#isRecordFolderClosed(NodeRef)}
+ */
+ @Deprecated
+ boolean isRecordFolderClosed(NodeRef nodeRef);
+
+ /**
+ * @deprecated As of 2.2, see {@link RecordFolderService#createRecordFolder(NodeRef, String, QName)}
+ */
+ @Deprecated
+ NodeRef createRecordFolder(NodeRef rmContainer, String name, QName type);
+
+ /**
+ * @deprecated As of 2.2, see {@link RecordFolderService#createRecordFolder(NodeRef, String, QName, Map)}
+ */
+ @Deprecated
+ NodeRef createRecordFolder(NodeRef rmContainer, String name, QName type, Map properties);
+
+ /**
+ * @deprecated As of 2.2, see {@link RecordFolderService#createRecordFolder(NodeRef, String)}
+ */
+ @Deprecated
+ NodeRef createRecordFolder(NodeRef parent, String name);
+
+ /**
+ * @deprecated As of 2.2, see {@link RecordFolderService#createRecordFolder(NodeRef, String, Map)
+ */
+ @Deprecated
+ NodeRef createRecordFolder(NodeRef parent, String name, Map properties);
+
+ /**
+ * @deprecated As of 2.2, see {@link RecordService#getRecords(NodeRef)}
+ */
+ @Deprecated
+ List getRecords(NodeRef recordFolder);
+
+ /**
+ * @deprecated As of 2.2, see {@link RecordFolderService#getRecordFolders(NodeRef)}
+ */
+ @Deprecated
+ List getRecordFolders(NodeRef record);
+
+ /**
* @deprecated As of 2.1, replaced by {@link RecordService#getRecordMetaDataAspects()}
*/
@Deprecated
@@ -330,28 +270,28 @@ public interface RecordsManagementService
*/
@Deprecated
boolean isRecordDeclared(NodeRef nodeRef);
-
+
/**
* @since 2.0
* @deprecated As of 2.1, replaced by {@link FreezeService#isHold(NodeRef)}
*/
@Deprecated
boolean isHold(NodeRef nodeRef);
-
+
/**
* @since 2.0
* @deprecated As of 2.1, replaced by {@link FreezeService#isFrozen(NodeRef)}
*/
- @Deprecated
+ @Deprecated
boolean isFrozen(NodeRef nodeRef);
-
+
/**
* @since 2.0
* @deprecated As of 2.1, replaced by {@link FreezeService#hasFrozenChildren(NodeRef)}
*/
@Deprecated
boolean hasFrozenChildren(NodeRef nodeRef);
-
+
/**
* @deprecated As of 2.1, replaced by {@link RecordService#isRecord(NodeRef)}
*/
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 5e0178e2c5..24fbddf550 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
@@ -29,10 +29,14 @@ import java.util.Set;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel;
import org.alfresco.model.RenditionModel;
+import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanComponentKind;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
+import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementCustomModel;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
+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.security.ExtendedSecurityService;
import org.alfresco.module.org_alfresco_module_rm.util.ServiceBaseImpl;
import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
@@ -42,15 +46,11 @@ import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.repository.ScriptService;
import org.alfresco.service.cmr.repository.StoreRef;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
-import org.alfresco.service.namespace.RegexQNamePattern;
-import org.alfresco.util.ParameterCheck;
import org.alfresco.util.PropertyMap;
-import org.springframework.beans.BeansException;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
import org.springframework.extensions.surf.util.I18NUtil;
/**
@@ -62,17 +62,12 @@ public class RecordsManagementServiceImpl extends ServiceBaseImpl
implements RecordsManagementService,
RecordsManagementModel,
RecordsManagementPolicies.OnCreateReference,
- RecordsManagementPolicies.OnRemoveReference,
- ApplicationContextAware
+ RecordsManagementPolicies.OnRemoveReference
{
/** I18N */
private final static String MSG_ERROR_ADD_CONTENT_CONTAINER = "rm.service.error-add-content-container";
private final static String MSG_UPDATE_DISP_ACT_DEF = "rm.service.update-disposition-action-def";
private final static String MSG_SET_ID = "rm.service.set-id";
- private final static String MSG_RECORD_FOLDER_EXPECTED = "rm.service.record-folder-expected";
- private final static String MSG_PARENT_RECORD_FOLDER_ROOT = "rm.service.parent-record-folder-root";
- private final static String MSG_PARENT_RECORD_FOLDER_TYPE = "rm.service.parent-record-folder-type";
- private final static String MSG_RECORD_FOLDER_TYPE = "rm.service.record-folder-type";
/** Store that the RM roots are contained within */
@SuppressWarnings("unused")
@@ -91,18 +86,6 @@ public class RecordsManagementServiceImpl extends ServiceBaseImpl
/** Java behaviour */
private JavaBehaviour onChangeToDispositionActionDefinition;
- /** Application context */
- private ApplicationContext applicationContext;
-
- /**
- * @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)
- */
- @Override
- public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
- {
- this.applicationContext = applicationContext;
- }
-
/**
* Set the service registry service
*
@@ -135,9 +118,68 @@ public class RecordsManagementServiceImpl extends ServiceBaseImpl
this.defaultStoreRef = defaultStoreRef;
}
+ /**
+ * @return File plan service
+ */
private FilePlanService getFilePlanService()
{
- return (FilePlanService)applicationContext.getBean("filePlanService");
+ return serviceRegistry.getFilePlanService();
+ }
+
+ /**
+ * @return Record Folder Service
+ */
+ private RecordFolderService getRecordFolderService()
+ {
+ return serviceRegistry.getRecordFolderService();
+ }
+
+ /**
+ * @return Record Service
+ */
+ private RecordService getRecordService()
+ {
+ return serviceRegistry.getRecordService();
+ }
+
+ /**
+ * @return Freeze Service
+ */
+ private FreezeService getFreezeService()
+ {
+ return serviceRegistry.getFreezeService();
+ }
+
+ /**
+ * @return Disposition Service
+ */
+ private DispositionService getDispositionService()
+ {
+ return serviceRegistry.getDispositionService();
+ }
+
+ /**
+ * @return Extended Security Service
+ */
+ private ExtendedSecurityService getExtendedSecurityService()
+ {
+ return serviceRegistry.getExtendedSecurityService();
+ }
+
+ /**
+ * @return Script Service
+ */
+ private ScriptService getScriptService()
+ {
+ return serviceRegistry.getScriptService();
+ }
+
+ /**
+ * @return Namespace service
+ */
+ private NamespaceService getNamespaceService()
+ {
+ return serviceRegistry.getNamespaceService();
}
/**
@@ -236,8 +278,8 @@ public class RecordsManagementServiceImpl extends ServiceBaseImpl
nodeService.addAspect(thumbnail, ASPECT_FILE_PLAN_COMPONENT, null);
// manage any extended readers
- ExtendedSecurityService extendedSecurityService = serviceRegistry.getExtendedSecurityService();
NodeRef parent = childAssocRef.getParentRef();
+ ExtendedSecurityService extendedSecurityService = getExtendedSecurityService();
Set readers = extendedSecurityService.getExtendedReaders(parent);
Set writers = extendedSecurityService.getExtendedWriters(parent);
if (readers != null && readers.size() != 0)
@@ -296,6 +338,37 @@ public class RecordsManagementServiceImpl extends ServiceBaseImpl
}
}
+ /**
+ * This method compares the oldProps map against the newProps map and returns
+ * a set of QNames of the properties that have changed. Changed here means one of
+ *
+ *
the property has been removed
+ *
the property has had its value changed
+ *
the property has been added
+ *
+ */
+ private Set determineChangedProps(Map oldProps, Map newProps)
+ {
+ Set result = new HashSet();
+ for (QName qn : oldProps.keySet())
+ {
+ if (newProps.get(qn) == null ||
+ newProps.get(qn).equals(oldProps.get(qn)) == false)
+ {
+ result.add(qn);
+ }
+ }
+ for (QName qn : newProps.keySet())
+ {
+ if (oldProps.get(qn) == null)
+ {
+ result.add(qn);
+ }
+ }
+
+ return result;
+ }
+
/**
* Called after any Records Management property has been updated.
*/
@@ -316,6 +389,68 @@ public class RecordsManagementServiceImpl extends ServiceBaseImpl
}, AuthenticationUtil.getAdminUserName());
}
+ /**
+ * This method examines the old and new property sets and for those properties which
+ * have changed, looks for script resources corresponding to those properties.
+ * Those scripts are then called via the ScriptService.
+ *
+ * @param nodeWithChangedProperties the node whose properties have changed.
+ * @param oldProps the old properties and their values.
+ * @param newProps the new properties and their values.
+ *
+ * @see #lookupScripts(Map, Map)
+ */
+ private void lookupAndExecuteScripts(NodeRef nodeWithChangedProperties,
+ Map oldProps, Map newProps)
+ {
+ List scriptRefs = lookupScripts(oldProps, newProps);
+
+ Map objectModel = new HashMap(1);
+ objectModel.put("node", nodeWithChangedProperties);
+ objectModel.put("oldProperties", oldProps);
+ objectModel.put("newProperties", newProps);
+
+ ScriptService scriptService = getScriptService();
+ for (NodeRef scriptRef : scriptRefs)
+ {
+ scriptService.executeScript(scriptRef, null, objectModel);
+ }
+ }
+
+ /**
+ * This method determines which properties have changed and for each such property
+ * looks for a script resource in a well-known location.
+ *
+ * @param oldProps the old properties and their values.
+ * @param newProps the new properties and their values.
+ * @return A list of nodeRefs corresponding to the Script resources.
+ *
+ * @see #determineChangedProps(Map, Map)
+ */
+ private List lookupScripts(Map oldProps, Map newProps)
+ {
+ List result = new ArrayList();
+
+ Map changedProps = PropertyMap.getChangedProperties(oldProps, newProps);
+ for (QName propQName : changedProps.keySet())
+ {
+ QName prefixedQName = propQName.getPrefixedQName(getNamespaceService());
+
+ String [] splitQName = QName.splitPrefixedQName(prefixedQName.toPrefixString());
+ final String shortPrefix = splitQName[0];
+ final String localName = splitQName[1];
+
+ // This is the filename pattern which is assumed.
+ // e.g. a script file cm_name.js would be called for changed to cm:name
+ String expectedScriptName = shortPrefix + "_" + localName + ".js";
+
+ NodeRef nextElement = nodeService.getChildByName(scriptsFolderNodeRef, ContentModel.ASSOC_CONTAINS, expectedScriptName);
+ if (nextElement != null) result.add(nextElement);
+ }
+
+ return result;
+ }
+
/**
* Property update behaviour implementation
*
@@ -380,7 +515,7 @@ public class RecordsManagementServiceImpl extends ServiceBaseImpl
objectModel.put("policy", policy);
objectModel.put("reference", referenceId);
- serviceRegistry.getScriptService().executeScript(scriptNodeRef, null, objectModel);
+ getScriptService().executeScript(scriptNodeRef, null, objectModel);
}
}
@@ -401,43 +536,25 @@ public class RecordsManagementServiceImpl extends ServiceBaseImpl
}
/**
- * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#isFilePlan(org.alfresco.service.cmr.repository.NodeRef)
- *
- * @deprecated As of 2.1, see {@link FilePlanService#isFilePlan(NodeRef)}
- */
- @Deprecated
- public boolean isFilePlan(NodeRef nodeRef)
- {
- return getFilePlanService().isFilePlan(nodeRef);
- }
-
- /**
- * @deprecated as of 2.1, see {@link FilePlanService#isFilePlanContainer(NodeRef)}
+ * @deprecated As of 2.1, see {@link FilePlanService#isFilePlanComponent(NodeRef)}
*/
@Override
- public boolean isRecordsManagementContainer(NodeRef nodeRef)
- {
- return getFilePlanService().isFilePlanContainer(nodeRef);
- }
-
- /**
- * @deprecated as of 2.1, see {@link FilePlanService#isFilePlanComponent(NodeRef)}
- */
public boolean isFilePlanComponent(NodeRef nodeRef)
{
return getFilePlanService().isFilePlanComponent(nodeRef);
}
/**
- * @deprecated as of 2.1, see {@link FilePlanService#getFilePlanComponentKind(NodeRef)}
+ * @deprecated As of 2.1, see {@link FilePlanService#getFilePlanComponentKind(NodeRef)}
*/
+ @Override
public FilePlanComponentKind getFilePlanComponentKind(NodeRef nodeRef)
{
- return getFilePlanService().getFilePlanComponentKind(nodeRef);
+ return getFilePlanService().getFilePlanComponentKind(nodeRef);
}
/**
- * @deprecated as of 2.1, see {@link FilePlanService#getFilePlanComponentKindFromType(QName)}
+ * @deprecated As of 2.1, see {@link FilePlanService#getFilePlanComponentKindFromType(QName)}
*/
@Override
public FilePlanComponentKind getFilePlanComponentKindFromType(QName type)
@@ -446,102 +563,97 @@ public class RecordsManagementServiceImpl extends ServiceBaseImpl
}
/**
- * @deprecated as of 2.1, see {@link FilePlanService#isRecordCategory(NodeRef)}
+ * @deprecated As of 2.1, see {@link FilePlanService#isFilePlanContainer(NodeRef)}
*/
+ @Override
+ public boolean isRecordsManagementContainer(NodeRef nodeRef)
+ {
+ return getFilePlanService().isFilePlanContainer(nodeRef);
+ }
+
+ /**
+ * @deprecated As of 2.1, see {@link FilePlanService#isFilePlan(NodeRef)}
+ */
+ @Override
+ public boolean isFilePlan(NodeRef nodeRef)
+ {
+ return getFilePlanService().isFilePlan(nodeRef);
+ }
+
+ /**
+ * @deprecated As of 2.1, see {@link FilePlanService#isRecordCategory(NodeRef)}
+ */
+ @Override
public boolean isRecordCategory(NodeRef nodeRef)
{
return getFilePlanService().isRecordCategory(nodeRef);
}
/**
- * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#isRecordFolder(org.alfresco.service.cmr.repository.NodeRef)
+ * @deprecated As of 2.2, see {@link RecordFolderService#isRecordFolder(NodeRef)}
*/
+ @Override
public boolean isRecordFolder(NodeRef nodeRef)
{
- return instanceOf(nodeRef, TYPE_RECORD_FOLDER);
+ return getRecordFolderService().isRecordFolder(nodeRef);
}
/**
* @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#isTransfer(org.alfresco.service.cmr.repository.NodeRef)
*/
+ @Override
public boolean isTransfer(NodeRef nodeRef)
{
return instanceOf(nodeRef, TYPE_TRANSFER);
}
/**
- * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#isMetadataStub(org.alfresco.service.cmr.repository.NodeRef)
+ * @deprecated As of 2.2, see {@link RecordService#isMetadataStub(NodeRef)}
*/
@Override
public boolean isMetadataStub(NodeRef nodeRef)
{
- return nodeService.hasAspect(nodeRef, ASPECT_GHOSTED);
+ return getRecordService().isMetadataStub(nodeRef);
}
/**
- * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#isCutoff(org.alfresco.service.cmr.repository.NodeRef)
+ * @deprecated As of 2.2, see {@link DispositionService#isCutoff(NodeRef)}
*/
@Override
public boolean isCutoff(NodeRef nodeRef)
{
- return nodeService.hasAspect(nodeRef, ASPECT_CUT_OFF);
- }
-
- /**
- * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#getFilePlan(org.alfresco.service.cmr.repository.NodeRef)
- * @deprecated As of 2.1, see {@link FilePlanService#getFilePlan(NodeRef)}
- */
- @Deprecated
- public NodeRef getFilePlan(NodeRef nodeRef)
- {
- return getFilePlanService().getFilePlan(nodeRef);
+ return getDispositionService().isCutoff(nodeRef);
}
/**
* @deprecated as of 2.1, see {@link FilePlanService#getNodeRefPath(NodeRef)}
*/
+ @Override
public List getNodeRefPath(NodeRef nodeRef)
{
return getFilePlanService().getNodeRefPath(nodeRef);
}
/**
- * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#getRecordsManagementRoots(org.alfresco.service.cmr.repository.StoreRef)
- *
+ * @deprecated As of 2.1, see {@link FilePlanService#getFilePlan(NodeRef)}
+ */
+ @Override
+ public NodeRef getFilePlan(NodeRef nodeRef)
+ {
+ return getFilePlanService().getFilePlan(nodeRef);
+ }
+
+ /**
* @deprecated As of 2.1, see {@link FilePlanService#getFilePlans()}
*/
- @Deprecated
+ @Override
public List getFilePlans()
{
return new ArrayList(getFilePlanService().getFilePlans());
}
/**
- * @deprecated as of 2.1, see {@link FilePlanService#createFilePlan(NodeRef, String, QName, Map)}
- */
- public NodeRef createFilePlan(NodeRef parent, String name, QName type, Map properties)
- {
- return getFilePlanService().createFilePlan(parent, name, type, properties);
- }
-
- /**
- * @deprecated as of 2.1, see {@link FilePlanService#createFilePlan(NodeRef, String, Map)}
- */
- public NodeRef createFilePlan(NodeRef parent, String name, Map properties)
- {
- return getFilePlanService().createFilePlan(parent, name, properties);
- }
-
- /**
- * @deprecated as of 2.1, see {@link FilePlanService#createFilePlan(NodeRef, String)}
- */
- public NodeRef createFilePlan(NodeRef parent, String name)
- {
- return getFilePlanService().createFilePlan(parent, name);
- }
-
- /**
- * @deprecated as of 2.1, see {@link FilePlanService#createFilePlan(NodeRef, String, QName)}
+ * @deprecated As of 2.1, see {@link FilePlanService#createFilePlan(NodeRef, String, QName)}
*/
@Override
public NodeRef createFilePlan(NodeRef parent, String name, QName type)
@@ -550,39 +662,43 @@ public class RecordsManagementServiceImpl extends ServiceBaseImpl
}
/**
- * @deprecated as of 2.1
+ * @deprecated As of 2.1, see {@link FilePlanService#createFilePlan(NodeRef, String, QName, Map)}
*/
- public NodeRef createRecordCategory(NodeRef parent, String name, QName type, Map properties)
+ @Override
+ public NodeRef createFilePlan(NodeRef parent, String name, QName type, Map properties)
{
- return getFilePlanService().createRecordCategory(parent, name, type, properties);
+ return getFilePlanService().createFilePlan(parent, name, type, properties);
}
/**
- * @deprecated as of 2.1
+ * @deprecated As of 2.1, see {@link FilePlanService#createFilePlan(NodeRef, String)}
*/
- public NodeRef createRecordCategory(NodeRef parent, String name)
+ @Override
+ public NodeRef createFilePlan(NodeRef parent, String name)
{
- return getFilePlanService().createRecordCategory(parent, name);
+ return getFilePlanService().createFilePlan(parent, name);
}
/**
- * @deprecated as of 2.1
+ * @deprecated As of 2.1, see {@link FilePlanService#createFilePlan(NodeRef, String, Map)}
*/
- public NodeRef createRecordCategory(NodeRef parent, String name, Map properties)
+ @Override
+ public NodeRef createFilePlan(NodeRef parent, String name, Map properties)
{
- return getFilePlanService().createRecordCategory(parent, name, properties);
+ return getFilePlanService().createFilePlan(parent, name, properties);
}
/**
- * @deprecated as of 2.1
+ * @deprecated As of 2.1, see {@link FilePlanService#getAllContained(NodeRef, boolean)}
*/
- public NodeRef createRecordCategory(NodeRef parent, String name, QName type)
+ @Override
+ public List getAllContained(NodeRef container, boolean deep)
{
- return getFilePlanService().createRecordCategory(parent, name, type);
+ return getFilePlanService().getAllContained(container, deep);
}
/**
- * @deprecated as of 2.1
+ * @deprecated As of 2.1, see {@link FilePlanService#getAllContained(NodeRef)}
*/
@Override
public List getAllContained(NodeRef container)
@@ -591,25 +707,7 @@ public class RecordsManagementServiceImpl extends ServiceBaseImpl
}
/**
- * @deprecated as of 2.1
- */
- @Override
- public List getAllContained(NodeRef container, boolean deep)
- {
- return getFilePlanService().getAllContained(container, deep);
- }
-
- /**
- * @deprecated as of 2.1
- */
- @Override
- public List getContainedRecordCategories(NodeRef container)
- {
- return getFilePlanService().getContainedRecordCategories(container);
- }
-
- /**
- * @deprecated as of 2.1
+ * @deprecated As of 2.1, see {@link FilePlanService#getContainedRecordCategories(NodeRef, boolean)}
*/
@Override
public List getContainedRecordCategories(NodeRef container, boolean deep)
@@ -618,16 +716,16 @@ public class RecordsManagementServiceImpl extends ServiceBaseImpl
}
/**
- * @deprecated as of 2.1
+ * @deprecated As of 2.1, see {@link FilePlanService#getContainedRecordCategories(NodeRef)}
*/
@Override
- public List getContainedRecordFolders(NodeRef container)
+ public List getContainedRecordCategories(NodeRef container)
{
- return getFilePlanService().getContainedRecordFolders(container);
+ return getFilePlanService().getContainedRecordCategories(container);
}
/**
- * @deprecated as of 2.1
+ * @deprecated As of 2.1, see {@link FilePlanService#getContainedRecordFolders(NodeRef, boolean)}
*/
@Override
public List getContainedRecordFolders(NodeRef container, boolean deep)
@@ -636,311 +734,172 @@ public class RecordsManagementServiceImpl extends ServiceBaseImpl
}
/**
- * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#isRecordFolderDeclared(org.alfresco.service.cmr.repository.NodeRef)
+ * @deprecated As of 2.1, see {@link FilePlanService#getContainedRecordFolders(NodeRef)}
*/
- public boolean isRecordFolderDeclared(NodeRef recordFolder)
+ @Override
+ public List getContainedRecordFolders(NodeRef container)
{
- // Check we have a record folder
- if (isRecordFolder(recordFolder) == false)
- {
- throw new AlfrescoRuntimeException(I18NUtil.getMessage(MSG_RECORD_FOLDER_EXPECTED));
- }
-
- boolean result = true;
-
- // Check that each record in the record folder in declared
- List records = getRecords(recordFolder);
- for (NodeRef record : records)
- {
- if (serviceRegistry.getRecordService().isDeclared(record) == false)
- {
- result = false;
- break;
- }
- }
-
- return result;
-
+ return getFilePlanService().getContainedRecordFolders(container);
}
/**
- * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#isRecordFolderClosed(org.alfresco.service.cmr.repository.NodeRef)
+ * @deprecated As of 2.1, see {@link FilePlanService#createRecordCategory(NodeRef, String, QName)}
+ */
+ @Override
+ public NodeRef createRecordCategory(NodeRef parent, String name, QName type)
+ {
+ return getFilePlanService().createRecordCategory(parent, name, type);
+ }
+
+ /**
+ * @deprecated As of 2.1, see {@link FilePlanService#createRecordCategory(NodeRef, String, QName, Map)}
+ */
+ @Override
+ public NodeRef createRecordCategory(NodeRef parent, String name, QName type, Map properties)
+ {
+ return getFilePlanService().createRecordCategory(parent, name, type, properties);
+ }
+
+ /**
+ * @deprecated As of 2.1, see {@link FilePlanService#createRecordCategory(NodeRef, String)}
+ */
+ @Override
+ public NodeRef createRecordCategory(NodeRef parent, String name)
+ {
+ return getFilePlanService().createRecordCategory(parent, name);
+ }
+
+ /**
+ * @deprecated As of 2.1, see {@link FilePlanService#createRecordCategory(NodeRef, String, Map)}
+ */
+ public NodeRef createRecordCategory(NodeRef parent, String name, Map properties)
+ {
+ return getFilePlanService().createRecordCategory(parent, name, properties);
+ }
+
+ /**
+ * @deprecated As of 2.2, see {@link RecordFolderService#isRecordFolderDeclared(NodeRef)}
+ */
+ @Override
+ public boolean isRecordFolderDeclared(NodeRef recordFolder)
+ {
+ return getRecordFolderService().isRecordFolderDeclared(recordFolder);
+ }
+
+ /**
+ * @deprecated As of 2.2, see {@link RecordFolderService#isRecordFolderClosed(NodeRef)}
*/
@Override
public boolean isRecordFolderClosed(NodeRef nodeRef)
{
- // Check we have a record folder
- if (isRecordFolder(nodeRef) == false)
- {
- throw new AlfrescoRuntimeException(I18NUtil.getMessage(MSG_RECORD_FOLDER_EXPECTED));
- }
-
- return ((Boolean)this.nodeService.getProperty(nodeRef, PROP_IS_CLOSED)).booleanValue();
- }
-
-
- /**
- * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#getRecordFolders(org.alfresco.service.cmr.repository.NodeRef)
- */
- public List getRecordFolders(NodeRef record)
- {
- List result = new ArrayList(1);
- if (isRecord(record) == true)
- {
- List assocs = this.nodeService.getParentAssocs(record, ContentModel.ASSOC_CONTAINS, RegexQNamePattern.MATCH_ALL);
- for (ChildAssociationRef assoc : assocs)
- {
- NodeRef parent = assoc.getParentRef();
- if (isRecordFolder(parent) == true)
- {
- result.add(parent);
- }
- }
- }
- return result;
+ return getRecordFolderService().isRecordFolderClosed(nodeRef);
}
/**
- * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#createRecordFolder(org.alfresco.service.cmr.repository.NodeRef, java.lang.String, org.alfresco.service.namespace.QName, java.util.Map)
- */
- public NodeRef createRecordFolder(NodeRef rmContainer, String name, QName type, Map properties)
- {
- ParameterCheck.mandatory("rmContainer", rmContainer);
- ParameterCheck.mandatory("name", name);
- ParameterCheck.mandatory("type", type);
-
- // Check that we are not trying to create a record folder in a root container
- if (isFilePlan(rmContainer) == true)
- {
- throw new AlfrescoRuntimeException(I18NUtil.getMessage(MSG_PARENT_RECORD_FOLDER_ROOT));
- }
-
- // Check that the parent is a container
- QName parentType = nodeService.getType(rmContainer);
- if (TYPE_RECORD_CATEGORY.equals(parentType) == false &&
- dictionaryService.isSubClass(parentType, TYPE_RECORD_CATEGORY) == false)
- {
- throw new AlfrescoRuntimeException(I18NUtil.getMessage(MSG_PARENT_RECORD_FOLDER_TYPE, parentType.toString()));
- }
-
- // Check that the the provided type is a sub-type of rm:recordFolder
- if (TYPE_RECORD_FOLDER.equals(type) == false &&
- dictionaryService.isSubClass(type, TYPE_RECORD_FOLDER) == false)
- {
- throw new AlfrescoRuntimeException(I18NUtil.getMessage(MSG_RECORD_FOLDER_TYPE, type.toString()));
- }
-
- Map props = new HashMap(1);
- if (properties != null && properties.size() != 0)
- {
- props.putAll(properties);
- }
- props.put(ContentModel.PROP_NAME, name);
-
- return nodeService.createNode(
- rmContainer,
- ContentModel.ASSOC_CONTAINS,
- QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, name),
- type,
- props).getChildRef();
- }
-
- /**
- * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#createRecordFolder(org.alfresco.service.cmr.repository.NodeRef, java.lang.String)
- */
- public NodeRef createRecordFolder(NodeRef rmContrainer, String name)
- {
- // TODO defaults to rm:recordFolder, but in future could auto-detect sub-type of folder based on
- // context
- return createRecordFolder(rmContrainer, name, TYPE_RECORD_FOLDER);
- }
-
- /**
- * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#createRecordFolder(org.alfresco.service.cmr.repository.NodeRef, java.lang.String, java.util.Map)
- */
- public NodeRef createRecordFolder(NodeRef parent, String name, Map properties)
- {
- return createRecordFolder(parent, name, TYPE_RECORD_FOLDER, properties);
- }
-
- /**
- * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#createRecordFolder(org.alfresco.service.cmr.repository.NodeRef, java.lang.String, org.alfresco.service.namespace.QName)
+ * @deprecated As of 2.2, see {@link RecordFolderService#createRecordFolder(NodeRef, String, QName)}
*/
+ @Override
public NodeRef createRecordFolder(NodeRef parent, String name, QName type)
{
- return createRecordFolder(parent, name, type, null);
+ return getRecordFolderService().createRecordFolder(parent, name, type);
}
/**
- * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#getRecords(org.alfresco.service.cmr.repository.NodeRef)
+ * @deprecated As of 2.2, see {@link RecordFolderService#createRecordFolder(NodeRef, String, QName, Map)}
*/
+ @Override
+ public NodeRef createRecordFolder(NodeRef rmContainer, String name, QName type, Map properties)
+ {
+ return getRecordFolderService().createRecordFolder(rmContainer, name, type, properties);
+ }
+
+ /**
+ * @deprecated As of 2.2, see {@link RecordFolderService#createRecordFolder(NodeRef, String)}
+ */
+ @Override
+ public NodeRef createRecordFolder(NodeRef rmContrainer, String name)
+ {
+ return getRecordFolderService().createRecordFolder(rmContrainer, name);
+ }
+
+ /**
+ * @deprecated As of 2.2, see {@link RecordFolderService#createRecordFolder(NodeRef, String, Map)}
+ */
+ @Override
+ public NodeRef createRecordFolder(NodeRef parent, String name, Map properties)
+ {
+ return getRecordFolderService().createRecordFolder(parent, name, properties);
+ }
+
+ /**
+ * @deprecated As of 2.2, see {@link RecordService#getRecords(NodeRef)}
+ */
+ @Override
public List getRecords(NodeRef recordFolder)
{
- List result = new ArrayList(1);
- if (isRecordFolder(recordFolder) == true)
- {
- List assocs = this.nodeService.getChildAssocs(recordFolder, ContentModel.ASSOC_CONTAINS, RegexQNamePattern.MATCH_ALL);
- for (ChildAssociationRef assoc : assocs)
- {
- NodeRef child = assoc.getChildRef();
- if (isRecord(child) == true)
- {
- result.add(child);
- }
- }
- }
- return result;
+ return getRecordService().getRecords(recordFolder);
}
/**
- * This method examines the old and new property sets and for those properties which
- * have changed, looks for script resources corresponding to those properties.
- * Those scripts are then called via the ScriptService.
- *
- * @param nodeWithChangedProperties the node whose properties have changed.
- * @param oldProps the old properties and their values.
- * @param newProps the new properties and their values.
- *
- * @see #lookupScripts(Map, Map)
- */
- private void lookupAndExecuteScripts(NodeRef nodeWithChangedProperties,
- Map oldProps, Map newProps)
- {
- List scriptRefs = lookupScripts(oldProps, newProps);
-
- Map objectModel = new HashMap(1);
- objectModel.put("node", nodeWithChangedProperties);
- objectModel.put("oldProperties", oldProps);
- objectModel.put("newProperties", newProps);
-
- for (NodeRef scriptRef : scriptRefs)
- {
- serviceRegistry.getScriptService().executeScript(scriptRef, null, objectModel);
- }
- }
-
- /**
- * This method determines which properties have changed and for each such property
- * looks for a script resource in a well-known location.
- *
- * @param oldProps the old properties and their values.
- * @param newProps the new properties and their values.
- * @return A list of nodeRefs corresponding to the Script resources.
- *
- * @see #determineChangedProps(Map, Map)
- */
- private List lookupScripts(Map oldProps, Map newProps)
- {
- List result = new ArrayList();
-
- Map changedProps = PropertyMap.getChangedProperties(oldProps, newProps);
- for (QName propQName : changedProps.keySet())
- {
- QName prefixedQName = propQName.getPrefixedQName(serviceRegistry.getNamespaceService());
-
- String [] splitQName = QName.splitPrefixedQName(prefixedQName.toPrefixString());
- final String shortPrefix = splitQName[0];
- final String localName = splitQName[1];
-
- // This is the filename pattern which is assumed.
- // e.g. a script file cm_name.js would be called for changed to cm:name
- String expectedScriptName = shortPrefix + "_" + localName + ".js";
-
- NodeRef nextElement = nodeService.getChildByName(scriptsFolderNodeRef, ContentModel.ASSOC_CONTAINS, expectedScriptName);
- if (nextElement != null) result.add(nextElement);
- }
-
- return result;
- }
-
- /**
- * This method compares the oldProps map against the newProps map and returns
- * a set of QNames of the properties that have changed. Changed here means one of
- *
- *
the property has been removed
- *
the property has had its value changed
- *
the property has been added
- *
- */
- private Set determineChangedProps(Map oldProps, Map newProps)
- {
- Set result = new HashSet();
- for (QName qn : oldProps.keySet())
- {
- if (newProps.get(qn) == null ||
- newProps.get(qn).equals(oldProps.get(qn)) == false)
- {
- result.add(qn);
- }
- }
- for (QName qn : newProps.keySet())
- {
- if (oldProps.get(qn) == null)
- {
- result.add(qn);
- }
- }
-
- return result;
- }
-
- /**
- * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#getRecordMetaDataAspects()
+ * @deprecated As of 2.2, see {@link RecordFolderService#getRecordFolders(NodeRef)}
+ */
+ @Override
+ public List getRecordFolders(NodeRef record)
+ {
+ return getRecordFolderService().getRecordFolders(record);
+ }
+
+ /**
+ * @deprecated As of 2.1, see {@link RecordService#getRecordMetaDataAspects()}
*/
@Override
- @Deprecated
public Set getRecordMetaDataAspects()
{
- return serviceRegistry.getRecordService().getRecordMetaDataAspects();
+ return getRecordService().getRecordMetaDataAspects();
}
/**
- * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#isRecordDeclared(org.alfresco.service.cmr.repository.NodeRef)
+ * @deprecated As of 2.1, see {@link RecordService#isDeclared(NodeRef)}
*/
@Override
- @Deprecated
public boolean isRecordDeclared(NodeRef nodeRef)
{
- return serviceRegistry.getRecordService().isDeclared(nodeRef);
+ return getRecordService().isDeclared(nodeRef);
}
/**
- * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#isHold(org.alfresco.service.cmr.repository.NodeRef)
+ * @deprecated As of 2.1, see {@link FreezeService#isHold(NodeRef)}
*/
@Override
- @Deprecated
public boolean isHold(NodeRef nodeRef)
{
- return serviceRegistry.getFreezeService().isHold(nodeRef);
+ return getFreezeService().isHold(nodeRef);
}
/**
- * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#isFrozen(org.alfresco.service.cmr.repository.NodeRef)
+ * @deprecated As of 2.1, see {@link FreezeService#isFrozen(NodeRef)}
*/
@Override
- @Deprecated
public boolean isFrozen(NodeRef nodeRef)
{
- return serviceRegistry.getFreezeService().isFrozen(nodeRef);
+ return getFreezeService().isFrozen(nodeRef);
}
/**
- * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#hasFrozenChildren(org.alfresco.service.cmr.repository.NodeRef)
+ * @deprecated As of 2.1, see {@link FreezeService#hasFrozenChildren(NodeRef)}
*/
@Override
- @Deprecated
public boolean hasFrozenChildren(NodeRef nodeRef)
{
- return serviceRegistry.getFreezeService().hasFrozenChildren(nodeRef);
+ return getFreezeService().hasFrozenChildren(nodeRef);
}
/**
- * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#isRecord(org.alfresco.service.cmr.repository.NodeRef)
+ * @deprecated As of 2.1, see {@link RecordService#isRecord(NodeRef)}
*/
@Override
- @Deprecated
public boolean isRecord(NodeRef nodeRef)
{
- return serviceRegistry.getRecordService().isRecord(nodeRef);
+ return getRecordService().isRecord(nodeRef);
}
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/RecordsManagementServiceRegistry.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/RecordsManagementServiceRegistry.java
index a31b64d1cd..615084ea33 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/RecordsManagementServiceRegistry.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/RecordsManagementServiceRegistry.java
@@ -28,6 +28,7 @@ import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
import org.alfresco.module.org_alfresco_module_rm.identifier.IdentifierService;
import org.alfresco.module.org_alfresco_module_rm.model.security.ModelSecurityService;
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.role.FilePlanRoleService;
import org.alfresco.module.org_alfresco_module_rm.security.ExtendedSecurityService;
import org.alfresco.module.org_alfresco_module_rm.security.FilePlanAuthenticationService;
@@ -40,7 +41,7 @@ import org.alfresco.service.namespace.QName;
/**
* Records management service registry
- *
+ *
* @author Roy Wetherall
*/
@SuppressWarnings("deprecation")
@@ -64,110 +65,118 @@ public interface RecordsManagementServiceRegistry extends ServiceRegistry
static final QName IDENTIFIER_SERVICE = QName.createQName(NamespaceService.ALFRESCO_URI, "recordsManagementIdentifierService");
@Deprecated
static final QName RECORDS_MANAGEMENT_SECURITY_SERVICE = QName.createQName(NamespaceService.ALFRESCO_URI, "RecordsManagementSecurityService");
-
-
+ static final QName RECORD_FOLDER_SERVICE = QName.createQName(NamespaceService.ALFRESCO_URI, "RecordFolderService");
+
+
/**
* @return records management service
*/
@NotAuditable
RecordsManagementService getRecordsManagementService();
-
+
/**
* @return record service
*/
@NotAuditable
RecordService getRecordService();
-
+
/**
* @return disposition service
*/
@NotAuditable
DispositionService getDispositionService();
-
+
/**
* @return records management admin service
*/
@NotAuditable
RecordsManagementAdminService getRecordsManagementAdminService();
-
+
/**
* @return records management action service
*/
@NotAuditable
RecordsManagementActionService getRecordsManagementActionService();
-
+
/**
* @return records management event service
*/
@NotAuditable
RecordsManagementEventService getRecordsManagementEventService();
-
+
/**
* @return records management security service
- *
+ *
* @deprecated As of release 2.1, replaced with {@link FilePlanRoleService}, {@link FilePlanPermissionService} and {@link ModelSecurityService}
*/
@Deprecated
@NotAuditable
RecordsManagementSecurityService getRecordsManagementSecurityService();
-
+
/**
* @return records management audit service
*/
@NotAuditable
RecordsManagementAuditService getRecordsManagementAuditService();
-
+
/**
* @return capability service
* @since 2.0
*/
@NotAuditable
CapabilityService getCapabilityService();
-
+
/**
* @return freeze service
* @since 2.1
*/
@NotAuditable
FreezeService getFreezeService();
-
+
/**
* @return extended security service
* @since 2.1
*/
@NotAuditable
ExtendedSecurityService getExtendedSecurityService();
-
+
/**
* @return file plan service
- * @since 2.1
+ * @since 2.1
*/
@NotAuditable
FilePlanService getFilePlanService();
-
+
/**
* @return file plan role service
* @since 2.1
*/
@NotAuditable
FilePlanRoleService getFilePlanRoleService();
-
+
/**
* @return file plan permission service
- * @since 2.1
+ * @since 2.1
*/
@NotAuditable
FilePlanPermissionService getFilePlanPermissionService();
-
+
/**
* @return file plan authentication service
* @since 2.1
*/
FilePlanAuthenticationService getFilePlanAuthenticationService();
-
+
/**
* @return identifier service
* @since 2.1
*/
IdentifierService getIdentifierService();
+
+ /**
+ * @return record folder service
+ * @since 2.2
+ */
+ @NotAuditable
+ RecordFolderService getRecordFolderService();
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/RecordsManagementServiceRegistryImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/RecordsManagementServiceRegistryImpl.java
index af864c8c49..b42343d2d0 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/RecordsManagementServiceRegistryImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/RecordsManagementServiceRegistryImpl.java
@@ -27,6 +27,7 @@ import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
import org.alfresco.module.org_alfresco_module_rm.identifier.IdentifierService;
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.role.FilePlanRoleService;
import org.alfresco.module.org_alfresco_module_rm.security.ExtendedSecurityService;
import org.alfresco.module.org_alfresco_module_rm.security.FilePlanAuthenticationService;
@@ -36,11 +37,11 @@ import org.alfresco.repo.service.ServiceDescriptorRegistry;
/**
* Records management service registry implementation
- *
+ *
* @author Roy Wetherall
*/
@SuppressWarnings("deprecation")
-public class RecordsManagementServiceRegistryImpl extends ServiceDescriptorRegistry
+public class RecordsManagementServiceRegistryImpl extends ServiceDescriptorRegistry
implements RecordsManagementServiceRegistry
{
/**
@@ -141,7 +142,7 @@ public class RecordsManagementServiceRegistryImpl extends ServiceDescriptorRegis
{
return (ExtendedSecurityService) getService(EXTENDED_SECURITY_SERVICE);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementServiceRegistry#getFilePlanService()
*/
@@ -159,7 +160,7 @@ public class RecordsManagementServiceRegistryImpl extends ServiceDescriptorRegis
{
return (FilePlanRoleService) getService(FILE_PLAN_ROLE_SERVICE);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementServiceRegistry#getFilePlanPermissionService()
*/
@@ -168,7 +169,7 @@ public class RecordsManagementServiceRegistryImpl extends ServiceDescriptorRegis
{
return (FilePlanPermissionService) getService(FILE_PLAN_PERMISSION_SERVICE);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementServiceRegistry#getFilePlanAuthenticationService()
*/
@@ -177,7 +178,7 @@ public class RecordsManagementServiceRegistryImpl extends ServiceDescriptorRegis
{
return (FilePlanAuthenticationService) getService(FILE_PLAN_AUTHENTICATION_SERVICE);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementServiceRegistry#getIdentifierService()
*/
@@ -186,4 +187,13 @@ public class RecordsManagementServiceRegistryImpl extends ServiceDescriptorRegis
{
return (IdentifierService) getService(IDENTIFIER_SERVICE);
}
+
+ /**
+ * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementServiceRegistry#getRecordFolderService()
+ */
+ @Override
+ public RecordFolderService getRecordFolderService()
+ {
+ return (RecordFolderService) getService(RECORD_FOLDER_SERVICE);
+ }
}
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 0d6d1b7a6c..4372e67654 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
@@ -26,7 +26,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
import org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService;
import org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionAction;
@@ -42,6 +41,7 @@ import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.module.org_alfresco_module_rm.model.security.ModelSecurityService;
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.vital.VitalRecordService;
import org.alfresco.repo.action.executer.ActionExecuterAbstractBase;
import org.alfresco.service.cmr.action.Action;
@@ -66,7 +66,7 @@ import org.springframework.util.StringUtils;
/**
* Records management action executer base class
- *
+ *
* @author Roy Wetherall
*/
public abstract class RMActionExecuterAbstractBase extends PropertySubActionExecuterAbstractBase
@@ -76,58 +76,58 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
{
/** Namespace service */
protected NamespaceService namespaceService;
-
+
/** Used to control transactional behaviour including post-commit auditing */
protected TransactionService transactionService;
-
+
/** Node service */
protected NodeService nodeService;
-
+
/** Dictionary service */
protected DictionaryService dictionaryService;
-
+
/** Content service */
protected ContentService contentService;
-
+
/** Action service */
protected ActionService actionService;
-
+
/** Records management action service */
protected RecordsManagementAuditService recordsManagementAuditService;
-
+
/** Records management action service */
protected RecordsManagementActionService recordsManagementActionService;
-
- /** Records management service */
- protected RecordsManagementService recordsManagementService;
-
+
/** Record service */
protected RecordService recordService;
-
+
/** Disposition service */
protected DispositionService dispositionService;
-
+
/** Vital record service */
protected VitalRecordService vitalRecordService;
-
+
/** Records management event service */
protected RecordsManagementEventService recordsManagementEventService;
-
+
/** Records management action service */
protected RecordsManagementAdminService recordsManagementAdminService;
-
+
/** Ownable service **/
protected OwnableService ownableService;
-
- /** Freeze Service */
+
+ /** Freeze service */
protected FreezeService freezeService;
-
- /** model security service */
+
+ /** Model security service */
protected ModelSecurityService modelSecurityService;
-
+
+ /** Record folder service */
+ protected RecordFolderService recordFolderService;
+
/** List of kinds for which this action is applicable */
protected Set applicableKinds = new HashSet();
-
+
/**
* Set the namespace service
*/
@@ -135,7 +135,7 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
{
this.transactionService = transactionService;
}
-
+
/**
* Set the namespace service
*/
@@ -143,7 +143,7 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
{
this.namespaceService = namespaceService;
}
-
+
/**
* Set node service
*/
@@ -151,7 +151,7 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
{
this.nodeService = nodeService;
}
-
+
/**
* Set the dictionary service
*/
@@ -159,7 +159,7 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
{
this.dictionaryService = dictionaryService;
}
-
+
/**
* Set the content service
*/
@@ -167,9 +167,9 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
{
this.contentService = contentService;
}
-
+
/**
- * Set action service
+ * Set action service
*/
public void setActionService(ActionService actionService)
{
@@ -191,15 +191,7 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
{
this.recordsManagementActionService = recordsManagementActionService;
}
-
- /**
- * Set records management service
- */
- public void setRecordsManagementService(RecordsManagementService recordsManagementService)
- {
- this.recordsManagementService = recordsManagementService;
- }
-
+
/**
* Set the disposition service
*/
@@ -207,7 +199,7 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
{
this.dispositionService = dispositionService;
}
-
+
/**
* @param vitalRecordService vital record service
*/
@@ -215,16 +207,16 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
{
this.vitalRecordService = vitalRecordService;
}
-
- /**
+
+ /**
* Set records management event service
*/
public void setRecordsManagementEventService(RecordsManagementEventService recordsManagementEventService)
{
this.recordsManagementEventService = recordsManagementEventService;
}
-
-
+
+
/**
* Set the ownable service
* @param ownableSerice
@@ -233,27 +225,27 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
{
this.ownableService = ownableService;
}
-
+
/**
* Set freeze service
- *
+ *
* @param freezeService freeze service
*/
public void setFreezeService(FreezeService freezeService)
{
this.freezeService = freezeService;
}
-
+
/**
* Set record service
- *
+ *
* @param recordService record service
*/
public void setRecordService(RecordService recordService)
{
this.recordService = recordService;
}
-
+
/**
* @param recordsManagementAdminService records management admin service
*/
@@ -269,7 +261,7 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
{
return recordsManagementAdminService;
}
-
+
/**
* @param modelSecurityService model security service
*/
@@ -278,6 +270,14 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
this.modelSecurityService = modelSecurityService;
}
+ /**
+ * @param recordFolderService record folder service
+ */
+ public void setRecordFolderService(RecordFolderService recordFolderService)
+ {
+ this.recordFolderService = recordFolderService;
+ }
+
/**
* @param applicableKinds kinds that this action is applicable for
*/
@@ -288,7 +288,7 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
this.applicableKinds.add(FilePlanComponentKind.valueOf(kind));
}
}
-
+
/**
* @see org.alfresco.repo.action.executer.ActionExecuterAbstractBase#createActionDefinition(java.lang.String)
*/
@@ -297,18 +297,18 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
{
return new RecordsManagementActionDefinitionImpl(name);
}
-
+
/**
* @see org.alfresco.repo.action.executer.ActionExecuterAbstractBase#getActionDefinition()
*/
@Override
public ActionDefinition getActionDefinition()
{
- ActionDefinition actionDefinition = super.getActionDefinition();
- ((RecordsManagementActionDefinitionImpl)this.actionDefinition).setApplicableKinds(applicableKinds);
+ ActionDefinition actionDefinition = super.getActionDefinition();
+ ((RecordsManagementActionDefinitionImpl)this.actionDefinition).setApplicableKinds(applicableKinds);
return actionDefinition;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction#getRecordsManagementActionDefinition()
*/
@@ -333,16 +333,15 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
PropertyCheck.mandatory(this, "transactionService", transactionService);
PropertyCheck.mandatory(this, "recordsManagementAuditService", recordsManagementAuditService);
PropertyCheck.mandatory(this, "recordsManagementActionService", recordsManagementActionService);
- PropertyCheck.mandatory(this, "recordsManagementService", recordsManagementService);
PropertyCheck.mandatory(this, "recordsManagementAdminService", recordsManagementAdminService);
PropertyCheck.mandatory(this, "recordsManagementEventService", recordsManagementEventService);
-
+
super.init();
}
-
+
/**
* Indicates whether this records management action is public or not
- *
+ *
* @return boolean true if public, false otherwise
*/
@Override
@@ -350,7 +349,7 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
{
return publicAction;
}
-
+
/**
* @see org.alfresco.repo.action.CommonResourceAbstractBase#setBeanName(java.lang.String)
*/
@@ -359,7 +358,7 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
{
this.name = name;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementAction#getName()
*/
@@ -367,49 +366,49 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
{
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;
}
/**
* By default an action is not a disposition action
- *
+ *
* @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementAction#isDispositionAction()
*/
public boolean isDispositionAction()
{
return false;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementAction#execute(org.alfresco.service.cmr.repository.NodeRef, java.util.Map)
*/
@@ -418,7 +417,7 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
// Create the action
Action action = this.actionService.createAction(name);
action.setParameterValues(parameters);
-
+
// disable model security whilst we execute the RM rule
modelSecurityService.disable();
try
@@ -430,20 +429,20 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
{
modelSecurityService.enable();
}
-
+
// Get the result
Object value = action.getParameterValue(ActionExecuterAbstractBase.PARAM_RESULT);
return new RecordsManagementActionResult(value);
}
-
+
/**
* Function to pad a string with zero '0' characters to the required length
- *
+ *
* @param s String to pad with leading zero '0' characters
* @param len Length to pad to
- *
+ *
* @return padded string or the original if already at >=len characters
- *
+ *
* @deprecated As of 2.1, replaced by {@link org.apache.commons.lang.StringUtils.leftPad}
*/
@Deprecated
@@ -455,11 +454,11 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
result = "0" + result;
}
return result;
- }
-
+ }
+
/**
* By default there are no parameters.
- *
+ *
* @see org.alfresco.repo.action.ParameterizedItemAbstractBase#addParameterDefinitions(java.util.List)
*/
@Override
@@ -495,17 +494,17 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
currentDispositionAction = assocs.get(0).getChildRef();
}
}
-
+
if (currentDispositionAction != null)
{
// Move it to the history association
this.nodeService.moveNode(currentDispositionAction, nodeRef, ASSOC_DISPOSITION_ACTION_HISTORY, ASSOC_DISPOSITION_ACTION_HISTORY);
}
-
+
List dispositionActionDefinitions = di.getDispositionActionDefinitions();
DispositionActionDefinition currentDispositionActionDefinition = null;
DispositionActionDefinition nextDispositionActionDefinition = null;
-
+
if (currentDispositionAction == null)
{
if (dispositionActionDefinitions.isEmpty() == false)
@@ -519,7 +518,7 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
// Get the current action
String currentADId = (String)this.nodeService.getProperty(currentDispositionAction, PROP_DISPOSITION_ACTION_ID);
currentDispositionActionDefinition = di.getDispositionActionDefinition(currentADId);
-
+
// Get the next disposition action
int index = currentDispositionActionDefinition.getIndex();
index++;
@@ -528,7 +527,7 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
nextDispositionActionDefinition = dispositionActionDefinitions.get(index);
}
}
-
+
if (nextDispositionActionDefinition != null)
{
if (this.nodeService.hasAspect(nodeRef, ASPECT_DISPOSITION_LIFECYCLE) == false)
@@ -536,40 +535,40 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
// Add the disposition life cycle aspect
this.nodeService.addAspect(nodeRef, ASPECT_DISPOSITION_LIFECYCLE, null);
}
-
+
// Create the properties
Map props = new HashMap(10);
-
+
// Calculate the asOf date
Date asOfDate = null;
Period period = nextDispositionActionDefinition.getPeriod();
if (period != null)
{
Date contextDate = null;
-
+
// Get the period properties value
QName periodProperty = nextDispositionActionDefinition.getPeriodProperty();
- if (periodProperty != null &&
+ if (periodProperty != null &&
RecordsManagementModel.PROP_DISPOSITION_AS_OF.equals(periodProperty) == false)
{
// doesn't matter if the period property isn't set ... the asOfDate will get updated later
// when the value of the period property is set
- contextDate = (Date)this.nodeService.getProperty(nodeRef, periodProperty);
+ contextDate = (Date)this.nodeService.getProperty(nodeRef, periodProperty);
}
else
{
- // for now use 'NOW' as the default context date
+ // for now use 'NOW' as the default context date
// TODO set the default period property ... cut off date or last disposition date depending on context
contextDate = new Date();
}
-
+
// Calculate the as of date
if (contextDate != null)
{
asOfDate = period.getNextDate(contextDate);
}
- }
-
+ }
+
// Set the property values
props.put(PROP_DISPOSITION_ACTION_ID, nextDispositionActionDefinition.getId());
props.put(PROP_DISPOSITION_ACTION, nextDispositionActionDefinition.getName());
@@ -577,15 +576,15 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
{
props.put(PROP_DISPOSITION_AS_OF, asOfDate);
}
-
+
// Create a new disposition action object
NodeRef dispositionActionNodeRef = this.nodeService.createNode(
- nodeRef,
- ASSOC_NEXT_DISPOSITION_ACTION,
- ASSOC_NEXT_DISPOSITION_ACTION,
+ nodeRef,
+ ASSOC_NEXT_DISPOSITION_ACTION,
+ ASSOC_NEXT_DISPOSITION_ACTION,
TYPE_DISPOSITION_ACTION,
- props).getChildRef();
-
+ props).getChildRef();
+
// Create the events
List events = nextDispositionActionDefinition.getEvents();
for (RecordsManagementEvent event : events)
@@ -596,10 +595,10 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
}
}
}
-
+
/**
* Creates the given records management event for the given 'next action'.
- *
+ *
* @param event The event to create
* @param nextActionNodeRef The next action node
* @return The created event NodeRef
@@ -607,32 +606,32 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
protected NodeRef createEvent(RecordsManagementEvent event, NodeRef nextActionNodeRef)
{
NodeRef eventNodeRef = null;
-
+
Map eventProps = new HashMap(7);
eventProps.put(PROP_EVENT_EXECUTION_NAME, event.getName());
// TODO display label
RecordsManagementEventType eventType = recordsManagementEventService.getEventType(event.getType());
eventProps.put(PROP_EVENT_EXECUTION_AUTOMATIC, eventType.isAutomaticEvent());
eventProps.put(PROP_EVENT_EXECUTION_COMPLETE, false);
-
+
// Create the event execution object
this.nodeService.createNode(nextActionNodeRef, ASSOC_EVENT_EXECUTIONS,
ASSOC_EVENT_EXECUTIONS, TYPE_EVENT_EXECUTION, eventProps);
-
+
return eventNodeRef;
}
-
+
/**
* Calculates and updates the rma:dispositionEventsEligible
* property for the given next disposition action.
- *
+ *
* @param nextAction The next disposition action
* @return The result of calculation
*/
protected boolean updateEventEligible(DispositionAction nextAction)
{
List events = nextAction.getEventCompletionDetails();
-
+
boolean eligible = false;
if (nextAction.getDispositionActionDefinition().eligibleOnFirstCompleteEvent() == false)
{
@@ -657,12 +656,12 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
}
}
}
-
+
// Update the property with the eligible value
this.nodeService.setProperty(nextAction.getNodeRef(), PROP_DISPOSITION_EVENTS_ELIGIBLE, eligible);
-
+
return eligible;
}
-
-
+
+
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RMDispositionActionExecuterAbstractBase.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RMDispositionActionExecuterAbstractBase.java
index 0f6b36ce8f..0564e46dc4 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RMDispositionActionExecuterAbstractBase.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RMDispositionActionExecuterAbstractBase.java
@@ -46,13 +46,13 @@ public abstract class RMDispositionActionExecuterAbstractBase extends RMActionEx
private static final String MSG_NEXT_DISP_NOT_SET = "rm.action.next-disp-not-set";
private static final String MSG_NOT_NEXT_DISP = "rm.action.not-next-disp";
private static final String MSG_NOT_RECORD_FOLDER = "rm.action.not-record-folder";
-
+
/** Parameter value indicating whether we should be doing non-error raising state checks */
public static final String PARAM_NO_ERROR_CHECK = "rm.no-error-check";
/**
* All children of this implementation are disposition actions.
- *
+ *
* @see org.alfresco.module.org_alfresco_module_rm.action.RMActionExecuterAbstractBase#isDispositionAction()
*/
@Override
@@ -63,28 +63,28 @@ public abstract class RMDispositionActionExecuterAbstractBase extends RMActionEx
/**
* Indicates whether the disposition is marked complete
- *
+ *
* @return boolean true if marked complete, false otherwise
*/
public boolean getSetDispositionActionComplete()
{
return true;
}
-
+
/**
* Indicates whether we should validate the next disposition action is the action we are
* trying to execute.
- *
+ *
* @return
*/
protected boolean checkNextDispositionAction(NodeRef actionedUponNodeRef)
{
return true;
}
-
+
/**
* Indicated whether we should validate the disposition action is eligible or not.
- *
+ *
* @param actionedUponNodeRef
* @return
*/
@@ -101,7 +101,7 @@ public abstract class RMDispositionActionExecuterAbstractBase extends RMActionEx
protected void executeImpl(Action action, NodeRef actionedUponNodeRef)
{
NodeRef nextDispositionActionNodeRef = getNextDispostionAction(actionedUponNodeRef);
-
+
// determine whether we should be raising errors during state checking or not
boolean checkError = true;
Boolean checkErrorValue = (Boolean)action.getParameterValue(PARAM_NO_ERROR_CHECK);
@@ -109,14 +109,14 @@ public abstract class RMDispositionActionExecuterAbstractBase extends RMActionEx
{
checkError = checkErrorValue.booleanValue();
}
-
+
// Check the validity of the action (is it the next action, are we dealing with the correct type of object for
// the disposition level?
DispositionSchedule di = checkDispositionActionExecutionValidity(actionedUponNodeRef, nextDispositionActionNodeRef, checkError);
if (di != null)
{
// Check the eligibility of the action
- if (checkEligibility(actionedUponNodeRef) == false ||
+ if (checkEligibility(actionedUponNodeRef) == false ||
dispositionService.isNextDispositionActionEligible(actionedUponNodeRef) == true)
{
if (di.isRecordLevelDisposition() == true)
@@ -128,17 +128,17 @@ public abstract class RMDispositionActionExecuterAbstractBase extends RMActionEx
if (recordService.isDeclared(actionedUponNodeRef) == true)
{
// Indicate that the disposition action is underway
- this.nodeService.setProperty(nextDispositionActionNodeRef, PROP_DISPOSITION_ACTION_STARTED_AT, new Date());
- this.nodeService.setProperty(nextDispositionActionNodeRef, PROP_DISPOSITION_ACTION_STARTED_BY, AuthenticationUtil.getRunAsUser());
-
+ nodeService.setProperty(nextDispositionActionNodeRef, PROP_DISPOSITION_ACTION_STARTED_AT, new Date());
+ nodeService.setProperty(nextDispositionActionNodeRef, PROP_DISPOSITION_ACTION_STARTED_BY, AuthenticationUtil.getRunAsUser());
+
// Execute record level disposition
executeRecordLevelDisposition(action, actionedUponNodeRef);
-
- if (this.nodeService.exists(nextDispositionActionNodeRef) == true &&
+
+ if (nodeService.exists(nextDispositionActionNodeRef) == true &&
getSetDispositionActionComplete() == true)
{
- this.nodeService.setProperty(nextDispositionActionNodeRef, PROP_DISPOSITION_ACTION_COMPLETED_AT, new Date());
- this.nodeService.setProperty(nextDispositionActionNodeRef, PROP_DISPOSITION_ACTION_COMPLETED_BY, AuthenticationUtil.getRunAsUser());
+ nodeService.setProperty(nextDispositionActionNodeRef, PROP_DISPOSITION_ACTION_COMPLETED_AT, new Date());
+ nodeService.setProperty(nextDispositionActionNodeRef, PROP_DISPOSITION_ACTION_COMPLETED_BY, AuthenticationUtil.getRunAsUser());
}
}
else
@@ -153,24 +153,24 @@ public abstract class RMDispositionActionExecuterAbstractBase extends RMActionEx
}
else
{
- if (this.recordsManagementService.isRecordFolder(actionedUponNodeRef) == true)
+ if (recordFolderService.isRecordFolder(actionedUponNodeRef) == true)
{
- if (this.recordsManagementService.isRecordFolderDeclared(actionedUponNodeRef) == true)
+ if (recordFolderService.isRecordFolderDeclared(actionedUponNodeRef) == true)
{
// Indicate that the disposition action is underway
- this.nodeService.setProperty(nextDispositionActionNodeRef, PROP_DISPOSITION_ACTION_STARTED_AT, new Date());
- this.nodeService.setProperty(nextDispositionActionNodeRef, PROP_DISPOSITION_ACTION_STARTED_BY, AuthenticationUtil.getRunAsUser());
-
+ nodeService.setProperty(nextDispositionActionNodeRef, PROP_DISPOSITION_ACTION_STARTED_AT, new Date());
+ nodeService.setProperty(nextDispositionActionNodeRef, PROP_DISPOSITION_ACTION_STARTED_BY, AuthenticationUtil.getRunAsUser());
+
executeRecordFolderLevelDisposition(action, actionedUponNodeRef);
-
+
// Indicate that the disposition action is compelte
- if (this.nodeService.exists(nextDispositionActionNodeRef) == true &&
+ if (nodeService.exists(nextDispositionActionNodeRef) == true &&
getSetDispositionActionComplete() == true)
{
- this.nodeService.setProperty(nextDispositionActionNodeRef, PROP_DISPOSITION_ACTION_COMPLETED_AT, new Date());
- this.nodeService.setProperty(nextDispositionActionNodeRef, PROP_DISPOSITION_ACTION_COMPLETED_BY, AuthenticationUtil.getRunAsUser());
+ nodeService.setProperty(nextDispositionActionNodeRef, PROP_DISPOSITION_ACTION_COMPLETED_AT, new Date());
+ nodeService.setProperty(nextDispositionActionNodeRef, PROP_DISPOSITION_ACTION_COMPLETED_BY, AuthenticationUtil.getRunAsUser());
}
-
+
}
else
{
@@ -181,10 +181,10 @@ public abstract class RMDispositionActionExecuterAbstractBase extends RMActionEx
{
throw new AlfrescoRuntimeException(I18NUtil.getMessage(MSG_NOT_RECORD_FOLDER, getName(), actionedUponNodeRef.toString()));
}
-
+
}
-
- if (this.nodeService.exists(actionedUponNodeRef) == true && getSetDispositionActionComplete() == true)
+
+ if (nodeService.exists(actionedUponNodeRef) == true && getSetDispositionActionComplete() == true)
{
// Update the disposition schedule
updateNextDispositionAction(actionedUponNodeRef);
@@ -217,7 +217,7 @@ public abstract class RMDispositionActionExecuterAbstractBase extends RMActionEx
* @param recordFolder
*/
protected abstract void executeRecordFolderLevelDisposition(Action action, NodeRef recordFolder);
-
+
/**
* @param nodeRef
* @return
@@ -225,7 +225,7 @@ public abstract class RMDispositionActionExecuterAbstractBase extends RMActionEx
protected DispositionSchedule checkDispositionActionExecutionValidity(NodeRef nodeRef, NodeRef nextDispositionActionNodeRef, boolean throwError)
{
// Check the node has associated disposition instructions
- DispositionSchedule di = this.dispositionService.getDispositionSchedule(nodeRef);
+ DispositionSchedule di = dispositionService.getDispositionSchedule(nodeRef);
if (di == null)
{
if (throwError)
@@ -239,7 +239,7 @@ public abstract class RMDispositionActionExecuterAbstractBase extends RMActionEx
}
// Check the node has the disposition schedule aspect applied
- if (this.nodeService.hasAspect(nodeRef, ASPECT_DISPOSITION_LIFECYCLE) == false)
+ if (nodeService.hasAspect(nodeRef, ASPECT_DISPOSITION_LIFECYCLE) == false)
{
if (throwError)
{
@@ -253,7 +253,7 @@ public abstract class RMDispositionActionExecuterAbstractBase extends RMActionEx
if (checkNextDispositionAction(nodeRef) == true)
{
- // Check this the next disposition action
+ // Check this the next disposition action
NodeRef nextDispositionAction = nextDispositionActionNodeRef;
if (nextDispositionAction == null)
{
@@ -266,7 +266,7 @@ public abstract class RMDispositionActionExecuterAbstractBase extends RMActionEx
return null;
}
}
- String actionName = (String) this.nodeService.getProperty(nextDispositionAction, PROP_DISPOSITION_ACTION);
+ String actionName = (String) nodeService.getProperty(nextDispositionAction, PROP_DISPOSITION_ACTION);
if (actionName == null || actionName.equals(getName()) == false)
{
if (throwError)
@@ -285,7 +285,7 @@ public abstract class RMDispositionActionExecuterAbstractBase extends RMActionEx
/**
* Get the next disposition action node. Null if none present.
- *
+ *
* @param nodeRef
* the disposable node reference
* @return NodeRef the next disposition action, null if none
@@ -293,7 +293,7 @@ public abstract class RMDispositionActionExecuterAbstractBase extends RMActionEx
private NodeRef getNextDispostionAction(NodeRef nodeRef)
{
NodeRef result = null;
- List assocs = this.nodeService.getChildAssocs(nodeRef, ASSOC_NEXT_DISPOSITION_ACTION, RegexQNamePattern.MATCH_ALL);
+ List assocs = nodeService.getChildAssocs(nodeRef, ASSOC_NEXT_DISPOSITION_ACTION, RegexQNamePattern.MATCH_ALL);
if (assocs.size() != 0)
{
result = assocs.get(0).getChildRef();
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/CloseRecordFolderAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/CloseRecordFolderAction.java
index b879e35d2a..3c72e53b86 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/CloseRecordFolderAction.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/CloseRecordFolderAction.java
@@ -28,7 +28,7 @@ import org.springframework.extensions.surf.util.I18NUtil;
/**
* Action to close the records folder
- *
+ *
* @author Roy Wetherall
*/
public class CloseRecordFolderAction extends RMActionExecuterAbstractBase
@@ -49,7 +49,7 @@ public class CloseRecordFolderAction extends RMActionExecuterAbstractBase
@Override
protected void executeImpl(Action action, NodeRef actionedUponNodeRef)
{
- if (nodeService.exists(actionedUponNodeRef) == true &&
+ if (nodeService.exists(actionedUponNodeRef) == true &&
freezeService.isFrozen(actionedUponNodeRef) == false)
{
if (recordService.isRecord(actionedUponNodeRef))
@@ -61,12 +61,12 @@ public class CloseRecordFolderAction extends RMActionExecuterAbstractBase
}
}
- if (this.recordsManagementService.isRecordFolder(actionedUponNodeRef) == true)
+ if (recordFolderService.isRecordFolder(actionedUponNodeRef) == true)
{
- Boolean isClosed = (Boolean) this.nodeService.getProperty(actionedUponNodeRef, PROP_IS_CLOSED);
+ Boolean isClosed = (Boolean) nodeService.getProperty(actionedUponNodeRef, PROP_IS_CLOSED);
if (Boolean.FALSE.equals(isClosed) == true)
{
- this.nodeService.setProperty(actionedUponNodeRef, PROP_IS_CLOSED, true);
+ nodeService.setProperty(actionedUponNodeRef, PROP_IS_CLOSED, true);
}
}
else
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/CreateDispositionScheduleAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/CreateDispositionScheduleAction.java
index dbeb81e091..12234e62b5 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/CreateDispositionScheduleAction.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/CreateDispositionScheduleAction.java
@@ -23,31 +23,25 @@ import org.alfresco.module.org_alfresco_module_rm.action.RMActionExecuterAbstrac
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
import org.alfresco.service.cmr.action.Action;
import org.alfresco.service.cmr.repository.NodeRef;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
/**
* Create disposition schedule action
- *
+ *
* @author Roy Wetherall
*/
public class CreateDispositionScheduleAction extends RMActionExecuterAbstractBase
{
- /** Logger */
- @SuppressWarnings("unused")
- private static Log logger = LogFactory.getLog(CreateDispositionScheduleAction.class);
-
/** file plan service */
private FilePlanService filePlanService;
-
+
/**
* @param filePlanService file plan service
*/
- public void setFilePlanService(FilePlanService filePlanService)
+ public void setFilePlanService(FilePlanService filePlanService)
{
this.filePlanService = filePlanService;
}
-
+
/**
* @see org.alfresco.repo.action.executer.ActionExecuterAbstractBase#executeImpl(org.alfresco.service.cmr.action.Action, org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -63,5 +57,5 @@ public class CreateDispositionScheduleAction extends RMActionExecuterAbstractBas
{
throw new AlfrescoRuntimeException("The disposition schedule could not be created, because the actioned upon node was not a record category.");
}
- }
+ }
}
\ No newline at end of file
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/CutOffAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/CutOffAction.java
index 613c8c840f..60cea916a3 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/CutOffAction.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/CutOffAction.java
@@ -31,14 +31,14 @@ import org.alfresco.service.namespace.QName;
/**
* Cut off disposition action
- *
+ *
* @author Roy Wetherall
*/
public class CutOffAction extends RMDispositionActionExecuterAbstractBase
{
/** Action name */
public static final String NAME = "cutoff";
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.action.RMDispositionActionExecuterAbstractBase#executeRecordFolderLevelDisposition(org.alfresco.service.cmr.action.Action, org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -46,17 +46,17 @@ public class CutOffAction extends RMDispositionActionExecuterAbstractBase
protected void executeRecordFolderLevelDisposition(Action action, NodeRef recordFolder)
{
// Close folder
- Boolean isClosed = (Boolean)this.nodeService.getProperty(recordFolder, PROP_IS_CLOSED);
+ Boolean isClosed = (Boolean)nodeService.getProperty(recordFolder, PROP_IS_CLOSED);
if (Boolean.FALSE.equals(isClosed) == true)
{
- this.nodeService.setProperty(recordFolder, PROP_IS_CLOSED, true);
+ nodeService.setProperty(recordFolder, PROP_IS_CLOSED, true);
}
-
+
// Mark the folder as cut off
doCutOff(recordFolder);
-
+
// Mark all the declared children of the folder as cut off
- List records = this.recordsManagementService.getRecords(recordFolder);
+ List records = recordService.getRecords(recordFolder);
for (NodeRef record : records)
{
doCutOff(record);
@@ -70,22 +70,22 @@ public class CutOffAction extends RMDispositionActionExecuterAbstractBase
protected void executeRecordLevelDisposition(Action action, NodeRef record)
{
// Mark the record as cut off
- doCutOff(record);
+ doCutOff(record);
}
-
+
/**
* Marks the record or record folder as cut off, calculating the cut off date.
- *
+ *
* @param nodeRef node reference
*/
private void doCutOff(NodeRef nodeRef)
{
- if (this.nodeService.hasAspect(nodeRef, ASPECT_CUT_OFF) == false)
+ if (nodeService.hasAspect(nodeRef, ASPECT_CUT_OFF) == false)
{
// Apply the cut off aspect and set cut off date
Map cutOffProps = new HashMap(1);
cutOffProps.put(PROP_CUT_OFF_DATE, new Date());
- this.nodeService.addAspect(nodeRef, ASPECT_CUT_OFF, cutOffProps);
+ nodeService.addAspect(nodeRef, ASPECT_CUT_OFF, cutOffProps);
}
}
}
\ No newline at end of file
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DestroyAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DestroyAction.java
index e2a99bb205..586afa2f79 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DestroyAction.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DestroyAction.java
@@ -44,28 +44,28 @@ import org.springframework.extensions.surf.util.I18NUtil;
/**
* Destroy action.
- *
+ *
* @author Roy Wetherall
*/
-public class DestroyAction extends RMDispositionActionExecuterAbstractBase
- implements ContentServicePolicies.OnContentUpdatePolicy,
+public class DestroyAction extends RMDispositionActionExecuterAbstractBase
+ implements ContentServicePolicies.OnContentUpdatePolicy,
InitializingBean
{
/** Action name */
public static final String NAME = "destroy";
-
+
/** I18N */
private static final String MSG_GHOSTED_PROP_UPDATE = "rm.action.ghosted-prop-update";
-
+
/** Policy component */
private PolicyComponent policyComponent;
-
+
/** Eager content store cleaner */
private EagerContentStoreCleaner eagerContentStoreCleaner;
-
+
/** Capability service */
private CapabilityService capabilityService;
-
+
/** Indicates if ghosting is enabled or not */
private boolean ghostingEnabled = true;
@@ -76,7 +76,7 @@ public class DestroyAction extends RMDispositionActionExecuterAbstractBase
{
this.policyComponent = policyComponent;
}
-
+
/**
* @param eagerContentStoreCleaner eager content store cleaner
*/
@@ -92,7 +92,7 @@ public class DestroyAction extends RMDispositionActionExecuterAbstractBase
{
this.capabilityService = capabilityService;
}
-
+
/**
* @param ghostingEnabled true if ghosting is enabled, false otherwise
*/
@@ -100,7 +100,7 @@ public class DestroyAction extends RMDispositionActionExecuterAbstractBase
{
this.ghostingEnabled = ghostingEnabled;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.action.RMDispositionActionExecuterAbstractBase#checkNextDispositionAction()
*/
@@ -109,7 +109,7 @@ public class DestroyAction extends RMDispositionActionExecuterAbstractBase
{
return checkForDestroyRecordsCapability(actionedUponNodeRef);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.action.RMDispositionActionExecuterAbstractBase#checkEligibility(org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -118,9 +118,9 @@ public class DestroyAction extends RMDispositionActionExecuterAbstractBase
{
return checkForDestroyRecordsCapability(actionedUponNodeRef);
}
-
+
/**
- *
+ *
* @param actionedUponNodeRef
* @return
*/
@@ -131,7 +131,7 @@ public class DestroyAction extends RMDispositionActionExecuterAbstractBase
{
result = false;
}
- return result;
+ return result;
}
/**
@@ -140,15 +140,15 @@ public class DestroyAction extends RMDispositionActionExecuterAbstractBase
@Override
protected void executeRecordFolderLevelDisposition(Action action, NodeRef recordFolder)
{
- List records = this.recordsManagementService.getRecords(recordFolder);
+ List records = recordService.getRecords(recordFolder);
for (NodeRef record : records)
{
executeRecordLevelDisposition(action, record);
}
-
+
if (ghostingEnabled == true)
{
- nodeService.addAspect(recordFolder, ASPECT_GHOSTED, Collections. emptyMap());
+ nodeService.addAspect(recordFolder, ASPECT_GHOSTED, Collections. emptyMap());
}
else
{
@@ -164,20 +164,20 @@ public class DestroyAction extends RMDispositionActionExecuterAbstractBase
{
doDestroy(record);
}
-
+
/**
* Do the content destroy
- *
+ *
* @param nodeRef
*/
private void doDestroy(NodeRef nodeRef)
{
// Clear the content
clearAllContent(nodeRef);
-
+
// Clear thumbnail content
clearThumbnails(nodeRef);
-
+
if (ghostingEnabled == true)
{
// Add the ghosted aspect
@@ -186,13 +186,13 @@ public class DestroyAction extends RMDispositionActionExecuterAbstractBase
else
{
// If ghosting is not enabled, delete the node
- nodeService.deleteNode(nodeRef);
+ nodeService.deleteNode(nodeRef);
}
}
-
+
/**
* Clear all the content properties
- *
+ *
* @param nodeRef
*/
private void clearAllContent(NodeRef nodeRef)
@@ -203,15 +203,15 @@ public class DestroyAction extends RMDispositionActionExecuterAbstractBase
{
// Clear the content
clearContent(nodeRef, prop);
-
+
// Remove the property
this.nodeService.removeProperty(nodeRef, prop);
- }
+ }
}
-
+
/**
* Clear all the thumbnail information
- *
+ *
* @param nodeRef
*/
@SuppressWarnings("deprecation")
@@ -226,7 +226,7 @@ public class DestroyAction extends RMDispositionActionExecuterAbstractBase
// We want to remove the rn:renditioned aspect, but due to the possibility
// that there is Alfresco 3.2-era data with the cm:thumbnailed aspect
// applied, we must consider removing it too.
- if (nodeService.hasAspect(nodeRef, RenditionModel.ASPECT_RENDITIONED) ||
+ if (nodeService.hasAspect(nodeRef, RenditionModel.ASPECT_RENDITIONED) ||
nodeService.hasAspect(nodeRef, ContentModel.ASPECT_THUMBNAILED))
{
// Add the ghosted aspect to all the renditioned children, so that they will not be archived when the
@@ -241,12 +241,12 @@ public class DestroyAction extends RMDispositionActionExecuterAbstractBase
nodeService.deleteNode(child.getChildRef());
}
}
- }
+ }
}
-
+
/**
* Clear a content property
- *
+ *
* @param nodeRef
* @param contentProperty
*/
@@ -257,7 +257,7 @@ public class DestroyAction extends RMDispositionActionExecuterAbstractBase
if (contentData != null && contentData.getContentUrl() != null)
{
eagerContentStoreCleaner.registerOrphanedContentUrl(contentData.getContentUrl(), true);
- }
+ }
}
/**
@@ -276,7 +276,7 @@ public class DestroyAction extends RMDispositionActionExecuterAbstractBase
// Register interest in the onContentUpdate policy
policyComponent.bindClassBehaviour(
ContentServicePolicies.OnContentUpdatePolicy.QNAME,
- ASPECT_GHOSTED,
+ ASPECT_GHOSTED,
new JavaBehaviour(this, "onContentUpdate"));
}
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/EditDispositionActionAsOfDateAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/EditDispositionActionAsOfDateAction.java
index b9a2b8f6b1..9dba95a060 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/EditDispositionActionAsOfDateAction.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/EditDispositionActionAsOfDateAction.java
@@ -25,13 +25,11 @@ import org.alfresco.module.org_alfresco_module_rm.action.RMActionExecuterAbstrac
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionAction;
import org.alfresco.service.cmr.action.Action;
import org.alfresco.service.cmr.repository.NodeRef;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.springframework.extensions.surf.util.I18NUtil;
/**
* Edit review as of date action.
- *
+ *
* @author Roy Wetherall
*/
public class EditDispositionActionAsOfDateAction extends RMActionExecuterAbstractBase
@@ -39,11 +37,7 @@ public class EditDispositionActionAsOfDateAction extends RMActionExecuterAbstrac
/** I18N */
private static final String MSG_VALID_DATE_DISP_ASOF = "rm.action.valid-date-disp-asof";
private static final String MSG_DISP_ASOF_LIFECYCLE_APPLIED = "rm.action.disp-asof-lifecycle-applied";
-
- /** Logger */
- @SuppressWarnings("unused")
- private static Log logger = LogFactory.getLog(EditDispositionActionAsOfDateAction.class);
-
+
/** Action parameters */
public static final String PARAM_AS_OF_DATE = "asOfDate";
@@ -62,11 +56,11 @@ public class EditDispositionActionAsOfDateAction extends RMActionExecuterAbstrac
{
throw new AlfrescoRuntimeException(I18NUtil.getMessage(MSG_VALID_DATE_DISP_ASOF));
}
-
+
// Set the dispostion action as of date
DispositionAction da = dispositionService.getNextDispositionAction(actionedUponNodeRef);
if (da != null)
- {
+ {
nodeService.setProperty(da.getNodeRef(), PROP_DISPOSITION_AS_OF, asOfDate);
}
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/EditReviewAsOfDateAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/EditReviewAsOfDateAction.java
index b3a2464e4d..bea0bea7e0 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/EditReviewAsOfDateAction.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/EditReviewAsOfDateAction.java
@@ -24,14 +24,12 @@ import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.module.org_alfresco_module_rm.action.RMActionExecuterAbstractBase;
import org.alfresco.service.cmr.action.Action;
import org.alfresco.service.cmr.repository.NodeRef;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.springframework.extensions.surf.util.I18NUtil;
/**
- *
+ *
* Edit review as of date action
- *
+ *
* @author Roy Wetherall
*/
public class EditReviewAsOfDateAction extends RMActionExecuterAbstractBase
@@ -39,10 +37,7 @@ public class EditReviewAsOfDateAction extends RMActionExecuterAbstractBase
/** I18N */
private static final String MSG_SPECIFY_VALID_DATE = "rm.action.specify-avlid-date";
private static final String MSG_REVIEW_DETAILS_ONLY = "rm.action.review-details-only";
-
- @SuppressWarnings("unused")
- private static Log logger = LogFactory.getLog(EditReviewAsOfDateAction.class);
-
+
public static final String PARAM_AS_OF_DATE = "asOfDate";
/**
@@ -61,14 +56,14 @@ public class EditReviewAsOfDateAction extends RMActionExecuterAbstractBase
{
throw new AlfrescoRuntimeException(I18NUtil.getMessage(MSG_SPECIFY_VALID_DATE));
}
-
- // Set the as of date
+
+ // Set the as of date
this.nodeService.setProperty(actionedUponNodeRef, PROP_REVIEW_AS_OF, reviewAsOf);
-
+
}
else
{
- throw new AlfrescoRuntimeException(I18NUtil.getMessage(MSG_REVIEW_DETAILS_ONLY));
+ throw new AlfrescoRuntimeException(I18NUtil.getMessage(MSG_REVIEW_DETAILS_ONLY));
}
}
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/FileToAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/FileToAction.java
index ff313f5269..e2ccffcc00 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/FileToAction.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/FileToAction.java
@@ -20,7 +20,7 @@ import org.springframework.util.StringUtils;
/**
* File To action implementation.
- *
+ *
* @author Roy Wetherall
* @since 2.1
*/
@@ -28,18 +28,18 @@ public class FileToAction extends RMActionExecuterAbstractBase
{
/** action name */
public static final String NAME = "fileTo";
-
+
/** action parameters */
public static final String PARAM_DESTINATION_RECORD_FOLDER = "destinationRecordFolder";
public static final String PARAM_PATH = "path";
public static final String PARAM_CREATE_RECORD_FOLDER = "createRecordFolder";
-
+
/** file folder service */
private FileFolderService fileFolderService;
-
+
/** file plan service */
private FilePlanService filePlanService;
-
+
/**
* @param fileFolderService file folder service
*/
@@ -47,7 +47,7 @@ public class FileToAction extends RMActionExecuterAbstractBase
{
this.fileFolderService = fileFolderService;
}
-
+
/**
* @param filePlanService file plan service
*/
@@ -55,7 +55,7 @@ public class FileToAction extends RMActionExecuterAbstractBase
{
this.filePlanService = filePlanService;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.action.RMActionExecuterAbstractBase#addParameterDefinitions(java.util.List)
*/
@@ -65,7 +65,7 @@ public class FileToAction extends RMActionExecuterAbstractBase
paramList.add(new ParameterDefinitionImpl(PARAM_PATH, DataTypeDefinition.TEXT, false, getParamDisplayLabel(PARAM_PATH)));
paramList.add(new ParameterDefinitionImpl(PARAM_CREATE_RECORD_FOLDER, DataTypeDefinition.BOOLEAN, false, getParamDisplayLabel(PARAM_CREATE_RECORD_FOLDER)));
}
-
+
/**
* @see org.alfresco.repo.action.executer.ActionExecuterAbstractBase#executeImpl(org.alfresco.service.cmr.action.Action, org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -84,15 +84,15 @@ public class FileToAction extends RMActionExecuterAbstractBase
// get the reference to the record folder based on the relative path
recordFolder = createOrResolveRecordFolder(action, actionedUponNodeRef);
}
-
+
if (recordFolder == null)
{
throw new AlfrescoRuntimeException("Unable to execute file to action, because the destination record folder could not be determined.");
}
-
- if (recordsManagementService.isRecordFolder(recordFolder) == true)
+
+ if (recordFolderService.isRecordFolder(recordFolder) == true)
{
- final NodeRef finalRecordFolder = recordFolder;
+ final NodeRef finalRecordFolder = recordFolder;
try
{
fileFolderService.move(actionedUponNodeRef, finalRecordFolder, null);
@@ -109,9 +109,9 @@ public class FileToAction extends RMActionExecuterAbstractBase
}
}
}
-
+
/**
- *
+ *
* @param action
* @param actionedUponNodeRef
* @return
@@ -119,8 +119,8 @@ public class FileToAction extends RMActionExecuterAbstractBase
private NodeRef createOrResolveRecordFolder(Action action, NodeRef actionedUponNodeRef)
{
// TODO check the action for a context node reference
- // the file plan node always provides the context
- NodeRef context = filePlanService.getFilePlan(actionedUponNodeRef);
+ // the file plan node always provides the context
+ NodeRef context = filePlanService.getFilePlan(actionedUponNodeRef);
if (context == null)
{
throw new AlfrescoRuntimeException("Unable to execute fileTo action, because the path resolution context could not be found.");
@@ -129,16 +129,16 @@ public class FileToAction extends RMActionExecuterAbstractBase
{
throw new AlfrescoRuntimeException("Unable to execute fileTo action, because the context for the relative path does not exist.");
}
-
+
// look for the path parameter
String path = (String)action.getParameterValue(PARAM_PATH);
String[] pathValues = ArrayUtils.EMPTY_STRING_ARRAY;
-
+
if (path != null && path.isEmpty() == false)
{
pathValues = StringUtils.tokenizeToStringArray(path, "/", false, true);
}
-
+
// look for the creation strategy
boolean create = false;
Boolean createValue = (Boolean)action.getParameterValue(PARAM_CREATE_RECORD_FOLDER);
@@ -146,10 +146,10 @@ public class FileToAction extends RMActionExecuterAbstractBase
{
create = createValue.booleanValue();
}
-
+
// try and get child
NodeRef recordFolder = resolvePath(context, pathValues);
-
+
if (recordFolder == null)
{
if (create == true)
@@ -160,28 +160,28 @@ public class FileToAction extends RMActionExecuterAbstractBase
{
throw new AlfrescoRuntimeException("Unable to create new record folder, because destination parent could not be found.");
}
-
+
// ensure we are trying to create a record folder in a record category
if (filePlanService.isRecordCategory(parent) == false)
{
throw new AlfrescoRuntimeException("Unable to create nre record folder, beacuse the parent is not a record category.");
}
-
+
// get the new record folders name
String recordFolderName = pathValues[pathValues.length-1];
- recordFolder = recordsManagementService.createRecordFolder(parent, recordFolderName);
+ recordFolder = recordFolderService.createRecordFolder(parent, recordFolderName);
}
else
{
throw new AlfrescoRuntimeException("Unable to execute FileTo action, because the destination record folder does not exist.");
- }
+ }
}
-
- return recordFolder;
+
+ return recordFolder;
}
-
+
/**
- *
+ *
* @param context
* @param pathValues
* @return
@@ -197,16 +197,16 @@ public class FileToAction extends RMActionExecuterAbstractBase
catch (FileNotFoundException e)
{
// ignore, checking for null
- }
+ }
if (fileInfo != null)
{
result = fileInfo.getNodeRef();
}
return result;
}
-
+
/**
- *
+ *
* @param context
* @param pathValues
* @return
@@ -214,10 +214,10 @@ public class FileToAction extends RMActionExecuterAbstractBase
private NodeRef resolveParent(NodeRef context, String[] pathValues)
{
NodeRef result = null;
-
+
if (ArrayUtils.isEmpty(pathValues) == true)
{
- // this should never occur since if the path is empty then the context it the resolution of the
+ // this should never occur since if the path is empty then the context it the resolution of the
// path .. the context must already exist
throw new AlfrescoRuntimeException("Unable to resolve the parent, because no valid path was specified.");
}
@@ -231,9 +231,9 @@ public class FileToAction extends RMActionExecuterAbstractBase
pathValues = (String[])ArrayUtils.remove(pathValues, pathValues.length-1);
result = resolvePath(context, pathValues);
}
-
+
return result;
}
-
+
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/FreezeAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/FreezeAction.java
index 9648d2a4cc..36ee27dda1 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/FreezeAction.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/FreezeAction.java
@@ -30,14 +30,14 @@ import org.alfresco.service.cmr.repository.NodeRef;
/**
* Freeze Action
- *
+ *
* @author Roy Wetherall
*/
public class FreezeAction extends RMActionExecuterAbstractBase
{
/** Parameter names */
public static final String PARAM_REASON = "reason";
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.action.RMActionExecuterAbstractBase#addParameterDefinitions(java.util.List)
*/
@@ -46,7 +46,7 @@ public class FreezeAction extends RMActionExecuterAbstractBase
{
paramList.add(new ParameterDefinitionImpl(PARAM_REASON, DataTypeDefinition.TEXT, true, getParamDisplayLabel(PARAM_REASON)));
}
-
+
/**
* @see org.alfresco.repo.action.executer.ActionExecuterAbstractBase#executeImpl(org.alfresco.service.cmr.action.Action, org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -57,7 +57,7 @@ public class FreezeAction extends RMActionExecuterAbstractBase
if (nodeService.exists(actionedUponNodeRef) == true &&
nodeService.hasAspect(actionedUponNodeRef, ContentModel.ASPECT_PENDING_DELETE) == false &&
(recordService.isRecord(actionedUponNodeRef) == true ||
- recordsManagementService.isRecordFolder(actionedUponNodeRef) == true) &&
+ recordFolderService.isRecordFolder(actionedUponNodeRef) == true) &&
freezeService.isFrozen(actionedUponNodeRef) == false)
{
freezeService.freeze((String) action.getParameterValue(PARAM_REASON), actionedUponNodeRef);
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/OpenRecordFolderAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/OpenRecordFolderAction.java
index 3dcd4e3692..fd1f612530 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/OpenRecordFolderAction.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/OpenRecordFolderAction.java
@@ -28,7 +28,7 @@ import org.springframework.extensions.surf.util.I18NUtil;
/**
* Action to re-open the records folder
- *
+ *
* @author Roy Wetherall
*/
public class OpenRecordFolderAction extends RMActionExecuterAbstractBase
@@ -38,7 +38,7 @@ public class OpenRecordFolderAction extends RMActionExecuterAbstractBase
/** I18N */
private static final String MSG_NO_OPEN_RECORD_FOLDER = "rm.action.no-open-record-folder";
-
+
/** Parameter names */
public static final String PARAM_OPEN_PARENT = "openParent";
@@ -54,7 +54,7 @@ public class OpenRecordFolderAction extends RMActionExecuterAbstractBase
{
// TODO move re-open logic into a service method
// TODO check that the user in question has the correct permission to re-open a records folder
-
+
if (recordService.isRecord(actionedUponNodeRef))
{
ChildAssociationRef assocRef = nodeService.getPrimaryParent(actionedUponNodeRef);
@@ -63,13 +63,13 @@ public class OpenRecordFolderAction extends RMActionExecuterAbstractBase
actionedUponNodeRef = assocRef.getParentRef();
}
}
-
- if (this.recordsManagementService.isRecordFolder(actionedUponNodeRef) == true)
+
+ if (recordFolderService.isRecordFolder(actionedUponNodeRef) == true)
{
- Boolean isClosed = (Boolean) this.nodeService.getProperty(actionedUponNodeRef, PROP_IS_CLOSED);
+ Boolean isClosed = (Boolean) nodeService.getProperty(actionedUponNodeRef, PROP_IS_CLOSED);
if (Boolean.TRUE.equals(isClosed) == true)
{
- this.nodeService.setProperty(actionedUponNodeRef, PROP_IS_CLOSED, false);
+ nodeService.setProperty(actionedUponNodeRef, PROP_IS_CLOSED, false);
}
}
else
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/TransferAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/TransferAction.java
index 81c8fb97c6..92d923ce5d 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/TransferAction.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/TransferAction.java
@@ -43,23 +43,23 @@ import org.springframework.extensions.surf.util.I18NUtil;
/**
* Transfer action
- *
+ *
* @author Roy Wetherall
*/
public class TransferAction extends RMDispositionActionExecuterAbstractBase
-{
+{
/** Transfer node reference key */
public static final String KEY_TRANSFER_NODEREF = "transferNodeRef";
-
+
/** I18N */
private static final String MSG_NODE_ALREADY_TRANSFER = "rm.action.node-already-transfer";
-
+
/** Indicates whether the transfer is an accession or not */
private boolean isAccession = false;
-
+
/** File plan service */
private FilePlanService filePlanService;
-
+
/**
* @param filePlanService file plan service
*/
@@ -67,20 +67,20 @@ public class TransferAction extends RMDispositionActionExecuterAbstractBase
{
this.filePlanService = filePlanService;
}
-
+
/**
* Indicates whether this transfer is an accession or not
- *
+ *
* @param isAccession
*/
public void setIsAccession(boolean isAccession)
{
this.isAccession = isAccession;
}
-
+
/**
* Do not set the transfer action to auto-complete
- *
+ *
* @see org.alfresco.module.org_alfresco_module_rm.action.RMDispositionActionExecuterAbstractBase#getSetDispositionActionComplete()
*/
@Override
@@ -88,7 +88,7 @@ public class TransferAction extends RMDispositionActionExecuterAbstractBase
{
return false;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.action.RMDispositionActionExecuterAbstractBase#executeRecordFolderLevelDisposition(org.alfresco.service.cmr.action.Action, org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -106,31 +106,31 @@ public class TransferAction extends RMDispositionActionExecuterAbstractBase
{
doTransfer(action, record);
}
-
+
/**
* Create the transfer node and link the disposition lifecycle node beneath it
- *
+ *
* @param dispositionLifeCycleNodeRef disposition lifecycle node
*/
private void doTransfer(Action action, NodeRef dispositionLifeCycleNodeRef)
{
// Get the root rm node
NodeRef root = filePlanService.getFilePlan(dispositionLifeCycleNodeRef);
-
+
// Get the transfer object
- NodeRef transferNodeRef = (NodeRef)AlfrescoTransactionSupport.getResource(KEY_TRANSFER_NODEREF);
+ NodeRef transferNodeRef = (NodeRef)AlfrescoTransactionSupport.getResource(KEY_TRANSFER_NODEREF);
if (transferNodeRef == null)
{
// Calculate a transfer name
QName nodeDbid = QName.createQName(NamespaceService.SYSTEM_MODEL_1_0_URI, "node-dbid");
Long dbId = (Long)this.nodeService.getProperty(dispositionLifeCycleNodeRef, nodeDbid);
String transferName = StringUtils.leftPad(dbId.toString(), 10, "0");
-
+
// Create the transfer object
Map transferProps = new HashMap(2);
transferProps.put(ContentModel.PROP_NAME, transferName);
transferProps.put(PROP_TRANSFER_ACCESSION_INDICATOR, this.isAccession);
-
+
// setup location property from disposition schedule
DispositionAction da = dispositionService.getNextDispositionAction(dispositionLifeCycleNodeRef);
if (da != null)
@@ -141,57 +141,57 @@ public class TransferAction extends RMDispositionActionExecuterAbstractBase
transferProps.put(PROP_TRANSFER_LOCATION, actionDef.getLocation());
}
}
-
+
NodeRef transferContainer = filePlanService.getTransferContainer(root);
- transferNodeRef = this.nodeService.createNode(transferContainer,
- ContentModel.ASSOC_CONTAINS,
- QName.createQName(RM_URI, transferName),
+ transferNodeRef = this.nodeService.createNode(transferContainer,
+ ContentModel.ASSOC_CONTAINS,
+ QName.createQName(RM_URI, transferName),
TYPE_TRANSFER,
transferProps).getChildRef();
-
+
// Bind the hold node reference to the transaction
AlfrescoTransactionSupport.bindResource(KEY_TRANSFER_NODEREF, transferNodeRef);
}
else
{
- // ensure this node has not already in the process of being transferred
+ // ensure this node has not already in the process of being transferred
List transferredAlready = nodeService.getChildAssocs(transferNodeRef, ASSOC_TRANSFERRED, ASSOC_TRANSFERRED);
for(ChildAssociationRef car : transferredAlready)
{
if(car.getChildRef().equals(dispositionLifeCycleNodeRef) == true)
{
throw new AlfrescoRuntimeException(I18NUtil.getMessage(MSG_NODE_ALREADY_TRANSFER, dispositionLifeCycleNodeRef.toString()));
-
+
}
}
}
-
+
// Link the record to the trasnfer object
- this.nodeService.addChild(transferNodeRef,
- dispositionLifeCycleNodeRef,
- ASSOC_TRANSFERRED,
+ this.nodeService.addChild(transferNodeRef,
+ dispositionLifeCycleNodeRef,
+ ASSOC_TRANSFERRED,
ASSOC_TRANSFERRED);
-
+
// Set PDF indicator flag
setPDFIndicationFlag(transferNodeRef, dispositionLifeCycleNodeRef);
-
+
// Set the transferring indicator aspect
nodeService.addAspect(dispositionLifeCycleNodeRef, ASPECT_TRANSFERRING, null);
-
+
// Set the return value of the action
action.setParameterValue(ActionExecuter.PARAM_RESULT, transferNodeRef);
}
-
+
/**
- *
+ *
* @param transferNodeRef
* @param dispositionLifeCycleNodeRef
*/
private void setPDFIndicationFlag(NodeRef transferNodeRef, NodeRef dispositionLifeCycleNodeRef)
{
- if (recordsManagementService.isRecordFolder(dispositionLifeCycleNodeRef) == true)
+ if (recordFolderService.isRecordFolder(dispositionLifeCycleNodeRef) == true)
{
- List records = recordsManagementService.getRecords(dispositionLifeCycleNodeRef);
+ List records = recordService.getRecords(dispositionLifeCycleNodeRef);
for (NodeRef record : records)
{
setPDFIndicationFlag(transferNodeRef, record);
@@ -205,7 +205,7 @@ public class TransferAction extends RMDispositionActionExecuterAbstractBase
{
// Set the property indicator
nodeService.setProperty(transferNodeRef, PROP_TRANSFER_PDF_INDICATOR, true);
- }
+ }
}
}
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/TransferCompleteAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/TransferCompleteAction.java
index ddbf9b0975..5b72524dbb 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/TransferCompleteAction.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/TransferCompleteAction.java
@@ -35,7 +35,7 @@ import org.springframework.extensions.surf.util.I18NUtil;
/**
* Transfer complete action
- *
+ *
* @author Roy Wetherall
*/
public class TransferCompleteAction extends RMActionExecuterAbstractBase
@@ -55,7 +55,7 @@ public class TransferCompleteAction extends RMActionExecuterAbstractBase
{
boolean accessionIndicator = ((Boolean)nodeService.getProperty(actionedUponNodeRef, PROP_TRANSFER_ACCESSION_INDICATOR)).booleanValue();
String transferLocation = nodeService.getProperty(actionedUponNodeRef, PROP_TRANSFER_LOCATION).toString();
-
+
List assocs = this.nodeService.getChildAssocs(actionedUponNodeRef, ASSOC_TRANSFERRED, RegexQNamePattern.MATCH_ALL);
for (ChildAssociationRef assoc : assocs)
{
@@ -82,7 +82,7 @@ public class TransferCompleteAction extends RMActionExecuterAbstractBase
/**
* Marks the node complete
- *
+ *
* @param nodeRef
* disposition lifecycle node reference
*/
@@ -95,11 +95,11 @@ public class TransferCompleteAction extends RMActionExecuterAbstractBase
nodeService.setProperty(da.getNodeRef(), PROP_DISPOSITION_ACTION_COMPLETED_AT, new Date());
nodeService.setProperty(da.getNodeRef(), PROP_DISPOSITION_ACTION_COMPLETED_BY, AuthenticationUtil.getRunAsUser());
}
-
+
// Remove the transferring indicator aspect
nodeService.removeAspect(nodeRef, ASPECT_TRANSFERRING);
nodeService.setProperty(nodeRef, PROP_LOCATION, transferLocation);
-
+
// Determine which marker aspect to use
QName markerAspectQName = null;
if (accessionIndicator == true)
@@ -110,12 +110,12 @@ public class TransferCompleteAction extends RMActionExecuterAbstractBase
{
markerAspectQName = ASPECT_TRANSFERRED;
}
-
+
// Mark the object and children accordingly
nodeService.addAspect(nodeRef, markerAspectQName, null);
- if (recordsManagementService.isRecordFolder(nodeRef) == true)
+ if (recordFolderService.isRecordFolder(nodeRef) == true)
{
- List records = recordsManagementService.getRecords(nodeRef);
+ List records = recordService.getRecords(nodeRef);
for (NodeRef record : records)
{
nodeService.addAspect(record, markerAspectQName, null);
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/UnCutoffAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/UnCutoffAction.java
index de8cb0c283..1db93650dc 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/UnCutoffAction.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/UnCutoffAction.java
@@ -58,9 +58,9 @@ public class UnCutoffAction extends RMActionExecuterAbstractBase
// Remove the cutoff aspect
nodeService.removeAspect(actionedUponNodeRef, ASPECT_CUT_OFF);
- if (recordsManagementService.isRecordFolder(actionedUponNodeRef) == true)
+ if (recordFolderService.isRecordFolder(actionedUponNodeRef) == true)
{
- List records = this.recordsManagementService.getRecords(actionedUponNodeRef);
+ List records = recordService.getRecords(actionedUponNodeRef);
for (NodeRef record : records)
{
nodeService.removeAspect(record, ASPECT_CUT_OFF);
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java
index b8dc7410a3..0aeace6f76 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java
@@ -36,7 +36,6 @@ import java.util.Set;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel;
-import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction;
import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService;
import org.alfresco.module.org_alfresco_module_rm.audit.event.AuditEvent;
@@ -97,10 +96,10 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
private static Log logger = LogFactory.getLog(RecordsManagementAuditServiceImpl.class);
private static final String KEY_RM_AUDIT_NODE_RECORDS = "RMAUditNodeRecords";
-
+
protected static final String RM_AUDIT_EVENT_LOGIN_SUCCESS = "Login.Success";
protected static final String RM_AUDIT_EVENT_LOGIN_FAILURE = "Login.Failure";
-
+
protected static final String RM_AUDIT_APPLICATION_NAME = "RM";
protected static final String RM_AUDIT_PATH_ROOT = "/RM";
protected static final String RM_AUDIT_SNIPPET_EVENT = "/event";
@@ -125,7 +124,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
protected static final String RM_AUDIT_DATA_LOGIN_USERNAME = "/RM/login/args/userName/value";
protected static final String RM_AUDIT_DATA_LOGIN_FULLNAME = "/RM/login/no-error/fullName";
protected static final String RM_AUDIT_DATA_LOGIN_ERROR = "/RM/login/error/value";
-
+
/* Provide Backward compatibility with DOD5015 Audit Events RM-904*/
protected static final String DOD5015_AUDIT_APPLICATION_NAME = "DOD5015";
protected static final String DOD5015_AUDIT_PATH_ROOT = "/DOD5015";
@@ -156,7 +155,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
protected static final String AUDIT_TRAIL_FILE_PREFIX = "audit_";
protected static final String AUDIT_TRAIL_JSON_FILE_SUFFIX = ".json";
protected static final String AUDIT_TRAIL_HTML_FILE_SUFFIX = ".html";
-
+
/** Audit auditing events */
private static final String AUDIT_EVENT_START = "audit.start";
private static final String MSG_AUDIT_START = "rm.audit.audit-start";
@@ -174,7 +173,6 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
private ContentService contentService;
private AuditComponent auditComponent;
private AuditService auditService;
- private RecordsManagementService rmService;
private RecordsManagementActionService rmActionService;
private FilePlanService filePlanService;
private NamespaceService namespaceService;
@@ -246,14 +244,6 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
this.auditService = auditService;
}
- /**
- * Set the RecordsManagementService
- */
- public void setRecordsManagementService(RecordsManagementService rmService)
- {
- this.rmService = rmService;
- }
-
/**
* Sets the RecordsManagementActionService instance
*/
@@ -294,7 +284,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
{
registerAuditEvent(new AuditEvent(name, label));
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService#registerAuditEvent(org.alfresco.module.org_alfresco_module_rm.audit.event.AuditEvent)
*/
@@ -305,7 +295,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
{
logger.debug("Registering audit event " + auditEvent.getName());
}
-
+
this.auditEvents.put(auditEvent.getName(), auditEvent);
}
@@ -320,11 +310,10 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
PropertyCheck.mandatory(this, "contentService", contentService);
PropertyCheck.mandatory(this, "auditComponent", auditComponent);
PropertyCheck.mandatory(this, "auditService", auditService);
- PropertyCheck.mandatory(this, "rmService", rmService);
PropertyCheck.mandatory(this, "rmActionService", rmActionService);
PropertyCheck.mandatory(this, "dictionaryService", dictionaryService);
PropertyCheck.mandatory(this, "filePlanService", filePlanService);
-
+
// register audit auditing events
registerAuditEvent(AUDIT_EVENT_CLEAR, MSG_AUDIT_CLEAR);
registerAuditEvent(AUDIT_EVENT_START, MSG_AUDIT_START);
@@ -385,7 +374,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
{
logger.info("Started Records Management auditing");
}
-
+
auditEvent(filePlan, AUDIT_EVENT_START, null, null, true);
}
@@ -396,18 +385,18 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
{
ParameterCheck.mandatory("filePlan", filePlan);
// TODO use file plan to scope audit log
-
+
auditEvent(filePlan, AUDIT_EVENT_STOP, null, null, true);
auditService.disableAudit(
RM_AUDIT_APPLICATION_NAME,
RM_AUDIT_PATH_ROOT);
-
+
if (logger.isInfoEnabled())
{
logger.info("Stopped Records Management auditing");
}
- }
+ }
/**
* @see org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService#clearAuditLog(org.alfresco.service.cmr.repository.NodeRef)
@@ -423,9 +412,9 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
{
logger.debug("Records Management audit log has been cleared");
}
-
+
auditEvent(filePlan, AUDIT_EVENT_CLEAR, null, null, true);
- }
+ }
/**
* {@inheritDoc}
@@ -451,7 +440,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
// TODO: return proper date, for now it's today's date
return getEndOfDay(new Date());
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService#auditEvent(org.alfresco.service.cmr.repository.NodeRef, java.lang.String)
*/
@@ -460,7 +449,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
{
auditEvent(nodeRef, eventName, null, null, false, false);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService#auditEvent(org.alfresco.service.cmr.repository.NodeRef, java.lang.String, java.util.Map, java.util.Map)
*/
@@ -469,16 +458,16 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
{
auditEvent(nodeRef, eventName, before, after, false, false);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService#auditEvent(org.alfresco.service.cmr.repository.NodeRef, java.lang.String, java.util.Map, java.util.Map, boolean)
*/
@Override
- public void auditEvent(NodeRef nodeRef, String eventName, Map before, Map after, boolean immediate)
+ public void auditEvent(NodeRef nodeRef, String eventName, Map before, Map after, boolean immediate)
{
auditEvent(nodeRef, eventName, before, after, immediate, false);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService#auditEvent(org.alfresco.service.cmr.repository.NodeRef, java.lang.String, java.util.Map, java.util.Map, boolean)
*/
@@ -495,7 +484,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
{
Set auditDetails = TransactionalResourceHelper.getSet(KEY_RM_AUDIT_NODE_RECORDS);
AlfrescoTransactionSupport.bindListener(txnListener);
-
+
// RM-936: Eliminate multiple audit maps from being generated when events with the same name are required to be fired multiple times in the same transaction.
// Check if auditDetails already contains an auditedNode with the same combination of nodeRef and eventName.
boolean auditNodeAlreadyExists = false;
@@ -543,14 +532,14 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
RM_AUDIT_SNIPPET_EVENT,
RM_AUDIT_SNIPPET_NAME),
eventName);
-
+
if (nodeRef != null)
{
auditMap.put(
AuditApplication.buildPath(
RM_AUDIT_SNIPPET_EVENT,
RM_AUDIT_SNIPPET_NODE),
- nodeRef);
+ nodeRef);
}
// Filter out any properties to be audited if specified in the Spring configuration.
@@ -558,7 +547,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
{
removeAuditProperties(ignoredAuditProperties, propertiesBefore, propertiesAfter);
}
-
+
// Property changes
Pair, Map> deltaPair = PropertyMap.getBeforeAndAfterMapsForChanges(propertiesBefore, propertiesAfter);
@@ -566,8 +555,8 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
if (deltaPair.getFirst().isEmpty() && deltaPair.getSecond().isEmpty() && removeOnNoPropertyChange == true)
{
auditMap.clear();
- }
- else
+ }
+ else
{
auditMap.put(
AuditApplication.buildPath(
@@ -583,13 +572,13 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
RM_AUDIT_SNIPPET_CHANGES,
RM_AUDIT_SNIPPET_AFTER),
(Serializable) deltaPair.getSecond());
- }
+ }
return auditMap;
}
/**
* Helper method to remove system properties from maps
- *
+ *
* @param properties
*/
private void removeAuditProperties(List ignoredAuditProperties, Map before, Map after)
@@ -608,7 +597,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
* A stateless transaction listener for RM auditing. This component picks up the data of modified nodes and generates the audit information.
*
* This class is not static so that the instances will have access to the action's implementation.
- *
+ *
* @author Derek Hulley
* @since 3.2
*/
@@ -649,7 +638,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
private void auditInTxn(Set auditedNodes) throws Throwable
{
// Go through all the audit information and audit it
- boolean auditedSomething = false;
+ boolean auditedSomething = false;
for (RMAuditNode auditedNode : auditedNodes)
{
NodeRef nodeRef = auditedNode.getNodeRef();
@@ -661,9 +650,9 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
}
// build the audit map
- Map auditMap = buildAuditMap(nodeRef,
- auditedNode.getEventName(),
- auditedNode.getNodePropertiesBefore(),
+ Map auditMap = buildAuditMap(nodeRef,
+ auditedNode.getEventName(),
+ auditedNode.getNodePropertiesBefore(),
auditedNode.getNodePropertiesAfter(),
auditedNode.getRemoveIfNoPropertyChanged());
// Audit it
@@ -770,7 +759,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
{
logger.debug("Retrieving audit trail in '" + reportFormat + "' format using parameters: " + params);
}
-
+
// define the callback
AuditQueryCallback callback = new AuditQueryCallback()
{
@@ -853,7 +842,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
namePath = (String) values.get(DOD5015_AUDIT_DATA_NODE_NAMEPATH);
beforeProperties = (Map) values.get( DOD5015_AUDIT_DATA_NODE_CHANGES_BEFORE);
afterProperties = (Map) values.get(DOD5015_AUDIT_DATA_NODE_CHANGES_AFTER);
-
+
// Convert some of the values to recognizable forms
nodeType = null;
if (nodeTypeQname != null)
@@ -998,7 +987,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
{
dod5015AuditQueryParams.addSearchKey(DOD5015_AUDIT_DATA_NODE_NODEREF, nodeRef);
}
-
+
//
AuditQueryParameters auditQueryParams = new AuditQueryParameters();
auditQueryParams.setForward(forward);
@@ -1021,7 +1010,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
// finish off the audit trail report
writeAuditTrailFooter(writer, reportFormat);
-
+
// audit that the audit has been view'ed
if (nodeRef == null)
{
@@ -1177,7 +1166,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
{
List listAuditEvents = new ArrayList(this.auditEvents.size());
listAuditEvents.addAll(this.auditEvents.values());
- Collections.sort(listAuditEvents, new AuditEvent());
+ Collections.sort(listAuditEvents, new AuditEvent());
return listAuditEvents;
}
@@ -1497,7 +1486,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
return label;
}
-
+
/**
* A class to carry audit information through the transaction.
*
@@ -1516,12 +1505,12 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
{
return nodeRef;
}
-
+
public void setNodeRef(NodeRef nodeRef)
{
this.nodeRef = nodeRef;
}
-
+
public String getEventName()
{
return eventName;
@@ -1561,13 +1550,13 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
{
this.removeIfNoPropertyChanged = removeIfNoPropertyChanged;
}
- }
-
+ }
+
/** Deprecated Method Implementations **/
-
+
/**
* Helper method to get the default file plan
- *
+ *
* @return NodRef default file plan
*/
private NodeRef getDefaultFilePlan()
@@ -1607,7 +1596,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
{
stopAuditLog(getDefaultFilePlan());
}
-
+
/**
* {@inheritDoc}
*/
@@ -1633,8 +1622,8 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
public void clear()
{
clearAuditLog(getDefaultFilePlan());
- }
-
+ }
+
/**
* {@inheritDoc}
* @since 3.2
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/extractor/FilePlanNamePathDataExtractor.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/extractor/FilePlanNamePathDataExtractor.java
index 1f8a97f3a1..e62ea702ef 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/extractor/FilePlanNamePathDataExtractor.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/extractor/FilePlanNamePathDataExtractor.java
@@ -22,7 +22,6 @@ import java.io.Serializable;
import java.util.List;
import org.alfresco.model.ContentModel;
-import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.repo.audit.extractor.AbstractDataExtractor;
@@ -33,9 +32,9 @@ import org.alfresco.service.cmr.repository.NodeService;
* An extractor that extracts the cm:name path from the RM root down to
* - and including - the node's own name. This will only extract data if the
* node is a {@link RecordsManagementModel#ASPECT_FILE_PLAN_COMPONENT fileplan component}.
- *
- * @see RecordsManagementService#getNodeRefPath(NodeRef)
- *
+ *
+ * @see FilePlanService#getNodeRefPath(NodeRef)
+ *
* @author Derek Hulley
* @since 3.2
*/
@@ -55,7 +54,7 @@ public final class FilePlanNamePathDataExtractor extends AbstractDataExtractor
/**
* @param filePlanService file plan service
*/
- public void setFilePlanService(FilePlanService filePlanService)
+ public void setFilePlanService(FilePlanService filePlanService)
{
this.filePlanService = filePlanService;
}
@@ -79,17 +78,17 @@ public final class FilePlanNamePathDataExtractor extends AbstractDataExtractor
public Serializable extractData(Serializable value) throws Throwable
{
NodeRef nodeRef = (NodeRef) value;
-
+
// Get path from the RM root
List nodeRefPath = filePlanService.getNodeRefPath(nodeRef);
-
+
StringBuilder sb = new StringBuilder(128);
for (NodeRef pathNodeRef : nodeRefPath)
{
String name = (String)nodeService.getProperty(pathNodeRef, ContentModel.PROP_NAME);
sb.append("/").append(name);
}
-
+
// Done
return sb.toString();
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/extractor/FilePlanNodeRefPathDataExtractor.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/extractor/FilePlanNodeRefPathDataExtractor.java
index 121d1d0876..f6a428ffab 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/extractor/FilePlanNodeRefPathDataExtractor.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/extractor/FilePlanNodeRefPathDataExtractor.java
@@ -21,7 +21,6 @@ package org.alfresco.module.org_alfresco_module_rm.audit.extractor;
import java.io.Serializable;
import java.util.List;
-import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.repo.audit.extractor.AbstractDataExtractor;
@@ -32,9 +31,9 @@ import org.alfresco.service.cmr.repository.NodeService;
* An extractor that extracts the NodeRef path from the RM root down to
* - and including - the node itself. This will only extract data if the
* node is a {@link RecordsManagementModel#ASPECT_FILE_PLAN_COMPONENT fileplan component}.
- *
- * @see RecordsManagementService#getNodeRefPath(NodeRef)
- *
+ *
+ * @see FilePlanService#getNodeRefPath(NodeRef)
+ *
* @author Derek Hulley
* @since 1.0
*/
@@ -51,7 +50,7 @@ public final class FilePlanNodeRefPathDataExtractor extends AbstractDataExtracto
this.nodeService = nodeService;
}
- public void setFilePlanService(FilePlanService filePlanService)
+ public void setFilePlanService(FilePlanService filePlanService)
{
this.filePlanService = filePlanService;
}
@@ -72,10 +71,10 @@ public final class FilePlanNodeRefPathDataExtractor extends AbstractDataExtracto
public Serializable extractData(Serializable value) throws Throwable
{
NodeRef nodeRef = (NodeRef) value;
-
+
// Get path from the RM root
List nodeRefPath = filePlanService.getNodeRefPath(nodeRef);
-
+
// Done
return (Serializable) nodeRefPath;
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/AbstractCapability.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/AbstractCapability.java
index 685ad74f41..9cb8eff44d 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/AbstractCapability.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/AbstractCapability.java
@@ -24,8 +24,6 @@ import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.security.AccessStatus;
import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.springframework.extensions.surf.util.I18NUtil;
/**
@@ -37,10 +35,6 @@ import org.springframework.extensions.surf.util.I18NUtil;
public abstract class AbstractCapability extends RMSecurityCommon
implements Capability, RecordsManagementModel, RMPermissionModel
{
- /** Logger */
- @SuppressWarnings("unused")
- private static Log logger = LogFactory.getLog(AbstractCapability.class);
-
/** Capability service */
protected CapabilityService capabilityService;
@@ -115,7 +109,7 @@ public abstract class AbstractCapability extends RMSecurityCommon
{
title = getName();
}
-
+
}
return title;
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMSecurityCommon.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMSecurityCommon.java
index fc90081c1d..a09d665b82 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMSecurityCommon.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMSecurityCommon.java
@@ -21,7 +21,6 @@ package org.alfresco.module.org_alfresco_module_rm.capability;
import net.sf.acegisecurity.vote.AccessDecisionVoter;
import org.alfresco.error.AlfrescoRuntimeException;
-import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
import org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigComponent;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
@@ -41,27 +40,26 @@ import org.apache.commons.logging.LogFactory;
/**
* Common security functions.
- *
+ *
* TODO move methods to the appropriate services
- *
+ *
* @author Roy Wetherall
* @since 2.0
*/
public class RMSecurityCommon
-{
+{
/** No set value */
protected int NOSET_VALUE = -100;
-
+
/** Logger */
private static Log logger = LogFactory.getLog(RMSecurityCommon.class);
-
+
/** Services */
protected NodeService nodeService; //This is the internal NodeService -- no permission checks
protected PermissionService permissionService;
- protected RecordsManagementService rmService;
protected RMCaveatConfigComponent caveatConfigComponent;
protected FilePlanService filePlanService;
-
+
/**
* @param nodeService node service
*/
@@ -69,7 +67,7 @@ public class RMSecurityCommon
{
this.nodeService = nodeService;
}
-
+
/**
* @param permissionService permission service
*/
@@ -77,15 +75,7 @@ public class RMSecurityCommon
{
this.permissionService = permissionService;
}
-
- /**
- * @param rmService records management service
- */
- public void setRecordsManagementService(RecordsManagementService rmService)
- {
- this.rmService = rmService;
- }
-
+
/**
* @param caveatConfigComponent caveat config service
*/
@@ -93,7 +83,7 @@ public class RMSecurityCommon
{
this.caveatConfigComponent = caveatConfigComponent;
}
-
+
/**
* @param filePlanService file plan service
*/
@@ -101,10 +91,10 @@ public class RMSecurityCommon
{
this.filePlanService = filePlanService;
}
-
+
/**
* Sets a value into the transaction cache
- *
+ *
* @param prefix
* @param nodeRef
* @param value
@@ -114,12 +104,12 @@ public class RMSecurityCommon
{
String user = AuthenticationUtil.getRunAsUser();
AlfrescoTransactionSupport.bindResource(prefix + nodeRef.toString() + user, Integer.valueOf(value));
- return value;
+ return value;
}
-
+
/**
* Gets a value from the transaction cache
- *
+ *
* @param prefix
* @param nodeRef
* @return
@@ -135,10 +125,10 @@ public class RMSecurityCommon
}
return result;
}
-
+
/**
* Check for RM read
- *
+ *
* @param nodeRef
* @return
*/
@@ -153,10 +143,10 @@ public class RMSecurityCommon
return result;
}
-
+
/**
* Check for RM read
- *
+ *
* @param nodeRef
* @param allowDMRead
* @return
@@ -164,7 +154,7 @@ public class RMSecurityCommon
public int checkRead(NodeRef nodeRef, boolean allowDMRead)
{
int result = AccessDecisionVoter.ACCESS_ABSTAIN;
-
+
if (nodeService.hasAspect(nodeRef, RecordsManagementModel.ASPECT_FILE_PLAN_COMPONENT)== true)
{
result = checkRmRead(nodeRef);
@@ -187,26 +177,26 @@ public class RMSecurityCommon
result = AccessDecisionVoter.ACCESS_GRANTED;
}
}
-
- return result;
- }
-
+
+ return result;
+ }
+
/**
- *
+ *
* @param nodeRef
* @return
*/
public int checkRmRead(NodeRef nodeRef)
- {
+ {
int result = getTransactionCache("checkRmRead", nodeRef);
if (result != NOSET_VALUE)
{
return result;
}
-
+
// Get the file plan for the node
NodeRef filePlan = filePlanService.getFilePlan(nodeRef);
-
+
// Admin role
//if (permissionService.hasPermission(filePlan, RMPermissionModel.ROLE_ADMINISTRATOR) == AccessStatus.ALLOWED)
//{
@@ -214,7 +204,7 @@ public class RMSecurityCommon
// {
// logger.debug("\t\tAdmin user, access granted. (nodeRef=" + nodeRef.toString() + ", user=" + AuthenticationUtil.getRunAsUser() + ")");
// }
- // return setTransactionCache("checkRmRead", nodeRef, AccessDecisionVoter.ACCESS_GRANTED);
+ // return setTransactionCache("checkRmRead", nodeRef, AccessDecisionVoter.ACCESS_GRANTED);
// }
if (permissionService.hasPermission(nodeRef, RMPermissionModel.READ_RECORDS) == AccessStatus.DENIED)
@@ -223,7 +213,7 @@ public class RMSecurityCommon
{
logger.debug("\t\tUser does not have read record permission on node, access denied. (nodeRef=" + nodeRef.toString() + ", user=" + AuthenticationUtil.getRunAsUser() + ")");
}
- return setTransactionCache("checkRmRead", nodeRef, AccessDecisionVoter.ACCESS_DENIED);
+ return setTransactionCache("checkRmRead", nodeRef, AccessDecisionVoter.ACCESS_DENIED);
}
if (permissionService.hasPermission(filePlan, RMPermissionModel.VIEW_RECORDS) == AccessStatus.DENIED)
@@ -232,36 +222,36 @@ public class RMSecurityCommon
{
logger.debug("\t\tUser does not have view records capability permission on node, access denied. (filePlan=" + filePlan.toString() + ", user=" + AuthenticationUtil.getRunAsUser() + ")");
}
- return setTransactionCache("checkRmRead", nodeRef, AccessDecisionVoter.ACCESS_DENIED);
+ return setTransactionCache("checkRmRead", nodeRef, AccessDecisionVoter.ACCESS_DENIED);
}
if (caveatConfigComponent.hasAccess(nodeRef))
{
- return setTransactionCache("checkRmRead", nodeRef, AccessDecisionVoter.ACCESS_GRANTED);
+ return setTransactionCache("checkRmRead", nodeRef, AccessDecisionVoter.ACCESS_GRANTED);
}
else
{
- return setTransactionCache("checkRmRead", nodeRef, AccessDecisionVoter.ACCESS_DENIED);
+ return setTransactionCache("checkRmRead", nodeRef, AccessDecisionVoter.ACCESS_DENIED);
}
}
-
+
@SuppressWarnings("rawtypes")
protected NodeRef getTestNode(MethodInvocation invocation, Class[] params, int position, boolean parent)
{
NodeRef testNodeRef = null;
if (position < 0)
{
- testNodeRef = filePlanService.getFilePlanBySiteId(FilePlanService.DEFAULT_RM_SITE_ID);
+ testNodeRef = filePlanService.getFilePlanBySiteId(FilePlanService.DEFAULT_RM_SITE_ID);
if (testNodeRef == null)
{
throw new AlfrescoRuntimeException("Unable to find default file plan node.");
}
-
+
if (logger.isDebugEnabled())
{
logger.debug("\tPermission test against the file plan node " + nodeService.getPath(testNodeRef));
- }
+ }
}
else if (StoreRef.class.isAssignableFrom(params[position]))
{
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/AbstractCapabilityCondition.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/AbstractCapabilityCondition.java
index 1f6eb5dc23..408055bb2e 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/AbstractCapabilityCondition.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/AbstractCapabilityCondition.java
@@ -18,43 +18,37 @@
*/
package org.alfresco.module.org_alfresco_module_rm.capability.declarative;
-import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
+import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
+import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.security.PermissionService;
import org.springframework.beans.factory.BeanNameAware;
/**
* Abstract capability condition.
- *
+ *
* @author Roy Wetherall
*/
-public abstract class AbstractCapabilityCondition implements CapabilityCondition,
+public abstract class AbstractCapabilityCondition implements CapabilityCondition,
BeanNameAware,
RecordsManagementModel
{
/** Capability condition name */
protected String name;
-
+
/** Services */
- protected RecordsManagementService rmService;
protected RecordService recordService;
protected PermissionService permissionService;
protected NodeService nodeService;
protected FreezeService freezeService;
protected FilePlanService filePlanService;
-
- /**
- * @param rmService records management service
- */
- public void setRecordsManagementService(RecordsManagementService rmService)
- {
- this.rmService = rmService;
- }
-
+ protected DispositionService dispositionService;
+ protected RecordFolderService recordFolderService;
+
/**
* @param recordService record service
*/
@@ -62,7 +56,7 @@ public abstract class AbstractCapabilityCondition implements CapabilityCondition
{
this.recordService = recordService;
}
-
+
/**
* @param permissionService permission service
*/
@@ -70,7 +64,7 @@ public abstract class AbstractCapabilityCondition implements CapabilityCondition
{
this.permissionService = permissionService;
}
-
+
/**
* @param nodeService node service
*/
@@ -78,7 +72,7 @@ public abstract class AbstractCapabilityCondition implements CapabilityCondition
{
this.nodeService = nodeService;
}
-
+
/**
* @param freezeService freeze service
*/
@@ -86,15 +80,31 @@ public abstract class AbstractCapabilityCondition implements CapabilityCondition
{
this.freezeService = freezeService;
}
-
+
/**
* @param filePlanService file plan service
*/
- public void setFilePlanService(FilePlanService filePlanService)
+ public void setFilePlanService(FilePlanService filePlanService)
{
this.filePlanService = filePlanService;
}
-
+
+ /**
+ * @param dispositionService disposition service
+ */
+ public void setDispositionService(DispositionService dispositionService)
+ {
+ this.dispositionService = dispositionService;
+ }
+
+ /**
+ * @param recordFolderService record folder service
+ */
+ public void setRecordFolderService(RecordFolderService recordFolderService)
+ {
+ this.recordFolderService = recordFolderService;
+ }
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.capability.declarative.CapabilityCondition#getName()
*/
@@ -103,7 +113,7 @@ public abstract class AbstractCapabilityCondition implements CapabilityCondition
{
return name;
}
-
+
/**
* @see org.springframework.beans.factory.BeanNameAware#setBeanName(java.lang.String)
*/
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/ClosedCapabilityCondition.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/ClosedCapabilityCondition.java
index 80f81730c6..4d2f77723c 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/ClosedCapabilityCondition.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/ClosedCapabilityCondition.java
@@ -38,9 +38,9 @@ public class ClosedCapabilityCondition extends AbstractCapabilityCondition
public boolean evaluate(NodeRef nodeRef)
{
boolean result = false;
- if (rmService.isRecordFolder(nodeRef) == true)
+ if (recordFolderService.isRecordFolder(nodeRef) == true)
{
- result = rmService.isRecordFolderClosed(nodeRef);
+ result = recordFolderService.isRecordFolderClosed(nodeRef);
}
else if (recordService.isRecord(nodeRef) == true)
{
@@ -48,14 +48,14 @@ public class ClosedCapabilityCondition extends AbstractCapabilityCondition
for (ChildAssociationRef assoc : assocs)
{
NodeRef parent = assoc.getParentRef();
- if (rmService.isRecordFolder(parent) == true &&
- rmService.isRecordFolderClosed(parent) == true)
+ if (recordFolderService.isRecordFolder(parent) == true &&
+ recordFolderService.isRecordFolderClosed(parent) == true)
{
result = true;
break;
- }
+ }
}
- }
+ }
return result;
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/CutoffCapabilityCondition.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/CutoffCapabilityCondition.java
index 37eb259e98..0b647ea23b 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/CutoffCapabilityCondition.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/CutoffCapabilityCondition.java
@@ -32,7 +32,7 @@ public class CutoffCapabilityCondition extends AbstractCapabilityCondition
@Override
public boolean evaluate(NodeRef nodeRef)
{
- return rmService.isCutoff(nodeRef);
+ return dispositionService.isCutoff(nodeRef);
}
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/IsRecordFolderCondition.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/IsRecordFolderCondition.java
index cda0bbf8ea..2d78cc3bc1 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/IsRecordFolderCondition.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/IsRecordFolderCondition.java
@@ -38,7 +38,7 @@ public class IsRecordFolderCondition extends AbstractCapabilityCondition
{
ParameterCheck.mandatory("nodeRef", nodeRef);
- return rmService.isRecordFolder(nodeRef);
+ return recordFolderService.isRecordFolder(nodeRef);
}
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/MayBeScheduledCapabilityCondition.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/MayBeScheduledCapabilityCondition.java
index a3d5de7236..a35ac33ebb 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/MayBeScheduledCapabilityCondition.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/MayBeScheduledCapabilityCondition.java
@@ -26,17 +26,17 @@ import org.alfresco.service.cmr.repository.NodeRef;
/**
* Indicates whether the given disposition action 'may' be scheduled in the future
- *
+ *
* @author Roy Wetherall
*/
public class MayBeScheduledCapabilityCondition extends AbstractCapabilityCondition
{
/** Disposition action */
private String dispositionAction;
-
+
/** Disposition service */
private DispositionService dispositionService;
-
+
/**
* @param dispositionAction disposition action
*/
@@ -44,7 +44,7 @@ public class MayBeScheduledCapabilityCondition extends AbstractCapabilityConditi
{
this.dispositionAction = dispositionAction;
}
-
+
/**
* @param dispositionService disposition service
*/
@@ -52,20 +52,20 @@ public class MayBeScheduledCapabilityCondition extends AbstractCapabilityConditi
{
this.dispositionService = dispositionService;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.capability.declarative.CapabilityCondition#evaluate(org.alfresco.service.cmr.repository.NodeRef)
*/
@Override
public boolean evaluate(NodeRef nodeRef)
{
- boolean result = false;
-
+ boolean result = false;
+
DispositionSchedule dispositionSchedule = dispositionService.getDispositionSchedule(nodeRef);
if (dispositionSchedule != null)
- {
+ {
if (checkDispositionLevel(nodeRef, dispositionSchedule) == true)
- {
+ {
for (DispositionActionDefinition dispositionActionDefinition : dispositionSchedule.getDispositionActionDefinitions())
{
if (dispositionActionDefinition.getName().equals(dispositionAction) == true)
@@ -79,10 +79,10 @@ public class MayBeScheduledCapabilityCondition extends AbstractCapabilityConditi
}
return result;
}
-
+
/**
* Checks the disposition level
- *
+ *
* @param nodeRef
* @param dispositionSchedule
* @return
@@ -95,8 +95,8 @@ public class MayBeScheduledCapabilityCondition extends AbstractCapabilityConditi
{
result = true;
}
- else if (rmService.isRecordFolder(nodeRef) == true && isRecordLevelDisposition == false)
-
+ else if (recordFolderService.isRecordFolder(nodeRef) == true && isRecordLevelDisposition == false)
+
{
result = true;
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/VitalRecordOrFolderCapabilityCondition.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/VitalRecordOrFolderCapabilityCondition.java
index 26d1342e50..b8c21b8606 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/VitalRecordOrFolderCapabilityCondition.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/VitalRecordOrFolderCapabilityCondition.java
@@ -30,14 +30,14 @@ public class VitalRecordOrFolderCapabilityCondition extends AbstractCapabilityCo
@Override
public boolean evaluate(NodeRef nodeRef)
{
- boolean result = false;
-
+ boolean result = false;
+
if (recordService.isRecord(nodeRef) == true)
{
// Check the record for the vital record aspect
result = nodeService.hasAspect(nodeRef, RecordsManagementModel.ASPECT_VITAL_RECORD);
}
- else if (rmService.isRecordFolder(nodeRef) == true)
+ else if (recordFolderService.isRecordFolder(nodeRef) == true)
{
// Check the folder for the vital record indicator
Boolean value = (Boolean)nodeService.getProperty(nodeRef, RecordsManagementModel.PROP_VITAL_RECORD_INDICATOR);
@@ -45,8 +45,8 @@ public class VitalRecordOrFolderCapabilityCondition extends AbstractCapabilityCo
{
result = value.booleanValue();
}
- }
-
+ }
+
return result;
}
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/impl/CreateCapability.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/impl/CreateCapability.java
index 7304d8b16c..98e05c8e31 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/impl/CreateCapability.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/impl/CreateCapability.java
@@ -27,24 +27,31 @@ import org.alfresco.model.ContentModel;
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
import org.alfresco.module.org_alfresco_module_rm.capability.declarative.DeclarativeCapability;
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
+import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.security.AccessStatus;
import org.alfresco.service.namespace.QName;
/**
* Create group capability implementation
- *
+ *
* @author Andy Hind
*/
public class CreateCapability extends DeclarativeCapability
{
private RecordService recordService;
-
+ private RecordFolderService recordFolderService;
+
public void setRecordService(RecordService recordService)
{
this.recordService = recordService;
}
-
+
+ public void setRecordFolderService(RecordFolderService recordFolderService)
+ {
+ this.recordFolderService = recordFolderService;
+ }
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.capability.Capability#evaluate(org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -55,7 +62,7 @@ public class CreateCapability extends DeclarativeCapability
}
/**
- *
+ *
* @param destination
* @param linkee
* @param type
@@ -66,7 +73,7 @@ public class CreateCapability extends DeclarativeCapability
{
if (linkee != null)
{
- int state = checkRead(linkee, true);
+ int state = checkRead(linkee, true);
if (state != AccessDecisionVoter.ACCESS_GRANTED)
{
return AccessDecisionVoter.ACCESS_DENIED;
@@ -84,7 +91,7 @@ public class CreateCapability extends DeclarativeCapability
{
return AccessDecisionVoter.ACCESS_GRANTED;
}
- }
+ }
}
else
{
@@ -96,31 +103,31 @@ public class CreateCapability extends DeclarativeCapability
}
}
}
-
+
}
-
+
// Build the conditions map
Map conditions = new HashMap(5);
conditions.put("capabilityCondition.filling", Boolean.TRUE);
- conditions.put("capabilityCondition.frozen", Boolean.FALSE);
+ conditions.put("capabilityCondition.frozen", Boolean.FALSE);
conditions.put("capabilityCondition.closed", Boolean.FALSE);
- conditions.put("capabilityCondition.cutoff", Boolean.FALSE);
-
+ conditions.put("capabilityCondition.cutoff", Boolean.FALSE);
+
if (checkConditions(destination, conditions) == true)
{
- if (rmService.isRecordFolder(destination))
+ if (recordFolderService.isRecordFolder(destination))
{
if (permissionService.hasPermission(destination, RMPermissionModel.FILE_RECORDS) == AccessStatus.ALLOWED)
{
return AccessDecisionVoter.ACCESS_GRANTED;
}
}
- }
-
- conditions.put("capabilityCondition.closed", Boolean.TRUE);
+ }
+
+ conditions.put("capabilityCondition.closed", Boolean.TRUE);
if (checkConditions(destination, conditions) == true)
{
- if (rmService.isRecordFolder(destination))
+ if (recordFolderService.isRecordFolder(destination))
{
if (permissionService.hasPermission(filePlanService.getFilePlan(destination), RMPermissionModel.DECLARE_RECORDS_IN_CLOSED_FOLDERS) == AccessStatus.ALLOWED)
{
@@ -128,12 +135,12 @@ public class CreateCapability extends DeclarativeCapability
}
}
}
-
+
conditions.remove("capabilityCondition.closed");
conditions.put("capabilityCondition.cutoff", Boolean.TRUE);
if (checkConditions(destination, conditions) == true)
{
- if (rmService.isRecordFolder(destination))
+ if (recordFolderService.isRecordFolder(destination))
{
if (permissionService.hasPermission(filePlanService.getFilePlan(destination), RMPermissionModel.CREATE_MODIFY_RECORDS_IN_CUTOFF_FOLDERS) == AccessStatus.ALLOWED)
{
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/dataset/DataSetServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/dataset/DataSetServiceImpl.java
index 03c4f61460..2d2cb23a1d 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/dataset/DataSetServiceImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/dataset/DataSetServiceImpl.java
@@ -22,7 +22,7 @@ import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.module.org_alfresco_module_rm.model.behaviour.RecordsManagementSearchBehaviour;
-import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderServiceImpl;
+import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
import org.alfresco.module.org_alfresco_module_rm.role.FilePlanRoleService;
import org.alfresco.module.org_alfresco_module_rm.role.Role;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
@@ -41,11 +41,8 @@ import org.alfresco.service.namespace.QName;
import org.alfresco.util.ParameterCheck;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.springframework.beans.BeansException;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-public class DataSetServiceImpl implements DataSetService, RecordsManagementModel, ApplicationContextAware
+public class DataSetServiceImpl implements DataSetService, RecordsManagementModel
{
/** Logger */
@@ -87,17 +84,8 @@ public class DataSetServiceImpl implements DataSetService, RecordsManagementMode
/** Disposition service */
private DispositionService dispositionService;
- /** Application context */
- private ApplicationContext applicationContext;
-
- /**
- * @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)
- */
- @Override
- public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
- {
- this.applicationContext = applicationContext;
- }
+ /** Record folder service */
+ private RecordFolderService recordFolderService;
/**
* Set importer service
@@ -188,6 +176,16 @@ public class DataSetServiceImpl implements DataSetService, RecordsManagementMode
this.dispositionService = dispositionService;
}
+ /**
+ * Set record folder service
+ *
+ * @param recordFolderService the record folder service
+ */
+ public void setRecordFolderService(RecordFolderService recordFolderService)
+ {
+ this.recordFolderService = recordFolderService;
+ }
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.dataset.DataSetService#register(org.alfresco.module.org_alfresco_module_rm.dataset.DataSet)
*/
@@ -346,11 +344,6 @@ public class DataSetServiceImpl implements DataSetService, RecordsManagementMode
/**
* Temp method to patch AMP'ed data
- *
- * @param searchService
- * @param nodeService
- * @param recordsManagementService
- * @param recordsManagementActionService
*/
private void patchLoadedData()
{
@@ -445,8 +438,7 @@ public class DataSetServiceImpl implements DataSetService, RecordsManagementMode
{
// Fire action to "set-up" the folder correctly
logger.info("Setting up bootstraped record folder: " + folderName);
- RecordFolderServiceImpl recordService = (RecordFolderServiceImpl)applicationContext.getBean("recordFolderService");
- recordService.initialiseRecordFolder(recordFolder);
+ recordFolderService.initialiseRecordFolder(recordFolder);
}
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionService.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionService.java
index 2885e00fa2..d7a742fd5a 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionService.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionService.java
@@ -29,126 +29,126 @@ import org.alfresco.service.namespace.QName;
/**
* Disposition service interface.
- *
+ *
* @author Roy Wetherall
* @since 2.0
*/
public interface DispositionService
{
/** ========= Disposition Property Methods ========= */
-
+
/**
* Register a disposition property.
- *
+ *
* @param dispositionProperty disposition property
*/
void registerDispositionProperty(DispositionProperty dispositionProperty);
-
+
/**
* Returns the list of disposition period properties that apply given the context provided.
- *
+ *
* @return filtered list of disposition period properties
*/
Collection getDispositionProperties(boolean isRecordLevel, String dispositionAction);
Collection getDispositionProperties();
-
-
+
+
/** ========= Disposition Schedule Methods ========= */
-
+
/**
- * Get the disposition schedule for a given record management node. Traverses the hierarchy to
+ * Get the disposition schedule for a given record management node. Traverses the hierarchy to
* find the first disposition schedule in the primary hierarchy.
- *
+ *
* @param nodeRef node reference to record category, record folder or record
* @return {@link DispositionSchedule} disposition schedule
*/
DispositionSchedule getDispositionSchedule(NodeRef nodeRef);
-
+
// Gets all the disposition schedules, not just the first in the primary parent path.
// TODO List getAllDispositionSchedules(NodeRef nodeRef);
-
+
/**
* Get the disposition schedule directly associated with the node specified. Returns
* null if none.
- *
+ *
* @param nodeRef node reference
* @return {@link DispositionSchedule} disposition schedule directly associated with the node reference, null if none
*/
DispositionSchedule getAssociatedDispositionSchedule(NodeRef nodeRef);
-
+
/**
* Gets the records management container that is directly associated with the disposition schedule.
- *
+ *
* @param dispositionSchedule disposition schedule
* @return {@link NodeRef} node reference of the associated container
*/
NodeRef getAssociatedRecordsManagementContainer(DispositionSchedule dispositionSchedule);
-
+
/**
* Indicates whether a disposition schedule has any disposable items under its management
- *
+ *
* @param dispositionSchdule disposition schedule
* @return boolean true if there are disposable items being managed by, false otherwise
*/
boolean hasDisposableItems(DispositionSchedule dispositionSchdule);
-
+
/**
- * Gets a list of all the disposable items (records, record folders) that are under the control of
+ * Gets a list of all the disposable items (records, record folders) that are under the control of
* the disposition schedule.
- *
+ *
* @param dispositionSchedule disposition schedule
* @return {@link List}<{@link NodeRef}> list of disposable items
*/
List getDisposableItems(DispositionSchedule dispositionSchedule);
-
+
/**
* Indicates whether the node is a disposable item or not (ie is under the control of a disposition schedule)
- *
+ *
* @param nodeRef node reference
* @return boolean true if node is a disposable item, false otherwise
*/
boolean isDisposableItem(NodeRef nodeRef);
-
+
/**
* Creates a disposition schedule on the given record category.
- *
+ *
* @param recordCategory
* @param props
* @return {@link DispositionSchedule}
*/
DispositionSchedule createDispositionSchedule(NodeRef recordCategory, Map props);
-
+
// TODO DispositionSchedule updateDispositionSchedule(DispositionScedule, Map props)
// TODO void removeDispositionSchedule(NodeRef nodeRef); - can only remove if no disposition items
-
+
/** ========= Disposition Action Definition Methods ========= */
-
+
/**
* Adds a new disposition action definition to the given disposition schedule.
- *
+ *
* @param schedule The DispositionSchedule to add to
* @param actionDefinitionParams Map of parameters to use to create the action definition
*/
DispositionActionDefinition addDispositionActionDefinition(
- DispositionSchedule schedule,
+ DispositionSchedule schedule,
Map actionDefinitionParams);
-
+
/**
* Removes the given disposition action definition from the given disposition
* schedule.
- *
+ *
* @param schedule The DispositionSchedule to remove from
* @param actionDefinition The DispositionActionDefinition to remove
*/
void removeDispositionActionDefinition(
- DispositionSchedule schedule,
+ DispositionSchedule schedule,
DispositionActionDefinition actionDefinition);
-
+
/**
* Updates the given disposition action definition belonging to the given disposition
* schedule.
- *
+ *
* @param actionDefinition The DispositionActionDefinition to update
* @param actionDefinitionParams Map of parameters to use to update the action definition
* @return The updated DispositionActionDefinition
@@ -156,48 +156,57 @@ public interface DispositionService
DispositionActionDefinition updateDispositionActionDefinition(
DispositionActionDefinition actionDefinition,
Map actionDefinitionParams);
-
-
+
+
/** ========= Disposition Action Methods ========= */
-
+
/**
* Indicates whether the next disposition action is eligible or not.
- *
+ *
* @param nodeRef node reference to disposable item
* @return boolean true if next disposition action is eligible, false otherwise
- */
+ */
boolean isNextDispositionActionEligible(NodeRef nodeRef);
-
+
/**
* Gets the next disposition action for a given node
- *
+ *
* @param nodeRef node reference to disposable item
* @return DispositionAction next disposition action, null if none
*/
DispositionAction getNextDispositionAction(NodeRef nodeRef);
-
+
// TODO void startNextDispositionAction(NodeRef nodeRef);
-
+
// TODO void completeNextDispositionAction(NodeRef nodeRef);
-
-
+
+
/** ========= Disposition Action History Methods ========= */
-
+
/**
* Gets a list of all the completed disposition action in the order they occured.
- *
- * @param nodeRef record/record folder
+ *
+ * @param nodeRef record/record folder
* @return List list of completed disposition actions
*/
List getCompletedDispositionActions(NodeRef nodeRef);
-
+
/**
- * Helper method to get the last completed disposition action. Returns null
+ * Helper method to get the last completed disposition action. Returns null
* if there is none.
- *
+ *
* @param nodeRef record/record folder
* @return DispositionAction last completed disposition action, null if none
*/
DispositionAction getLastCompletedDispostionAction(NodeRef nodeRef);
+ /**
+ * Indicates whether the item is cutoff or not.
+ *
+ * @param nodeRef node reference
+ * @return boolean true if the item is cutoff, false otherwise
+ *
+ * @since 2.0
+ */
+ boolean isCutoff(NodeRef nodeRef);
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionServiceImpl.java
index a3e8882f82..6c1f1391a6 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionServiceImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionServiceImpl.java
@@ -27,18 +27,19 @@ import java.util.List;
import java.util.Map;
import org.alfresco.error.AlfrescoRuntimeException;
-import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementServiceRegistry;
import org.alfresco.module.org_alfresco_module_rm.disposition.property.DispositionProperty;
import org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEvent;
import org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEventType;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
+import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
+import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
import org.alfresco.repo.node.NodeServicePolicies;
+import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
import org.alfresco.repo.policy.BehaviourFilter;
import org.alfresco.repo.policy.JavaBehaviour;
import org.alfresco.repo.policy.PolicyComponent;
-import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef;
@@ -56,91 +57,95 @@ import org.springframework.context.ApplicationContextAware;
/**
* Disposition service implementation.
- *
+ *
* @author Roy Wetherall
*/
-public class DispositionServiceImpl implements
- DispositionService,
- RecordsManagementModel,
+public class DispositionServiceImpl implements
+ DispositionService,
+ RecordsManagementModel,
ApplicationContextAware,
NodeServicePolicies.OnAddAspectPolicy
{
/** Logger */
private static Log logger = LogFactory.getLog(DispositionServiceImpl.class);
-
+
/** Node service */
private NodeService nodeService;
-
+
/** Dictionary service */
private DictionaryService dictionaryService;
-
+
/** Behaviour filter */
private BehaviourFilter behaviourFilter;
-
- /** Records management service */
- private RecordsManagementService rmService;
-
+
/** Records management service registry */
private RecordsManagementServiceRegistry serviceRegistry;
-
+
/** Disposition selection strategy */
private DispositionSelectionStrategy dispositionSelectionStrategy;
-
+
/** File plan service */
private FilePlanService filePlanService;
-
+
/** Application context */
private ApplicationContext applicationContext;
+ /** Record Folder Service */
+ // FIXME
+ //private RecordFolderService recordFolderService;
+
+ /** Record Service */
+ private RecordService recordService;
+
/** Policy component */
private PolicyComponent policyComponent;
-
+
/** Disposition properties */
private Map dispositionProperties = new HashMap(4);
-
+
/** Behaviours */
private JavaBehaviour onAddAspect;
-
+
/**
* Set node service
- *
+ *
* @param nodeService the node service
*/
public void setNodeService(NodeService nodeService)
{
this.nodeService = nodeService;
}
-
+
/**
* Set the dictionary service
- *
+ *
* @param dictionaryServic the dictionary service
*/
public void setDictionaryService(DictionaryService dictionaryService)
{
this.dictionaryService = dictionaryService;
}
-
+
/**
* Set the behaviour filter.
- *
+ *
* @param behaviourFilter the behaviour filter
*/
public void setBehaviourFilter(BehaviourFilter behaviourFilter)
{
this.behaviourFilter = behaviourFilter;
}
-
+
/**
* Set the records management service registry
- *
+ *
* @param serviceRegistry records management registry service
*/
public void setRecordsManagementServiceRegistry(RecordsManagementServiceRegistry serviceRegistry)
{
this.serviceRegistry = serviceRegistry;
}
-
+
/**
* @param policyComponent policy component
*/
@@ -148,30 +153,31 @@ public class DispositionServiceImpl implements
{
this.policyComponent = policyComponent;
}
-
+
/**
* @param filePlanService file plan service
*/
- public void setFilePlanService(FilePlanService filePlanService)
+ public void setFilePlanService(FilePlanService filePlanService)
{
this.filePlanService = filePlanService;
}
-
+
/**
- * Get the records management service
- * NOTE: have to pull it out of the app context manually to prevent Spring circular dependancy issue
- *
- * @return
+ * @param recordFolderService record folder service
*/
- public RecordsManagementService getRmService()
+// public void setRecordFolderService(RecordFolderService recordFolderService)
+// {
+// this.recordFolderService = recordFolderService;
+// }
+
+ /**
+ * @param recordService record service
+ */
+ public void setRecordService(RecordService recordService)
{
- if (rmService == null)
- {
- rmService = (RecordsManagementService)applicationContext.getBean("recordsManagementService");
- }
- return rmService;
+ this.recordService = recordService;
}
-
+
/**
* @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)
*/
@@ -180,17 +186,17 @@ public class DispositionServiceImpl implements
{
this.applicationContext = applicationContext;
}
-
+
/**
* Set the dispositionSelectionStrategy bean.
- *
+ *
* @param dispositionSelectionStrategy
*/
public void setDispositionSelectionStrategy(DispositionSelectionStrategy dispositionSelectionStrategy)
{
this.dispositionSelectionStrategy = dispositionSelectionStrategy;
}
-
+
/**
* Bean initialisation
*/
@@ -199,7 +205,7 @@ public class DispositionServiceImpl implements
onAddAspect = new JavaBehaviour(this, "onAddAspect", NotificationFrequency.FIRST_EVENT);
policyComponent.bindClassBehaviour(NodeServicePolicies.OnAddAspectPolicy.QNAME, ASPECT_DISPOSITION_LIFECYCLE, onAddAspect);
}
-
+
/**
* Initialises the details of the disposition life cycle
*/
@@ -211,35 +217,35 @@ public class DispositionServiceImpl implements
refreshDispositionAction(nodeRef);
}
}
-
+
/**
* Helper method used to refresh the dispostion action details of the given node.
- *
+ *
* @param nodeRef node reference
*/
public void refreshDispositionAction(NodeRef nodeRef)
{
ParameterCheck.mandatory("nodeRef", nodeRef);
-
+
// get this disposition instructions for the node
DispositionSchedule di = getDispositionSchedule(nodeRef);
if (di != null)
- {
- List dispositionActionDefinitions = di.getDispositionActionDefinitions();
+ {
+ List dispositionActionDefinitions = di.getDispositionActionDefinitions();
if (dispositionActionDefinitions.isEmpty() == false)
{
// get the first disposition action definition
DispositionActionDefinition nextDispositionActionDefinition = dispositionActionDefinitions.get(0);
-
+
// initialise the details of the next disposition action
initialiseDispositionAction(nodeRef, nextDispositionActionDefinition);
}
}
-
+
}
-
+
/** ========= Disposition Property Methods ========= */
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService#registerDispositionProperty(org.alfresco.module.org_alfresco_module_rm.disposition.property.DispositionProperty)
*/
@@ -248,14 +254,14 @@ public class DispositionServiceImpl implements
{
dispositionProperties.put(dispositionProperty.getQName(), dispositionProperty);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService#getDispositionProperties(boolean, java.lang.String)
*/
@Override
public Collection getDispositionProperties(boolean isRecordLevel, String dispositionAction)
{
- Collection values = dispositionProperties.values();
+ Collection values = dispositionProperties.values();
List result = new ArrayList(values.size());
for (DispositionProperty dispositionProperty : values)
{
@@ -267,7 +273,7 @@ public class DispositionServiceImpl implements
}
return result;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService#getDispositionProperties()
*/
@@ -276,20 +282,22 @@ public class DispositionServiceImpl implements
{
return dispositionProperties.values();
}
-
+
/** ========= Disposition Schedule Methods ========= */
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService#getDispositionSchedule(org.alfresco.service.cmr.repository.NodeRef)
*/
public DispositionSchedule getDispositionSchedule(NodeRef nodeRef)
- {
+ {
DispositionSchedule di = null;
NodeRef diNodeRef = null;
if (serviceRegistry.getRecordService().isRecord(nodeRef) == true)
{
// Get the record folders for the record
- List recordFolders = getRmService().getRecordFolders(nodeRef);
+ // FIXME
+ RecordFolderService recordFolderService = (RecordFolderService)applicationContext.getBean("RecordFolderService");
+ List recordFolders = recordFolderService.getRecordFolders(nodeRef);
// At this point, we may have disposition instruction objects from 1..n folders.
diNodeRef = dispositionSelectionStrategy.selectDispositionScheduleFrom(recordFolders);
}
@@ -298,26 +306,26 @@ public class DispositionServiceImpl implements
// Get the disposition instructions for the node reference provided
diNodeRef = getDispositionScheduleImpl(nodeRef);
}
-
+
if (diNodeRef != null)
{
di = new DispositionScheduleImpl(serviceRegistry, nodeService, diNodeRef);
}
-
+
return di;
}
-
+
/**
* This method returns a NodeRef
- * Gets the disposition instructions
- *
+ * Gets the disposition instructions
+ *
* @param nodeRef
* @return
*/
private NodeRef getDispositionScheduleImpl(NodeRef nodeRef)
{
NodeRef result = getAssociatedDispositionScheduleImpl(nodeRef);
-
+
if (result == null)
{
NodeRef parent = this.nodeService.getPrimaryParent(nodeRef).getParentRef();
@@ -328,18 +336,18 @@ public class DispositionServiceImpl implements
}
return result;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService#getAssociatedDispositionSchedule(org.alfresco.service.cmr.repository.NodeRef)
*/
public DispositionSchedule getAssociatedDispositionSchedule(NodeRef nodeRef)
{
DispositionSchedule ds = null;
-
+
// Check the noderef parameter
ParameterCheck.mandatory("nodeRef", nodeRef);
if (nodeService.exists(nodeRef) == true)
- {
+ {
// Get the associated disposition schedule node reference
NodeRef dsNodeRef = getAssociatedDispositionScheduleImpl(nodeRef);
if (dsNodeRef != null)
@@ -348,21 +356,21 @@ public class DispositionServiceImpl implements
ds = new DispositionScheduleImpl(serviceRegistry, nodeService, dsNodeRef);
}
}
-
+
return ds;
}
-
+
/**
* Gets the node reference of the disposition schedule associated with the container.
- *
+ *
* @param nodeRef node reference of the container
* @return {@link NodeRef} node reference of the disposition schedule, null if none
*/
private NodeRef getAssociatedDispositionScheduleImpl(NodeRef nodeRef)
{
- NodeRef result = null;
+ NodeRef result = null;
ParameterCheck.mandatory("nodeRef", nodeRef);
-
+
// Make sure we are dealing with an RM node
if (filePlanService.isFilePlanComponent(nodeRef) == false)
{
@@ -378,10 +386,10 @@ public class DispositionServiceImpl implements
result = firstChildAssocRef.getChildRef();
}
}
-
+
return result;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService#getAssociatedRecordsManagementContainer(org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSchedule)
*/
@@ -390,7 +398,7 @@ public class DispositionServiceImpl implements
{
ParameterCheck.mandatory("dispositionSchedule", dispositionSchedule);
NodeRef result = null;
-
+
NodeRef dsNodeRef = dispositionSchedule.getNodeRef();
if (nodeService.exists(dsNodeRef) == true)
{
@@ -408,39 +416,39 @@ public class DispositionServiceImpl implements
"(dispositionScheduleNodeRef=" + dispositionSchedule.getNodeRef().toString() + ")");
}
}
-
+
// Get the container reference
ChildAssociationRef assoc = assocs.get(0);
result = assoc.getParentRef();
}
}
-
+
return result;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService#hasDisposableItems(org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSchedule)
- */
+ */
@Override
- public boolean hasDisposableItems(DispositionSchedule dispositionSchdule)
+ public boolean hasDisposableItems(DispositionSchedule dispositionSchdule)
{
return !getDisposableItems(dispositionSchdule).isEmpty();
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService#getDisposableItems(org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSchedule)
*/
public List getDisposableItems(DispositionSchedule dispositionSchedule)
{
ParameterCheck.mandatory("dispositionSchedule", dispositionSchedule);
-
+
// Get the associated container
NodeRef rmContainer = getAssociatedRecordsManagementContainer(dispositionSchedule);
-
+
// Return the disposable items
return getDisposableItemsImpl(dispositionSchedule.isRecordLevelDisposition(), rmContainer);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService#isDisposableItem(org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -449,9 +457,9 @@ public class DispositionServiceImpl implements
{
return nodeService.hasAspect(nodeRef, ASPECT_DISPOSITION_LIFECYCLE);
}
-
+
/**
- *
+ *
* @param isRecordLevelDisposition
* @param rmContainer
* @param root
@@ -461,13 +469,15 @@ public class DispositionServiceImpl implements
{
List items = filePlanService.getAllContained(rmContainer);
List result = new ArrayList(items.size());
+ // FIXME
+ RecordFolderService recordFolderService = (RecordFolderService)applicationContext.getBean("RecordFolderService");
for (NodeRef item : items)
{
- if (getRmService().isRecordFolder(item) == true)
- {
+ if (recordFolderService.isRecordFolder(item) == true)
+ {
if (isRecordLevelDisposition == true)
{
- result.addAll(getRmService().getRecords(item));
+ result.addAll(recordService.getRecords(item));
}
else
{
@@ -484,7 +494,7 @@ public class DispositionServiceImpl implements
}
return result;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService#createDispositionSchedule(org.alfresco.service.cmr.repository.NodeRef, java.util.Map)
*/
@@ -492,16 +502,16 @@ public class DispositionServiceImpl implements
public DispositionSchedule createDispositionSchedule(NodeRef nodeRef, Map props)
{
NodeRef dsNodeRef = null;
-
+
// Check mandatory parameters
ParameterCheck.mandatory("nodeRef", nodeRef);
-
+
// Check exists
if (nodeService.exists(nodeRef) == false)
{
throw new AlfrescoRuntimeException("Unable to create disposition schedule, because node does not exist. (nodeRef=" + nodeRef.toString() + ")");
}
-
+
// Check is sub-type of rm:recordCategory
QName nodeRefType = nodeService.getType(nodeRef);
if (TYPE_RECORD_CATEGORY.equals(nodeRefType) == false &&
@@ -509,18 +519,18 @@ public class DispositionServiceImpl implements
{
throw new AlfrescoRuntimeException("Unable to create disposition schedule on a node that is not a records management container.");
}
-
+
behaviourFilter.disableBehaviour(nodeRef, ASPECT_SCHEDULED);
try
- {
+ {
// Add the schedules aspect if required
if (nodeService.hasAspect(nodeRef, ASPECT_SCHEDULED) == false)
{
nodeService.addAspect(nodeRef, ASPECT_SCHEDULED, null);
}
-
- // Check whether there is already a disposition schedule object present
- List assocs = nodeService.getChildAssocs(nodeRef, ASSOC_DISPOSITION_SCHEDULE, RegexQNamePattern.MATCH_ALL);
+
+ // Check whether there is already a disposition schedule object present
+ List assocs = nodeService.getChildAssocs(nodeRef, ASSOC_DISPOSITION_SCHEDULE, RegexQNamePattern.MATCH_ALL);
if (assocs.size() == 0)
{
DispositionSchedule currentDispositionSchdule = getDispositionSchedule(nodeRef);
@@ -532,15 +542,15 @@ public class DispositionServiceImpl implements
throw new AlfrescoRuntimeException("Can not create a disposition schedule if there are disposable items already under the control of an other disposition schedule");
}
}
-
+
// Create the disposition schedule object
dsNodeRef = nodeService.createNode(
- nodeRef,
- ASSOC_DISPOSITION_SCHEDULE,
+ nodeRef,
+ ASSOC_DISPOSITION_SCHEDULE,
QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, QName.createValidLocalName("dispositionSchedule")),
TYPE_DISPOSITION_SCHEDULE,
props).getChildRef();
- }
+ }
else
{
// Error since the node already has a disposition schedule set
@@ -551,15 +561,15 @@ public class DispositionServiceImpl implements
{
behaviourFilter.enableBehaviour(nodeRef, ASPECT_SCHEDULED);
}
-
- // Create the return object
+
+ // Create the return object
return new DispositionScheduleImpl(serviceRegistry, nodeService, dsNodeRef);
}
-
+
/** ========= Disposition Action Definition Methods ========= */
-
+
/**
- *
+ *
*/
public DispositionActionDefinition addDispositionActionDefinition(
DispositionSchedule schedule,
@@ -571,22 +581,22 @@ public class DispositionServiceImpl implements
{
throw new IllegalArgumentException("'name' parameter is mandatory when creating a disposition action definition");
}
-
+
// TODO: also check the action name is valid?
-
+
// create the child association from the schedule to the action definition
- NodeRef actionNodeRef = this.nodeService.createNode(schedule.getNodeRef(),
- RecordsManagementModel.ASSOC_DISPOSITION_ACTION_DEFINITIONS,
- QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI,
+ NodeRef actionNodeRef = this.nodeService.createNode(schedule.getNodeRef(),
+ RecordsManagementModel.ASSOC_DISPOSITION_ACTION_DEFINITIONS,
+ QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI,
QName.createValidLocalName(name)),
RecordsManagementModel.TYPE_DISPOSITION_ACTION_DEFINITION, actionDefinitionParams).getChildRef();
-
+
// get the updated disposition schedule and retrieve the new action definition
NodeRef scheduleParent = this.nodeService.getPrimaryParent(schedule.getNodeRef()).getParentRef();
DispositionSchedule updatedSchedule = this.getDispositionSchedule(scheduleParent);
return updatedSchedule.getDispositionActionDefinition(actionNodeRef.getId());
- }
-
+ }
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService#removeDispositionActionDefinition(org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSchedule, org.alfresco.module.org_alfresco_module_rm.disposition.DispositionActionDefinition)
*/
@@ -595,79 +605,79 @@ public class DispositionServiceImpl implements
// check first whether action definitions can be removed
if (hasDisposableItems(schedule) == true)
{
- throw new AlfrescoRuntimeException("Can not remove action definitions from schedule '" +
+ throw new AlfrescoRuntimeException("Can not remove action definitions from schedule '" +
schedule.getNodeRef() + "' as one or more record or record folders are present.");
}
-
+
// remove the child node representing the action definition
this.nodeService.removeChild(schedule.getNodeRef(), actionDefinition.getNodeRef());
}
-
+
/**
* Updates the given disposition action definition belonging to the given disposition
* schedule.
- *
+ *
* @param schedule The DispositionSchedule the action belongs to
* @param actionDefinition The DispositionActionDefinition to update
* @param actionDefinitionParams Map of parameters to use to update the action definition
* @return The updated DispositionActionDefinition
*/
public DispositionActionDefinition updateDispositionActionDefinition(
- DispositionActionDefinition actionDefinition,
+ DispositionActionDefinition actionDefinition,
Map actionDefinitionParams)
{
// update the node with properties
this.nodeService.addProperties(actionDefinition.getNodeRef(), actionDefinitionParams);
-
+
// get the updated disposition schedule and retrieve the updated action definition
NodeRef ds = this.nodeService.getPrimaryParent(actionDefinition.getNodeRef()).getParentRef();
DispositionSchedule updatedSchedule = new DispositionScheduleImpl(serviceRegistry, nodeService, ds);
- return updatedSchedule.getDispositionActionDefinition(actionDefinition.getId());
- }
-
+ return updatedSchedule.getDispositionActionDefinition(actionDefinition.getId());
+ }
+
/** ========= Disposition Action Methods ========= */
-
+
/**
* Initialises the details of the next disposition action based on the details of a disposition
* action definition.
- *
+ *
* @param nodeRef node reference
* @param dispositionActionDefinition disposition action definition
*/
private void initialiseDispositionAction(NodeRef nodeRef, DispositionActionDefinition dispositionActionDefinition)
- {
+ {
// Create the properties
Map props = new HashMap(10);
-
+
// Calculate the asOf date
Date asOfDate = null;
Period period = dispositionActionDefinition.getPeriod();
if (period != null)
{
Date contextDate = null;
-
+
// Get the period properties value
QName periodProperty = dispositionActionDefinition.getPeriodProperty();
if (periodProperty != null)
{
// doesn't matter if the period property isn't set ... the asOfDate will get updated later
// when the value of the period property is set
- contextDate = (Date)this.nodeService.getProperty(nodeRef, periodProperty);
+ contextDate = (Date)this.nodeService.getProperty(nodeRef, periodProperty);
}
else
{
- // for now use 'NOW' as the default context date
+ // for now use 'NOW' as the default context date
// TODO set the default period property ... cut off date or last disposition date depending on context
contextDate = new Date();
}
-
+
// Calculate the as of date
if (contextDate != null)
{
asOfDate = period.getNextDate(contextDate);
}
- }
-
+ }
+
// Set the property values
props.put(PROP_DISPOSITION_ACTION_ID, dispositionActionDefinition.getId());
props.put(PROP_DISPOSITION_ACTION, dispositionActionDefinition.getName());
@@ -675,27 +685,27 @@ public class DispositionServiceImpl implements
{
props.put(PROP_DISPOSITION_AS_OF, asOfDate);
}
-
+
// Create a new disposition action object
NodeRef dispositionActionNodeRef = this.nodeService.createNode(
- nodeRef,
- ASSOC_NEXT_DISPOSITION_ACTION,
- ASSOC_NEXT_DISPOSITION_ACTION,
+ nodeRef,
+ ASSOC_NEXT_DISPOSITION_ACTION,
+ ASSOC_NEXT_DISPOSITION_ACTION,
TYPE_DISPOSITION_ACTION,
- props).getChildRef();
-
+ props).getChildRef();
+
// Create the events
List events = dispositionActionDefinition.getEvents();
for (RecordsManagementEvent event : events)
{
// For every event create an entry on the action
createEvent(event, dispositionActionNodeRef);
- }
+ }
}
-
+
/**
* Creates the given records management event for the given 'next action'.
- *
+ *
* @param event The event to create
* @param nextActionNodeRef The next action node
* @return The created event NodeRef
@@ -703,31 +713,31 @@ public class DispositionServiceImpl implements
private NodeRef createEvent(RecordsManagementEvent event, NodeRef nextActionNodeRef)
{
NodeRef eventNodeRef = null;
-
+
Map eventProps = new HashMap(7);
eventProps.put(PROP_EVENT_EXECUTION_NAME, event.getName());
// TODO display label
RecordsManagementEventType eventType = serviceRegistry.getRecordsManagementEventService().getEventType(event.getType());
eventProps.put(PROP_EVENT_EXECUTION_AUTOMATIC, eventType.isAutomaticEvent());
eventProps.put(PROP_EVENT_EXECUTION_COMPLETE, false);
-
+
// Create the event execution object
- this.nodeService.createNode(nextActionNodeRef,
+ this.nodeService.createNode(nextActionNodeRef,
ASSOC_EVENT_EXECUTIONS,
- ASSOC_EVENT_EXECUTIONS,
- TYPE_EVENT_EXECUTION,
+ ASSOC_EVENT_EXECUTIONS,
+ TYPE_EVENT_EXECUTION,
eventProps);
-
+
return eventNodeRef;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService#isNextDispositionActionEligible(org.alfresco.service.cmr.repository.NodeRef)
*/
public boolean isNextDispositionActionEligible(NodeRef nodeRef)
{
boolean result = false;
-
+
// Get the disposition instructions
DispositionSchedule di = getDispositionSchedule(nodeRef);
NodeRef nextDa = getNextDispositionActionNodeRef(nodeRef);
@@ -742,7 +752,7 @@ public class DispositionServiceImpl implements
{
result = true;
}
-
+
if (result == false)
{
DispositionAction da = new DispositionActionImpl(serviceRegistry, nextDa);
@@ -750,7 +760,7 @@ public class DispositionServiceImpl implements
if (dad != null)
{
boolean firstComplete = dad.eligibleOnFirstCompleteEvent();
-
+
List assocs = this.nodeService.getChildAssocs(nextDa, ASSOC_EVENT_EXECUTIONS, RegexQNamePattern.MATCH_ALL);
for (ChildAssociationRef assoc : assocs)
{
@@ -760,7 +770,7 @@ public class DispositionServiceImpl implements
if (isCompleteValue != null)
{
isComplete = isCompleteValue.booleanValue();
-
+
// implement AND and OR combination of event completions
if (isComplete == true)
{
@@ -783,13 +793,13 @@ public class DispositionServiceImpl implements
}
}
}
-
+
return result;
}
-
+
/**
* Get the next disposition action node. Null if none present.
- *
+ *
* @param nodeRef the disposable node reference
* @return NodeRef the next disposition action, null if none
*/
@@ -803,7 +813,7 @@ public class DispositionServiceImpl implements
}
return result;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService#getNextDispositionAction(org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -818,23 +828,23 @@ public class DispositionServiceImpl implements
}
return result;
}
-
-
+
+
/** ========= Disposition Action History Methods ========= */
-
-
+
+
public List getCompletedDispositionActions(NodeRef nodeRef)
{
List assocs = nodeService.getChildAssocs(nodeRef, ASSOC_DISPOSITION_ACTION_HISTORY, RegexQNamePattern.MATCH_ALL);
- List result = new ArrayList(assocs.size());
+ List result = new ArrayList(assocs.size());
for (ChildAssociationRef assoc : assocs)
{
NodeRef dispositionActionNodeRef = assoc.getChildRef();
result.add(new DispositionActionImpl(serviceRegistry, dispositionActionNodeRef));
- }
+ }
return result;
}
-
+
public DispositionAction getLastCompletedDispostionAction(NodeRef nodeRef)
{
DispositionAction result = null;
@@ -843,7 +853,17 @@ public class DispositionServiceImpl implements
{
// Get the last disposition action in the list
result = list.get(list.size()-1);
- }
+ }
return result;
}
+
+ /**
+ * @see org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService#isCutoff(NodeRef)
+ */
+ @Override
+ public boolean isCutoff(NodeRef nodeRef)
+ {
+ ParameterCheck.mandatory("nodeRef", nodeRef);
+ return nodeService.hasAspect(nodeRef, ASPECT_CUT_OFF);
+ }
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/email/CustomEmailMappingServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/email/CustomEmailMappingServiceImpl.java
index ba1c8aab66..778d5666b0 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/email/CustomEmailMappingServiceImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/email/CustomEmailMappingServiceImpl.java
@@ -30,7 +30,6 @@ import org.alfresco.model.ContentModel;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.repo.content.MimetypeMap;
import org.alfresco.repo.content.metadata.RFC822MetadataExtracter;
-import org.alfresco.repo.policy.PolicyComponent;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
@@ -86,8 +85,6 @@ public class CustomEmailMappingServiceImpl extends AbstractLifecycleBean impleme
/** Services */
private NodeService nodeService;
private NamespacePrefixResolver nspr;
- @SuppressWarnings("unused")
- private PolicyComponent policyComponent;
private ContentService contentService;
private TransactionService transactionService;
@@ -97,14 +94,6 @@ public class CustomEmailMappingServiceImpl extends AbstractLifecycleBean impleme
/** List of email mapping keys */
private List emailMappingKeys;
- /**
- * @param policyComponent policy component
- */
- public void setPolicyComponent(PolicyComponent policyComponent)
- {
- this.policyComponent = policyComponent;
- }
-
/**
* @param nspr namespace service
*/
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/event/OnReferenceCreateEventType.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/event/OnReferenceCreateEventType.java
index 58f37ef1a1..c46837f325 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/event/OnReferenceCreateEventType.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/event/OnReferenceCreateEventType.java
@@ -25,53 +25,40 @@ import java.util.List;
import java.util.Map;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies;
-import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.OnCreateReference;
import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService;
import org.alfresco.module.org_alfresco_module_rm.action.impl.CompleteEventAction;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionAction;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
+import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
import org.alfresco.repo.policy.JavaBehaviour;
import org.alfresco.repo.policy.PolicyComponent;
-import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.namespace.QName;
/**
* On reference create event type
- *
+ *
* @author Roy Wetherall
*/
public class OnReferenceCreateEventType extends SimpleRecordsManagementEventTypeImpl
implements RecordsManagementModel,
OnCreateReference
{
- /** Records management service */
- @SuppressWarnings("unused")
- private RecordsManagementService recordsManagementService;
-
/** Records management action service */
private RecordsManagementActionService recordsManagementActionService;
-
+
/** Disposition service */
private DispositionService dispositionService;
-
+
/** Policy component */
private PolicyComponent policyComponent;
-
+
/** Reference */
private QName reference;
-
- /**
- * @param recordsManagementService the records management service to set
- */
- public void setRecordsManagementService(RecordsManagementService recordsManagementService)
- {
- this.recordsManagementService = recordsManagementService;
- }
-
+
/**
* @param dispositionService the disposition service to set
*/
@@ -79,7 +66,7 @@ public class OnReferenceCreateEventType extends SimpleRecordsManagementEventType
{
this.dispositionService = dispositionService;
}
-
+
/**
* @param recordsManagementActionService the recordsManagementActionService to set
*/
@@ -87,37 +74,37 @@ public class OnReferenceCreateEventType extends SimpleRecordsManagementEventType
{
this.recordsManagementActionService = recordsManagementActionService;
}
-
+
/**
* Set policy components
- *
+ *
* @param policyComponent policy component
*/
public void setPolicyComponent(PolicyComponent policyComponent)
{
this.policyComponent = policyComponent;
}
-
+
/**
* Set the reference
- *
+ *
* @param reference
*/
public void setReferenceName(String reference)
{
this.reference = QName.createQName(reference);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.event.SimpleRecordsManagementEventTypeImpl#init()
*/
public void init()
{
super.init();
-
+
// Register interest in the on create reference policy
- policyComponent.bindClassBehaviour(RecordsManagementPolicies.ON_CREATE_REFERENCE,
- ASPECT_RECORD,
+ policyComponent.bindClassBehaviour(RecordsManagementPolicies.ON_CREATE_REFERENCE,
+ ASPECT_RECORD,
new JavaBehaviour(this, "onCreateReference", NotificationFrequency.TRANSACTION_COMMIT));
}
@@ -129,7 +116,7 @@ public class OnReferenceCreateEventType extends SimpleRecordsManagementEventType
{
return true;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.OnCreateReference#onCreateReference(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName)
*/
@@ -158,18 +145,18 @@ public class OnReferenceCreateEventType extends SimpleRecordsManagementEventType
params.put(CompleteEventAction.PARAM_EVENT_COMPLETED_BY, AuthenticationUtil.getFullyAuthenticatedUser());
params.put(CompleteEventAction.PARAM_EVENT_COMPLETED_AT, new Date());
recordsManagementActionService.executeRecordsManagementAction(toNodeRef, "completeEvent", params);
-
+
break;
}
}
}
}
-
+
return null;
- }
+ }
};
-
+
AuthenticationUtil.runAs(work, AuthenticationUtil.getAdminUserName());
-
+
}
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/event/OnReferencedRecordActionedUpon.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/event/OnReferencedRecordActionedUpon.java
index f845ff55b5..24a5298f32 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/event/OnReferencedRecordActionedUpon.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/event/OnReferencedRecordActionedUpon.java
@@ -24,18 +24,18 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies;
-import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService;
import org.alfresco.module.org_alfresco_module_rm.action.impl.CompleteEventAction;
+import org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionAction;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
+import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
+import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
import org.alfresco.repo.policy.JavaBehaviour;
import org.alfresco.repo.policy.PolicyComponent;
-import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.service.cmr.repository.AssociationRef;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
@@ -46,48 +46,40 @@ import org.alfresco.service.namespace.RegexQNamePattern;
/**
* Behaviour executed when a references record is actioned upon.
- *
+ *
* @author Roy Wetherall
*/
public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEventTypeImpl
implements RecordsManagementModel
-
+
{
- /** Records management service */
- private RecordsManagementService recordsManagementService;
-
/** Disposition service */
private DispositionService dispositionService;
-
+
/** Records management action service */
private RecordsManagementActionService recordsManagementActionService;
-
+
/** Records management admin service */
private RecordsManagementAdminService recordsManagementAdminService;
-
+
/** Node service */
private NodeService nodeService;
-
+
/** Policy component */
private PolicyComponent policyComponent;
-
+
/** Record service */
private RecordService recordService;
+ /** Record folder service */
+ private RecordFolderService recordFolderService;
+
/** Action name */
private String actionName;
-
+
/** Reference */
private QName reference;
-
- /**
- * @param recordsManagementService the records management service to set
- */
- public void setRecordsManagementService(RecordsManagementService recordsManagementService)
- {
- this.recordsManagementService = recordsManagementService;
- }
-
+
/**
* @param dispositionService the disposition service
*/
@@ -95,7 +87,7 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent
{
this.dispositionService = dispositionService;
}
-
+
/**
* @param recordsManagementActionService the recordsManagementActionService to set
*/
@@ -103,7 +95,7 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent
{
this.recordsManagementActionService = recordsManagementActionService;
}
-
+
/**
* @param recordsManagementAdminService record management admin service
*/
@@ -111,7 +103,7 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent
{
this.recordsManagementAdminService = recordsManagementAdminService;
}
-
+
/**
* @param nodeService node service
*/
@@ -119,7 +111,7 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent
{
this.nodeService = nodeService;
}
-
+
/**
* @param recordService record service
*/
@@ -127,7 +119,15 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent
{
this.recordService = recordService;
}
-
+
+ /**
+ * @param recordFolderService record folder service
+ */
+ public void setRecordFolderService(RecordFolderService recordFolderService)
+ {
+ this.recordFolderService = recordFolderService;
+ }
+
/**
* @param policyComponent policy component
*/
@@ -135,7 +135,7 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent
{
this.policyComponent = policyComponent;
}
-
+
/**
* @param reference reference name
*/
@@ -143,7 +143,7 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent
{
this.reference = QName.createQName(reference);
}
-
+
/**
* @param actionName action name
*/
@@ -151,17 +151,17 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent
{
this.actionName = actionName;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.event.SimpleRecordsManagementEventTypeImpl#init()
*/
public void init()
{
super.init();
-
+
// Register interest in the on create reference policy
- policyComponent.bindClassBehaviour(RecordsManagementPolicies.BEFORE_RM_ACTION_EXECUTION,
- ASPECT_FILE_PLAN_COMPONENT,
+ policyComponent.bindClassBehaviour(RecordsManagementPolicies.BEFORE_RM_ACTION_EXECUTION,
+ ASPECT_FILE_PLAN_COMPONENT,
new JavaBehaviour(this, "beforeActionExecution", NotificationFrequency.FIRST_EVENT));
}
@@ -173,10 +173,10 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent
{
return true;
}
-
+
/**
* Before action exeuction behaviour.
- *
+ *
* @param nodeRef
* @param name
* @param parameters
@@ -206,32 +206,32 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent
}
}
}
-
+
return null;
- }
+ }
};
-
+
AuthenticationUtil.runAs(work, AuthenticationUtil.getAdminUserName());
-
+
}
-
+
private void processRecordFolder(NodeRef recordFolder)
{
if (recordService.isRecord(recordFolder) == true)
{
processRecord(recordFolder);
}
- else if (recordsManagementService.isRecordFolder(recordFolder) == true)
+ else if (recordFolderService.isRecordFolder(recordFolder) == true)
{
- for (NodeRef record : recordsManagementService.getRecords(recordFolder))
+ for (NodeRef record : recordService.getRecords(recordFolder))
{
processRecord(record);
}
}
}
-
+
private void processRecord(NodeRef record)
- {
+ {
List fromAssocs = recordsManagementAdminService.getCustomReferencesFrom(record);
for (AssociationRef fromAssoc : fromAssocs)
{
@@ -241,7 +241,7 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent
doEventComplete(nodeRef);
}
}
-
+
List toAssocs = recordsManagementAdminService.getCustomReferencesTo(record);
for (AssociationRef toAssoc : toAssocs)
{
@@ -250,9 +250,9 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent
NodeRef nodeRef = toAssoc.getSourceRef();
doEventComplete(nodeRef);
}
- }
+ }
}
-
+
private void doEventComplete(NodeRef nodeRef)
{
DispositionAction da = dispositionService.getNextDispositionAction(nodeRef);
@@ -271,7 +271,7 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent
params.put(CompleteEventAction.PARAM_EVENT_COMPLETED_BY, AuthenticationUtil.getFullyAuthenticatedUser());
params.put(CompleteEventAction.PARAM_EVENT_COMPLETED_AT, new Date());
recordsManagementActionService.executeRecordsManagementAction(nodeRef, "completeEvent", params);
-
+
break;
}
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/event/SimpleRecordsManagementEventTypeImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/event/SimpleRecordsManagementEventTypeImpl.java
index 1eef409477..4cf7132b9e 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/event/SimpleRecordsManagementEventTypeImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/event/SimpleRecordsManagementEventTypeImpl.java
@@ -18,44 +18,38 @@
*/
package org.alfresco.module.org_alfresco_module_rm.event;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.springframework.extensions.surf.util.I18NUtil;
import org.springframework.beans.factory.BeanNameAware;
+import org.springframework.extensions.surf.util.I18NUtil;
/**
* Simple records management event type implementation
- *
+ *
* @author Roy Wetherall
*/
public class SimpleRecordsManagementEventTypeImpl implements RecordsManagementEventType, BeanNameAware
{
- /** Logger */
- @SuppressWarnings("unused")
- private static Log logger = LogFactory.getLog(SimpleRecordsManagementEventTypeImpl.class);
-
/** Display label lookup prefix */
protected static final String LOOKUP_PREFIX = "rmeventservice.";
-
+
/** Name */
public static final String NAME = "rmEventType.simple";
-
+
/** Records management event service */
protected RecordsManagementEventService recordsManagementEventService;
-
+
/** Name */
protected String name;
-
+
/**
* Set the records management event service
- *
+ *
* @param recordsManagementEventService records management service
*/
public void setRecordsManagementEventService(RecordsManagementEventService recordsManagementEventService)
{
this.recordsManagementEventService = recordsManagementEventService;
}
-
+
/**
* Initialisation method
*/
@@ -63,7 +57,7 @@ public class SimpleRecordsManagementEventTypeImpl implements RecordsManagementEv
{
recordsManagementEventService.registerEventType(this);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEventType#isAutomaticEvent()
*/
@@ -87,7 +81,7 @@ public class SimpleRecordsManagementEventTypeImpl implements RecordsManagementEv
{
this.name = name;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEventType#getDisplayLabel()
*/
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/fileplan/FilePlanService.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/fileplan/FilePlanService.java
index 53942f7171..f51b577abe 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/fileplan/FilePlanService.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/fileplan/FilePlanService.java
@@ -23,7 +23,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.StoreRef;
import org.alfresco.service.namespace.QName;
@@ -32,26 +31,26 @@ import com.hazelcast.impl.Node;
/**
* File plan service interface.
- *
+ *
* @author Roy Wetherall
* @since 2.1
*/
public interface FilePlanService
{
- /**
- * Default RM site id.
- * Can be used with {@link FilePlanService#getFilePlanBySiteId(String)} to get the file plan node.
+ /**
+ * Default RM site id.
+ * Can be used with {@link FilePlanService#getFilePlanBySiteId(String)} to get the file plan node.
* */
public static final String DEFAULT_RM_SITE_ID = "rm";
-
+
/**
* Indicates whether the given node is a file plan component or not.
- *
+ *
* @param nodeRef node reference
* @return boolean true if a file plan component, false otherwise
*/
boolean isFilePlanComponent(NodeRef nodeRef);
-
+
/**
* Returns the 'kind' of file plan component the node reference is.
*
@@ -62,260 +61,254 @@ public interface FilePlanService
* @return FilePlanComponentKind the kind of file plan component the node is
*/
FilePlanComponentKind getFilePlanComponentKind(NodeRef nodeRef);
-
+
/**
- * Returns the file plan component 'kind' that relates to the passed
+ * Returns the file plan component 'kind' that relates to the passed
* content type.
*
* Returns null if the type does not relate to a file plan component.
- *
- * @param type qualified name of content type
+ *
+ * @param type qualified name of content type
* @return FilePlanComponentKind the kind relating to the passed type
*/
FilePlanComponentKind getFilePlanComponentKindFromType(QName type);
-
+
/**
* Indicates whether the given node is file plan node or not.
- *
+ *
* @param nodeRef node reference
* @return boolean true if node is a file plan node
*/
boolean isFilePlan(NodeRef nodeRef);
-
+
/**
* Gets all the file plan nodes.
- * Looks in the SpacesStore by default.
- *
+ * Looks in the SpacesStore by default.
+ *
* @return Set set of file plan nodes
*/
Set getFilePlans();
-
+
/**
* Getse all the file plan nodes in a store.
- *
+ *
* @param storeRef store reference
* @return Set set of file plan nodes
*/
Set getFilePlans(StoreRef storeRef);
-
+
/**
* Gets the file plan the node is in.
- *
- * @return {@link NodeRef} file node reference, null if none
+ *
+ * @return {@link NodeRef} file node reference, null if none
*/
NodeRef getFilePlan(NodeRef nodeRef);
-
+
/**
* Gets a file plan by site id. Assumes the site is a RM site and that the file plan node, ie
* the document library container, has been already created. Otherwise returns null.
- *
+ *
* @param siteId records management site id
* @return NodeRef file plan, null if can't be found
*/
NodeRef getFilePlanBySiteId(String siteId);
-
+
/**
* Indicates whether the unfiled container exists for a given file plan or not.
- *
+ *
* @param filePlan file plan
* @return boolean true if unfiled container exists, false otherwise
*/
boolean existsUnfiledContainer(NodeRef filePlan);
-
+
/**
* Gets the unfiled container for a given file plan. Returns null if
* none.
- *
+ *
* @param filePlan file plan
* @return {@link NodeRef} unfiled container, null if none
*/
NodeRef getUnfiledContainer(NodeRef filePlan);
-
+
/**
* Creates, and returns, a unfiled container for a given file plan.
- *
+ *
* @param filePlan file plan
* @return {@link Node} unfiled container
*/
NodeRef createUnfiledContainer(NodeRef filePlan);
-
+
/**
- *
+ *
* @param filePlan
* @return
*/
NodeRef getHoldContainer(NodeRef filePlan);
-
+
/**
- *
+ *
* @param filePlan
* @return
*/
NodeRef createHoldContainer(NodeRef filePlan);
-
+
/**
- *
+ *
* @param filePlan
* @return
*/
NodeRef getTransferContainer(NodeRef filePlan);
-
+
/**
- *
+ *
* @param filePlan
* @return
*/
NodeRef createTransferContainer(NodeRef filePlan);
-
+
/**
* Creates a file plan as a child of the given parent node, with the name
* provided.
- *
+ *
* @param parent parent node reference
- * @param name file plan name
+ * @param name file plan name
* @param type type, must be rma:filePlan or sub-type of
* @return NodeRef file plan node reference
*/
NodeRef createFilePlan(NodeRef parent, String name, QName type);
-
+
/**
* Specifies the properties to be set on the created file plan.
- *
+ *
* @see #createFilePlan(NodeRef, String, QName)
- *
+ *
* @param parent parent node reference
- * @param name file plan name
+ * @param name file plan name
* @param type type, must be rma:filePlan or sub-type of
* @param properties file plan properties
* @return NodeRef file plan node reference
*/
NodeRef createFilePlan(NodeRef parent, String name, QName type, Map properties);
-
+
/**
* Creates a file plan with the default type.
- *
+ *
* @see #createFilePlan(NodeRef, String, QName)
- *
+ *
* @param parent parent node reference
* @param name file plan name
* @return NodeRef file plan node reference
*/
NodeRef createFilePlan(NodeRef parent, String name);
-
+
/**
* Creates a file plan with the default type, specifying properties.
- *
+ *
* @see #createFilePlan(NodeRef, String, QName)
- *
+ *
* @param parent parent node reference
* @param name file plan name
* @param properties file plan properties
* @return NodeRef file plan node reference
*/
NodeRef createFilePlan(NodeRef parent, String name, Map properties);
-
+
// TODO deleteFilePlan
-
+
/**
* Gets the NodeRef sequence from the {@link #getFilePlan(NodeRef) root}
* down to the fileplan component given. The array will start with the NodeRef of the root
* and end with the name of the fileplan component node given.
- *
+ *
* @param nodeRef a fileplan component
* @return Returns a NodeRef path starting with the file plan
*/
List getNodeRefPath(NodeRef nodeRef);
-
+
/**
* Indicates whether the given node is a file plan container or not.
*
* This includes file plan and record category nodes.
- *
+ *
* @param nodeRef node reference
* @return boolean true if node is a file plan container, false otherwise.
*/
boolean isFilePlanContainer(NodeRef nodeRef);
-
+
/**
* Indicates whether the given node is a record category or not.
- *
+ *
* @param nodeRef node reference
* @return boolean true if records category, false otherwise
*/
boolean isRecordCategory(NodeRef nodeRef);
-
+
/**
* Get all the items contained within a container. This will include record folders and other record categories.
- *
+ *
* @param recordCategory record category node reference
* @param deep if true then return all children including sub-categories and their children in turn, if false then just
* return the immediate children
* @return {@link List}<{@link NodeRef>} list of contained node references
*/
List getAllContained(NodeRef recordCategory, boolean deep);
-
+
/**
* Only return the immediate children.
- *
- * @see RecordsManagementService#getAllContained(NodeRef, boolean)
- *
+ *
* @param recordCategory record category node reference
* @return {@link List}<{@link NodeRef>} list of contained node references
*/
- List getAllContained(NodeRef recordCategory);
-
+ List getAllContained(NodeRef recordCategory);
+
/**
* Get all the record categories within a record category.
- *
+ *
* @param recordCategory record category node reference
* @param deep if true then return all children including sub-categories and their children in turn, if false then just
* return the immediate children
* @return {@link List}<{@link NodeRef>} list of container node references
*/
List getContainedRecordCategories(NodeRef recordCategory, boolean deep);
-
+
/**
* Only return immediate children.
- *
- * @see RecordsManagementService#getContainedRecordCategories(NodeRef, boolean)
- *
+ *
* @param recordCategory container node reference
* @return {@link List}<{@link NodeRef>} list of container node references
*/
List getContainedRecordCategories(NodeRef recordCategory);
-
+
/**
* Get all the record folders contained within a container
- *
+ *
* @param container container node reference
* @param deep if true then return all children including sub-containers and their children in turn, if false then just
* return the immediate children
* @return {@link List}<{@link NodeRef>} list of record folder node references
*/
List getContainedRecordFolders(NodeRef container, boolean deep);
-
+
/**
* Only return immediate children.
- *
- * @see RecordsManagementService#getContainedRecordFolders(NodeRef, boolean)
- *
+ *
* @param container container node reference
* @return {@link List}<{@link NodeRef>} list of record folder node references
*/
List getContainedRecordFolders(NodeRef container);
-
+
/**
* Create a record category.
- *
+ *
* @param parent parent node reference, must be a record category or file plan.
* @param name name of the new record category
* @param type type of container to create, must be a sub-type of rm:recordCategory
* @return NodeRef node reference of the created record category
*/
NodeRef createRecordCategory(NodeRef parent, String name, QName type);
-
+
/**
- *
+ *
* @param parent
* @param name
* @param type
@@ -323,20 +316,18 @@ public interface FilePlanService
* @return
*/
NodeRef createRecordCategory(NodeRef parent, String name, QName type, Map properties);
-
+
/**
* Creates a record category of type rma:recordCategory
- *
- * @see RecordsManagementService#createRecordCategory(NodeRef, String, QName)
- *
+ *
* @param parent parent node reference, must be a record category or file plan.
* @param name name of the record category
* @return NodeRef node reference of the created record category
*/
NodeRef createRecordCategory(NodeRef parent, String name);
-
+
/**
- *
+ *
* @param parent
* @param name
* @param properties
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/fileplan/FilePlanServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/fileplan/FilePlanServiceImpl.java
index 28942f6497..da8ea1a261 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/fileplan/FilePlanServiceImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/fileplan/FilePlanServiceImpl.java
@@ -59,12 +59,12 @@ import org.springframework.extensions.surf.util.I18NUtil;
/**
* File plan service implementation.
- *
+ *
* @author Roy Wetherall
* @since 2.1
*/
public class FilePlanServiceImpl extends ServiceBaseImpl
- implements FilePlanService,
+ implements FilePlanService,
RecordsManagementModel,
ApplicationContextAware
{
@@ -77,18 +77,18 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
private final static String MSG_CONTAINER_PARENT_TYPE= "rm.service.container-parent-type";
private final static String MSG_CONTAINER_TYPE = "rm.service.container-type";
private final static String MSG_CONTAINER_EXPECTED = "rm.service.container-expected";
-
+
/** File plan containers */
private static final String NAME_UNFILED_CONTAINER = "Unfiled Records";
private static final String NAME_HOLD_CONTAINER = "Holds";
private static final String NAME_TRANSFER_CONTAINER = "Transfers";
-
+
/** RM site file plan container */
private static final String FILE_PLAN_CONTAINER = "documentLibrary";
-
+
/** Application context */
private ApplicationContext applicationContext;
-
+
/**
* @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)
*/
@@ -97,50 +97,50 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
this.applicationContext = applicationContext;
}
-
+
/**
- * NOTE: for some reason spring couldn't cope with the circular references between these two
+ * NOTE: for some reason spring couldn't cope with the circular references between these two
* beans so we need to grab this one manually.
- *
+ *
* @return file plan role service
*/
protected FilePlanRoleService getFilePlanRoleService()
{
- return (FilePlanRoleService)applicationContext.getBean("FilePlanRoleService");
+ return (FilePlanRoleService)applicationContext.getBean("FilePlanRoleService");
}
-
+
/**
* @return permission service
*/
protected PermissionService getPermissionService()
{
- return (PermissionService)applicationContext.getBean("permissionService");
+ return (PermissionService)applicationContext.getBean("permissionService");
}
-
+
/**
* @return node DAO
*/
protected NodeDAO getNodeDAO()
{
- return (NodeDAO)applicationContext.getBean("nodeDAO");
+ return (NodeDAO)applicationContext.getBean("nodeDAO");
}
-
+
/**
* @return internal node service
*/
protected NodeService getInternalNodeService()
{
- return (NodeService)applicationContext.getBean("nodeService");
+ return (NodeService)applicationContext.getBean("nodeService");
}
-
+
/**
* @return site service
*/
protected SiteService getSiteService()
{
- return (SiteService)applicationContext.getBean("SiteService");
+ return (SiteService)applicationContext.getBean("SiteService");
}
-
+
/**
* @return record service
*/
@@ -148,7 +148,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return (RecordService)applicationContext.getBean("RecordService");
}
-
+
/**
* @return record folder service
*/
@@ -156,7 +156,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return (RecordFolderService)applicationContext.getBean("RecordFolderService");
}
-
+
/**
* @return freeze service
*/
@@ -164,7 +164,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return (FreezeService)applicationContext.getBean("FreezeService");
}
-
+
/**
* @return records management service
*/
@@ -172,7 +172,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return (RecordsManagementService)applicationContext.getBean("RecordsManagementService");
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#isFilePlanComponent(org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -186,18 +186,18 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
}
return result;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#getFilePlanComponentKind(org.alfresco.service.cmr.repository.NodeRef)
*/
public FilePlanComponentKind getFilePlanComponentKind(NodeRef nodeRef)
{
FilePlanComponentKind result = null;
-
+
if (isFilePlanComponent(nodeRef) == true)
{
result = FilePlanComponentKind.FILE_PLAN_COMPONENT;
-
+
if (isFilePlan(nodeRef) == true)
{
result = FilePlanComponentKind.FILE_PLAN;
@@ -206,7 +206,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
result = FilePlanComponentKind.RECORD_CATEGORY;
}
- else if (getRecordsManagementService().isRecordFolder(nodeRef) == true)
+ else if (getRecordFolderService().isRecordFolder(nodeRef) == true)
{
result = FilePlanComponentKind.RECORD_FOLDER;
}
@@ -231,18 +231,18 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
result = FilePlanComponentKind.UNFILED_RECORD_CONTAINER;
}
}
-
+
return result;
}
-
+
/**
- * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementService#getFilePlanComponentKindFromType(org.alfresco.service.namespace.QName)
+ * @see FilePlanService#getFilePlanComponentKindFromType(QName)
*/
@Override
public FilePlanComponentKind getFilePlanComponentKindFromType(QName type)
{
FilePlanComponentKind result = null;
-
+
if (ASPECT_FILE_PLAN_COMPONENT.equals(type) == true)
{
result = FilePlanComponentKind.FILE_PLAN_COMPONENT;
@@ -271,15 +271,15 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
result = FilePlanComponentKind.TRANSFER;
}
- else if (dictionaryService.isSubClass(type, TYPE_DISPOSITION_SCHEDULE) == true ||
+ else if (dictionaryService.isSubClass(type, TYPE_DISPOSITION_SCHEDULE) == true ||
dictionaryService.isSubClass(type, TYPE_DISPOSITION_ACTION_DEFINITION) == true)
{
result = FilePlanComponentKind.DISPOSITION_SCHEDULE;
}
-
+
return result;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#isFilePlan(org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -287,7 +287,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return instanceOf(nodeRef, TYPE_FILE_PLAN);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#getFilePlans()
*/
@@ -296,7 +296,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return getFilePlans(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#getFilePlans(org.alfresco.service.cmr.repository.StoreRef)
*/
@@ -304,34 +304,34 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
public Set getFilePlans(final StoreRef storeRef)
{
ParameterCheck.mandatory("storeRef", storeRef);
-
+
final Set results = new HashSet();
Set aspects = new HashSet(1);
aspects.add(ASPECT_RECORDS_MANAGEMENT_ROOT);
getNodeDAO().getNodesWithAspects(aspects, Long.MIN_VALUE, Long.MAX_VALUE, new NodeDAO.NodeRefQueryCallback()
- {
+ {
@Override
public boolean handle(Pair nodePair)
{
NodeRef nodeRef = nodePair.getSecond();
if (storeRef.equals(nodeRef.getStoreRef()) == true)
- {
+ {
results.add(nodeRef);
}
-
+
return true;
}
});
return results;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#getFilePlan(org.alfresco.service.cmr.repository.NodeRef)
*/
@Override
public NodeRef getFilePlan(NodeRef nodeRef)
{
- NodeRef result = null;
+ NodeRef result = null;
if (nodeRef != null)
{
result = (NodeRef)getInternalNodeService().getProperty(nodeRef, PROP_ROOT_NODEREF);
@@ -350,19 +350,19 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
}
}
}
- }
-
+ }
+
return result;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#getFilePlanBySiteId(java.lang.String)
*/
@Override
public NodeRef getFilePlanBySiteId(String siteId)
{
- NodeRef filePlan = null;
-
+ NodeRef filePlan = null;
+
SiteInfo siteInfo = getSiteService().getSite(siteId);
if (siteInfo != null)
{
@@ -375,10 +375,10 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
}
}
}
-
+
return filePlan;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#existsUnfiledContainer(org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -386,8 +386,8 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
public boolean existsUnfiledContainer(NodeRef filePlan)
{
return (getUnfiledContainer(filePlan) != null);
- }
-
+ }
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#getUnfiledContainer(org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -396,7 +396,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return getFilePlanRootContainer(filePlan, NAME_UNFILED_CONTAINER);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#getHoldContainer(org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -405,7 +405,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return getFilePlanRootContainer(filePlan, NAME_HOLD_CONTAINER);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#getTransferContainer(org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -414,9 +414,9 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return getFilePlanRootContainer(filePlan, NAME_TRANSFER_CONTAINER);
}
-
+
/**
- *
+ *
* @param filePlan
* @param containerName
* @return
@@ -430,7 +430,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
}
NodeRef result = null;
-
+
// try and get the unfiled record container
List assocs = nodeService.getChildAssocs(filePlan, ContentModel.ASSOC_CONTAINS, QName.createQName(RM_URI, containerName));
if (assocs.size() > 1)
@@ -441,18 +441,18 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
result = assocs.get(0).getChildRef();
}
-
+
return result;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#createUnfiledContainer(org.alfresco.service.cmr.repository.NodeRef)
*/
public NodeRef createUnfiledContainer(NodeRef filePlan)
- {
+ {
return createFilePlanRootContainer(filePlan, TYPE_UNFILED_RECORD_CONTAINER, NAME_UNFILED_CONTAINER);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#createHoldContainer(org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -461,7 +461,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return createFilePlanRootContainer(filePlan, TYPE_HOLD_CONTAINER, NAME_HOLD_CONTAINER);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#createTransferContainer(org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -470,9 +470,9 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return createFilePlanRootContainer(filePlan, TYPE_TRANSFER_CONTAINER, NAME_TRANSFER_CONTAINER);
}
-
+
/**
- *
+ *
* @param filePlan
* @param containerType
* @param containerName
@@ -486,9 +486,9 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
throw new AlfrescoRuntimeException("Unable to create file plan root container, because passed node is not a file plan.");
}
-
+
String allRoles = getFilePlanRoleService().getAllRolesContainerGroup(filePlan);
-
+
// create the properties map
Map properties = new HashMap(1);
properties.put(ContentModel.PROP_NAME, containerName);
@@ -501,7 +501,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
containerType,
properties).getChildRef();
-
+
// if (inheritPermissions == false)
// {
// set inheritance to false
@@ -510,7 +510,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
getPermissionService().setPermission(container, ExtendedReaderDynamicAuthority.EXTENDED_READER, RMPermissionModel.READ_RECORDS, true);
getPermissionService().setPermission(container, ExtendedWriterDynamicAuthority.EXTENDED_WRITER, RMPermissionModel.FILING, true);
getPermissionService().setPermission(container, "Administrator", RMPermissionModel.FILING, true);
-
+
// TODO set the admin users to have filing permissions on the unfiled container!!!
// TODO we will need to be able to get a list of the admin roles from the service
// }
@@ -523,7 +523,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
return container;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#createFilePlan(org.alfresco.service.cmr.repository.NodeRef, java.lang.String, org.alfresco.service.namespace.QName, java.util.Map)
*/
@@ -532,21 +532,21 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
ParameterCheck.mandatory("parent", parent);
ParameterCheck.mandatory("name", name);
ParameterCheck.mandatory("type", type);
-
+
// Check the parent is not already an RM component node
// ie: you can't create a rm root in an existing rm hierarchy
if (isFilePlanComponent(parent) == true)
{
throw new AlfrescoRuntimeException(I18NUtil.getMessage(MSG_DUP_ROOT));
}
-
+
// Check that the passed type is a sub-type of rma:filePlan
if (TYPE_FILE_PLAN.equals(type) == false &&
dictionaryService.isSubClass(type, TYPE_FILE_PLAN) == false)
{
throw new AlfrescoRuntimeException(I18NUtil.getMessage(MSG_ROOT_TYPE, type.toString()));
}
-
+
// Build map of properties
Map rmRootProps = new HashMap(1);
if (properties != null && properties.size() != 0)
@@ -554,7 +554,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
rmRootProps.putAll(properties);
}
rmRootProps.put(ContentModel.PROP_NAME, name);
-
+
// Create the root
ChildAssociationRef assocRef = nodeService.createNode(
parent,
@@ -562,12 +562,12 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, name),
type,
rmRootProps);
-
+
// TODO do we need to create role and security groups or is this done automatically?
-
+
return assocRef.getChildRef();
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#createFilePlan(org.alfresco.service.cmr.repository.NodeRef, java.lang.String, java.util.Map)
*/
@@ -575,7 +575,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return createFilePlan(parent, name, TYPE_FILE_PLAN, properties);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#createFilePlan(org.alfresco.service.cmr.repository.NodeRef, java.lang.String)
*/
@@ -583,7 +583,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return createFilePlan(parent, name, TYPE_FILE_PLAN, null);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#createFilePlan(org.alfresco.service.cmr.repository.NodeRef, java.lang.String, org.alfresco.service.namespace.QName)
*/
@@ -592,7 +592,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return createFilePlan(parent, name, type, null);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#getNodeRefPath(org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -609,7 +609,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
}
return nodeRefPath;
}
-
+
/**
* Helper method to build a NodeRef path from the node to the RM root
*/
@@ -639,7 +639,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
getNodeRefPathRecursive(nodeRef, nodeRefPath);
}
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#isFilePlanContainer(org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -648,7 +648,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return instanceOf(nodeRef, TYPE_RECORDS_MANAGEMENT_CONTAINER);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#isRecordCategory(org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -656,7 +656,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return instanceOf(nodeRef, TYPE_RECORD_CATEGORY);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#createRecordCategory(org.alfresco.service.cmr.repository.NodeRef, java.lang.String, org.alfresco.service.namespace.QName, java.util.Map)
*/
@@ -665,7 +665,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
ParameterCheck.mandatory("parent", parent);
ParameterCheck.mandatory("name", name);
ParameterCheck.mandatory("type", type);
-
+
// Check that the parent is a container
QName parentType = nodeService.getType(parent);
if (TYPE_RECORDS_MANAGEMENT_CONTAINER.equals(parentType) == false &&
@@ -673,14 +673,14 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
throw new AlfrescoRuntimeException(I18NUtil.getMessage(MSG_CONTAINER_PARENT_TYPE, parentType.toString()));
}
-
+
// Check that the the provided type is a sub-type of rm:recordCategory
if (TYPE_RECORD_CATEGORY.equals(type) == false &&
dictionaryService.isSubClass(type, TYPE_RECORD_CATEGORY) == false)
{
throw new AlfrescoRuntimeException(I18NUtil.getMessage(MSG_CONTAINER_TYPE, type.toString()));
}
-
+
// Set the properties for the record category
Map props = new HashMap(1);
if (properties != null && properties.size() != 0)
@@ -688,7 +688,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
props.putAll(properties);
}
props.put(ContentModel.PROP_NAME, name);
-
+
return nodeService.createNode(
parent,
ContentModel.ASSOC_CONTAINS,
@@ -696,7 +696,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
type,
props).getChildRef();
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#createRecordCategory(org.alfresco.service.cmr.repository.NodeRef, java.lang.String)
*/
@@ -704,7 +704,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return createRecordCategory(parent, name, TYPE_RECORD_CATEGORY);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#createRecordCategory(org.alfresco.service.cmr.repository.NodeRef, java.lang.String, java.util.Map)
*/
@@ -712,7 +712,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return createRecordCategory(parent, name, TYPE_RECORD_CATEGORY, properties);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#createRecordCategory(org.alfresco.service.cmr.repository.NodeRef, java.lang.String, org.alfresco.service.namespace.QName)
*/
@@ -720,7 +720,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return createRecordCategory(parent, name, type, null);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#getAllContained(org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -729,7 +729,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return getAllContained(container, false);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#getAllContained(org.alfresco.service.cmr.repository.NodeRef, boolean)
*/
@@ -738,25 +738,25 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return getContained(container, null, deep);
}
-
+
/**
* Get contained nodes of a particular type. If null return all.
- *
+ *
* @param container container node reference
* @param typeFilter type filter, null if none
* @return {@link List}<{@link NodeRef> list of contained node references
*/
private List getContained(NodeRef container, QName typeFilter, boolean deep)
- {
+ {
// Parameter check
ParameterCheck.mandatory("container", container);
-
+
// Check we have a container in our hands
if (isRecordCategory(container) == false)
{
throw new AlfrescoRuntimeException(I18NUtil.getMessage(MSG_CONTAINER_EXPECTED));
}
-
+
List result = new ArrayList(1);
List assocs = this.nodeService.getChildAssocs(container, ContentModel.ASSOC_CONTAINS, RegexQNamePattern.MATCH_ALL);
for (ChildAssociationRef assoc : assocs)
@@ -769,7 +769,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
result.add(child);
}
-
+
// Inspect the containers and add children if deep
if (deep == true &&
(TYPE_RECORD_CATEGORY.equals(childType) == true ||
@@ -778,10 +778,10 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
result.addAll(getContained(child, typeFilter, deep));
}
}
-
+
return result;
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#getContainedRecordCategories(org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -790,7 +790,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return getContainedRecordCategories(container, false);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#getContainedRecordCategories(org.alfresco.service.cmr.repository.NodeRef, boolean)
*/
@@ -799,7 +799,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return getContained(container, TYPE_RECORD_CATEGORY, deep);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#getContainedRecordFolders(org.alfresco.service.cmr.repository.NodeRef)
*/
@@ -808,7 +808,7 @@ public class FilePlanServiceImpl extends ServiceBaseImpl
{
return getContainedRecordFolders(container, false);
}
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService#getContainedRecordFolders(org.alfresco.service.cmr.repository.NodeRef, boolean)
*/
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/forms/RecordsManagementFormFilter.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/forms/RecordsManagementFormFilter.java
index c9be23c7ac..733da7320d 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/forms/RecordsManagementFormFilter.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/forms/RecordsManagementFormFilter.java
@@ -22,9 +22,8 @@ import java.io.Serializable;
import java.util.List;
import java.util.Map;
-import org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService;
-import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementServiceRegistry;
+import org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService;
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
import org.alfresco.repo.forms.Field;
import org.alfresco.repo.forms.FieldGroup;
@@ -58,7 +57,6 @@ public abstract class RecordsManagementFormFilter extends AbstractFilt
protected NamespaceService namespaceService;
protected NodeService nodeService;
protected RecordsManagementServiceRegistry rmServiceRegistry;
- protected RecordsManagementService rmService;
protected RecordsManagementAdminService rmAdminService;
protected RecordService recordService;
protected DictionaryService dictionaryService;
@@ -93,16 +91,6 @@ public abstract class RecordsManagementFormFilter extends AbstractFilt
this.rmServiceRegistry = rmServiceRegistry;
}
- /**
- * Sets the RecordsManagementService instance
- *
- * @param rmService The RecordsManagementService instance
- */
- public void setRecordsManagementService(RecordsManagementService rmService)
- {
- this.rmService = rmService;
- }
-
/**
* Sets the RecordsManagementAdminService instance
*
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/freeze/FreezeServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/freeze/FreezeServiceImpl.java
index 5c65630f02..10175c1fe1 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/freeze/FreezeServiceImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/freeze/FreezeServiceImpl.java
@@ -28,10 +28,10 @@ import java.util.Set;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel;
-import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
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.role.FilePlanRoleService;
import org.alfresco.module.org_alfresco_module_rm.util.ServiceBaseImpl;
import org.alfresco.repo.node.NodeServicePolicies;
@@ -78,21 +78,21 @@ public class FreezeServiceImpl extends ServiceBaseImpl
/** Policy Component */
protected PolicyComponent policyComponent;
- /** Records Management Service */
- protected RecordsManagementService recordsManagementService;
-
/** Record service */
protected RecordService recordService;
-
+
/** File Plan Service */
protected FilePlanService filePlanService;
-
+
/** Permission service */
protected PermissionService permissionService;
-
- /** file plan role service */
+
+ /** File plan role service */
protected FilePlanRoleService filePlanRoleService;
+ /** Record folder service */
+ protected RecordFolderService recordFolderService;
+
/**
* @param policyComponent policy component
*/
@@ -101,14 +101,6 @@ public class FreezeServiceImpl extends ServiceBaseImpl
this.policyComponent = policyComponent;
}
- /**
- * @param recordsManagementService records management service
- */
- public void setRecordsManagementService(RecordsManagementService recordsManagementService)
- {
- this.recordsManagementService = recordsManagementService;
- }
-
/**
* @param recordService record service
*/
@@ -116,7 +108,7 @@ public class FreezeServiceImpl extends ServiceBaseImpl
{
this.recordService = recordService;
}
-
+
/**
* @param filePlanService file plan service
*/
@@ -124,31 +116,39 @@ public class FreezeServiceImpl extends ServiceBaseImpl
{
this.filePlanService = filePlanService;
}
-
+
/**
* @param permissionService permission service
*/
- public void setPermissionService(PermissionService permissionService)
+ public void setPermissionService(PermissionService permissionService)
{
this.permissionService = permissionService;
}
-
+
/**
* @param filePlanRoleService file plan role service
*/
- public void setFilePlanRoleService(FilePlanRoleService filePlanRoleService)
+ public void setFilePlanRoleService(FilePlanRoleService filePlanRoleService)
{
this.filePlanRoleService = filePlanRoleService;
}
+ /**
+ * @param recordFolderService record folder service
+ */
+ public void setRecordFolderService(RecordFolderService recordFolderService)
+ {
+ this.recordFolderService = recordFolderService;
+ }
+
/**
* Init service
*/
public void init()
{
policyComponent.bindClassBehaviour(
- NodeServicePolicies.BeforeDeleteNodePolicy.QNAME,
- this,
+ NodeServicePolicies.BeforeDeleteNodePolicy.QNAME,
+ this,
new JavaBehaviour(this, "beforeDeleteNode", NotificationFrequency.FIRST_EVENT));
}
@@ -271,11 +271,11 @@ public class FreezeServiceImpl extends ServiceBaseImpl
// node references
// Check if the actionedUponNodeRef is a valid file plan component
boolean isRecord = recordService.isRecord(nodeRef);
- boolean isFolder = recordsManagementService.isRecordFolder(nodeRef);
+ boolean isFolder = recordFolderService.isRecordFolder(nodeRef);
- if (!(isRecord || isFolder))
- {
- throw new AlfrescoRuntimeException(I18NUtil.getMessage(MSG_FREEZE_ONLY_RECORDS_FOLDERS));
+ if (!(isRecord || isFolder))
+ {
+ throw new AlfrescoRuntimeException(I18NUtil.getMessage(MSG_FREEZE_ONLY_RECORDS_FOLDERS));
}
// Log a message about freezing the node with the reason
@@ -328,9 +328,9 @@ public class FreezeServiceImpl extends ServiceBaseImpl
}
// Mark all the folders contents as frozen
- if (recordsManagementService.isRecordFolder(nodeRef))
+ if (recordFolderService.isRecordFolder(nodeRef))
{
- List records = recordsManagementService.getRecords(nodeRef);
+ List records = recordService.getRecords(nodeRef);
for (NodeRef record : records)
{
// no need to freeze if already frozen!
@@ -394,7 +394,7 @@ public class FreezeServiceImpl extends ServiceBaseImpl
if (nodeService.hasAspect(nodeRef, ASPECT_FROZEN))
{
- boolean isRecordFolder = recordsManagementService.isRecordFolder(nodeRef);
+ boolean isRecordFolder = recordFolderService.isRecordFolder(nodeRef);
if (logger.isDebugEnabled())
{
@@ -414,7 +414,7 @@ public class FreezeServiceImpl extends ServiceBaseImpl
// Remove freeze from records if a record folder
if (isRecordFolder)
{
- List records = recordsManagementService.getRecords(nodeRef);
+ List records = recordService.getRecords(nodeRef);
for (NodeRef record : records)
{
removeFreeze(record);
@@ -608,7 +608,7 @@ public class FreezeServiceImpl extends ServiceBaseImpl
holdProps.put(ContentModel.PROP_NAME, holdName);
holdProps.put(PROP_HOLD_REASON, reason);
- // create the hold object
+ // create the hold object
QName holdQName = QName.createQName(RM_URI, holdName);
final NodeRef holdNodeRef = nodeService.createNode(holdContainer, ContentModel.ASSOC_CONTAINS, holdQName, TYPE_HOLD, holdProps).getChildRef();
@@ -618,7 +618,7 @@ public class FreezeServiceImpl extends ServiceBaseImpl
msg.append("Created hold object '").append(holdNodeRef).append("' with name '").append(holdQName).append("'.");
logger.debug(msg.toString());
}
-
+
// Bind the hold node reference to the transaction
AlfrescoTransactionSupport.bindResource(KEY_HOLD_NODEREF, holdNodeRef);
@@ -713,7 +713,7 @@ public class FreezeServiceImpl extends ServiceBaseImpl
// parents of the folder(s).
if (recordService.isRecord(nodeRef))
{
- List parentFolders = recordsManagementService.getRecordFolders(nodeRef);
+ List parentFolders = recordFolderService.getRecordFolders(nodeRef);
for (NodeRef folder : parentFolders)
{
List moreAssocs = nodeService.getParentAssocs(folder, ASSOC_FROZEN_RECORDS,
@@ -755,7 +755,7 @@ public class FreezeServiceImpl extends ServiceBaseImpl
// Remove the freezes on the child records as long as there is no other
// hold referencing them
- if (recordsManagementService.isRecordFolder(nodeRef) == true)
+ if (recordFolderService.isRecordFolder(nodeRef) == true)
{
if (logger.isDebugEnabled())
{
@@ -763,7 +763,7 @@ public class FreezeServiceImpl extends ServiceBaseImpl
msg.append(nodeRef).append(" is a record folder");
logger.debug(msg.toString());
}
- for (NodeRef record : recordsManagementService.getRecords(nodeRef))
+ for (NodeRef record : recordService.getRecords(nodeRef))
{
removeFreeze(record, hold);
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/job/publish/DispositionActionDefinitionPublishExecutor.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/job/publish/DispositionActionDefinitionPublishExecutor.java
index 79a0c3abfa..3bd99c376d 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/job/publish/DispositionActionDefinitionPublishExecutor.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/job/publish/DispositionActionDefinitionPublishExecutor.java
@@ -26,28 +26,23 @@ import java.util.Map;
import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService;
import org.alfresco.module.org_alfresco_module_rm.action.impl.BroadcastDispositionActionDefinitionUpdateAction;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
-import org.alfresco.repo.policy.BehaviourFilter;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.namespace.QName;
/**
* Disposition action definition publish executor
- *
+ *
* @author Roy Wetherall
*/
public class DispositionActionDefinitionPublishExecutor extends BasePublishExecutor
{
/** Node service */
private NodeService nodeService;
-
+
/** Records management action service */
private RecordsManagementActionService rmActionService;
- /** Behaviour filter */
- @SuppressWarnings("unused")
- private BehaviourFilter behaviourFilter;
-
/**
* Set node service
* @param nodeService node service
@@ -56,7 +51,7 @@ public class DispositionActionDefinitionPublishExecutor extends BasePublishExecu
{
this.nodeService = nodeService;
}
-
+
/**
* Set records management service
* @param rmActionService records management service
@@ -65,16 +60,7 @@ public class DispositionActionDefinitionPublishExecutor extends BasePublishExecu
{
this.rmActionService = rmActionService;
}
-
- /**
- * Set behaviour filter
- * @param behaviourFilter behaviour filter
- */
- public void setBehaviourFilter(BehaviourFilter behaviourFilter)
- {
- this.behaviourFilter = behaviourFilter;
- }
-
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.job.publish.PublishExecutor#getName()
*/
@@ -96,7 +82,7 @@ public class DispositionActionDefinitionPublishExecutor extends BasePublishExecu
{
Map params = new HashMap();
params.put(BroadcastDispositionActionDefinitionUpdateAction.CHANGED_PROPERTIES, (Serializable)updatedProps);
- rmActionService.executeRecordsManagementAction(nodeRef, BroadcastDispositionActionDefinitionUpdateAction.NAME, params);
+ rmActionService.executeRecordsManagementAction(nodeRef, BroadcastDispositionActionDefinitionUpdateAction.NAME, params);
}
}
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/BaseEvaluator.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/BaseEvaluator.java
index f9bfbe9960..affc7a709d 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/BaseEvaluator.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/BaseEvaluator.java
@@ -23,14 +23,15 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
import org.alfresco.module.org_alfresco_module_rm.capability.Capability;
import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService;
+import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanComponentKind;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
+import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.security.AccessStatus;
@@ -38,60 +39,55 @@ import org.alfresco.service.namespace.NamespaceService;
/**
* Base evaluator.
- *
+ *
* @author Roy Wetherall
*/
public abstract class BaseEvaluator implements RecordsManagementModel
{
/** Name */
protected String name;
-
+
/** JSON conversion component */
protected JSONConversionComponent jsonConversionComponent;
-
- /** Records management service */
- protected RecordsManagementService recordsManagementService;
-
+
/** Record service */
protected RecordService recordService;
-
+
/** Node service */
protected NodeService nodeService;
-
+
/** Namespace service */
protected NamespaceService namespaceService;
-
+
/** Capability service */
protected CapabilityService capabilityService;
-
+
/** Freeze service */
protected FreezeService freezeService;
-
+
/** File plan component kinds */
- protected Set kinds;
-
+ protected Set kinds;
+
/** Capabilities */
protected List capabilities;
-
+
/** File plan service */
protected FilePlanService filePlanService;
-
+
+ /** Disposition service */
+ protected DispositionService dispositionService;
+
+ /** Record folder service */
+ protected RecordFolderService recordFolderService;
+
/**
* @param jsonConversionComponent json conversion component
*/
public void setJsonConversionComponent(JSONConversionComponent jsonConversionComponent)
{
this.jsonConversionComponent = jsonConversionComponent;
- }
-
- /**
- * @param recordsManagementService records management service
- */
- public void setRecordsManagementService(RecordsManagementService recordsManagementService)
- {
- this.recordsManagementService = recordsManagementService;
}
-
+
/**
* @param recordService record service
*/
@@ -99,7 +95,7 @@ public abstract class BaseEvaluator implements RecordsManagementModel
{
this.recordService = recordService;
}
-
+
/**
* @param nodeService node service
*/
@@ -107,7 +103,7 @@ public abstract class BaseEvaluator implements RecordsManagementModel
{
this.nodeService = nodeService;
}
-
+
/**
* @param namespaceService namespace service
*/
@@ -115,7 +111,7 @@ public abstract class BaseEvaluator implements RecordsManagementModel
{
this.namespaceService = namespaceService;
}
-
+
/**
* @param capabilityService capability service
*/
@@ -123,7 +119,7 @@ public abstract class BaseEvaluator implements RecordsManagementModel
{
this.capabilityService = capabilityService;
}
-
+
/**
* @param freezeService freeze service
*/
@@ -131,15 +127,31 @@ public abstract class BaseEvaluator implements RecordsManagementModel
{
this.freezeService = freezeService;
}
-
+
/**
* @param filePlanService file plan service
*/
- public void setFilePlanService(FilePlanService filePlanService)
+ public void setFilePlanService(FilePlanService filePlanService)
{
this.filePlanService = filePlanService;
}
-
+
+ /**
+ * @param dispositionService disposition service
+ */
+ public void setDispositionService(DispositionService dispositionService)
+ {
+ this.dispositionService = dispositionService;
+ }
+
+ /**
+ * @param recordFolderService record folder service
+ */
+ public void setRecordFolderService(RecordFolderService recordFolderService)
+ {
+ this.recordFolderService = recordFolderService;
+ }
+
/**
* @param name
*/
@@ -147,7 +159,7 @@ public abstract class BaseEvaluator implements RecordsManagementModel
{
this.name = name;
}
-
+
/**
* @return
*/
@@ -155,7 +167,7 @@ public abstract class BaseEvaluator implements RecordsManagementModel
{
return this.name;
}
-
+
/**
* @param kinds
*/
@@ -163,7 +175,7 @@ public abstract class BaseEvaluator implements RecordsManagementModel
{
this.kinds = kinds;
}
-
+
/**
* @param capabilties
*/
@@ -171,10 +183,10 @@ public abstract class BaseEvaluator implements RecordsManagementModel
{
this.capabilities = capabilties;
}
-
+
/**
* Helper method which sets on capability.
- *
+ *
* @param capability capability name
*/
public void setCapability(String capability)
@@ -183,7 +195,7 @@ public abstract class BaseEvaluator implements RecordsManagementModel
list.add(capability);
this.capabilities = list;
}
-
+
/**
* Registers this instance as an indicator (evaluator)
*/
@@ -191,7 +203,7 @@ public abstract class BaseEvaluator implements RecordsManagementModel
{
jsonConversionComponent.registerIndicator(this);
}
-
+
/**
* Registers this instance as an action (evaluator)
*/
@@ -199,17 +211,17 @@ public abstract class BaseEvaluator implements RecordsManagementModel
{
jsonConversionComponent.registerAction(this);
}
-
+
/**
* Executes the evaluation.
- *
+ *
* @param nodeRef
* @return
*/
public boolean evaluate(NodeRef nodeRef)
{
boolean result = false;
-
+
// Check that we are dealing with the correct kind of RM object
if (kinds == null || checkKinds(nodeRef) == true)
{
@@ -219,13 +231,13 @@ public abstract class BaseEvaluator implements RecordsManagementModel
result = evaluateImpl(nodeRef);
}
}
-
+
return result;
}
-
- /**
+
+ /**
* Checks the file plan component kind.
- *
+ *
* @param nodeRef
* @return
*/
@@ -234,10 +246,10 @@ public abstract class BaseEvaluator implements RecordsManagementModel
FilePlanComponentKind kind = filePlanService.getFilePlanComponentKind(nodeRef);
return kinds.contains(kind);
}
-
+
/**
* Checks the capabilities.
- *
+ *
* @param nodeRef
* @return
*/
@@ -258,10 +270,10 @@ public abstract class BaseEvaluator implements RecordsManagementModel
}
return result;
}
-
+
/**
* Evaluation execution implementation.
- *
+ *
* @param nodeRef
* @return
*/
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 b2847f5364..d64dfdf2c3 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
@@ -21,7 +21,6 @@ package org.alfresco.module.org_alfresco_module_rm.jscript.app;
import java.util.ArrayList;
import java.util.List;
-import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService;
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanComponentKind;
@@ -41,9 +40,6 @@ import org.json.simple.JSONObject;
*/
public class JSONConversionComponent extends org.alfresco.repo.jscript.app.JSONConversionComponent
{
- /** Records management service */
- private RecordsManagementService recordsManagementService;
-
/** Record service */
private RecordService recordService;
@@ -59,14 +55,6 @@ public class JSONConversionComponent extends org.alfresco.repo.jscript.app.JSONC
/** Actions */
private List actions = new ArrayList();
- /**
- * @param recordsManagementService records management service
- */
- public void setRecordsManagementService(RecordsManagementService recordsManagementService)
- {
- this.recordsManagementService = recordsManagementService;
- }
-
/**
* @param recordService record service
*/
@@ -238,7 +226,7 @@ public class JSONConversionComponent extends org.alfresco.repo.jscript.app.JSONC
}
case RECORD_FOLDER:
{
- if (recordsManagementService.isMetadataStub(nodeRef) == true)
+ if (recordService.isMetadataStub(nodeRef) == true)
{
result = "metadata-stub-folder";
}
@@ -250,7 +238,7 @@ public class JSONConversionComponent extends org.alfresco.repo.jscript.app.JSONC
}
case RECORD:
{
- if (recordsManagementService.isMetadataStub(nodeRef) == true)
+ if (recordService.isMetadataStub(nodeRef) == true)
{
result = "metadata-stub";
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/CutoffEvaluator.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/CutoffEvaluator.java
index 0733bf7e16..c07f01e133 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/CutoffEvaluator.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/CutoffEvaluator.java
@@ -23,21 +23,21 @@ import org.alfresco.service.cmr.repository.NodeRef;
/**
* Cutoff indicator
- *
+ *
* @author Roy Wetherall
*/
public class CutoffEvaluator extends BaseEvaluator
-{
+{
private boolean isCutoff = true;
-
+
public void setCutoff(boolean isCutoff)
{
this.isCutoff = isCutoff;
}
-
+
@Override
protected boolean evaluateImpl(NodeRef nodeRef)
{
- return (recordsManagementService.isCutoff(nodeRef) == isCutoff);
+ return (dispositionService.isCutoff(nodeRef) == isCutoff);
}
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/FolderOpenClosedEvaluator.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/FolderOpenClosedEvaluator.java
index 7855ee3b89..cece91b143 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/FolderOpenClosedEvaluator.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/FolderOpenClosedEvaluator.java
@@ -27,15 +27,15 @@ import org.alfresco.service.cmr.repository.NodeRef;
public class FolderOpenClosedEvaluator extends BaseEvaluator
{
private boolean expected = true;
-
+
public void setExpected(boolean expected)
{
this.expected = expected;
}
-
+
@Override
protected boolean evaluateImpl(NodeRef nodeRef)
{
- return (recordsManagementService.isRecordFolderClosed(nodeRef) == expected);
+ return (recordFolderService.isRecordFolderClosed(nodeRef) == expected);
}
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/RecordCopyBehaviours.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/RecordCopyBehaviours.java
index 6b4202992f..3708580746 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/RecordCopyBehaviours.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/RecordCopyBehaviours.java
@@ -23,13 +23,12 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementServiceRegistry;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionServiceImpl;
import org.alfresco.module.org_alfresco_module_rm.identifier.IdentifierService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
-import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderServiceImpl;
+import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
import org.alfresco.repo.copy.CopyBehaviourCallback;
import org.alfresco.repo.copy.CopyDetails;
import org.alfresco.repo.copy.DefaultCopyBehaviourCallback;
@@ -50,7 +49,7 @@ import org.springframework.context.ApplicationContextAware;
/**
* Class containing behaviour for the vitalRecordDefinition aspect.
- *
+ *
* @author neilm
*/
public class RecordCopyBehaviours implements RecordsManagementModel,
@@ -58,16 +57,16 @@ public class RecordCopyBehaviours implements RecordsManagementModel,
{
/** The policy component */
private PolicyComponent policyComponent;
-
+
/** The Behaviour Filter */
private BehaviourFilter behaviourFilter;
-
+
/** The rm service registry */
private RecordsManagementServiceRegistry rmServiceRegistry;
-
+
/** List of aspects to remove during move and copy */
private List unwantedAspects = new ArrayList(5);
-
+
/** Application context */
private ApplicationContext applicationContext;
@@ -77,32 +76,32 @@ public class RecordCopyBehaviours implements RecordsManagementModel,
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
{
- this.applicationContext = applicationContext;
- }
-
+ this.applicationContext = applicationContext;
+ }
+
/**
* Set the policy component
- *
+ *
* @param policyComponent the policy component
*/
public void setPolicyComponent(PolicyComponent policyComponent)
{
this.policyComponent = policyComponent;
}
-
+
/**
* Set the behaviour Filter
- *
+ *
* @param behaviourFilter
*/
public void setBehaviourFilter(BehaviourFilter behaviourFilter)
{
this.behaviourFilter = behaviourFilter;
}
-
+
/**
* Set the rm service registry.
- *
+ *
* @param recordsManagementServiceRegistry the rm service registry.
*/
public void setRecordsManagementServiceRegistry(RecordsManagementServiceRegistry recordsManagementServiceRegistry)
@@ -119,7 +118,7 @@ public class RecordCopyBehaviours implements RecordsManagementModel,
unwantedAspects.add(ASPECT_VITAL_RECORD);
unwantedAspects.add(ASPECT_DISPOSITION_LIFECYCLE);
unwantedAspects.add(RecordsManagementSearchBehaviour.ASPECT_RM_SEARCH);
-
+
// Do not copy any of the Alfresco-internal 'state' aspects
for (QName aspect : unwantedAspects)
{
@@ -132,43 +131,43 @@ public class RecordCopyBehaviours implements RecordsManagementModel,
QName.createQName(NamespaceService.ALFRESCO_URI, "getCopyCallback"),
ASPECT_RECORD_COMPONENT_ID,
new JavaBehaviour(this, "getDoNothingCopyCallback"));
-
+
//On Copy we need a new ID
this.policyComponent.bindClassBehaviour(
QName.createQName(NamespaceService.ALFRESCO_URI, "onCopyComplete"),
ASPECT_RECORD_COMPONENT_ID,
new JavaBehaviour(this, "generateId", NotificationFrequency.TRANSACTION_COMMIT));
-
+
//Don't copy the Aspect Record -- it should be regenerated
this.policyComponent.bindClassBehaviour(
QName.createQName(NamespaceService.ALFRESCO_URI, "getCopyCallback"),
- ASPECT_RECORD,
+ ASPECT_RECORD,
new JavaBehaviour(this, "onCopyRecord"));
-
- // Move behaviour
+
+ // Move behaviour
this.policyComponent.bindClassBehaviour(
QName.createQName(NamespaceService.ALFRESCO_URI, "onMoveNode"),
- RecordsManagementModel.ASPECT_RECORD,
+ RecordsManagementModel.ASPECT_RECORD,
new JavaBehaviour(this, "onMoveRecordNode", NotificationFrequency.FIRST_EVENT));
this.policyComponent.bindClassBehaviour(
QName.createQName(NamespaceService.ALFRESCO_URI, "onMoveNode"),
- RecordsManagementModel.TYPE_RECORD_FOLDER,
+ RecordsManagementModel.TYPE_RECORD_FOLDER,
new JavaBehaviour(this, "onMoveRecordFolderNode", NotificationFrequency.FIRST_EVENT));
-
+
//Copy Behaviour
this.policyComponent.bindClassBehaviour(
- QName.createQName(NamespaceService.ALFRESCO_URI, "getCopyCallback"),
- RecordsManagementModel.TYPE_RECORD_FOLDER,
+ QName.createQName(NamespaceService.ALFRESCO_URI, "getCopyCallback"),
+ RecordsManagementModel.TYPE_RECORD_FOLDER,
new JavaBehaviour(this, "onCopyRecordFolderNode"));
this.policyComponent.bindClassBehaviour(
- QName.createQName(NamespaceService.ALFRESCO_URI, "getCopyCallback"),
- RecordsManagementModel.TYPE_RECORD_CATEGORY,
+ QName.createQName(NamespaceService.ALFRESCO_URI, "getCopyCallback"),
+ RecordsManagementModel.TYPE_RECORD_CATEGORY,
new JavaBehaviour(this, "onCopyRecordCategoryNode"));
}
-
+
/**
* onMove record behaviour
- *
+ *
* @param oldChildAssocRef
* @param newChildAssocRef
*/
@@ -179,7 +178,7 @@ public class RecordCopyBehaviours implements RecordsManagementModel,
{
final NodeRef newNodeRef = newChildAssocRef.getChildRef();
final NodeService nodeService = rmServiceRegistry.getNodeService();
-
+
AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork