From aa5d5c901c6d5af473b59d95f49fa2a0bfc64a83 Mon Sep 17 00:00:00 2001 From: Reinhard Pointner Date: Mon, 25 May 2015 10:37:42 +0000 Subject: [PATCH] * String.join works slightly different than our own join() method, so to avoid any hidden issues keep using our own as before --- source/net/filebot/Settings.java | 5 +++-- source/net/filebot/WebServices.java | 3 ++- source/net/filebot/format/MediaBindingBean.java | 4 ++-- source/net/filebot/media/MediaDetection.java | 3 ++- source/net/filebot/media/ReleaseInfo.java | 1 - source/net/filebot/similarity/EpisodeMetrics.java | 3 ++- source/net/filebot/similarity/SeriesNameMatcher.java | 3 ++- source/net/filebot/subtitle/SubRipReader.java | 4 +++- source/net/filebot/ui/rename/EpisodeListMatcher.java | 3 ++- source/net/filebot/ui/rename/HistoryDialog.java | 2 +- source/net/filebot/ui/rename/RenameList.java | 2 +- .../net/filebot/ui/subtitle/SubtitleAutoMatchDialog.java | 2 -- source/net/filebot/ui/subtitle/SubtitleViewer.java | 1 - source/net/filebot/util/StringUtilities.java | 9 ++++++++- source/net/filebot/web/EpisodeFormat.java | 5 +++-- 15 files changed, 31 insertions(+), 19 deletions(-) diff --git a/source/net/filebot/Settings.java b/source/net/filebot/Settings.java index 9d2f1c7d..2d5e5e7e 100644 --- a/source/net/filebot/Settings.java +++ b/source/net/filebot/Settings.java @@ -1,6 +1,7 @@ package net.filebot; import static net.filebot.util.FileUtilities.*; +import static net.filebot.util.StringUtilities.*; import java.awt.GraphicsEnvironment; import java.io.File; @@ -285,14 +286,14 @@ public final class Settings { } public static String getApplicationIdentifier() { - return String.join(" ", getApplicationName(), getApplicationVersion(), String.format("(r%s)", getApplicationRevisionNumber())); + return join(" ", getApplicationName(), getApplicationVersion(), String.format("(r%s)", getApplicationRevisionNumber())); } public static String getJavaRuntimeIdentifier() { String name = System.getProperty("java.runtime.name"); String version = System.getProperty("java.version"); String headless = GraphicsEnvironment.isHeadless() ? "(headless)" : null; - return String.join(" ", name, version, headless); + return join(" ", name, version, headless); } private static String[] applicationArgumentArray; diff --git a/source/net/filebot/WebServices.java b/source/net/filebot/WebServices.java index d799c15b..a4b6bc87 100644 --- a/source/net/filebot/WebServices.java +++ b/source/net/filebot/WebServices.java @@ -5,6 +5,7 @@ import static java.util.Collections.*; import static net.filebot.Settings.*; import static net.filebot.media.MediaDetection.*; import static net.filebot.util.FileUtilities.*; +import static net.filebot.util.StringUtilities.*; import java.io.IOException; import java.util.LinkedHashSet; @@ -256,7 +257,7 @@ public final class WebServices { if (LOGIN_OPENSUBTITLES.equals(id)) { String password_md5 = md5(password); OpenSubtitles.setUser(user, password_md5); - Settings.forPackage(WebServices.class).put(id, String.join(LOGIN_SEPARATOR, user, password_md5)); + Settings.forPackage(WebServices.class).put(id, join(LOGIN_SEPARATOR, user, password_md5)); } else { throw new IllegalArgumentException(); } diff --git a/source/net/filebot/format/MediaBindingBean.java b/source/net/filebot/format/MediaBindingBean.java index d3850de2..e07398ab 100644 --- a/source/net/filebot/format/MediaBindingBean.java +++ b/source/net/filebot/format/MediaBindingBean.java @@ -157,7 +157,7 @@ public class MediaBindingBean { for (Episode it : getEpisodes()) { title.add(removeTrailingBrackets(it.getTitle())); } - return truncateText(String.join(" & ", title), limit); + return truncateText(join(title, " & "), limit); } @Define("d") @@ -353,7 +353,7 @@ public class MediaBindingBean { return null; // e.g. 1280x720 - return String.join("x", dim.get(0).toString(), dim.get(1).toString()); + return join(dim, "x"); } @Define("ws") diff --git a/source/net/filebot/media/MediaDetection.java b/source/net/filebot/media/MediaDetection.java index 0c4d4ef6..41a842e5 100644 --- a/source/net/filebot/media/MediaDetection.java +++ b/source/net/filebot/media/MediaDetection.java @@ -7,6 +7,7 @@ import static net.filebot.Settings.*; import static net.filebot.similarity.CommonSequenceMatcher.*; import static net.filebot.similarity.Normalization.*; import static net.filebot.util.FileUtilities.*; +import static net.filebot.util.StringUtilities.*; import java.io.File; import java.io.FileFilter; @@ -1046,7 +1047,7 @@ public class MediaDetection { relativePath.addFirst(it.getName()); } - return relativePath.isEmpty() ? null : new File(String.join(File.separator, relativePath)); + return relativePath.isEmpty() ? null : new File(join(relativePath, File.separator)); } public static Map> mapByMediaFolder(Collection files) { diff --git a/source/net/filebot/media/ReleaseInfo.java b/source/net/filebot/media/ReleaseInfo.java index 0529f4c5..101c7ebf 100644 --- a/source/net/filebot/media/ReleaseInfo.java +++ b/source/net/filebot/media/ReleaseInfo.java @@ -38,7 +38,6 @@ import net.filebot.web.CachedResource; import net.filebot.web.Movie; import net.filebot.web.SubtitleSearchResult; import net.filebot.web.TheTVDBSearchResult; -import net.filebot.web.SubtitleSearchResult.Kind; import org.tukaani.xz.XZInputStream; diff --git a/source/net/filebot/similarity/EpisodeMetrics.java b/source/net/filebot/similarity/EpisodeMetrics.java index 03c9feb7..a9c7012b 100644 --- a/source/net/filebot/similarity/EpisodeMetrics.java +++ b/source/net/filebot/similarity/EpisodeMetrics.java @@ -5,6 +5,7 @@ import static java.util.Collections.*; import static java.util.regex.Pattern.*; import static net.filebot.similarity.Normalization.*; import static net.filebot.util.FileUtilities.*; +import static net.filebot.util.StringUtilities.*; import java.io.File; import java.io.IOException; @@ -435,7 +436,7 @@ public enum EpisodeMetrics implements SimilarityMetric { while (scanner.hasNextInt()) { numbers.add(String.valueOf(scanner.nextInt())); } - return String.join(" ", numbers); + return join(numbers, " "); } }), diff --git a/source/net/filebot/similarity/SeriesNameMatcher.java b/source/net/filebot/similarity/SeriesNameMatcher.java index 13be182d..2db34ce0 100644 --- a/source/net/filebot/similarity/SeriesNameMatcher.java +++ b/source/net/filebot/similarity/SeriesNameMatcher.java @@ -4,6 +4,7 @@ import static java.util.Collections.*; import static java.util.regex.Pattern.*; import static net.filebot.similarity.CommonSequenceMatcher.*; import static net.filebot.similarity.Normalization.*; +import static net.filebot.util.StringUtilities.*; import java.io.File; import java.text.CollationKey; @@ -99,7 +100,7 @@ public class SeriesNameMatcher { whitelist.addAll(deepMatchAll(focus, threshold)); // 1. use pattern matching - seriesNames.addAll(flatMatchAll(names, compile(String.join("|", whitelist), CASE_INSENSITIVE | UNICODE_CHARACTER_CLASS), threshold, false)); + seriesNames.addAll(flatMatchAll(names, compile(join(whitelist, "|"), CASE_INSENSITIVE | UNICODE_CHARACTER_CLASS), threshold, false)); // 2. use common word sequences seriesNames.addAll(whitelist); diff --git a/source/net/filebot/subtitle/SubRipReader.java b/source/net/filebot/subtitle/SubRipReader.java index be6b7a4b..41d90322 100644 --- a/source/net/filebot/subtitle/SubRipReader.java +++ b/source/net/filebot/subtitle/SubRipReader.java @@ -1,5 +1,7 @@ package net.filebot.subtitle; +import static net.filebot.util.StringUtilities.*; + import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -48,7 +50,7 @@ public class SubRipReader extends SubtitleReader { lines.add(line); } - return new SubtitleElement(t1, t2, resolve(String.join("\n", lines))); + return new SubtitleElement(t1, t2, resolve(join(lines, "\n"))); } protected String resolve(String text) { diff --git a/source/net/filebot/ui/rename/EpisodeListMatcher.java b/source/net/filebot/ui/rename/EpisodeListMatcher.java index add4485c..fb702103 100644 --- a/source/net/filebot/ui/rename/EpisodeListMatcher.java +++ b/source/net/filebot/ui/rename/EpisodeListMatcher.java @@ -6,6 +6,7 @@ import static net.filebot.Settings.*; import static net.filebot.WebServices.*; import static net.filebot.media.MediaDetection.*; import static net.filebot.util.FileUtilities.*; +import static net.filebot.util.StringUtilities.*; import static net.filebot.util.ui.SwingUI.*; import java.awt.Component; @@ -285,7 +286,7 @@ class EpisodeListMatcher implements AutoCompleteMatcher { if (episodes.isEmpty() && !strict) { List detectedSeriesNames = detectSeriesNames(files, useSeriesIndex, useAnimeIndex, locale); String parentPathHint = normalizePathSeparators(getRelativePathTail(files.get(0).getParentFile(), 2).getPath()); - String suggestion = detectedSeriesNames.size() > 0 ? String.join("; ", detectedSeriesNames) : parentPathHint; + String suggestion = detectedSeriesNames.size() > 0 ? join(detectedSeriesNames, "; ") : parentPathHint; List input; synchronized (inputMemory) { diff --git a/source/net/filebot/ui/rename/HistoryDialog.java b/source/net/filebot/ui/rename/HistoryDialog.java index 62f7ff53..89e4f3b9 100644 --- a/source/net/filebot/ui/rename/HistoryDialog.java +++ b/source/net/filebot/ui/rename/HistoryDialog.java @@ -1,6 +1,5 @@ package net.filebot.ui.rename; -import static net.filebot.util.ui.SwingUI.*; import static java.awt.Font.*; import static java.util.Arrays.*; import static java.util.Collections.*; @@ -9,6 +8,7 @@ import static javax.swing.JOptionPane.*; import static net.filebot.Settings.*; import static net.filebot.UserFiles.*; import static net.filebot.util.FileUtilities.*; +import static net.filebot.util.ui.SwingUI.*; import java.awt.Color; import java.awt.Component; diff --git a/source/net/filebot/ui/rename/RenameList.java b/source/net/filebot/ui/rename/RenameList.java index 46116e93..4922c068 100644 --- a/source/net/filebot/ui/rename/RenameList.java +++ b/source/net/filebot/ui/rename/RenameList.java @@ -1,7 +1,7 @@ package net.filebot.ui.rename; -import static net.filebot.util.ui.SwingUI.*; import static java.util.Collections.*; +import static net.filebot.util.ui.SwingUI.*; import java.awt.BorderLayout; import java.awt.event.ActionEvent; diff --git a/source/net/filebot/ui/subtitle/SubtitleAutoMatchDialog.java b/source/net/filebot/ui/subtitle/SubtitleAutoMatchDialog.java index ecdaf4a4..11692624 100644 --- a/source/net/filebot/ui/subtitle/SubtitleAutoMatchDialog.java +++ b/source/net/filebot/ui/subtitle/SubtitleAutoMatchDialog.java @@ -61,8 +61,6 @@ import javax.swing.table.DefaultTableCellRenderer; import net.filebot.ResourceManager; import net.filebot.mac.MacAppUtilities; -import net.filebot.similarity.EpisodeMetrics; -import net.filebot.similarity.MetricCascade; import net.filebot.similarity.SimilarityMetric; import net.filebot.subtitle.SubtitleMetrics; import net.filebot.subtitle.SubtitleNaming; diff --git a/source/net/filebot/ui/subtitle/SubtitleViewer.java b/source/net/filebot/ui/subtitle/SubtitleViewer.java index 0a741efa..cd407ad3 100644 --- a/source/net/filebot/ui/subtitle/SubtitleViewer.java +++ b/source/net/filebot/ui/subtitle/SubtitleViewer.java @@ -22,7 +22,6 @@ import java.util.regex.Pattern; import javax.swing.AbstractAction; import javax.swing.Action; -import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; diff --git a/source/net/filebot/util/StringUtilities.java b/source/net/filebot/util/StringUtilities.java index 4fb4a13b..3f02df49 100644 --- a/source/net/filebot/util/StringUtilities.java +++ b/source/net/filebot/util/StringUtilities.java @@ -4,7 +4,6 @@ import static java.util.Arrays.*; import java.util.Arrays; import java.util.Comparator; -import java.util.Iterator; public final class StringUtilities { @@ -16,6 +15,14 @@ public final class StringUtilities { return object == null || object.toString().length() == 0; } + public static String join(Iterable values, CharSequence delimiter) { + return join(values, delimiter, "", ""); + } + + public static String join(CharSequence delimiter, Object... values) { + return join(asList(values), delimiter, "", ""); + } + public static String join(Object[] values, CharSequence delimiter) { return join(asList(values), delimiter, "", ""); } diff --git a/source/net/filebot/web/EpisodeFormat.java b/source/net/filebot/web/EpisodeFormat.java index 4ea1e3d6..24209a17 100644 --- a/source/net/filebot/web/EpisodeFormat.java +++ b/source/net/filebot/web/EpisodeFormat.java @@ -1,5 +1,7 @@ package net.filebot.web; +import static net.filebot.util.StringUtilities.*; + import java.text.FieldPosition; import java.text.Format; import java.text.ParseException; @@ -108,8 +110,7 @@ public class EpisodeFormat extends Format { sxe.add(formatSxE(it)); title.add(it.getTitle().replaceAll("[(]([^)]*)[)]$", "").trim()); } - - return String.format("%s - %s - %s", String.join(" & ", name), String.join(" & ", sxe), String.join(" & ", title)); + return String.format("%s - %s - %s", join(name, " & "), join(" & ", sxe), join(" & ", title)); } public String formatMultiSxE(Iterable episodes) {