Search in sources :

Example 1 with VersionHistoryImpl

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;
}
Also used : NodeRef(org.alfresco.service.cmr.repository.NodeRef) VersionHistoryImpl(org.alfresco.repo.version.common.VersionHistoryImpl) Version(org.alfresco.service.cmr.version.Version) ArrayList(java.util.ArrayList) VersionServiceException(org.alfresco.service.cmr.version.VersionServiceException) VersionHistory(org.alfresco.service.cmr.version.VersionHistory) AssociationRef(org.alfresco.service.cmr.repository.AssociationRef) ChildAssociationRef(org.alfresco.service.cmr.repository.ChildAssociationRef)

Example 2 with VersionHistoryImpl

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;
}
Also used : VersionHistoryImpl(org.alfresco.repo.version.common.VersionHistoryImpl) Version(org.alfresco.service.cmr.version.Version) VersionHistory(org.alfresco.service.cmr.version.VersionHistory)

Aggregations

VersionHistoryImpl (org.alfresco.repo.version.common.VersionHistoryImpl)2 Version (org.alfresco.service.cmr.version.Version)2 VersionHistory (org.alfresco.service.cmr.version.VersionHistory)2 ArrayList (java.util.ArrayList)1 AssociationRef (org.alfresco.service.cmr.repository.AssociationRef)1 ChildAssociationRef (org.alfresco.service.cmr.repository.ChildAssociationRef)1 NodeRef (org.alfresco.service.cmr.repository.NodeRef)1 VersionServiceException (org.alfresco.service.cmr.version.VersionServiceException)1