From 6a7545312a83454d1007aab27250dc5984f9f42d Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Tue, 18 Dec 2018 08:27:11 +0000
Subject: [PATCH] Sort order of files: case insensitive and dot files will shown after normal files and directories.

---
 borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgFilesystemItem.java |   11 ++++++++++-
 borgbutler-core/src/main/java/de/micromata/borgbutler/data/FileSystemFilter.java        |   17 +++++++++++++++++
 2 files changed, 27 insertions(+), 1 deletions(-)

diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/data/FileSystemFilter.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/data/FileSystemFilter.java
index 9917008..aa14643 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/data/FileSystemFilter.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/data/FileSystemFilter.java
@@ -94,6 +94,8 @@
      * After processing a list by using {@link #matches(BorgFilesystemItem)} you should call finally this method with
      * your result list to reduce the files and directories for mode {@link Mode#TREE}. For the mode {@link Mode#FLAT}
      * nothing is done.
+     * <br>
+     * Reorders the list (.files will be displayed after normal files).
      *
      * @param list
      * @return The original list for mode {@link Mode#FLAT} or the reduced list for the tree view.
@@ -115,6 +117,21 @@
                     list.add(topItem);
                 }
             }
+            list2 = list;
+            // Re-ordering (show dot files at last)
+            list = new ArrayList<>();
+            // First add normal files:
+            for (BorgFilesystemItem item : list2) {
+                if (!item.getDisplayPath().startsWith(".")) {
+                    list.add(item);
+                }
+            }
+            // Now add dot files:
+            for (BorgFilesystemItem item : list2) {
+                if (item.getDisplayPath().startsWith(".")) {
+                    list.add(item);
+                }
+            }
         }
         return list;
     }
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgFilesystemItem.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgFilesystemItem.java
index f2c48a6..a08110e 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgFilesystemItem.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgFilesystemItem.java
@@ -56,6 +56,15 @@
 
     @Override
     public int compareTo(BorgFilesystemItem o) {
-        return StringUtils.compare(this.path, o.path);
+        if (path == o.path) {
+            return 0;
+        }
+        if (path == null) {
+            return -1;
+        }
+        if (o.path == null) {
+            return  1;
+        }
+        return path.compareToIgnoreCase(o.path);
     }
 }

--
Gitblit v1.10.0