diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/log4j.properties b/rm-server/config/alfresco/module/org_alfresco_module_rm/log4j.properties
index 19d4f43d4f..7721baeb5f 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/log4j.properties
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/log4j.properties
@@ -7,10 +7,11 @@ log4j.logger.org.alfresco.module.org_alfresco_module_rm.security.RMMethodSecurit
#
# Module patches
#
-log4j.logger.org.alfresco.module.org_alfresco_module_rm.patch=debug
+log4j.logger.org.alfresco.module.org_alfresco_module_rm.patch=info
#
# RM Permission Debug Information
#
#log4j.logger.org.alfresco.module.org_alfresco_module_rm.capability.RMEntryVoter=debug
-#log4j.logger.org.alfresco.module.org_alfresco_module_rm.capability.declarative=debug
\ No newline at end of file
+#log4j.logger.org.alfresco.module.org_alfresco_module_rm.capability.declarative=debug
+log4j.logger.org.alfresco.module.org_alfresco_module_rm.record.RecordServiceImpl=debug
\ No newline at end of file
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 7e86ee5f93..3bbae9aa5e 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
@@ -714,6 +714,12 @@
Date Filed
d:date
+
+
+ Origional Name
+ d:text
+ true
+
Publication Date
@@ -1167,7 +1173,7 @@
d:date
true
-
+
d:any
true
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 b3525ae7a5..cc63fe26f0 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
@@ -93,6 +93,7 @@ public interface RecordsManagementModel extends RecordsManagementCustomModel
// Record aspect
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");
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java
index 4604d27314..52a6036bc7 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java
@@ -60,6 +60,7 @@ import org.alfresco.service.cmr.dictionary.ClassDefinition;
import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.dictionary.PropertyDefinition;
import org.alfresco.service.cmr.model.FileFolderService;
+import org.alfresco.service.cmr.model.FileNotFoundException;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.ContentWriter;
@@ -539,15 +540,24 @@ public class RecordServiceImpl implements RecordService,
if (isLinked == true)
{
- // maintain the original primary location
- nodeService.addChild(parentAssoc.getParentRef(), nodeRef, parentAssoc.getTypeQName(), parentAssoc.getQName());
-
- // set the extended security
- Set combinedWriters = new HashSet(writers);
- combinedWriters.add(owner);
- combinedWriters.add(AuthenticationUtil.getFullyAuthenticatedUser());
-
- extendedSecurityService.addExtendedSecurity(nodeRef, readers, combinedWriters);
+ // turn off rules
+ ruleService.disableRules();
+ try
+ {
+ // maintain the original primary location
+ nodeService.addChild(parentAssoc.getParentRef(), nodeRef, parentAssoc.getTypeQName(), parentAssoc.getQName());
+
+ // set the extended security
+ Set combinedWriters = new HashSet(writers);
+ combinedWriters.add(owner);
+ combinedWriters.add(AuthenticationUtil.getFullyAuthenticatedUser());
+
+ extendedSecurityService.addExtendedSecurity(nodeRef, readers, combinedWriters);
+ }
+ finally
+ {
+ ruleService.enableRules();
+ }
}
return null;
@@ -610,11 +620,43 @@ public class RecordServiceImpl implements RecordService,
*/
private void makeRecord(NodeRef document)
{
- nodeService.addAspect(document, RecordsManagementModel.ASPECT_RECORD, null);
-
- String recordId = identifierService.generateIdentifier(ASPECT_RECORD, nodeService.getPrimaryParent(document)
- .getParentRef());
- nodeService.setProperty(document, PROP_IDENTIFIER, recordId);
+ try
+ {
+ // get the record id
+ String recordId = identifierService.generateIdentifier(ASPECT_RECORD,
+ nodeService.getPrimaryParent(document).getParentRef());
+
+ // get the record name
+ String name = (String)nodeService.getProperty(document, ContentModel.PROP_NAME);
+
+ // rename the record
+ int dotIndex = name.lastIndexOf(".");
+ String prefix = name;
+ String postfix = "";
+ if (dotIndex != -1)
+ {
+ prefix = name.substring(0, dotIndex);
+ postfix = name.substring(dotIndex);
+ }
+ String recordName = prefix + " (" + recordId + ")" + postfix;
+ fileFolderService.rename(document, recordName);
+
+ if (logger.isDebugEnabled() == true)
+ {
+ logger.debug("Rename " + name + " to " + recordName);
+ }
+
+ // add the record aspect
+ Map props = new HashMap(2);
+ props.put(PROP_IDENTIFIER, recordId);
+ props.put(PROP_ORIGIONAL_NAME, name);
+ nodeService.addAspect(document, RecordsManagementModel.ASPECT_RECORD, props);
+ }
+ catch (FileNotFoundException e)
+ {
+ throw new AlfrescoRuntimeException("Unable to make record, because rename failed.", e);
+ }
+
}
/**
@@ -749,14 +791,14 @@ public class RecordServiceImpl implements RecordService,
ruleService.disableRules();
try
{
- // take note of the record id
- String recordId = (String)nodeService.getProperty(nodeRef, PROP_IDENTIFIER);
-
- // take node of the original document owner
- String documentOwner = (String) nodeService.getProperty(nodeRef, PROP_RECORD_ORIGINATING_USER_ID);
+ // get record property values
+ Map properties = nodeService.getProperties(nodeRef);
+ String recordId = (String)properties.get(PROP_IDENTIFIER);
+ String documentOwner = (String)properties.get(PROP_RECORD_ORIGINATING_USER_ID);
+ String origionalName = (String)properties.get(PROP_ORIGIONAL_NAME);
+ NodeRef originatingLocation = (NodeRef)properties.get(PROP_RECORD_ORIGINATING_LOCATION);
// first remove the secondary link association
- NodeRef originatingLocation = (NodeRef) nodeService.getProperty(nodeRef, PROP_RECORD_ORIGINATING_LOCATION);
List parentAssocs = nodeService.getParentAssocs(nodeRef);
for (ChildAssociationRef childAssociationRef : parentAssocs)
{
@@ -784,6 +826,18 @@ public class RecordServiceImpl implements RecordService,
// move the record into the collaboration site
nodeService.moveNode(nodeRef, originatingLocation, ContentModel.ASSOC_CONTAINS, parentAssoc.getQName());
+ // rename to the origional name
+ if (origionalName != null)
+ {
+ fileFolderService.rename(nodeRef, origionalName);
+
+ if (logger.isDebugEnabled() == true)
+ {
+ String name = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
+ logger.debug("Rename " + name + " to " + origionalName);
+ }
+ }
+
// save the information about the rejection details
Map aspectProperties = new HashMap(3);
aspectProperties.put(PROP_RECORD_REJECTION_USER_ID, userId);
diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/action/FileToActionTest.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/action/FileToActionTest.java
index e4f3ca1ffb..344d9b27bb 100644
--- a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/action/FileToActionTest.java
+++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/action/FileToActionTest.java
@@ -24,6 +24,7 @@ import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
+import org.alfresco.model.ContentModel;
import org.alfresco.module.org_alfresco_module_rm.action.impl.FileToAction;
import org.alfresco.module.org_alfresco_module_rm.capability.Capability;
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
@@ -47,7 +48,7 @@ public class FileToActionTest extends BaseRMTestCase
private static final String PATH_BAD = "monkey/rmfolder";
private static final String PATH_CREATE = "rmcontainer/newrmfolder";
- private static final String PATH_SUB1 = "rmcontainer/${node.cm:name}";
+ private static final String PATH_SUB1 = "rmcontainer/${node.cm:title}";
protected ActionService dmActionService;
@@ -112,6 +113,8 @@ public class FileToActionTest extends BaseRMTestCase
{
public Void run()
{
+ nodeService.setProperty(dmDocument, ContentModel.PROP_TITLE, "mytestvalue");
+
// create record from document
recordService.createRecord(filePlan, dmDocument);
@@ -193,7 +196,7 @@ public class FileToActionTest extends BaseRMTestCase
public void testCreateSub() throws Exception
{
initRecord();
- createRecord(PATH_SUB1, "collabDocument.txt", "rmcontainer/collabDocument.txt");
+ createRecord(PATH_SUB1, "mytestvalue", "rmcontainer/mytestvalue");
}
private void createRecord(String path, String name)