From 0470d2d70583de84c517b29bd0065d5f39e9aec8 Mon Sep 17 00:00:00 2001 From: Roy Wetherall Date: Tue, 7 Jan 2014 05:38:57 +0000 Subject: [PATCH] RM-765: Remove DOD meta-data from core RM model * dod meta-data moved into record meta-data aspect within DOD model * by default dod compliance aspect is added to all records (via behaviour) .. will be configurable later (see RM-1116) * moved share related DOD config and spring context into separate files and package * fixed up RM form filters and overide of FormUIGet to allow the dynamic discovery and addition of form set's relating to the specially marked record meta-data aspects * clean up any references to the DOD model in the RM core code * Note that the patch for these changes is yet to be added git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@59445 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../dod5015/dod5015-context.xml | 16 +++- .../dod5015/dod5015Model.xml | 95 +++++++++++++++++++ .../{ => messages}/dod5015-model.properties | 0 .../dod5015-model_de.properties | 0 .../dod5015-model_es.properties | 0 .../dod5015-model_fr.properties | 0 .../dod5015-model_it.properties | 0 .../dod5015-model_ja.properties | 0 .../dod5015/{ => messages}/dod5015.properties | 0 .../{ => messages}/dod5015_de.properties | 0 .../{ => messages}/dod5015_es.properties | 0 .../{ => messages}/dod5015_fr.properties | 0 .../{ => messages}/dod5015_it.properties | 0 .../{ => messages}/dod5015_ja.properties | 0 .../model/recordsModel.xml | 84 +--------------- .../rm-disposition-properties-context.xml | 6 -- .../dod5015/DOD5015Model.java | 11 ++- .../model/dod/aspect/DOD5015RecordAspect.java | 63 ++++++++++++ .../forms/RecordsManagementFormFilter.java | 4 +- .../RecordsManagementNodeFormFilter.java | 14 ++- .../model/RecordsManagementModel.java | 12 +-- .../model/rma/aspect/GhostedAspect.java | 16 +++- .../service/DispositionServiceImplTest.java | 9 +- .../test/service/RecordServiceImplTest.java | 55 ++++++----- .../test/util/CommonRMTestUtils.java | 13 +-- 25 files changed, 258 insertions(+), 140 deletions(-) rename rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/{ => messages}/dod5015-model.properties (100%) rename rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/{ => messages}/dod5015-model_de.properties (100%) rename rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/{ => messages}/dod5015-model_es.properties (100%) rename rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/{ => messages}/dod5015-model_fr.properties (100%) rename rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/{ => messages}/dod5015-model_it.properties (100%) rename rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/{ => messages}/dod5015-model_ja.properties (100%) rename rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/{ => messages}/dod5015.properties (100%) rename rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/{ => messages}/dod5015_de.properties (100%) rename rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/{ => messages}/dod5015_es.properties (100%) rename rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/{ => messages}/dod5015_fr.properties (100%) rename rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/{ => messages}/dod5015_it.properties (100%) rename rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/{ => messages}/dod5015_ja.properties (100%) create mode 100644 rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/dod5015/model/dod/aspect/DOD5015RecordAspect.java diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-context.xml index 48816440e8..85db9e087f 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-context.xml @@ -12,7 +12,7 @@ - alfresco/module/org_alfresco_module_rm/dod5015/dod5015-model + alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015-model @@ -21,12 +21,22 @@ - alfresco.module.org_alfresco_module_rm.dod5015.dod5015 + alfresco.module.org_alfresco_module_rm.dod5015.messages.dod5015 + + + + + + - + + + + + \ No newline at end of file diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015Model.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015Model.xml index c96a58b304..85bf755290 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015Model.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015Model.xml @@ -26,6 +26,7 @@ + Image Formats @@ -56,6 +57,100 @@ + + + + + + DOD5015 Record + rma:recordMetaData + + + + + Publication Date + d:date + true + + + + Originator + d:text + true + + true + false + false + + + + + Originating Organization + d:text + true + + true + false + false + + + + + Media Type + d:text + false + + true + false + false + + + + + Format + d:text + false + + true + false + false + + + + + Date Received + d:date + false + + + + + Addressee + d:text + false + + true + false + false + + + + Other Addressee + d:text + false + + true + false + false + + + + + + Scanned Record diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-model.properties b/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015-model.properties similarity index 100% rename from rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-model.properties rename to rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015-model.properties diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-model_de.properties b/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015-model_de.properties similarity index 100% rename from rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-model_de.properties rename to rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015-model_de.properties diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-model_es.properties b/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015-model_es.properties similarity index 100% rename from rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-model_es.properties rename to rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015-model_es.properties diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-model_fr.properties b/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015-model_fr.properties similarity index 100% rename from rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-model_fr.properties rename to rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015-model_fr.properties diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-model_it.properties b/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015-model_it.properties similarity index 100% rename from rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-model_it.properties rename to rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015-model_it.properties diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-model_ja.properties b/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015-model_ja.properties similarity index 100% rename from rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-model_ja.properties rename to rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015-model_ja.properties diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015.properties b/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015.properties similarity index 100% rename from rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015.properties rename to rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015.properties diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015_de.properties b/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015_de.properties similarity index 100% rename from rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015_de.properties rename to rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015_de.properties diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015_es.properties b/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015_es.properties similarity index 100% rename from rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015_es.properties rename to rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015_es.properties diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015_fr.properties b/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015_fr.properties similarity index 100% rename from rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015_fr.properties rename to rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015_fr.properties diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015_it.properties b/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015_it.properties similarity index 100% rename from rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015_it.properties rename to rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015_it.properties diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015_ja.properties b/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015_ja.properties similarity index 100% rename from rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015_ja.properties rename to rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/messages/dod5015_ja.properties diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/model/recordsModel.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/model/recordsModel.xml index f1506022ac..21c6b126e4 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/model/recordsModel.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/model/recordsModel.xml @@ -610,6 +610,7 @@ + Records Management Root @@ -732,88 +733,7 @@ Original Name d:text true - - - - Publication Date - d:date - true - - - - Originator - d:text - true - - true - false - false - - - - - Originating Organization - d:text - true - - true - false - false - - - - - Media Type - d:text - false - - true - false - false - - - - - Format - d:text - false - - true - false - false - - - - - Date Received - d:date - false - - - - - Addressee - d:text - false - - true - false - false - - - - Other Addressee - d:text - false - - true - false - false - - + diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-disposition-properties-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-disposition-properties-context.xml index c16bd5567d..b83ba6243b 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-disposition-properties-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-disposition-properties-context.xml @@ -33,14 +33,8 @@ - - - - - - \ No newline at end of file diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/dod5015/DOD5015Model.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/dod5015/DOD5015Model.java index 1562e72f96..454ead7431 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/dod5015/DOD5015Model.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/dod5015/DOD5015Model.java @@ -32,7 +32,16 @@ public interface DOD5015Model public static final String DOD_URI = "http://www.alfresco.org/model/dod5015/1.0"; public static final String DOD_PREFIX = "dod"; - // DOD 5015 Custom Type aspects and their properties + // DOD Record + + public static final QName ASPECT_DOD_5015_RECORD = QName.createQName(DOD_URI, "dod5015record"); + public static final QName PROP_ORIGINATOR = QName.createQName(DOD_URI, "originator"); + public static final QName PROP_ORIGINATING_ORGANIZATION = QName.createQName(DOD_URI, "originatingOrganization"); + public static final QName PROP_PUBLICATION_DATE = QName.createQName(DOD_URI, "publicationDate"); + public static final QName PROP_MEDIA_TYPE = QName.createQName(DOD_URI, "mediaType"); + public static final QName PROP_FORMAT = QName.createQName(DOD_URI, "format"); + public static final QName PROP_DATE_RECEIVED = QName.createQName(DOD_URI, "dateReceived"); + // Scanned Record public static final QName ASPECT_SCANNED_RECORD = QName.createQName(DOD_URI, "scannedRecord"); public static final QName PROP_SCANNED_FORMAT = QName.createQName(DOD_URI, "scannedFormat"); diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/dod5015/model/dod/aspect/DOD5015RecordAspect.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/dod5015/model/dod/aspect/DOD5015RecordAspect.java new file mode 100644 index 0000000000..9cc6235fbf --- /dev/null +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/dod5015/model/dod/aspect/DOD5015RecordAspect.java @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2005-2011 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ +package org.alfresco.module.org_alfresco_module_rm.dod5015.model.dod.aspect; + +import org.alfresco.module.org_alfresco_module_rm.dod5015.DOD5015Model; +import org.alfresco.module.org_alfresco_module_rm.model.BaseBehaviourBean; +import org.alfresco.repo.node.NodeServicePolicies; +import org.alfresco.repo.policy.Behaviour.NotificationFrequency; +import org.alfresco.repo.policy.annotation.Behaviour; +import org.alfresco.repo.policy.annotation.BehaviourBean; +import org.alfresco.repo.policy.annotation.BehaviourKind; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.namespace.QName; + +/** + * dod:dod5015record behaviour bean + * + * @author Roy Wetherall + * @since 2.2 + */ +@BehaviourBean +public class DOD5015RecordAspect extends BaseBehaviourBean + implements NodeServicePolicies.OnAddAspectPolicy, + DOD5015Model +{ + /** + * Ensure that the DOD record aspect meta-data is applied. + * + * @see org.alfresco.repo.node.NodeServicePolicies.OnAddAspectPolicy#onAddAspect(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName) + */ + @Behaviour + ( + kind=BehaviourKind.CLASS, + type="rma:record", + notificationFrequency = NotificationFrequency.FIRST_EVENT + ) + @Override + public void onAddAspect(NodeRef nodeRef, QName aspect) + { + if (nodeService.exists(nodeRef) == true && + nodeService.hasAspect(nodeRef, ASPECT_DOD_5015_RECORD) == false) + { + nodeService.addAspect(nodeRef, ASPECT_DOD_5015_RECORD, null); + } + } + +} 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 733da7320d..99d285277b 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 @@ -124,7 +124,7 @@ public abstract class RecordsManagementFormFilter extends AbstractFilt * @param props * @param setId */ - protected void addPropertyFieldsToGroup(Form form, Map props, String setId) + protected void addPropertyFieldsToGroup(Form form, Map props, String setId, String setLabel) { if (props != null) { @@ -137,7 +137,7 @@ public abstract class RecordsManagementFormFilter extends AbstractFilt NodeRef nodeRef = new NodeRef(id); Serializable value = nodeService.getProperty(nodeRef, entry.getKey()); - FieldGroup group = new FieldGroup(setId, null, false, false, null); + FieldGroup group = new FieldGroup(setId, setLabel, false, false, null); Field field = FieldUtils.makePropertyField(prop, value, group, namespaceService, dictionaryService); form.addField(field); diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/forms/RecordsManagementNodeFormFilter.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/forms/RecordsManagementNodeFormFilter.java index 21ad07f4ca..d0b740615f 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/forms/RecordsManagementNodeFormFilter.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/forms/RecordsManagementNodeFormFilter.java @@ -39,7 +39,9 @@ import org.alfresco.repo.forms.Form; import org.alfresco.repo.forms.PropertyFieldDefinition; import org.alfresco.repo.forms.processor.node.FieldUtils; import org.alfresco.repo.forms.processor.node.FormFieldConstants; +import org.alfresco.repo.i18n.StaticMessageLookup; import org.alfresco.repo.security.authentication.AuthenticationUtil; +import org.alfresco.service.cmr.dictionary.AspectDefinition; import org.alfresco.service.cmr.dictionary.DataTypeDefinition; import org.alfresco.service.cmr.dictionary.PropertyDefinition; import org.alfresco.service.cmr.repository.NodeRef; @@ -169,7 +171,7 @@ public class RecordsManagementNodeFormFilter extends RecordsManagementFormFilter for (QName customisable : customisables) { - addPropertyFieldsToGroup(form, rmAdminService.getCustomPropertyDefinitions(customisable), CUSTOM_RM_FIELD_GROUP_ID); + addPropertyFieldsToGroup(form, rmAdminService.getCustomPropertyDefinitions(customisable), CUSTOM_RM_FIELD_GROUP_ID, null); } } @@ -188,7 +190,15 @@ public class RecordsManagementNodeFormFilter extends RecordsManagementFormFilter { String aspectName = aspect.getPrefixedQName(namespaceService).toPrefixString().replace(":", "-"); String setId = RM_METADATA_PREFIX + aspectName; - addPropertyFieldsToGroup(form, dictionaryService.getPropertyDefs(aspect), setId); + + String setLabel = null; + AspectDefinition aspectDefinition = dictionaryService.getAspect(aspect); + if (aspectDefinition != null) + { + setLabel = aspectDefinition.getTitle(new StaticMessageLookup()); + } + + addPropertyFieldsToGroup(form, dictionaryService.getPropertyDefs(aspect), setId, setLabel); } } } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/RecordsManagementModel.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/RecordsManagementModel.java index b6e560e244..44e39bea27 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/RecordsManagementModel.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/RecordsManagementModel.java @@ -100,12 +100,12 @@ public interface RecordsManagementModel extends RecordsManagementCustomModel public static final QName ASPECT_RECORD = QName.createQName(RM_URI, "record"); public static final QName PROP_DATE_FILED = QName.createQName(RM_URI, "dateFiled"); public static final QName PROP_ORIGIONAL_NAME = QName.createQName(RM_URI, "origionalName"); - public static final QName PROP_ORIGINATOR = QName.createQName(RM_URI, "originator"); - public static final QName PROP_ORIGINATING_ORGANIZATION = QName.createQName(RM_URI, "originatingOrganization"); - public static final QName PROP_PUBLICATION_DATE = QName.createQName(RM_URI, "publicationDate"); - public static final QName PROP_MEDIA_TYPE = QName.createQName(RM_URI, "mediaType"); - public static final QName PROP_FORMAT = QName.createQName(RM_URI, "format"); - public static final QName PROP_DATE_RECEIVED = QName.createQName(RM_URI, "dateReceived"); + // public static final QName PROP_ORIGINATOR = QName.createQName(RM_URI, "originator"); + // public static final QName PROP_ORIGINATING_ORGANIZATION = QName.createQName(RM_URI, "originatingOrganization"); + // public static final QName PROP_PUBLICATION_DATE = QName.createQName(RM_URI, "publicationDate"); + // public static final QName PROP_MEDIA_TYPE = QName.createQName(RM_URI, "mediaType"); + // public static final QName PROP_FORMAT = QName.createQName(RM_URI, "format"); + // public static final QName PROP_DATE_RECEIVED = QName.createQName(RM_URI, "dateReceived"); // Common record details public static final QName PROP_LOCATION = QName.createQName(RM_URI, "location"); diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/aspect/GhostedAspect.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/aspect/GhostedAspect.java index cc7aa4bbb2..977f95ee44 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/aspect/GhostedAspect.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/aspect/GhostedAspect.java @@ -21,6 +21,7 @@ package org.alfresco.module.org_alfresco_module_rm.model.rma.aspect; import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.module.org_alfresco_module_rm.model.BaseBehaviourBean; import org.alfresco.repo.content.ContentServicePolicies; +import org.alfresco.repo.policy.Behaviour.NotificationFrequency; import org.alfresco.repo.policy.annotation.Behaviour; import org.alfresco.repo.policy.annotation.BehaviourBean; import org.alfresco.repo.policy.annotation.BehaviourKind; @@ -33,9 +34,9 @@ import org.springframework.extensions.surf.util.I18NUtil; * @author Roy Wetherall * @since 2.2 */ -@BehaviourBean +@BehaviourBean ( - defaultType = "rma:ghosted" + defaultType = "rma:ghosted" // optional ) public class GhostedAspect extends BaseBehaviourBean implements ContentServicePolicies.OnContentUpdatePolicy @@ -47,11 +48,18 @@ public class GhostedAspect extends BaseBehaviourBean * Ensure that the content of a ghosted node can not be updated. * * @see org.alfresco.repo.content.ContentServicePolicies.OnContentUpdatePolicy#onContentUpdate(org.alfresco.service.cmr.repository.NodeRef, boolean) - */ + */ @Override @Behaviour ( - kind = BehaviourKind.CLASS + kind = BehaviourKind.CLASS, // required, use ASSOC for association behaviors + notificationFrequency = NotificationFrequency.EVERY_EVENT, // (defaults to EVERY_EVENT) + policy = "alf:onContentUpdate", // (defaults to alf:) + type = "rma:ghosted" // required, unless defaultType set + + // isService (default false) + // name (only needs to specified if associated behvaiour object needs to be accessed) + // assocType (defaults to cm:contains, used with BehaviourKind.ASSOC) ) public void onContentUpdate(NodeRef Content, boolean bNew) { diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/DispositionServiceImplTest.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/DispositionServiceImplTest.java index bc27c5b19d..51d18234b4 100644 --- a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/DispositionServiceImplTest.java +++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/DispositionServiceImplTest.java @@ -34,6 +34,7 @@ import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionActionD import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSchedule; import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService; import org.alfresco.module.org_alfresco_module_rm.disposition.property.DispositionProperty; +import org.alfresco.module.org_alfresco_module_rm.dod5015.DOD5015Model; import org.alfresco.module.org_alfresco_module_rm.event.EventCompletionDetails; import org.alfresco.module.org_alfresco_module_rm.job.PublishUpdatesJobExecuter; import org.alfresco.module.org_alfresco_module_rm.job.publish.PublishExecutor; @@ -851,7 +852,7 @@ public class DispositionServiceImplTest extends BaseRMTestCase adParams.put(PROP_DISPOSITION_ACTION_NAME, "cutoff"); adParams.put(PROP_DISPOSITION_DESCRIPTION, "test"); adParams.put(PROP_DISPOSITION_PERIOD, "week|1"); - adParams.put(PROP_DISPOSITION_PERIOD_PROPERTY, PROP_PUBLICATION_DATE.toString()); + adParams.put(PROP_DISPOSITION_PERIOD_PROPERTY, DOD5015Model.PROP_PUBLICATION_DATE.toString()); dispositionService.addDispositionActionDefinition(testRM263DispositionSchedule, adParams); @@ -869,7 +870,7 @@ public class DispositionServiceImplTest extends BaseRMTestCase @Override public Void run() throws Exception { - Date pubDate = (Date)nodeService.getProperty(testRM263Record, PROP_PUBLICATION_DATE); + Date pubDate = (Date)nodeService.getProperty(testRM263Record, DOD5015Model.PROP_PUBLICATION_DATE); assertNull(pubDate); Date asOfDate = (Date)nodeService.getProperty(testRM263Record, PROP_SEARCH_ASOF); assertNull(asOfDate); @@ -879,7 +880,7 @@ public class DispositionServiceImplTest extends BaseRMTestCase assertNull(da.getAsOfDate()); //rma:recordSearchDispositionActionAsOf" - nodeService.setProperty(testRM263Record, PROP_PUBLICATION_DATE, new Date()); + nodeService.setProperty(testRM263Record, DOD5015Model.PROP_PUBLICATION_DATE, new Date()); return null; } @@ -887,7 +888,7 @@ public class DispositionServiceImplTest extends BaseRMTestCase @Override public void test(Void result) throws Exception { - Date pubDate = (Date)nodeService.getProperty(testRM263Record, PROP_PUBLICATION_DATE); + Date pubDate = (Date)nodeService.getProperty(testRM263Record, DOD5015Model.PROP_PUBLICATION_DATE); assertNotNull(pubDate); Date asOfDate = (Date)nodeService.getProperty(testRM263Record, PROP_SEARCH_ASOF); assertNotNull(asOfDate); diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/RecordServiceImplTest.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/RecordServiceImplTest.java index 34983b059b..5b0682cce1 100644 --- a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/RecordServiceImplTest.java +++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/RecordServiceImplTest.java @@ -27,6 +27,7 @@ import org.alfresco.model.ContentModel; import org.alfresco.module.org_alfresco_module_rm.capability.Capability; import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel; import org.alfresco.module.org_alfresco_module_rm.dod5015.DOD5015Model; +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.role.FilePlanRoleService; import org.alfresco.module.org_alfresco_module_rm.role.Role; @@ -95,7 +96,7 @@ public class RecordServiceImplTest extends BaseRMTestCase { Set aspects = recordService.getRecordMetaDataAspects(); assertNotNull(aspects); - assertEquals(5, aspects.size()); + assertEquals(6, aspects.size()); assertTrue(aspects.containsAll(getAspectList())); return null; @@ -108,9 +109,15 @@ public class RecordServiceImplTest extends BaseRMTestCase */ private List getAspectList() { - QName[] aspects = new QName[] { DOD5015Model.ASPECT_DIGITAL_PHOTOGRAPH_RECORD, - DOD5015Model.ASPECT_PDF_RECORD, DOD5015Model.ASPECT_WEB_RECORD, - DOD5015Model.ASPECT_SCANNED_RECORD, ASPECT_RECORD_META_DATA }; + QName[] aspects = new QName[] + { + DOD5015Model.ASPECT_DIGITAL_PHOTOGRAPH_RECORD, + DOD5015Model.ASPECT_PDF_RECORD, + DOD5015Model.ASPECT_WEB_RECORD, + DOD5015Model.ASPECT_SCANNED_RECORD, + ASPECT_RECORD_META_DATA, + DOD5015Model.ASPECT_DOD_5015_RECORD + }; return Arrays.asList(aspects); } @@ -648,9 +655,9 @@ public class RecordServiceImplTest extends BaseRMTestCase @Override public void runImpl() throws Exception { - assertTrue(recordService.isPropertyEditable(recordOne, PROP_ORIGINATING_ORGANIZATION)); + assertTrue(recordService.isPropertyEditable(recordOne, RecordsManagementModel.PROP_LOCATION)); assertTrue(recordService.isPropertyEditable(recordOne, PROP_DESCRIPTION)); - assertTrue(recordService.isPropertyEditable(recordDeclaredOne, PROP_ORIGINATING_ORGANIZATION)); + assertTrue(recordService.isPropertyEditable(recordDeclaredOne, RecordsManagementModel.PROP_LOCATION)); assertFalse(recordService.isPropertyEditable(recordDeclaredOne, PROP_DESCRIPTION)); } }); @@ -663,9 +670,9 @@ public class RecordServiceImplTest extends BaseRMTestCase { assertEquals(AccessStatus.ALLOWED, permissionService.hasPermission(recordOne, RMPermissionModel.READ_RECORDS)); - assertFalse(recordService.isPropertyEditable(recordOne, PROP_ORIGINATING_ORGANIZATION)); + assertFalse(recordService.isPropertyEditable(recordOne, RecordsManagementModel.PROP_LOCATION)); assertFalse(recordService.isPropertyEditable(recordOne, PROP_DESCRIPTION)); - assertFalse(recordService.isPropertyEditable(recordDeclaredOne, PROP_ORIGINATING_ORGANIZATION)); + assertFalse(recordService.isPropertyEditable(recordDeclaredOne, RecordsManagementModel.PROP_LOCATION)); assertFalse(recordService.isPropertyEditable(recordDeclaredOne, PROP_DESCRIPTION)); } }, rmUserName); @@ -677,9 +684,9 @@ public class RecordServiceImplTest extends BaseRMTestCase @Override public void runImpl() throws Exception { - assertFalse(recordService.isPropertyEditable(recordOne, PROP_ORIGINATING_ORGANIZATION)); + assertFalse(recordService.isPropertyEditable(recordOne, RecordsManagementModel.PROP_LOCATION)); assertTrue(recordService.isPropertyEditable(recordOne, PROP_DESCRIPTION)); - assertFalse(recordService.isPropertyEditable(recordDeclaredOne, PROP_ORIGINATING_ORGANIZATION)); + assertFalse(recordService.isPropertyEditable(recordDeclaredOne, RecordsManagementModel.PROP_LOCATION)); assertFalse(recordService.isPropertyEditable(recordDeclaredOne, PROP_DESCRIPTION)); } }, nonRecordMetadata); @@ -691,9 +698,9 @@ public class RecordServiceImplTest extends BaseRMTestCase @Override public void runImpl() throws Exception { - assertTrue(recordService.isPropertyEditable(recordOne, PROP_ORIGINATING_ORGANIZATION)); + assertTrue(recordService.isPropertyEditable(recordOne, RecordsManagementModel.PROP_LOCATION)); assertFalse(recordService.isPropertyEditable(recordOne, PROP_DESCRIPTION)); - assertFalse(recordService.isPropertyEditable(recordDeclaredOne, PROP_ORIGINATING_ORGANIZATION)); + assertFalse(recordService.isPropertyEditable(recordDeclaredOne, RecordsManagementModel.PROP_LOCATION)); assertFalse(recordService.isPropertyEditable(recordDeclaredOne, PROP_DESCRIPTION)); } }, recordMetadata); @@ -705,9 +712,9 @@ public class RecordServiceImplTest extends BaseRMTestCase @Override public void runImpl() throws Exception { - assertFalse(recordService.isPropertyEditable(recordOne, PROP_ORIGINATING_ORGANIZATION)); + assertFalse(recordService.isPropertyEditable(recordOne, RecordsManagementModel.PROP_LOCATION)); assertFalse(recordService.isPropertyEditable(recordOne, PROP_DESCRIPTION)); - assertTrue(recordService.isPropertyEditable(recordDeclaredOne, PROP_ORIGINATING_ORGANIZATION)); + assertTrue(recordService.isPropertyEditable(recordDeclaredOne, RecordsManagementModel.PROP_LOCATION)); assertFalse(recordService.isPropertyEditable(recordDeclaredOne, PROP_DESCRIPTION)); } }, declaredRecordMetadata); @@ -739,36 +746,36 @@ public class RecordServiceImplTest extends BaseRMTestCase // test rmadmin canEditProperty(recordOne, ContentModel.PROP_DESCRIPTION, rmAdminName); - canEditProperty(recordOne, PROP_ORIGINATING_ORGANIZATION, rmAdminName); + canEditProperty(recordOne, RecordsManagementModel.PROP_LOCATION, rmAdminName); cantEditProperty(recordDeclaredOne, ContentModel.PROP_DESCRIPTION, rmAdminName); - canEditProperty(recordDeclaredOne, PROP_ORIGINATING_ORGANIZATION, rmAdminName); + canEditProperty(recordDeclaredOne, RecordsManagementModel.PROP_LOCATION, rmAdminName); // test normal user cantEditProperty(recordOne, ContentModel.PROP_DESCRIPTION, rmUserName); - cantEditProperty(recordOne, PROP_ORIGINATING_ORGANIZATION, rmUserName); + cantEditProperty(recordOne, RecordsManagementModel.PROP_LOCATION, rmUserName); cantEditProperty(recordDeclaredOne, ContentModel.PROP_DESCRIPTION, rmUserName); - cantEditProperty(recordDeclaredOne, PROP_ORIGINATING_ORGANIZATION, rmUserName); + cantEditProperty(recordDeclaredOne, RecordsManagementModel.PROP_LOCATION, rmUserName); // test undeclared record with edit non-record metadata capability canEditProperty(recordOne, ContentModel.PROP_DESCRIPTION, nonRecordMetadata); - cantEditProperty(recordOne, PROP_ORIGINATING_ORGANIZATION, nonRecordMetadata); + cantEditProperty(recordOne, RecordsManagementModel.PROP_LOCATION, nonRecordMetadata); // test declared record with edit non-record metadata capability cantEditProperty(recordDeclaredOne, ContentModel.PROP_DESCRIPTION, nonRecordMetadata); - cantEditProperty(recordDeclaredOne, PROP_ORIGINATING_ORGANIZATION, nonRecordMetadata); + cantEditProperty(recordDeclaredOne, RecordsManagementModel.PROP_LOCATION, nonRecordMetadata); // test undeclared record with edit record metadata capability cantEditProperty(recordOne, ContentModel.PROP_DESCRIPTION, recordMetadata); - canEditProperty(recordOne, PROP_ORIGINATING_ORGANIZATION, recordMetadata); + canEditProperty(recordOne, RecordsManagementModel.PROP_LOCATION, recordMetadata); // test declared record with edit record metadata capability cantEditProperty(recordDeclaredOne, ContentModel.PROP_DESCRIPTION, recordMetadata); - cantEditProperty(recordDeclaredOne, PROP_ORIGINATING_ORGANIZATION, recordMetadata); + cantEditProperty(recordDeclaredOne, RecordsManagementModel.PROP_LOCATION, recordMetadata); // test undeclared record with edit declared record metadata capability cantEditProperty(recordOne, ContentModel.PROP_DESCRIPTION, declaredRecordMetadata); - cantEditProperty(recordOne, PROP_ORIGINATING_ORGANIZATION, declaredRecordMetadata); + cantEditProperty(recordOne, RecordsManagementModel.PROP_LOCATION, declaredRecordMetadata); // test declared record with edit declared record metadata capability cantEditProperty(recordDeclaredOne, ContentModel.PROP_DESCRIPTION, declaredRecordMetadata); - canEditProperty(recordDeclaredOne, PROP_ORIGINATING_ORGANIZATION, declaredRecordMetadata); + canEditProperty(recordDeclaredOne, RecordsManagementModel.PROP_LOCATION, declaredRecordMetadata); } diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/util/CommonRMTestUtils.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/util/CommonRMTestUtils.java index 420f7cabe2..2c5bfea085 100644 --- a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/util/CommonRMTestUtils.java +++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/util/CommonRMTestUtils.java @@ -23,6 +23,7 @@ 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.DispositionSchedule; import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService; +import org.alfresco.module.org_alfresco_module_rm.dod5015.DOD5015Model; 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.role.FilePlanRoleService; @@ -207,13 +208,13 @@ public class CommonRMTestUtils implements RecordsManagementModel try { // Declare record - nodeService.setProperty(record, RecordsManagementModel.PROP_PUBLICATION_DATE, new Date()); - nodeService.setProperty(record, RecordsManagementModel.PROP_MEDIA_TYPE, "mediaTypeValue"); - nodeService.setProperty(record, RecordsManagementModel.PROP_FORMAT, "formatValue"); - nodeService.setProperty(record, RecordsManagementModel.PROP_DATE_RECEIVED, new Date()); + nodeService.setProperty(record, DOD5015Model.PROP_PUBLICATION_DATE, new Date()); + nodeService.setProperty(record, DOD5015Model.PROP_MEDIA_TYPE, "mediaTypeValue"); + nodeService.setProperty(record, DOD5015Model.PROP_FORMAT, "formatValue"); + nodeService.setProperty(record, DOD5015Model.PROP_DATE_RECEIVED, new Date()); nodeService.setProperty(record, RecordsManagementModel.PROP_DATE_FILED, new Date()); - nodeService.setProperty(record, RecordsManagementModel.PROP_ORIGINATOR, "origValue"); - nodeService.setProperty(record, RecordsManagementModel.PROP_ORIGINATING_ORGANIZATION, "origOrgValue"); + nodeService.setProperty(record, DOD5015Model.PROP_ORIGINATOR, "origValue"); + nodeService.setProperty(record, DOD5015Model.PROP_ORIGINATING_ORGANIZATION, "origOrgValue"); nodeService.setProperty(record, ContentModel.PROP_TITLE, "titleValue"); actionService.executeRecordsManagementAction(record, "declareRecord"); }