diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/BroadcastDispositionActionDefinitionUpdateAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/BroadcastDispositionActionDefinitionUpdateAction.java index b1ce2dc692..fe5bb8c10e 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/BroadcastDispositionActionDefinitionUpdateAction.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/BroadcastDispositionActionDefinitionUpdateAction.java @@ -285,8 +285,10 @@ public class BroadcastDispositionActionDefinitionUpdateAction extends RMActionEx nodeService.removeChild(nextAction.getNodeRef(), event.getNodeRef()); if (logger.isDebugEnabled()) + { logger.debug("Removed '" + eventName + "' from next action '" + nextAction.getName() + "' (" + nextAction.getNodeRef() + ")"); + } } } 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 fd1f612530..fe51bc255f 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 @@ -49,34 +49,36 @@ public class OpenRecordFolderAction extends RMActionExecuterAbstractBase @Override protected void executeImpl(Action action, NodeRef actionedUponNodeRef) { - if (nodeService.exists(actionedUponNodeRef) == true && - freezeService.isFrozen(actionedUponNodeRef) == false) - { - // 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 (nodeService.exists(actionedUponNodeRef) == true && + freezeService.isFrozen(actionedUponNodeRef) == false) + { + // 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); - if (assocRef != null) - { - actionedUponNodeRef = assocRef.getParentRef(); - } - } + if (recordService.isRecord(actionedUponNodeRef)) + { + ChildAssociationRef assocRef = nodeService.getPrimaryParent(actionedUponNodeRef); + if (assocRef != null) + { + actionedUponNodeRef = assocRef.getParentRef(); + } + } - if (recordFolderService.isRecordFolder(actionedUponNodeRef) == true) - { - Boolean isClosed = (Boolean) nodeService.getProperty(actionedUponNodeRef, PROP_IS_CLOSED); - if (Boolean.TRUE.equals(isClosed) == true) - { - nodeService.setProperty(actionedUponNodeRef, PROP_IS_CLOSED, false); - } - } - else - { - if (logger.isWarnEnabled()) - logger.warn(I18NUtil.getMessage(MSG_NO_OPEN_RECORD_FOLDER, actionedUponNodeRef.toString())); - } - } + if (recordFolderService.isRecordFolder(actionedUponNodeRef) == true) + { + Boolean isClosed = (Boolean) nodeService.getProperty(actionedUponNodeRef, PROP_IS_CLOSED); + if (Boolean.TRUE.equals(isClosed) == true) + { + nodeService.setProperty(actionedUponNodeRef, PROP_IS_CLOSED, false); + } + } + else + { + if (logger.isWarnEnabled()) + { + logger.warn(I18NUtil.getMessage(MSG_NO_OPEN_RECORD_FOLDER, actionedUponNodeRef.toString())); + } + } + } } } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/admin/RecordsManagementAdminServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/admin/RecordsManagementAdminServiceImpl.java index 0031b2ba85..a15cb1d9a8 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/admin/RecordsManagementAdminServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/admin/RecordsManagementAdminServiceImpl.java @@ -224,10 +224,10 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin beforeRemoveReferenceDelegate = policyComponent.registerClassPolicy(BeforeRemoveReference.class); onRemoveReferenceDelegate = policyComponent.registerClassPolicy(OnRemoveReference.class); } - + /** * Invoke before create reference policy - * + * * @param fromNodeRef * @param toNodeRef * @param reference @@ -243,7 +243,7 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin /** * Invoke on create reference policy - * + * * @param fromNodeRef * @param toNodeRef * @param reference @@ -259,7 +259,7 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin /** * Invoke before remove reference policy - * + * * @param fromNodeRef * @param toNodeRef * @param reference @@ -368,7 +368,7 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin public Void doWork() throws Exception { if (dictionaryService.getAllModels().contains(RecordsManagementCustomModel.RM_CUSTOM_MODEL) == true) - { + { NodeRef nodeRef = childAssocRef.getChildRef(); QName type = nodeService.getType(nodeRef); while (type != null && ContentModel.TYPE_CMOBJECT.equals(type) == false) @@ -378,7 +378,7 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin QName customPropertyAspect = getCustomAspect(type); nodeService.addAspect(nodeRef, customPropertyAspect, null); } - + TypeDefinition def = dictionaryService.getType(type); if (def != null) { @@ -844,7 +844,10 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin throw new AlfrescoRuntimeException(I18NUtil.getMessage(MSG_PROP_EXIST, propQName)); } - if (newName == null) return propQName; + if (newName == null) + { + return propQName; + } QName newPropQName = getQNameForClientId(newName); if (newPropQName != null) @@ -888,7 +891,10 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin throw new AlfrescoRuntimeException(I18NUtil.getMessage(MSG_PROP_EXIST, propQName)); } - if (newLabel == null) return propQName; + if (newLabel == null) + { + return propQName; + } NodeRef modelRef = getCustomModelRef(propQName.getNamespaceURI()); M2Model deserializedModel = readCustomContentModel(modelRef); @@ -1179,7 +1185,7 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin nodeService.removeChildAssociation(chRef); } } - + return null; } }); @@ -1619,7 +1625,10 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin { try { - if (contentIn != null) contentIn.close(); + if (contentIn != null) + { + contentIn.close(); + } } catch (IOException ignored) { 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 9cb8eff44d..203350eea2 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 @@ -277,19 +277,29 @@ public abstract class AbstractCapability extends RMSecurityCommon public boolean equals(Object obj) { if (this == obj) + { return true; + } if (obj == null) + { return false; + } if (getClass() != obj.getClass()) + { return false; + } final AbstractCapability other = (AbstractCapability) obj; if (getName() == null) { if (other.getName() != null) + { return false; + } } else if (!getName().equals(other.getName())) + { return false; + } return true; } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/email/CustomMapping.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/email/CustomMapping.java index 8f8e5f6c1e..b288fd5c23 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/email/CustomMapping.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/email/CustomMapping.java @@ -19,51 +19,51 @@ package org.alfresco.module.org_alfresco_module_rm.email; /** - * Custom EMail Mapping + * Custom EMail Mapping */ public class CustomMapping { private String from; private String to; - + /** * Default constructor. */ - public CustomMapping() - { + public CustomMapping() + { } - + /** * Default constructor. * @param from * @param to */ - public CustomMapping(String from, String to) + public CustomMapping(String from, String to) { this.from = from; this.to = to; } - + public void setFrom(String from) { this.from = from; } - + public String getFrom() { return from; } - + public void setTo(String to) { this.to = to; } - + public String getTo() { return to; } - + public int hashCode() { if(from != null && to != null) @@ -75,7 +75,7 @@ public class CustomMapping return 1; } } - + /* * (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) @@ -84,14 +84,20 @@ public class CustomMapping public boolean equals(Object obj) { if (this == obj) + { return true; + } if (obj == null) + { return false; + } if (getClass() != obj.getClass()) + { return false; - + } + final CustomMapping other = (CustomMapping) obj; - + if (!from.equals(other.getFrom())) { return false; diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/event/RecordsManagementEventServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/event/RecordsManagementEventServiceImpl.java index 47badd50b3..8fd5b899ed 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/event/RecordsManagementEventServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/event/RecordsManagementEventServiceImpl.java @@ -135,7 +135,7 @@ public class RecordsManagementEventServiceImpl implements RecordsManagementEvent } return false; } - + /** * @see org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEventService#canCreateEvent(java.lang.String, java.lang.String) */ @@ -227,7 +227,7 @@ public class RecordsManagementEventServiceImpl implements RecordsManagementEvent " has an undefined eventType. (" + eventType + ")"); } - + // Create event and add to map RecordsManagementEvent event = new RecordsManagementEvent(eventType, eventName, eventDisplayLabel); getEventMap().put(event.getName(), event); @@ -301,9 +301,12 @@ public class RecordsManagementEventServiceImpl implements RecordsManagementEvent String eventDisplayLabel = eventJSON.getString("eventDisplayLabel"); String translated = I18NUtil.getMessage(eventDisplayLabel); - if (translated!=null ) eventDisplayLabel = translated; + if (translated != null) + { + eventDisplayLabel = translated; + } + - // Check that the eventType is valid if (eventTypes.containsKey(eventType) == false) { 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 d7a5ed46b0..09baf1cf56 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 @@ -190,14 +190,14 @@ public class RecordsManagementNodeFormFilter extends RecordsManagementFormFilter { String aspectName = aspect.getPrefixedQName(namespaceService).toPrefixString().replace(":", "-"); String setId = RM_METADATA_PREFIX + aspectName; - + String setLabel = null; AspectDefinition aspectDefinition = dictionaryService.getAspect(aspect); if (aspectDefinition != null) { setLabel = aspectDefinition.getTitle(new StaticMessageLookup()); } - + addPropertyFieldsToGroup(form, dictionaryService.getPropertyDefs(aspect), setId, setLabel); } } @@ -385,6 +385,8 @@ public class RecordsManagementNodeFormFilter extends RecordsManagementFormFilter } if (logger.isDebugEnabled()) + { logger.debug("Set 'rma:recordLevelDisposition' field to be protected as record folders or records are present"); + } } } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/RecordsManagementSearchBehaviour.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/RecordsManagementSearchBehaviour.java index ecd489e35c..137b1fcc73 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/RecordsManagementSearchBehaviour.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/RecordsManagementSearchBehaviour.java @@ -319,7 +319,7 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel /** * Helper method to apply the search aspect - * + * * @param nodeRef node reference */ private void applySearchAspect(NodeRef nodeRef) @@ -332,7 +332,9 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel nodeService.addAspect(nodeRef, ASPECT_RM_SEARCH , null); if (logger.isDebugEnabled()) + { logger.debug("Added search aspect to node: " + nodeRef); + } } } finally @@ -343,7 +345,7 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel /** * On add record aspect behaviour implementation - * + * * @param nodeRef node reference * @param aspectTypeQName aspect type qname */ @@ -367,7 +369,7 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel /** * On create record folder behaviour implmentation - * + * * @param childAssocRef child association reference */ public void recordFolderCreate(final ChildAssociationRef childAssocRef) @@ -391,7 +393,7 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel /** * Helper method to setup the disposition schedule properties - * + * * @param recordOrFolder node reference of record or record folder */ private void setupDispositionScheduleProperties(NodeRef recordOrFolder) @@ -416,7 +418,7 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel /** * On disposition action create behaviour implementation - * + * * @param childAssocRef child association reference */ public void dispositionActionCreate(ChildAssociationRef childAssocRef) @@ -490,7 +492,7 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel /** * On update of event execution information behaviour\ - * + * * @param childAssocRef child association reference * @param isNewNode true if a new node, false otherwise */ @@ -525,7 +527,7 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel /** * On event execution delete behaviour implementation. - * + * * @param childAssocRef child association reference * @param isNodeArchived true if node is archived on delete, false otherwise */ @@ -552,7 +554,7 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel /** * Helper method to setup disposition action events. - * + * * @param nodeRef node reference * @param da disposition action */ @@ -583,7 +585,7 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel /** * On add search aspect behaviour implementation. - * + * * @param nodeRef node reference * @param aspectTypeQName aspect type qname */ @@ -607,7 +609,7 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel /** * On add aspect vital record defintion behaviour implementation. - * + * * @param nodeRef node reference * @param aspectTypeQName aspect tyep qname */ @@ -623,7 +625,7 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel { updateVitalRecordDefinitionValues(nodeRef); } - + return null; } }); @@ -631,7 +633,7 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel /** * On update vital record definition properties behaviour implementation. - * + * * @param nodeRef node reference * @param before before properties * @param after after properties @@ -655,7 +657,7 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel updateVitalRecordDefinitionValues(nodeRef); } } - + return null; } }); @@ -663,7 +665,7 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel /** * Helper method to update the vital record defintion values - * + * * @param nodeRef node reference */ private void updateVitalRecordDefinitionValues(NodeRef nodeRef) @@ -685,7 +687,7 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel /** * Helper method to set vital record definition details. - * + * * @param nodeRef node reference */ private void setVitalRecordDefintionDetails(NodeRef nodeRef) @@ -716,7 +718,7 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel /** * On remove frozen aspect aspect behaviour implementation - * + * * @param nodeRef node reference * @param aspectTypeQName aspect type qname */ @@ -731,7 +733,7 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel /** * Frozen aspect properties update behavour implementation. - * + * * @param nodeRef node reference * @param before before properties * @param after after proeprties @@ -806,7 +808,7 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel /** * Helper method to set disposition schedule properties - * + * * @param recordOrFolder node reference * @param schedule dispostion schedule */ @@ -855,10 +857,10 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel return result; } - + /** * Helper method to get the record folders contained in the provided record category. - * + * * @param recordCategoryNode record category node reference * @return List contained record folders */ diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/aspect/FilePlanComponentAspect.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/aspect/FilePlanComponentAspect.java index a9bcf55fd1..af9e670e35 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/aspect/FilePlanComponentAspect.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/aspect/FilePlanComponentAspect.java @@ -46,7 +46,7 @@ import org.alfresco.util.PropertyMap; /** * rma:filePlanComponent behaviour bean - * + * * @author Roy Wetherall * @since 2.2 */ @@ -58,21 +58,21 @@ public class FilePlanComponentAspect extends BaseBehaviourBean implements NodeServicePolicies.OnUpdatePropertiesPolicy, NodeServicePolicies.OnAddAspectPolicy, NodeServicePolicies.OnMoveNodePolicy - - + + { /** Well-known location of the scripts folder. */ private NodeRef scriptsFolderNodeRef = new NodeRef("workspace", "SpacesStore", "rm_behavior_scripts"); - + /** script service */ private ScriptService scriptService; - + /** namespace service */ private NamespaceService namespaceService; - + /** file plan service */ private FilePlanService filePlanService; - + /** * @param scriptService set script service */ @@ -80,15 +80,15 @@ public class FilePlanComponentAspect extends BaseBehaviourBean { this.scriptService = scriptService; } - + /** * @param namespaceService namespace service */ public void setNamespaceService(NamespaceService namespaceService) { this.namespaceService = namespaceService; - } - + } + /** * @param filePlanService file plan service */ @@ -96,7 +96,7 @@ public class FilePlanComponentAspect extends BaseBehaviourBean { this.filePlanService = filePlanService; } - + /** * @see org.alfresco.repo.node.NodeServicePolicies.OnUpdatePropertiesPolicy#onUpdateProperties(org.alfresco.service.cmr.repository.NodeRef, java.util.Map, java.util.Map) */ @@ -122,7 +122,7 @@ public class FilePlanComponentAspect extends BaseBehaviourBean } }, 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. @@ -135,7 +135,7 @@ public class FilePlanComponentAspect extends BaseBehaviourBean * @see #lookupScripts(Map, Map) */ private void lookupAndExecuteScripts(NodeRef nodeWithChangedProperties, - Map oldProps, + Map oldProps, Map newProps) { List scriptRefs = lookupScripts(oldProps, newProps); @@ -150,7 +150,7 @@ public class FilePlanComponentAspect extends BaseBehaviourBean 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. @@ -179,12 +179,15 @@ public class FilePlanComponentAspect extends BaseBehaviourBean String expectedScriptName = shortPrefix + "_" + localName + ".js"; NodeRef nextElement = nodeService.getChildByName(scriptsFolderNodeRef, ContentModel.ASSOC_CONTAINS, expectedScriptName); - if (nextElement != null) result.add(nextElement); + if (nextElement != null) + { + result.add(nextElement); + } } return result; } - + /** * @see org.alfresco.repo.node.NodeServicePolicies.OnAddAspectPolicy#onAddAspect(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName) */ @@ -202,7 +205,7 @@ public class FilePlanComponentAspect extends BaseBehaviourBean public Void doWork() throws Exception { if (nodeService.exists(nodeRef) == true) - { + { // Look up the root and set on the aspect if found NodeRef root = filePlanService.getFilePlan(nodeRef); if (root != null) @@ -210,10 +213,10 @@ public class FilePlanComponentAspect extends BaseBehaviourBean nodeService.setProperty(nodeRef, PROP_ROOT_NODEREF, root); } } - + return null; } - }, AuthenticationUtil.getSystemUserName()); + }, AuthenticationUtil.getSystemUserName()); } /** @@ -232,7 +235,7 @@ public class FilePlanComponentAspect extends BaseBehaviourBean @Override public Void doWork() throws Exception { - if (nodeService.exists(newChildAssocRef.getParentRef()) == true && + if (nodeService.exists(newChildAssocRef.getParentRef()) == true && nodeService.exists(newChildAssocRef.getChildRef()) == true) { // Look up the root and re-set the value currently stored on the aspect @@ -240,15 +243,15 @@ public class FilePlanComponentAspect extends BaseBehaviourBean // NOTE: set the null value if no root found nodeService.setProperty(newChildAssocRef.getChildRef(), PROP_ROOT_NODEREF, root); } - + return null; } - }, AuthenticationUtil.getSystemUserName()); + }, AuthenticationUtil.getSystemUserName()); } - + /** * Copy behaviour call back - * + * * @param classRef class reference * @param copyDetail details of the information being copied * @return CopyBehaviourCallback @@ -273,7 +276,7 @@ public class FilePlanComponentAspect extends BaseBehaviourBean // Do not copy the associations return null; } - + /** * @see org.alfresco.repo.copy.CopyBehaviourCallback#getCopyProperties(org.alfresco.service.namespace.QName, org.alfresco.repo.copy.CopyDetails, java.util.Map) */ @@ -298,8 +301,8 @@ public class FilePlanComponentAspect extends BaseBehaviourBean { // Ensure the aspect is copied return true; - } + } }; - } - + } + } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/recordfolder/RecordFolderServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/recordfolder/RecordFolderServiceImpl.java index bebf0ad074..21588b887a 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/recordfolder/RecordFolderServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/recordfolder/RecordFolderServiceImpl.java @@ -307,7 +307,9 @@ public class RecordFolderServiceImpl extends ServiceBaseImpl else { if (logger.isWarnEnabled()) + { logger.warn(I18NUtil.getMessage(MSG_CLOSE_RECORD_FOLDER_NOT_FOLDER, nodeRef.toString())); + } } } } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/role/FilePlanRoleServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/role/FilePlanRoleServiceImpl.java index 95bddf438b..b0798e7a77 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/role/FilePlanRoleServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/role/FilePlanRoleServiceImpl.java @@ -77,10 +77,10 @@ public class FilePlanRoleServiceImpl implements FilePlanRoleService, private static final String MSG_FIRST_NAME = "bootstrap.rmadmin.firstName"; private static final String MSG_LAST_NAME = "bootstrap.rmadmin.lastName"; private static final String MSG_ALL_ROLES = "rm.role.all"; - + /** Location of bootstrap role JSON */ private static final String BOOTSTRAP_ROLE_JSON_LOCATION = "alfresco/module/org_alfresco_module_rm/security/rm-default-roles-bootstrap.json"; - + /** Capability service */ private CapabilityService capabilityService; @@ -98,18 +98,18 @@ public class FilePlanRoleServiceImpl implements FilePlanRoleService, /** File plan authentication service */ private FilePlanAuthenticationService filePlanAuthenticationService; - + /** mutable authenticaiton service */ private MutableAuthenticationService authenticationService; - + /** person service */ private PersonService personService; - + private BootstrapImporterModuleComponent bootstrapImporterModule; /** Records management role zone */ public static final String RM_ROLE_ZONE_PREFIX = "rmRoleZone"; - + /** * Records Management Config Node */ @@ -165,15 +165,15 @@ public class FilePlanRoleServiceImpl implements FilePlanRoleService, { this.filePlanAuthenticationService = filePlanAuthenticationService; } - - /** + + /** * @param personService person service */ public void setPersonService(PersonService personService) { this.personService = personService; } - + /** * @param authenticationService mutable authentication service */ @@ -181,9 +181,9 @@ public class FilePlanRoleServiceImpl implements FilePlanRoleService, { this.authenticationService = authenticationService; } - + /** - * + * * @param bootstrapImporterModuleComponent */ public void setBootstrapImporterModuleComponent(BootstrapImporterModuleComponent bootstrapImporterModuleComponent) @@ -203,7 +203,7 @@ public class FilePlanRoleServiceImpl implements FilePlanRoleService, // This is not the spaces store - probably the archive store return; } - + if (nodeService.exists(filePlan) == true) { List systemContainers = AuthenticationUtil.runAsSystem(new AuthenticationUtil.RunAsWork>() @@ -211,19 +211,19 @@ public class FilePlanRoleServiceImpl implements FilePlanRoleService, public List doWork() { List systemContainers = new ArrayList(3); - + //In a multi tenant store we need to initialize the rm config if it has been done yet - NodeRef nodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, CONFIG_NODEID); + NodeRef nodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, CONFIG_NODEID); if (nodeService.exists(nodeRef) == false) { bootstrapImporterModule.execute(); } - + // Create "all" role group for root node String allRoles = authorityService.createAuthority( - AuthorityType.GROUP, - getAllRolesGroupShortName(filePlan), - I18NUtil.getMessage(MSG_ALL_ROLES), + AuthorityType.GROUP, + getAllRolesGroupShortName(filePlan), + I18NUtil.getMessage(MSG_ALL_ROLES), new HashSet(Arrays.asList(RMAuthority.ZONE_APP_RM))); // Set the permissions @@ -235,10 +235,10 @@ public class FilePlanRoleServiceImpl implements FilePlanRoleService, // Create the transfer and hold containers systemContainers.add(filePlanService.createHoldContainer(filePlan)); systemContainers.add(filePlanService.createTransferContainer(filePlan)); - + // Create the unfiled record container systemContainers.add(filePlanService.createUnfiledContainer(filePlan)); - + return systemContainers; } }); @@ -389,7 +389,7 @@ public class FilePlanRoleServiceImpl implements FilePlanRoleService, { // Create the RM Admin User if it does not already exist createRMAdminUser(); - + // add the dynamic admin authority authorityService.addAuthority(role.getRoleGroupName(), filePlanAuthenticationService.getRmAdminUserName()); } @@ -491,7 +491,10 @@ public class FilePlanRoleServiceImpl implements FilePlanRoleService, String name = getShortRoleName(groupShortName, rmRootNode); String displayLabel = authorityService.getAuthorityDisplayName(roleAuthority); String translated = I18NUtil.getMessage(displayLabel); - if (translated!=null ) displayLabel = translated; + if (translated != null) + { + displayLabel = translated; + } Set capabilities = getCapabilitiesImpl(rmRootNode, roleAuthority); Role role = new Role(name, displayLabel, capabilities, roleAuthority, groupShortName); @@ -534,7 +537,10 @@ public class FilePlanRoleServiceImpl implements FilePlanRoleService, String name = getShortRoleName(groupShortName, rmRootNode); String displayLabel = authorityService.getAuthorityDisplayName(roleAuthority); String translated = I18NUtil.getMessage(displayLabel); - if (translated!=null ) displayLabel = translated; + if (translated != null) + { + displayLabel = translated; + } Set capabilities = getCapabilitiesImpl(rmRootNode, roleAuthority); Role role = new Role(name, displayLabel, capabilities, roleAuthority, groupShortName); @@ -697,14 +703,14 @@ public class FilePlanRoleServiceImpl implements FilePlanRoleService, Set zones = new HashSet(2); zones.add(getZoneName(rmRootNode)); zones.add(RMAuthority.ZONE_APP_RM); - + // Look up string, default to passed value if none found String groupDisplayLabel = I18NUtil.getMessage(roleDisplayLabel); if (groupDisplayLabel == null) { groupDisplayLabel = roleDisplayLabel; } - + String roleGroup = authorityService.createAuthority(AuthorityType.GROUP, fullRoleName, groupDisplayLabel, zones); // Add the roleGroup to the "all" role group @@ -899,7 +905,7 @@ public class FilePlanRoleServiceImpl implements FilePlanRoleService, { return authorityService.getName(AuthorityType.GROUP, getAllRolesGroupShortName(filePlan)); } - + /** * Create the RMAdmin user if it does not already exist */ @@ -907,18 +913,18 @@ public class FilePlanRoleServiceImpl implements FilePlanRoleService, { /** generate rm admin password */ String password = GUID.generate(); - + String user = filePlanAuthenticationService.getRmAdminUserName(); String firstName = I18NUtil.getMessage(MSG_FIRST_NAME); String lastName = I18NUtil.getMessage(MSG_LAST_NAME); - + if (authenticationService.authenticationExists(user) == false) { if (logger.isDebugEnabled() == true) { logger.debug(" ... creating RM Admin user"); } - + authenticationService.createAuthentication(user, password.toCharArray()); Map properties = new HashMap(); properties.put(ContentModel.PROP_USERNAME, user); diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/ApplyDodCertModelFixesGet.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/ApplyDodCertModelFixesGet.java index fd02511c96..f3a3678d4c 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/ApplyDodCertModelFixesGet.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/ApplyDodCertModelFixesGet.java @@ -55,10 +55,10 @@ import org.springframework.extensions.webscripts.WebScriptRequest; * they are safe to apply to a live database i.e. without side-effect to existing data and safe * to call multiple times. *

- * + * * TODO This webscript should be removed after DOD certification as none of these patches are needed * for a newly-installed DoD amp. - * + * * @author neilm */ @Deprecated @@ -70,7 +70,7 @@ public class ApplyDodCertModelFixesGet extends DeclarativeWebScript private static final String RMC_CUSTOM_RECORD_CATEGORY_PROPERTIES = RecordsManagementCustomModel.RM_CUSTOM_PREFIX + ":customRecordCategoryProperties"; private static final String RMC_CUSTOM_RECORD_FOLDER_PROPERTIES = RecordsManagementCustomModel.RM_CUSTOM_PREFIX + ":customRecordFolderProperties"; private static final String RMC_CUSTOM_RECORD_PROPERTIES = RecordsManagementCustomModel.RM_CUSTOM_PREFIX + ":customRecordProperties"; - + /** Logger */ private static Log logger = LogFactory.getLog(ApplyDodCertModelFixesGet.class); @@ -88,11 +88,11 @@ public class ApplyDodCertModelFixesGet extends DeclarativeWebScript { logger.info("Applying webscript-based patches to RM custom model in the repo."); } - + M2Model customModel = readCustomContentModel(); - + M2Aspect customAssocsAspect = customModel.getAspect(RecordsManagementAdminServiceImpl.RMC_CUSTOM_ASSOCS); - + if (customAssocsAspect == null) { final String msg = "Unknown aspect: " + RecordsManagementAdminServiceImpl.RMC_CUSTOM_ASSOCS; @@ -102,8 +102,8 @@ public class ApplyDodCertModelFixesGet extends DeclarativeWebScript } throw new AlfrescoRuntimeException(msg); } - - + + // MOB-1573. All custom references should have many-many multiplicity. if (logger.isInfoEnabled()) { @@ -114,17 +114,17 @@ public class ApplyDodCertModelFixesGet extends DeclarativeWebScript { classAssoc.setSourceMany(true); classAssoc.setTargetMany(true); - + } - - + + //MOB-1621. Custom fields should be created as untokenized by default. if (logger.isInfoEnabled()) { logger.info("MOB-1621. Custom fields should be created as untokenized by default."); } - + List allCustomPropertiesAspects = new ArrayList(4); allCustomPropertiesAspects.add(RMC_CUSTOM_RECORD_SERIES_PROPERTIES); allCustomPropertiesAspects.add(RMC_CUSTOM_RECORD_CATEGORY_PROPERTIES); @@ -143,9 +143,9 @@ public class ApplyDodCertModelFixesGet extends DeclarativeWebScript } } - + writeCustomContentModel(customModel); - + if (logger.isInfoEnabled()) { logger.info("Completed application of webscript-based patches to RM custom model in the repo."); @@ -153,17 +153,17 @@ public class ApplyDodCertModelFixesGet extends DeclarativeWebScript Map model = new HashMap(1, 1.0f); model.put("success", true); - + return model; } - + private M2Model readCustomContentModel() { ContentReader reader = this.contentService.getReader(RM_CUSTOM_MODEL_NODE_REF, ContentModel.TYPE_CONTENT); - + if (reader.exists() == false) {throw new AlfrescoRuntimeException("RM CustomModel has no content.");} - + InputStream contentIn = null; M2Model deserializedModel = null; try @@ -175,7 +175,10 @@ public class ApplyDodCertModelFixesGet extends DeclarativeWebScript { try { - if (contentIn != null) contentIn.close(); + if (contentIn != null) + { + contentIn.close(); + } } catch (IOException ignored) { @@ -191,10 +194,10 @@ public class ApplyDodCertModelFixesGet extends DeclarativeWebScript ContentModel.TYPE_CONTENT, true); writer.setMimetype(MimetypeMap.MIMETYPE_XML); writer.setEncoding("UTF-8"); - + ByteArrayOutputStream baos = new ByteArrayOutputStream(); deserializedModel.toXML(baos); - + String updatedModelXml; try { diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/ApplyFixMob1573Get.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/ApplyFixMob1573Get.java index a3b85a0343..3940e4a7ab 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/ApplyFixMob1573Get.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/ApplyFixMob1573Get.java @@ -46,9 +46,9 @@ import org.springframework.extensions.webscripts.WebScriptRequest; * This webscript patches the RM custom model as fix for MOB-1573. It is only necessary for databases * that had their RM amps initialised before the fix went in. * There is no side-effect if it is called when it is not needed or if it is called multiple times. - * + * * TODO This webscript should be removed after DOD certification. - * + * * @author neilm */ @Deprecated @@ -56,7 +56,7 @@ public class ApplyFixMob1573Get extends DeclarativeWebScript implements RecordsManagementModel { private static final NodeRef RM_CUSTOM_MODEL_NODE_REF = new NodeRef("workspace://SpacesStore/records_management_custom_model"); - + private ContentService contentService; public void setContentService(ContentService contentService) @@ -68,17 +68,17 @@ public class ApplyFixMob1573Get extends DeclarativeWebScript public Map executeImpl(WebScriptRequest req, Status status, Cache cache) { M2Model customModel = readCustomContentModel(); - + // Go through every custom reference defined in the custom model and make sure that it // has many-to-many multiplicity String aspectName = RecordsManagementAdminServiceImpl.RMC_CUSTOM_ASSOCS; M2Aspect customAssocsAspect = customModel.getAspect(aspectName); - + if (customAssocsAspect == null) { throw new AlfrescoRuntimeException("Unknown aspect: "+aspectName); } - + for (M2ClassAssociation classAssoc : customAssocsAspect.getAssociations()) { classAssoc.setSourceMany(true); @@ -86,20 +86,20 @@ public class ApplyFixMob1573Get extends DeclarativeWebScript } writeCustomContentModel(customModel); - + Map model = new HashMap(1, 1.0f); model.put("success", true); - + return model; } - + private M2Model readCustomContentModel() { ContentReader reader = this.contentService.getReader(RM_CUSTOM_MODEL_NODE_REF, ContentModel.TYPE_CONTENT); - + if (reader.exists() == false) {throw new AlfrescoRuntimeException("RM CustomModel has no content.");} - + InputStream contentIn = null; M2Model deserializedModel = null; try @@ -111,7 +111,10 @@ public class ApplyFixMob1573Get extends DeclarativeWebScript { try { - if (contentIn != null) contentIn.close(); + if (contentIn != null) + { + contentIn.close(); + } } catch (IOException ignored) { @@ -127,10 +130,10 @@ public class ApplyFixMob1573Get extends DeclarativeWebScript ContentModel.TYPE_CONTENT, true); writer.setMimetype(MimetypeMap.MIMETYPE_XML); writer.setEncoding("UTF-8"); - + ByteArrayOutputStream baos = new ByteArrayOutputStream(); deserializedModel.toXML(baos); - + String updatedModelXml; try { diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/AuditLogGet.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/AuditLogGet.java index a31568b173..3d94d73994 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/AuditLogGet.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/AuditLogGet.java @@ -62,7 +62,9 @@ public class AuditLogGet extends BaseAuditRetrievalWebScript auditTrail = this.rmAuditService.getAuditTrailFile(parseQueryParameters(req), parseReportFormat(req)); if (logger.isDebugEnabled()) + { logger.debug("Streaming audit trail from file: " + auditTrail.getAbsolutePath()); + } boolean attach = false; String attachFileName = null; @@ -73,7 +75,9 @@ public class AuditLogGet extends BaseAuditRetrievalWebScript attachFileName = auditTrail.getName(); if (logger.isDebugEnabled()) + { logger.debug("Exporting audit trail using file name: " + attachFileName); + } } // stream the file back to the client diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/AuditLogPost.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/AuditLogPost.java index f4cd3bd32f..0967a657b2 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/AuditLogPost.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/AuditLogPost.java @@ -40,19 +40,19 @@ import org.json.JSONTokener; /** * Implementation for Java backed webscript to file an * audit log as a record. - * + * * @author Gavin Cornwell */ public class AuditLogPost extends BaseAuditRetrievalWebScript { /** Logger */ private static Log logger = LogFactory.getLog(AuditLogPost.class); - + protected static final String PARAM_DESTINATION = "destination"; protected static final String RESPONSE_SUCCESS = "success"; protected static final String RESPONSE_RECORD = "record"; protected static final String RESPONSE_RECORD_NAME = "recordName"; - + @Override public void execute(WebScriptRequest req, WebScriptResponse res) throws IOException { @@ -60,74 +60,78 @@ public class AuditLogPost extends BaseAuditRetrievalWebScript { // retrieve requested format String format = req.getFormat(); - + // construct model for template Status status = new Status(); Cache cache = new Cache(getDescription().getRequiredCache()); Map model = new HashMap(); model.put("status", status); model.put("cache", cache); - + // extract the destination parameter, ensure it's present and it is // a record folder JSONObject json = new JSONObject(new JSONTokener(req.getContent().getContent())); if (!json.has(PARAM_DESTINATION)) { - status.setCode(HttpServletResponse.SC_BAD_REQUEST, + status.setCode(HttpServletResponse.SC_BAD_REQUEST, "Mandatory '" + PARAM_DESTINATION + "' parameter has not been supplied"); Map templateModel = createTemplateParameters(req, res, model); sendStatus(req, res, status, cache, format, templateModel); return; } - + String destinationParam = json.getString(PARAM_DESTINATION); NodeRef destination = new NodeRef(destinationParam); - + if (!this.nodeService.exists(destination)) { - status.setCode(HttpServletResponse.SC_NOT_FOUND, + status.setCode(HttpServletResponse.SC_NOT_FOUND, "Node " + destination.toString() + " does not exist"); Map templateModel = createTemplateParameters(req, res, model); sendStatus(req, res, status, cache, format, templateModel); return; } - + // ensure the node is a filePlan object if (!RecordsManagementModel.TYPE_RECORD_FOLDER.equals(this.nodeService.getType(destination))) { - status.setCode(HttpServletResponse.SC_BAD_REQUEST, + status.setCode(HttpServletResponse.SC_BAD_REQUEST, "Node " + destination.toString() + " is not a record folder"); Map templateModel = createTemplateParameters(req, res, model); sendStatus(req, res, status, cache, format, templateModel); return; } - + if (logger.isDebugEnabled()) + { logger.debug("Filing audit trail as record in record folder: " + destination); - + } + // parse the other parameters and get a file containing the audit trail - NodeRef record = this.rmAuditService.fileAuditTrailAsRecord(parseQueryParameters(req), + NodeRef record = this.rmAuditService.fileAuditTrailAsRecord(parseQueryParameters(req), destination, parseReportFormat(req)); - + if (logger.isDebugEnabled()) + { logger.debug("Filed audit trail as new record: " + record); - + } + // return success flag and record noderef as JSON JSONObject responseJSON = new JSONObject(); responseJSON.put(RESPONSE_SUCCESS, (record != null)); if (record != null) { responseJSON.put(RESPONSE_RECORD, record.toString()); - responseJSON.put(RESPONSE_RECORD_NAME, + responseJSON.put(RESPONSE_RECORD_NAME, (String)nodeService.getProperty(record, ContentModel.PROP_NAME)); } - + // setup response String jsonString = responseJSON.toString(); res.setContentType(MimetypeMap.MIMETYPE_JSON); res.setContentEncoding("UTF-8"); res.setHeader("Content-Length", Long.toString(jsonString.length())); - + // write the JSON response res.getWriter().write(jsonString); } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/BaseAuditRetrievalWebScript.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/BaseAuditRetrievalWebScript.java index 2c30c180ee..a39f4a3a19 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/BaseAuditRetrievalWebScript.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/BaseAuditRetrievalWebScript.java @@ -152,13 +152,17 @@ public class BaseAuditRetrievalWebScript extends StreamContent { // log a warning if (logger.isWarnEnabled()) + { logger.warn("Failed to parse JSON parameters for audit query: " + ioe.getMessage()); + } } catch (JSONException je) { // log a warning if (logger.isWarnEnabled()) + { logger.warn("Failed to parse JSON parameters for audit query: " + je.getMessage()); + } } } else @@ -185,7 +189,9 @@ public class BaseAuditRetrievalWebScript extends StreamContent catch (NumberFormatException nfe) { if (logger.isWarnEnabled()) + { logger.warn("Ignoring size parameter as '" + size + "' is not a number!"); + } } } @@ -199,7 +205,9 @@ public class BaseAuditRetrievalWebScript extends StreamContent catch (ParseException pe) { if (logger.isWarnEnabled()) + { logger.warn("Ignoring from parameter as '" + from + "' does not conform to the date pattern: " + DATE_PATTERN); + } } } @@ -213,7 +221,9 @@ public class BaseAuditRetrievalWebScript extends StreamContent catch (ParseException pe) { if (logger.isWarnEnabled()) + { logger.warn("Ignoring to parameter as '" + to + "' does not conform to the date pattern: " + DATE_PATTERN); + } } } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/BaseTransferWebScript.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/BaseTransferWebScript.java index 7c7639007b..fc0a7ff036 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/BaseTransferWebScript.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/BaseTransferWebScript.java @@ -43,22 +43,22 @@ import org.springframework.extensions.webscripts.WebScriptResponse; /** * Abstract base class for transfer related web scripts. - * + * * @author Gavin Cornwell */ -public abstract class BaseTransferWebScript extends StreamACP +public abstract class BaseTransferWebScript extends StreamACP implements RecordsManagementModel { /** Logger */ private static Log logger = LogFactory.getLog(BaseTransferWebScript.class); - + protected FilePlanService filePlanService; - + public void setFilePlanService(FilePlanService filePlanService) { this.filePlanService = filePlanService; } - + /** * @see org.alfresco.web.scripts.WebScript#execute(org.alfresco.web.scripts.WebScriptRequest, org.alfresco.web.scripts.WebScriptResponse) */ @@ -69,14 +69,14 @@ public abstract class BaseTransferWebScript extends StreamACP { // retrieve requested format String format = req.getFormat(); - + // construct model for template Status status = new Status(); Cache cache = new Cache(getDescription().getRequiredCache()); Map model = new HashMap(); model.put("status", status); model.put("cache", cache); - + // get the parameters that represent the NodeRef, we know they are present // otherwise this webscript would not have matched Map templateVars = req.getServiceMatch().getTemplateVars(); @@ -84,46 +84,48 @@ public abstract class BaseTransferWebScript extends StreamACP String storeId = templateVars.get("store_id"); String nodeId = templateVars.get("id"); String transferId = templateVars.get("transfer_id"); - + // create and return the file plan NodeRef NodeRef filePlan = new NodeRef(new StoreRef(storeType, storeId), nodeId); - + if (logger.isDebugEnabled()) + { logger.debug("Retrieving transfer '" + transferId + "' from file plan: " + filePlan); - + } + // ensure the file plan exists if (!this.nodeService.exists(filePlan)) { - status.setCode(HttpServletResponse.SC_NOT_FOUND, + status.setCode(HttpServletResponse.SC_NOT_FOUND, "Node " + filePlan.toString() + " does not exist"); Map templateModel = createTemplateParameters(req, res, model); sendStatus(req, res, status, cache, format, templateModel); return; } - + // ensure the node is a filePlan object if (!TYPE_FILE_PLAN.equals(this.nodeService.getType(filePlan))) { - status.setCode(HttpServletResponse.SC_BAD_REQUEST, + status.setCode(HttpServletResponse.SC_BAD_REQUEST, "Node " + filePlan.toString() + " is not a file plan"); Map templateModel = createTemplateParameters(req, res, model); sendStatus(req, res, status, cache, format, templateModel); return; } - + // attempt to find the transfer node NodeRef transferNode = findTransferNode(filePlan, transferId); - + // send 404 if the transfer is not found if (transferNode == null) { - status.setCode(HttpServletResponse.SC_NOT_FOUND, + status.setCode(HttpServletResponse.SC_NOT_FOUND, "Could not locate transfer with id: " + transferId); Map templateModel = createTemplateParameters(req, res, model); sendStatus(req, res, status, cache, format, templateModel); return; } - + // execute the transfer operation tempFile = executeTransfer(transferNode, req, res, status, cache); } @@ -147,10 +149,10 @@ public abstract class BaseTransferWebScript extends StreamACP } } } - + /** * Abstract method subclasses implement to perform the actual logic required. - * + * * @param transferNode The transfer node * @param req The request * @param res The response @@ -160,13 +162,13 @@ public abstract class BaseTransferWebScript extends StreamACP * @throws IOException */ protected abstract File executeTransfer(NodeRef transferNode, - WebScriptRequest req, WebScriptResponse res, + WebScriptRequest req, WebScriptResponse res, Status status, Cache cache) throws IOException; - + /** * Finds a transfer object with the given id in the given file plan. * This method returns null if a transfer with the given id is not found. - * + * * @param filePlan The file plan to search * @param transferId The id of the transfer being requested * @return The transfer node or null if not found @@ -174,11 +176,11 @@ public abstract class BaseTransferWebScript extends StreamACP protected NodeRef findTransferNode(NodeRef filePlan, String transferId) { NodeRef transferNode = null; - + // get all the transfer nodes and find the one we need NodeRef transferContainer = filePlanService.getTransferContainer(filePlan); - List assocs = this.nodeService.getChildAssocs(transferContainer, - ContentModel.ASSOC_CONTAINS, + List assocs = this.nodeService.getChildAssocs(transferContainer, + ContentModel.ASSOC_CONTAINS, RegexQNamePattern.MATCH_ALL); for (ChildAssociationRef child : assocs) { @@ -188,26 +190,26 @@ public abstract class BaseTransferWebScript extends StreamACP break; } } - + return transferNode; } - + /** * Returns an array of NodeRefs representing the items to be transferred. - * + * * @param transferNode The transfer object * @return Array of NodeRefs */ protected NodeRef[] getTransferNodes(NodeRef transferNode) { - List assocs = this.nodeService.getChildAssocs(transferNode, + List assocs = this.nodeService.getChildAssocs(transferNode, RecordsManagementModel.ASSOC_TRANSFERRED, RegexQNamePattern.MATCH_ALL); NodeRef[] itemsToTransfer = new NodeRef[assocs.size()]; for (int idx = 0; idx < assocs.size(); idx++) { itemsToTransfer[idx] = assocs.get(idx).getChildRef(); } - + return itemsToTransfer; } } \ No newline at end of file diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/ExportPost.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/ExportPost.java index a23f17b16a..08482e2eeb 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/ExportPost.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/ExportPost.java @@ -158,7 +158,9 @@ public class ExportPost extends StreamACP if (tempACPFile != null) { if (logger.isDebugEnabled()) + { logger.debug("Deleting temporary archive: " + tempACPFile.getAbsolutePath()); + } tempACPFile.delete(); } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/ImportPost.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/ImportPost.java index a2f025dce5..10beefbebc 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/ImportPost.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/ImportPost.java @@ -206,7 +206,9 @@ public class ImportPost extends DeclarativeWebScript FileCopyUtils.copy(acpContent.getInputStream(), fos); // NOTE: this method closes both streams if (logger.isDebugEnabled()) + { logger.debug("Importing uploaded ACP (" + acpFile.getAbsolutePath() + ") into " + nodeRef); + } // setup the import handler final ACPImportPackageHandler importHandler = new ACPImportPackageHandler(acpFile, "UTF-8"); diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferReportPost.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferReportPost.java index fe138599b1..4859fb5965 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferReportPost.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferReportPost.java @@ -170,7 +170,9 @@ public class TransferReportPost extends BaseTransferWebScript } if (logger.isDebugEnabled()) + { logger.debug("Filing transfer report as record in record folder: " + destination); + } // generate the report (will be in JSON format) report = generateHTMLTransferReport(transferNode); @@ -179,7 +181,9 @@ public class TransferReportPost extends BaseTransferWebScript NodeRef record = fileTransferReport(report, destination); if (logger.isDebugEnabled()) + { logger.debug("Filed transfer report as new record: " + record); + } // return success flag and record noderef as JSON JSONObject responseJSON = new JSONObject(); diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/search/SavedSearchDetails.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/search/SavedSearchDetails.java index 8cd98b9373..245b2c1d66 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/search/SavedSearchDetails.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/search/SavedSearchDetails.java @@ -29,9 +29,9 @@ import org.springframework.extensions.surf.util.I18NUtil; /** * Saved search details. - * + * * Example format of posted Saved Search JSON: - * + * * { * "siteid" : "rm", * "name": "search name", @@ -39,7 +39,7 @@ import org.springframework.extensions.surf.util.I18NUtil; * "search": "the search sting as entered by the user", * "public": boolean, * "searchparams" : - * { + * { * "maxItems" : 500, * "records" : true, * "undeclaredrecords" : false, @@ -47,12 +47,12 @@ import org.springframework.extensions.surf.util.I18NUtil; * "recordfolders" : false, * "frozen" : false, * "cutoff" : false, - * "containertypes" : + * "containertypes" : * [ * "rma:recordSeries", * "rma:recordCategory" * ] - * "sort" : + * "sort" : * [ * { * "field" : "cm:name", @@ -61,18 +61,18 @@ import org.springframework.extensions.surf.util.I18NUtil; * ] * } * } - * + * * where: name and query values are mandatory, * searchparams contains the filters, sort, etc information about the query - * query is there for backward compatibility + * query is there for backward compatibility * note: - * "params": "terms=keywords:xyz&undeclared=true", + * "params": "terms=keywords:xyz&undeclared=true", * "sort": "cm:name/asc" - * "query": "the complete search query string", + * "query": "the complete search query string", * ... are sometimes found in the place of searchparams and are migrated to the new format when re-saved * params are in URL encoded name/value pair format * sort is in comma separated "property/dir" packed format i.e. "cm:name/asc,cm:title/desc" - * + * * @author Roy Wetherall */ public class SavedSearchDetails extends ReportDetails @@ -85,37 +85,37 @@ public class SavedSearchDetails extends ReportDetails public static final String PUBLIC = "public"; public static final String REPORT = "report"; public static final String SEARCHPARAMS = "searchparams"; - + // JSON values for backwards compatibility public static final String QUERY = "query"; public static final String SORT = "sort"; public static final String PARAMS = "params"; - + private static final String DEFAULT_SITE_ID = "rm"; - + /** Site id */ private String siteId; - + /** Indicates whether the saved search is public or not */ private boolean isPublic = true; - + /** Indicates whether the saved search is a report */ private boolean isReport = false; - + /** Helper method to link to search node ref if provided */ private NodeRef nodeRef = null; - + /** Namespace service */ NamespaceService namespaceService; - + /** Records management search service */ RecordsManagementSearchServiceImpl searchService; - + /** Saves search details compatibility */ private SavedSearchDetailsCompatibility compatibility; - + /** - * + * * @param jsonString * @return */ @@ -124,28 +124,31 @@ public class SavedSearchDetails extends ReportDetails try { JSONObject search = new JSONObject(jsonString); - + // Get the site id String siteId = DEFAULT_SITE_ID; if (search.has(SITE_ID) == true) { siteId = search.getString(SITE_ID); - } - + } + // Get the name if (search.has(NAME) == false) { throw new AlfrescoRuntimeException("Can not create saved search details from json, because required name is not present. " + jsonString); } String name = search.getString(NAME); - + // Get the description String description = ""; if (search.has(DESCRIPTION) == true) { description = search.getString(DESCRIPTION); String translated = I18NUtil.getMessage(description); - if (translated!=null ) description = translated; + if (translated != null) + { + description = translated; + } } // Get the query @@ -162,13 +165,13 @@ public class SavedSearchDetails extends ReportDetails { throw new AlfrescoRuntimeException("Can not create saved search details from json, because required search is not present. " + jsonString); } - + } else { query = search.getString(SEARCH); } - + // Get the search parameters RecordsManagementSearchParameters searchParameters = new RecordsManagementSearchParameters(); if (search.has(SEARCHPARAMS) == true) @@ -185,21 +188,21 @@ public class SavedSearchDetails extends ReportDetails searchParameters = SavedSearchDetailsCompatibility.createSearchParameters(oldParams, oldSort, namespaceService); } } - + // Determine whether the saved query is public or not boolean isPublic = true; if (search.has(PUBLIC) == true) { isPublic = search.getBoolean(PUBLIC); } - + // Determine whether the saved query is a report or not boolean isReport = false; if (search.has(REPORT) == true) { isReport = search.getBoolean(REPORT); } - + // Create the saved search details object SavedSearchDetails savedSearchDetails = new SavedSearchDetails(siteId, name, description, query, searchParameters, isPublic, isReport, namespaceService, searchService); savedSearchDetails.nodeRef = nodeRef; @@ -208,7 +211,7 @@ public class SavedSearchDetails extends ReportDetails catch (JSONException exception) { throw new AlfrescoRuntimeException("Can not create saved search details from json. " + jsonString, exception); - } + } } /** @@ -218,22 +221,22 @@ public class SavedSearchDetails extends ReportDetails * @param isPublic */ /*package*/ SavedSearchDetails( - String siteId, - String name, - String description, - String serach, - RecordsManagementSearchParameters searchParameters, - boolean isPublic, + String siteId, + String name, + String description, + String serach, + RecordsManagementSearchParameters searchParameters, + boolean isPublic, boolean isReport, NamespaceService namespaceService, - RecordsManagementSearchServiceImpl searchService) + RecordsManagementSearchServiceImpl searchService) { super(name, description, serach, searchParameters); - + ParameterCheck.mandatory("siteId", siteId); ParameterCheck.mandatory("namespaceService", namespaceService); ParameterCheck.mandatory("searchService", searchService); - + this.siteId = siteId; this.isPublic = isPublic; this.isReport = isReport; @@ -241,23 +244,23 @@ public class SavedSearchDetails extends ReportDetails this.compatibility = new SavedSearchDetailsCompatibility(this, namespaceService, searchService); this.searchService = searchService; } - + /** * @return */ - public String getSiteId() + public String getSiteId() { return siteId; - } - + } + /** * @return */ - public boolean isPublic() + public boolean isPublic() { return isPublic; } - + /** * @return */ @@ -265,12 +268,12 @@ public class SavedSearchDetails extends ReportDetails { return isReport; } - + public SavedSearchDetailsCompatibility getCompatibility() { return compatibility; } - + /** * @return NodeRef search node ref, null if not set */ @@ -278,7 +281,7 @@ public class SavedSearchDetails extends ReportDetails { return nodeRef; } - + /** * @return */ @@ -291,13 +294,13 @@ public class SavedSearchDetails extends ReportDetails jsonObject.put(NAME, name); jsonObject.put(DESCRIPTION, description); jsonObject.put(SEARCH, search); - jsonObject.put(SEARCHPARAMS, searchParameters.toJSONObject(namespaceService)); + jsonObject.put(SEARCHPARAMS, searchParameters.toJSONObject(namespaceService)); jsonObject.put(PUBLIC, isPublic); - + // Add full query for backward compatibility jsonObject.put(QUERY, searchService.buildQueryString(search, searchParameters)); jsonObject.put(SORT, compatibility.getSort()); - + return jsonObject.toString(); } catch (JSONException exception)