use of org.alfresco.repo.version.common.VersionHistoryImpl in project alfresco-repository by Alfresco.
the class VersionServiceImpl method buildVersionHistory.
/**
* Builds a version history object from the version history reference.
* <p>
* The node ref is passed to enable the version history to be scoped to the
* appropriate branch in the version history.
*
* @param versionHistoryRef the node ref for the version history
* @param nodeRef the node reference
* @return a constructed version history object
*/
protected VersionHistory buildVersionHistory(NodeRef versionHistoryRef, NodeRef nodeRef) {
VersionHistory versionHistory = null;
// List of versions with current one last and root one first.
ArrayList<NodeRef> versionHistoryNodeRefs = new ArrayList<NodeRef>();
NodeRef currentVersion;
if (this.nodeService.exists(nodeRef)) {
currentVersion = getCurrentVersionNodeRef(versionHistoryRef, nodeRef);
} else {
currentVersion = VersionUtil.convertNodeRef(getLatestVersion(nodeRef).getFrozenStateNodeRef());
}
while (currentVersion != null) {
AssociationRef preceedingVersion = null;
versionHistoryNodeRefs.add(0, currentVersion);
List<AssociationRef> preceedingVersions = this.dbNodeService.getSourceAssocs(currentVersion, VersionModel.ASSOC_SUCCESSOR);
if (preceedingVersions.size() == 1) {
preceedingVersion = (AssociationRef) preceedingVersions.toArray()[0];
currentVersion = preceedingVersion.getSourceRef();
} else if (preceedingVersions.size() > 1) {
// Error since we only currently support one preceeding version
throw new VersionServiceException(MSGID_ERR_ONE_PRECEEDING);
} else {
currentVersion = null;
}
}
// Build the version history object
boolean isRoot = true;
Version preceeding = null;
for (NodeRef versionRef : versionHistoryNodeRefs) {
Version version = getVersion(versionRef);
if (isRoot == true) {
versionHistory = new VersionHistoryImpl(version, versionComparatorDesc);
isRoot = false;
} else {
((VersionHistoryImpl) versionHistory).addVersion(version, preceeding);
}
preceeding = version;
}
return versionHistory;
}
use of org.alfresco.repo.version.common.VersionHistoryImpl in project alfresco-repository by Alfresco.
the class Version2ServiceImpl method buildVersionHistory.
/**
* Builds a version history object from the version history reference.
* <p>
* The node ref is passed to enable the version history to be scoped to the
* appropriate branch in the version history.
*
* @param versionHistoryRef the node ref for the version history
* @param nodeRef the node reference
* @return a constructed version history object
*/
@Override
protected VersionHistory buildVersionHistory(NodeRef versionHistoryRef, NodeRef nodeRef) {
VersionHistory versionHistory = null;
// List of versions with current one last and root one first.
List<Version> versions = getAllVersions(versionHistoryRef);
if (versionComparatorDesc != null) {
Collections.sort(versions, Collections.reverseOrder(versionComparatorDesc));
}
// Build the version history object
boolean isRoot = true;
Version preceeding = null;
for (Version version : versions) {
if (isRoot == true) {
versionHistory = new VersionHistoryImpl(version, versionComparatorDesc);
isRoot = false;
} else {
((VersionHistoryImpl) versionHistory).addVersion(version, preceeding);
}
preceeding = version;
}
return versionHistory;
}
Aggregations