From 019af5d238a51898013f68865a59a6cc36fd2ee4 Mon Sep 17 00:00:00 2001 From: leriomaggio Date: Mon, 24 May 2021 15:50:54 +0100 Subject: [PATCH] Robust sorting of CollectorNumber (as string) handling properly non-numerical nrs. and N.A.s --- forge-gui/src/main/java/forge/itemmanager/ColumnDef.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/forge-gui/src/main/java/forge/itemmanager/ColumnDef.java b/forge-gui/src/main/java/forge/itemmanager/ColumnDef.java index 3484a8800b0..2c3864557e3 100644 --- a/forge-gui/src/main/java/forge/itemmanager/ColumnDef.java +++ b/forge-gui/src/main/java/forge/itemmanager/ColumnDef.java @@ -662,12 +662,19 @@ public enum ColumnDef { String collectorNumber; if (i instanceof PaperCard) { collectorNumber = ((PaperCard) i).getCollectorNumber(); + // First off, make all NO_COLLECTOR_NUMBER the last in sortings + if (collectorNumber.equals(IPaperCard.NO_COLLECTOR_NUMBER)) + collectorNumber = "50000"; // very big number of 5 digits to have them in last positions + // Now, for proper sorting, let's zero-pad the collector number (if integer) try { int collNr = Integer.parseInt(collectorNumber); collectorNumber = String.format("%05d", collNr); } catch (NumberFormatException ex) { - } // NOOP, leave it as it is - NaN (may contains letters) + String nonNumeric = collectorNumber.replaceAll("[0-9]", ""); + String onlyNumeric = collectorNumber.replaceAll("[^0-9]", ""); + collectorNumber = String.format("%05d", Integer.parseInt(onlyNumeric)) + nonNumeric; + } } else { collectorNumber = IPaperCard.NO_COLLECTOR_NUMBER; }