From 3fc4131cb2c25a97dc3263386be39418688d63eb Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Tue, 15 Mar 2022 10:55:10 -0500 Subject: [PATCH] Fix compare by returning 0 when bitstreams are "equal" in size & priority --- .../java/org/dspace/app/util/GoogleBitstreamComparator.java | 4 +++- .../org/dspace/app/util/GoogleBitstreamComparatorTest.java | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/dspace-api/src/main/java/org/dspace/app/util/GoogleBitstreamComparator.java b/dspace-api/src/main/java/org/dspace/app/util/GoogleBitstreamComparator.java index add98af96f..ae6ba7e83f 100644 --- a/dspace-api/src/main/java/org/dspace/app/util/GoogleBitstreamComparator.java +++ b/dspace-api/src/main/java/org/dspace/app/util/GoogleBitstreamComparator.java @@ -86,8 +86,10 @@ public class GoogleBitstreamComparator implements Comparator { if (priority1 > priority2) { return 1; } else if (priority1 == priority2) { - if (b1.getSizeBytes() <= b2.getSizeBytes()) { + if (b1.getSizeBytes() < b2.getSizeBytes()) { return 1; + } else if (b1.getSizeBytes() == b2.getSizeBytes()) { + return 0; } else { return -1; } diff --git a/dspace-api/src/test/java/org/dspace/app/util/GoogleBitstreamComparatorTest.java b/dspace-api/src/test/java/org/dspace/app/util/GoogleBitstreamComparatorTest.java index 84e776b983..78142c9258 100644 --- a/dspace-api/src/test/java/org/dspace/app/util/GoogleBitstreamComparatorTest.java +++ b/dspace-api/src/test/java/org/dspace/app/util/GoogleBitstreamComparatorTest.java @@ -164,6 +164,12 @@ public class GoogleBitstreamComparatorTest extends AbstractUnitTest { toSort.get(1).getName()); assertEquals("Bitstreams have same size and type, so order should remain unchanged", "bitstream3", toSort.get(2).getName()); + + // Also, verify all bitstreams are considered equal (comparison returns 0) + GoogleBitstreamComparator comparator = new GoogleBitstreamComparator(context, settings); + assertEquals(0, comparator.compare(bitstream1, bitstream2)); + assertEquals(0, comparator.compare(bitstream2, bitstream3)); + assertEquals(0, comparator.compare(bitstream3, bitstream1)); } /**