mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
RM-1862 (Reference to rejected record is remaining)
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/BRANCHES/V2.3@97058 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -49,4 +49,8 @@ public interface RecordsManagementCustomModel
|
||||
// Some Custom references which are present on system startup.
|
||||
QName CUSTOM_REF_VERSIONS = QName.createQName(RecordsManagementCustomModel.RM_CUSTOM_URI, "versions");
|
||||
QName CUSTOM_REF_SUPERSEDES = QName.createQName(RecordsManagementCustomModel.RM_CUSTOM_URI, "supersedes");
|
||||
QName CUSTOM_REF_OBSOLETES = QName.createQName(RecordsManagementCustomModel.RM_CUSTOM_URI, "obsoletes");
|
||||
QName CUSTOM_REF_SUPPORTS = QName.createQName(RecordsManagementCustomModel.RM_CUSTOM_URI, "supports");
|
||||
QName CUSTOM_REF_CROSSREFERENCE = QName.createQName(RecordsManagementCustomModel.RM_CUSTOM_URI, "crossreference");
|
||||
QName CUSTOM_REF_RENDITION = QName.createQName(RecordsManagementCustomModel.RM_CUSTOM_URI, "rendition");
|
||||
}
|
||||
|
@@ -25,7 +25,6 @@ import java.util.Set;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementCustomModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.behaviour.AbstractDisposableItem;
|
||||
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.security.ExtendedSecurityService;
|
||||
@@ -69,7 +68,7 @@ public class RecordAspect extends AbstractDisposableItem
|
||||
|
||||
/** script service */
|
||||
protected ScriptService scriptService;
|
||||
|
||||
|
||||
/** record service */
|
||||
protected RecordService recordService;
|
||||
|
||||
@@ -88,7 +87,7 @@ public class RecordAspect extends AbstractDisposableItem
|
||||
{
|
||||
this.scriptService = scriptService;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param recordService record service
|
||||
*/
|
||||
@@ -150,7 +149,7 @@ public class RecordAspect extends AbstractDisposableItem
|
||||
public void onCreateReference(NodeRef fromNodeRef, NodeRef toNodeRef, QName reference)
|
||||
{
|
||||
// Deal with versioned records
|
||||
if (reference.equals(QName.createQName(RecordsManagementCustomModel.RM_CUSTOM_URI, "versions")))
|
||||
if (reference.equals(CUSTOM_REF_VERSIONS))
|
||||
{
|
||||
// Apply the versioned aspect to the from node
|
||||
nodeService.addAspect(fromNodeRef, ASPECT_VERSIONED_RECORD, null);
|
||||
@@ -172,7 +171,7 @@ public class RecordAspect extends AbstractDisposableItem
|
||||
public void onRemoveReference(NodeRef fromNodeRef, NodeRef toNodeRef, QName reference)
|
||||
{
|
||||
// Deal with versioned records
|
||||
if (reference.equals(QName.createQName(RecordsManagementCustomModel.RM_CUSTOM_URI, "versions")))
|
||||
if (reference.equals(CUSTOM_REF_VERSIONS))
|
||||
{
|
||||
// Apply the versioned aspect to the from node
|
||||
nodeService.removeAspect(fromNodeRef, ASPECT_VERSIONED_RECORD);
|
||||
@@ -236,7 +235,7 @@ public class RecordAspect extends AbstractDisposableItem
|
||||
{
|
||||
public Object doWork()
|
||||
{
|
||||
if (nodeService.exists(record) &&
|
||||
if (nodeService.exists(record) &&
|
||||
recordService.isFiled(record))
|
||||
{
|
||||
// clean record
|
||||
|
@@ -217,10 +217,10 @@ public class RecordServiceImpl extends BaseBehaviourBean
|
||||
|
||||
/** Version service */
|
||||
private VersionService versionService;
|
||||
|
||||
|
||||
/** Relationship service */
|
||||
private RelationshipService relationshipService;
|
||||
|
||||
|
||||
/** records management container type */
|
||||
private RecordsManagementContainerType recordsManagementContainerType;
|
||||
|
||||
@@ -352,7 +352,7 @@ public class RecordServiceImpl extends BaseBehaviourBean
|
||||
{
|
||||
this.versionService = versionService;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param relationshipService relationship service
|
||||
*/
|
||||
@@ -360,8 +360,8 @@ public class RecordServiceImpl extends BaseBehaviourBean
|
||||
{
|
||||
this.relationshipService = relationshipService;
|
||||
}
|
||||
|
||||
public void setRecordsManagementContainerType(RecordsManagementContainerType recordsManagementContainerType)
|
||||
|
||||
public void setRecordsManagementContainerType(RecordsManagementContainerType recordsManagementContainerType)
|
||||
{
|
||||
this.recordsManagementContainerType = recordsManagementContainerType;
|
||||
}
|
||||
@@ -862,7 +862,7 @@ public class RecordServiceImpl extends BaseBehaviourBean
|
||||
|
||||
// get the latest version record, if there is one
|
||||
NodeRef latestVersionRecord = getLatestVersionRecord(nodeRef);
|
||||
|
||||
|
||||
behaviourFilter.disableBehaviour();
|
||||
try
|
||||
{
|
||||
@@ -880,10 +880,10 @@ public class RecordServiceImpl extends BaseBehaviourBean
|
||||
aspectProperties.put(PROP_RECORD_ORIGINATING_USER_ID, owner);
|
||||
aspectProperties.put(PROP_RECORD_ORIGINATING_CREATION_DATE, new Date());
|
||||
nodeService.addAspect(nodeRef, ASPECT_RECORD_ORIGINATING_DETAILS, aspectProperties);
|
||||
|
||||
|
||||
// make the document a record
|
||||
makeRecord(nodeRef);
|
||||
|
||||
|
||||
if (latestVersionRecord != null)
|
||||
{
|
||||
// indicate that this is the 'final' record version
|
||||
@@ -891,9 +891,9 @@ public class RecordServiceImpl extends BaseBehaviourBean
|
||||
versionRecordProps.put(RecordableVersionModel.PROP_VERSION_LABEL, I18NUtil.getMessage(FINAL_VERSION));
|
||||
versionRecordProps.put(RecordableVersionModel.PROP_VERSION_DESCRIPTION, I18NUtil.getMessage(FINAL_DESCRIPTION));
|
||||
nodeService.addAspect(nodeRef, RecordableVersionModel.ASPECT_VERSION_RECORD, versionRecordProps);
|
||||
|
||||
|
||||
// link to previous version
|
||||
relationshipService.addRelationship("versions", nodeRef, latestVersionRecord);
|
||||
relationshipService.addRelationship(CUSTOM_REF_VERSIONS.getLocalName(), nodeRef, latestVersionRecord);
|
||||
}
|
||||
|
||||
if (isLinked)
|
||||
@@ -928,7 +928,7 @@ public class RecordServiceImpl extends BaseBehaviourBean
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @see org.alfresco.module.org_alfresco_module_rm.record.RecordService#createRecordFromCopy(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.repository.NodeRef)
|
||||
*/
|
||||
@@ -983,7 +983,7 @@ public class RecordServiceImpl extends BaseBehaviourBean
|
||||
{
|
||||
recordsManagementContainerType.enable();
|
||||
}
|
||||
|
||||
|
||||
// make record
|
||||
makeRecord(record);
|
||||
|
||||
@@ -1022,17 +1022,17 @@ public class RecordServiceImpl extends BaseBehaviourBean
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Helper to get the latest version record for a given document (ie non-record)
|
||||
*
|
||||
*
|
||||
* @param nodeRef node reference
|
||||
* @return NodeRef latest version record, null otherwise
|
||||
*/
|
||||
private NodeRef getLatestVersionRecord(NodeRef nodeRef)
|
||||
{
|
||||
NodeRef versionRecord = null;
|
||||
|
||||
|
||||
// wire record up to previous record
|
||||
VersionHistory versionHistory = versionService.getVersionHistory(nodeRef);
|
||||
if (versionHistory != null)
|
||||
@@ -1048,9 +1048,9 @@ public class RecordServiceImpl extends BaseBehaviourBean
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return versionRecord;
|
||||
}
|
||||
|
||||
return versionRecord;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1105,10 +1105,10 @@ public class RecordServiceImpl extends BaseBehaviourBean
|
||||
writer.setMimetype(reader.getMimetype());
|
||||
writer.putContent(reader);
|
||||
}
|
||||
|
||||
|
||||
result = authenticationUtil.runAsSystem(new RunAsWork<NodeRef>()
|
||||
{
|
||||
public NodeRef doWork() throws Exception
|
||||
public NodeRef doWork() throws Exception
|
||||
{
|
||||
// Check if the "record" aspect has been applied already.
|
||||
// In case of filing a report the created node will be made
|
||||
@@ -1119,10 +1119,10 @@ public class RecordServiceImpl extends BaseBehaviourBean
|
||||
// make record
|
||||
makeRecord(record);
|
||||
}
|
||||
|
||||
|
||||
return record;
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
finally
|
||||
@@ -1280,6 +1280,14 @@ public class RecordServiceImpl extends BaseBehaviourBean
|
||||
ruleService.disableRules();
|
||||
try
|
||||
{
|
||||
// get the latest version record, if there is one
|
||||
NodeRef latestVersionRecord = getLatestVersionRecord(nodeRef);
|
||||
|
||||
if (latestVersionRecord != null)
|
||||
{
|
||||
relationshipService.removeRelationship(CUSTOM_REF_VERSIONS.getLocalName(), nodeRef, latestVersionRecord);
|
||||
}
|
||||
|
||||
// get record property values
|
||||
final Map<QName, Serializable> properties = nodeService.getProperties(nodeRef);
|
||||
final String recordId = (String)properties.get(PROP_IDENTIFIER);
|
||||
@@ -1690,24 +1698,24 @@ public class RecordServiceImpl extends BaseBehaviourBean
|
||||
throw new AlfrescoRuntimeException("Can not link a record to the same record folder more than once");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// get the current name of the record
|
||||
String name = nodeService.getProperty(record, ContentModel.PROP_NAME).toString();
|
||||
|
||||
|
||||
// create a secondary link to the record folder
|
||||
nodeService.addChild(
|
||||
recordFolder,
|
||||
record,
|
||||
ContentModel.ASSOC_CONTAINS,
|
||||
recordFolder,
|
||||
record,
|
||||
ContentModel.ASSOC_CONTAINS,
|
||||
QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, name));
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
// can only link a record to a record folder
|
||||
throw new AlfrescoRuntimeException("Can only link a record to a record folder.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @see org.alfresco.module.org_alfresco_module_rm.record.RecordService#unlink(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.repository.NodeRef)
|
||||
*/
|
||||
@@ -1726,11 +1734,11 @@ public class RecordServiceImpl extends BaseBehaviourBean
|
||||
{
|
||||
throw new AlfrescoRuntimeException("Can't unlink a record from it's owning record folder.");
|
||||
}
|
||||
|
||||
|
||||
// remove the link
|
||||
nodeService.removeChild(recordFolder, record);
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
// can only unlink a record from a record folder
|
||||
throw new AlfrescoRuntimeException("Can only unlink a record from a record folder.");
|
||||
|
@@ -18,6 +18,7 @@
|
||||
*/
|
||||
package org.alfresco.module.org_alfresco_module_rm.version;
|
||||
|
||||
import static org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementCustomModel.CUSTOM_REF_VERSIONS;
|
||||
import static org.codehaus.plexus.util.StringUtils.isNotBlank;
|
||||
|
||||
import java.io.Serializable;
|
||||
@@ -406,7 +407,7 @@ public class RecordableVersionServiceImpl extends Version2ServiceImpl
|
||||
public Void doWork() throws Exception
|
||||
{
|
||||
// indicate that the new record versions the previous record
|
||||
relationshipService.addRelationship("versions", record, latestRecordVersion);
|
||||
relationshipService.addRelationship(CUSTOM_REF_VERSIONS.getLocalName(), record, latestRecordVersion);
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
Reference in New Issue
Block a user