From 5145d906ddd7638990207195f4e5f998c904a83a Mon Sep 17 00:00:00 2001 From: Reinhard Pointner Date: Sat, 30 Jun 2012 08:46:55 +0000 Subject: [PATCH] * support -DthreadPool=n to override background matcher thread pool size (default is number of cores) --- source/net/sourceforge/filebot/Settings.java | 14 ++++++++++++++ .../sourceforge/filebot/cli/CmdlineOperations.java | 5 +++-- .../filebot/ui/rename/EpisodeListMatcher.java | 3 ++- .../filebot/ui/rename/MovieHashMatcher.java | 3 ++- .../filebot/ui/rename/ValidateDialog.java | 3 ++- 5 files changed, 23 insertions(+), 5 deletions(-) diff --git a/source/net/sourceforge/filebot/Settings.java b/source/net/sourceforge/filebot/Settings.java index 510ccfdb..21fd92d1 100644 --- a/source/net/sourceforge/filebot/Settings.java +++ b/source/net/sourceforge/filebot/Settings.java @@ -44,6 +44,20 @@ public final class Settings { } + public static boolean isUnixFS() { + return Boolean.parseBoolean(System.getProperty("unixfs")); + } + + + public static int getPreferredThreadPoolSize() { + try { + return Integer.parseInt(System.getProperty("threadPool")); + } catch (Exception e) { + return Runtime.getRuntime().availableProcessors(); + } + } + + public static String getApplicationDeployment() { String deployment = System.getProperty("application.deployment"); if (deployment != null) diff --git a/source/net/sourceforge/filebot/cli/CmdlineOperations.java b/source/net/sourceforge/filebot/cli/CmdlineOperations.java index 907d27bb..ac3944a4 100644 --- a/source/net/sourceforge/filebot/cli/CmdlineOperations.java +++ b/source/net/sourceforge/filebot/cli/CmdlineOperations.java @@ -6,6 +6,7 @@ import static java.lang.String.*; import static java.util.Arrays.*; import static java.util.Collections.*; import static net.sourceforge.filebot.MediaTypes.*; +import static net.sourceforge.filebot.Settings.*; import static net.sourceforge.filebot.WebServices.*; import static net.sourceforge.filebot.cli.CLILogging.*; import static net.sourceforge.filebot.hash.VerificationUtilities.*; @@ -209,7 +210,7 @@ public class CmdlineOperations implements CmdlineInterface { String newName = (format != null) ? format.format(new MediaBindingBean(episode, file)) : validateFileName(EpisodeFormat.SeasonEpisode.format(episode)); File newFile = new File(outputDir, newName + "." + getExtension(file)); - if (isInvalidFilePath(newFile) && !Boolean.parseBoolean(System.getProperty("unixfs"))) { + if (isInvalidFilePath(newFile) && !isUnixFS()) { CLILogger.config("Stripping invalid characters from new path: " + newName); newFile = validateFilePath(newFile); } @@ -444,7 +445,7 @@ public class CmdlineOperations implements CmdlineInterface { String newName = (format != null) ? format.format(new MediaBindingBean(movie, file)) : validateFileName(MovieFormat.NameYear.format(movie)); File newFile = new File(outputDir, newName + "." + getExtension(file)); - if (isInvalidFilePath(newFile) && !Boolean.parseBoolean(System.getProperty("unixfs"))) { + if (isInvalidFilePath(newFile) && !isUnixFS()) { CLILogger.config("Stripping invalid characters from new path: " + newName); newFile = validateFilePath(newFile); } diff --git a/source/net/sourceforge/filebot/ui/rename/EpisodeListMatcher.java b/source/net/sourceforge/filebot/ui/rename/EpisodeListMatcher.java index 0a5116bb..a03993bb 100644 --- a/source/net/sourceforge/filebot/ui/rename/EpisodeListMatcher.java +++ b/source/net/sourceforge/filebot/ui/rename/EpisodeListMatcher.java @@ -4,6 +4,7 @@ package net.sourceforge.filebot.ui.rename; import static java.util.Collections.*; import static net.sourceforge.filebot.MediaTypes.*; +import static net.sourceforge.filebot.Settings.*; import static net.sourceforge.filebot.media.MediaDetection.*; import static net.sourceforge.filebot.similarity.Normalization.*; import static net.sourceforge.tuned.FileUtilities.*; @@ -212,7 +213,7 @@ class EpisodeListMatcher implements AutoCompleteMatcher { } // match folder per folder in parallel - ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); + ExecutorService executor = Executors.newFixedThreadPool(getPreferredThreadPoolSize()); try { // merge all episodes diff --git a/source/net/sourceforge/filebot/ui/rename/MovieHashMatcher.java b/source/net/sourceforge/filebot/ui/rename/MovieHashMatcher.java index bc2f1fc9..8d5577f7 100644 --- a/source/net/sourceforge/filebot/ui/rename/MovieHashMatcher.java +++ b/source/net/sourceforge/filebot/ui/rename/MovieHashMatcher.java @@ -3,6 +3,7 @@ package net.sourceforge.filebot.ui.rename; import static net.sourceforge.filebot.MediaTypes.*; +import static net.sourceforge.filebot.Settings.*; import static net.sourceforge.filebot.media.MediaDetection.*; import static net.sourceforge.filebot.similarity.Normalization.*; import static net.sourceforge.tuned.FileUtilities.*; @@ -158,7 +159,7 @@ class MovieHashMatcher implements AutoCompleteMatcher { // map movies to (possibly multiple) files (in natural order) Map> filesByMovie = new HashMap>(); - ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); + ExecutorService executor = Executors.newFixedThreadPool(getPreferredThreadPoolSize()); try { for (Future> it : executor.invokeAll(grabMovieJobs)) { // check if we managed to lookup the movie descriptor diff --git a/source/net/sourceforge/filebot/ui/rename/ValidateDialog.java b/source/net/sourceforge/filebot/ui/rename/ValidateDialog.java index 49519689..f61d5e5e 100644 --- a/source/net/sourceforge/filebot/ui/rename/ValidateDialog.java +++ b/source/net/sourceforge/filebot/ui/rename/ValidateDialog.java @@ -3,6 +3,7 @@ package net.sourceforge.filebot.ui.rename; import static java.util.Collections.*; +import static net.sourceforge.filebot.Settings.*; import static net.sourceforge.tuned.FileUtilities.*; import static net.sourceforge.tuned.ui.TunedUtilities.*; @@ -161,7 +162,7 @@ class ValidateDialog extends JDialog { for (int i = 0; i < source.size(); i++) { // invalid file names are also invalid file paths - if (isInvalidFilePath(source.get(i)) && !Boolean.parseBoolean(System.getProperty("unixfs"))) { + if (isInvalidFilePath(source.get(i)) && !isUnixFS()) { invalidFilePaths.addIndex(i); } }