From d475ace76c579ce0ccbc626b6835dc4c6d6f109c Mon Sep 17 00:00:00 2001 From: Luck Date: Tue, 3 Mar 2020 11:03:30 +0000 Subject: [PATCH] Export users & tracks in a consistent order --- .../lucko/luckperms/common/backup/Exporter.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/common/src/main/java/me/lucko/luckperms/common/backup/Exporter.java b/common/src/main/java/me/lucko/luckperms/common/backup/Exporter.java index 6e8d2c24d..348e798ea 100644 --- a/common/src/main/java/me/lucko/luckperms/common/backup/Exporter.java +++ b/common/src/main/java/me/lucko/luckperms/common/backup/Exporter.java @@ -50,12 +50,13 @@ import java.nio.file.Path; import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.Date; -import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.TreeMap; import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; @@ -123,10 +124,10 @@ public class Exporter implements Runnable { private JsonObject exportGroups() { JsonObject out = new JsonObject(); List groups = this.plugin.getGroupManager().getAll().values().stream() - .sorted((o1, o2) -> { - int i = Integer.compare(o2.getWeight().orElse(0), o1.getWeight().orElse(0)); - return i != 0 ? i : o1.getName().compareToIgnoreCase(o2.getName()); - }).collect(Collectors.toList()); + .sorted(Comparator.comparingInt(o -> o.getWeight().orElse(0)).reversed() + .thenComparing(Group::getName) + ) + .collect(Collectors.toList()); for (Group group : groups) { out.add(group.getName(), new JObject() @@ -138,7 +139,9 @@ public class Exporter implements Runnable { private JsonObject exportTracks() { JsonObject out = new JsonObject(); - Collection tracks = this.plugin.getTrackManager().getAll().values(); + Collection tracks = this.plugin.getTrackManager().getAll().values().stream() + .sorted(Comparator.comparing(Track::getName)) + .collect(Collectors.toList()); for (Track track : tracks) { out.add(track.getName(), new JObject() @@ -167,7 +170,7 @@ public class Exporter implements Runnable { Set> futures = new HashSet<>(); AtomicInteger userCount = new AtomicInteger(0); - Map out = Collections.synchronizedMap(new HashMap<>()); + Map out = Collections.synchronizedMap(new TreeMap<>()); // iterate through each user. for (UUID uuid : users) {