From d70dc529484a3d8e13ca41d7052b27df75c0e91d Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sun, 16 Dec 2018 17:53:25 +0000
Subject: [PATCH] Sorting of files added and multiple key words supported in search.
---
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java | 6 ++----
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgFilesystemItem.java | 8 +++++++-
borgbutler-core/src/main/java/de/micromata/borgbutler/data/FileSystemFilter.java | 25 ++++++++++++++++++++++---
3 files changed, 31 insertions(+), 8 deletions(-)
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
index a166a35..d9d0542 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
@@ -22,10 +22,7 @@
import java.io.IOException;
import java.io.OutputStream;
import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Scanner;
+import java.util.*;
public class BorgCommands {
private static Logger log = LoggerFactory.getLogger(BorgCommands.class);
@@ -148,6 +145,7 @@
content.add(item);
}
}
+ Collections.sort(content); // Sort by path.
return content;
}
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 2f2b8ad..e3e6b23 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
@@ -7,16 +7,35 @@
public class FileSystemFilter {
@Getter
- @Setter
private String searchString;
@Getter
@Setter
private int maxResultSize;
+ private String[] searchKeyWords;
public boolean matches(BorgFilesystemItem item) {
- if (searchString == null || searchString.length() == 0) {
+ if (searchKeyWords == null) {
return true;
}
- return StringUtils.containsIgnoreCase(item.getPath(), searchString);
+ for (String searchKeyWord : searchKeyWords) {
+ if (!StringUtils.containsIgnoreCase(item.getPath(), searchKeyWord))
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ *
+ * @param searchString The search string. If this string contains several key words separated by white chars,
+ * all key words must be found.
+ * @return this for chaining.
+ */
+ public FileSystemFilter setSearchString(String searchString) {
+ this.searchString = searchString;
+ searchKeyWords = StringUtils.split(searchString);
+ if (searchKeyWords != null && searchKeyWords.length == 0) {
+ searchKeyWords = null;
+ }
+ return this;
}
}
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 2677b99..789fede 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
@@ -2,10 +2,11 @@
import lombok.Getter;
import lombok.Setter;
+import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
-public class BorgFilesystemItem implements Serializable {
+public class BorgFilesystemItem implements Serializable, Comparable<BorgFilesystemItem> {
private static final long serialVersionUID = -5545350851640655468L;
/**
* d (directory), - (file)
@@ -40,4 +41,9 @@
private String mtime;
@Getter
private long size;
+
+ @Override
+ public int compareTo(BorgFilesystemItem o) {
+ return StringUtils.compare(this.path, o.path);
+ }
}
--
Gitblit v1.10.0