Version history sort failed with duplicate create dates.

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@9829 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
David Caruana
2008-07-12 00:39:14 +00:00
parent daa13dc40a
commit fa1ecb2b32

View File

@@ -27,11 +27,10 @@ package org.alfresco.repo.version.common;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.List;
import java.util.TreeMap;
import org.alfresco.service.cmr.version.Version; import org.alfresco.service.cmr.version.Version;
import org.alfresco.service.cmr.version.VersionDoesNotExistException; import org.alfresco.service.cmr.version.VersionDoesNotExistException;
@@ -73,13 +72,16 @@ public class VersionHistoryImpl implements VersionHistory
/* /*
* Versions ordered by creation date (descending) * Versions ordered by creation date (descending)
*/ */
private Map<Date, Version> versions = new TreeMap<Date, Version>(new VersionComparator()); private static VersionComparator versionComparator = new VersionComparator();
private List<Version> versions = new ArrayList<Version>();
/** /**
* Root version * Root version
*/ */
private Version rootVersion; private Version rootVersion;
/** /**
* Constructor, ensures the root version is set. * Constructor, ensures the root version is set.
* *
@@ -122,7 +124,8 @@ public class VersionHistoryImpl implements VersionHistory
*/ */
public Collection<Version> getAllVersions() public Collection<Version> getAllVersions()
{ {
return this.versions.values(); Collections.sort(versions, versionComparator);
return versions;
} }
/** /**
@@ -207,7 +210,7 @@ public class VersionHistoryImpl implements VersionHistory
// TODO cope with exception case where duplicate version labels have been specified // TODO cope with exception case where duplicate version labels have been specified
this.versionsByLabel.put(version.getVersionLabel(), version); this.versionsByLabel.put(version.getVersionLabel(), version);
this.versions.put(version.getCreatedDate(), version); this.versions.add(version);
if (predecessor != null) if (predecessor != null)
{ {
@@ -220,11 +223,13 @@ public class VersionHistoryImpl implements VersionHistory
* *
* Note: Descending create date order * Note: Descending create date order
*/ */
public class VersionComparator implements Comparator<Date>, Serializable public static class VersionComparator implements Comparator<Version>, Serializable
{ {
public int compare(Date o1, Date o2) private static final long serialVersionUID = 6227528170880231770L;
public int compare(Version v1, Version v2)
{ {
return o2.compareTo(o1); return v2.getCreatedDate().compareTo(v1.getCreatedDate());
} }
} }