diff --git a/source/net/filebot/media/ReleaseInfo.java b/source/net/filebot/media/ReleaseInfo.java index 5b4c9633..ec031f38 100644 --- a/source/net/filebot/media/ReleaseInfo.java +++ b/source/net/filebot/media/ReleaseInfo.java @@ -520,7 +520,7 @@ public class ReleaseInfo { } private String or(Object[] terms) { - return joinSorted(terms, "|", reverseOrder(), "(", ")"); // non-capturing group that matches the longest occurrence + return join(stream(terms).sorted(reverseOrder()), "|", "(", ")"); // non-capturing group that matches the longest occurrence } private String[] quoteAll(Collection values) { diff --git a/source/net/filebot/util/JsonUtilities.java b/source/net/filebot/util/JsonUtilities.java index c43d8312..73d7e365 100644 --- a/source/net/filebot/util/JsonUtilities.java +++ b/source/net/filebot/util/JsonUtilities.java @@ -73,7 +73,7 @@ public class JsonUtilities { } public static String getString(Object node, String key) { - return nonEmptyOrNull(asMap(node).get(key)); + return StringUtilities.asNonEmptyString(asMap(node).get(key)); } public static Integer getInteger(Object node, String key) { @@ -97,7 +97,7 @@ public class JsonUtilities { } public static > EnumMap mapStringValues(Object node, Class cls) { - return mapValues(node, cls, JsonUtilities::nonEmptyOrNull); + return mapValues(node, cls, StringUtilities::asNonEmptyString); } public static , V> EnumMap mapValues(Object node, Class cls, Function converter) { @@ -115,14 +115,4 @@ public class JsonUtilities { return map; } - public static String nonEmptyOrNull(Object object) { - if (object != null) { - String string = object.toString(); - if (string.length() > 0) { - return string; - } - } - return null; - } - } diff --git a/source/net/filebot/util/StringUtilities.java b/source/net/filebot/util/StringUtilities.java index 983541dd..35cdb87a 100644 --- a/source/net/filebot/util/StringUtilities.java +++ b/source/net/filebot/util/StringUtilities.java @@ -2,12 +2,15 @@ package net.filebot.util; import static java.util.Arrays.*; import static java.util.Collections.*; +import static java.util.stream.Collectors.*; import java.util.ArrayList; -import java.util.Comparator; +import java.util.Collection; import java.util.List; +import java.util.Objects; import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.util.stream.Stream; public final class StringUtilities { @@ -53,39 +56,38 @@ public final class StringUtilities { return object == null ? null : object.toString(); } + public static String asNonEmptyString(Object object) { + if (object != null) { + String string = object.toString(); + if (string.length() > 0) { + return string; + } + } + return null; + } + public static boolean isEmpty(Object object) { return object == null || object.toString().length() == 0; } - public static String join(Iterable values, CharSequence delimiter) { - return join(values, delimiter, "", ""); + public static boolean nonEmpty(Object object) { + return object != null && object.toString().length() > 0; + } + + public static String join(Collection values, CharSequence delimiter) { + return join(values.stream(), delimiter, "", ""); } public static String join(CharSequence delimiter, Object... values) { - return join(asList(values), delimiter, "", ""); + return join(stream(values), delimiter, "", ""); } public static String join(Object[] values, CharSequence delimiter) { - return join(asList(values), delimiter, "", ""); + return join(stream(values), delimiter, "", ""); } - public static String joinSorted(Object[] values, CharSequence delimiter, Comparator sort, CharSequence start, CharSequence end) { - return join(stream(values).sorted(sort)::iterator, delimiter, start, end); - } - - public static String join(Iterable values, CharSequence delimiter, CharSequence start, CharSequence end) { - StringBuilder sb = new StringBuilder().append(start); - - for (Object value : values) { - if (!isEmpty(value)) { - if (sb.length() > start.length()) { - sb.append(delimiter); - } - sb.append(value); - } - } - - return sb.append(end).toString(); + public static String join(Stream values, CharSequence delimiter, CharSequence prefix, CharSequence suffix) { + return values.map(StringUtilities::asNonEmptyString).filter(Objects::nonNull).collect(joining(delimiter, prefix, suffix)); } /**