From e11bab1ebf26a287fe45abc1a3867c0cd59e3e2a Mon Sep 17 00:00:00 2001 From: Reinhard Pointner Date: Fri, 25 Nov 2016 23:59:26 +0800 Subject: [PATCH] Fix error prone code --- source/net/filebot/ApplicationFolder.java | 26 ++++--------------- source/net/filebot/CacheManager.java | 2 +- source/net/filebot/HistorySpooler.java | 2 +- source/net/filebot/Main.java | 10 +++---- source/net/filebot/Settings.java | 4 --- source/net/filebot/cli/GroovyPad.java | 2 +- .../format/ExpressionFormatFunctions.java | 2 +- .../net/filebot/format/MediaBindingBean.java | 2 +- .../filebot/format/SecureCompiledScript.java | 2 +- source/net/filebot/media/MediaDetection.java | 2 +- source/net/filebot/media/ReleaseInfo.java | 2 +- .../ui/rename/ExpressionFormatter.java | 2 +- source/net/filebot/ui/rename/RenamePanel.java | 2 +- source/net/filebot/util/FileUtilities.java | 4 +-- 14 files changed, 22 insertions(+), 42 deletions(-) diff --git a/source/net/filebot/ApplicationFolder.java b/source/net/filebot/ApplicationFolder.java index 927a049b..f8a84f9c 100644 --- a/source/net/filebot/ApplicationFolder.java +++ b/source/net/filebot/ApplicationFolder.java @@ -1,22 +1,19 @@ package net.filebot; -import static net.filebot.Logging.*; import static net.filebot.Settings.*; -import static net.filebot.util.FileUtilities.*; import java.io.File; -import java.util.logging.Level; public enum ApplicationFolder { // real user home (the user.home will point to the application-specific container in sandbox environments) - UserHome(isMacSandbox() ? "/Users/" + System.getProperty("user.name") : System.getProperty("user.home")), + UserHome(isMacSandbox() ? System.getProperty("UserHome") : System.getProperty("user.home")), - AppData(System.getProperty("application.dir", UserHome.path(".filebot").getPath())), + AppData(System.getProperty("application.dir", UserHome.resolve(".filebot").getPath())), Temp(System.getProperty("java.io.tmpdir")), - Cache(System.getProperty("application.cache", AppData.path("cache").getPath())); + Cache(System.getProperty("application.cache", AppData.resolve("cache").getPath())); private final File path; @@ -24,25 +21,12 @@ public enum ApplicationFolder { this.path = new File(path); } - public File get() { + public File getFile() { return path; } - public File path(String name) { + public File resolve(String name) { return new File(path, name); } - public File resolve(String name) { - return new File(getCanonicalFile(), name); - } - - public File getCanonicalFile() { - try { - return createFolders(path.getCanonicalFile()); - } catch (Exception e) { - debug.log(Level.SEVERE, String.format("Failed to create application folder: %s => %s", this, path), e); - return path; - } - } - } diff --git a/source/net/filebot/CacheManager.java b/source/net/filebot/CacheManager.java index a7b9e445..4b270e2f 100644 --- a/source/net/filebot/CacheManager.java +++ b/source/net/filebot/CacheManager.java @@ -67,7 +67,7 @@ public class CacheManager { private File acquireDiskStore() throws IOException { // prepare cache folder for this application instance - File cacheRoot = ApplicationFolder.Cache.getCanonicalFile(); + File cacheRoot = ApplicationFolder.Cache.getFile(); for (int i = 0; i < 10; i++) { File cache = new File(cacheRoot, Integer.toString(i)); diff --git a/source/net/filebot/HistorySpooler.java b/source/net/filebot/HistorySpooler.java index 00194209..2d4c9d0c 100644 --- a/source/net/filebot/HistorySpooler.java +++ b/source/net/filebot/HistorySpooler.java @@ -31,7 +31,7 @@ public final class HistorySpooler { Runtime.getRuntime().addShutdownHook(new Thread(HistorySpooler.getInstance()::commit, "HistorySpoolerShutdownHook")); // commit session history on shutdown } - private final File persistentHistoryFile = ApplicationFolder.AppData.path("history.xml"); + private final File persistentHistoryFile = ApplicationFolder.AppData.resolve("history.xml"); private int persistentHistoryTotalSize = -1; private boolean persistentHistoryEnabled = true; diff --git a/source/net/filebot/Main.java b/source/net/filebot/Main.java index 3564dc30..45243d05 100644 --- a/source/net/filebot/Main.java +++ b/source/net/filebot/Main.java @@ -91,7 +91,7 @@ public class Main { // clear caches if (args.clearCache()) { log.info("Clear cache"); - for (File folder : getChildren(ApplicationFolder.Cache.getCanonicalFile(), FOLDERS)) { + for (File folder : getChildren(ApplicationFolder.Cache.getFile(), FOLDERS)) { log.fine("* Delete " + folder); delete(folder); } @@ -109,7 +109,7 @@ public class Main { initializeLogging(args); // make sure java.io.tmpdir exists - createFolders(ApplicationFolder.Temp.get()); + createFolders(ApplicationFolder.Temp.getFile()); // initialize this stuff before anything else CacheManager.getInstance(); @@ -365,7 +365,7 @@ public class Main { System.setProperty("sun.net.client.defaultReadTimeout", "60000"); System.setProperty("swing.crossplatformlaf", "javax.swing.plaf.nimbus.NimbusLookAndFeel"); - System.setProperty("grape.root", ApplicationFolder.AppData.path("grape").getPath()); + System.setProperty("grape.root", ApplicationFolder.AppData.resolve("grape").getPath()); System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog"); if (args.unixfs) { @@ -389,7 +389,7 @@ public class Main { // log errors to file try { - Handler error = createSimpleFileHandler(ApplicationFolder.AppData.path("error.log"), Level.WARNING); + Handler error = createSimpleFileHandler(ApplicationFolder.AppData.resolve("error.log"), Level.WARNING); log.addHandler(error); debug.addHandler(error); } catch (Exception e) { @@ -401,7 +401,7 @@ public class Main { if (args.logFile != null) { File logFile = new File(args.logFile); if (!logFile.isAbsolute()) { - logFile = new File(ApplicationFolder.AppData.path("logs"), logFile.getPath()).getAbsoluteFile(); // by default resolve relative paths against {applicationFolder}/logs/{logFile} + logFile = new File(ApplicationFolder.AppData.resolve("logs"), logFile.getPath()).getAbsoluteFile(); // by default resolve relative paths against {applicationFolder}/logs/{logFile} } if (!logFile.exists() && !logFile.getParentFile().mkdirs() && !logFile.createNewFile()) { throw new IOException("Failed to create log file: " + logFile); diff --git a/source/net/filebot/Settings.java b/source/net/filebot/Settings.java index 790e0f08..6511d0f9 100644 --- a/source/net/filebot/Settings.java +++ b/source/net/filebot/Settings.java @@ -191,10 +191,6 @@ public final class Settings { return applicationArguments; } - public static File getApplicationFolder() { - return ApplicationFolder.AppData.get(); // added for script compatibility - } - public static Settings forPackage(Class type) { return new Settings(Preferences.userNodeForPackage(type)); } diff --git a/source/net/filebot/cli/GroovyPad.java b/source/net/filebot/cli/GroovyPad.java index 06a1d87e..2e3b1df6 100644 --- a/source/net/filebot/cli/GroovyPad.java +++ b/source/net/filebot/cli/GroovyPad.java @@ -118,7 +118,7 @@ public class GroovyPad extends JFrame { try { // use this default value so people can easily submit bug reports with fn:sysinfo logs - File pad = ApplicationFolder.AppData.path("pad.groovy"); + File pad = ApplicationFolder.AppData.resolve("pad.groovy"); if (!pad.exists()) { ScriptShellMethods.saveAs(DEFAULT_SCRIPT, pad); diff --git a/source/net/filebot/format/ExpressionFormatFunctions.java b/source/net/filebot/format/ExpressionFormatFunctions.java index da3fbc1b..2b3c80cf 100644 --- a/source/net/filebot/format/ExpressionFormatFunctions.java +++ b/source/net/filebot/format/ExpressionFormatFunctions.java @@ -91,7 +91,7 @@ public class ExpressionFormatFunctions { File f = new File(path); if (!f.isAbsolute()) { - f = ApplicationFolder.UserHome.path(path); + f = ApplicationFolder.UserHome.resolve(path); } if (isMacSandbox()) { diff --git a/source/net/filebot/format/MediaBindingBean.java b/source/net/filebot/format/MediaBindingBean.java index 71d659ec..ad7c457d 100644 --- a/source/net/filebot/format/MediaBindingBean.java +++ b/source/net/filebot/format/MediaBindingBean.java @@ -928,7 +928,7 @@ public class MediaBindingBean { @Define("home") public File getUserHome() { - return ApplicationFolder.UserHome.getCanonicalFile(); + return ApplicationFolder.UserHome.getFile(); } @Define("output") diff --git a/source/net/filebot/format/SecureCompiledScript.java b/source/net/filebot/format/SecureCompiledScript.java index 91f74bdc..459d938f 100644 --- a/source/net/filebot/format/SecureCompiledScript.java +++ b/source/net/filebot/format/SecureCompiledScript.java @@ -57,7 +57,7 @@ public class SecureCompiledScript extends CompiledScript { // write permissions for cache and temp folders for (ApplicationFolder it : ApplicationFolder.values()) { - permissions.add(new FilePermission(it.get() + File.separator + "-", "read, write, delete")); + permissions.add(new FilePermission(it.getFile().getAbsolutePath() + File.separator + "-", "read, write, delete")); } return permissions; diff --git a/source/net/filebot/media/MediaDetection.java b/source/net/filebot/media/MediaDetection.java index 0b0af836..c8ad506b 100644 --- a/source/net/filebot/media/MediaDetection.java +++ b/source/net/filebot/media/MediaDetection.java @@ -1012,7 +1012,7 @@ public class MediaDetection { } public static boolean isStructureRoot(File folder) throws Exception { - return isVolumeRoot(folder) || releaseInfo.getStructureRootPattern().matcher(folder.getName()).matches() || ApplicationFolder.UserHome.get().equals(folder.getParentFile()); + return isVolumeRoot(folder) || releaseInfo.getStructureRootPattern().matcher(folder.getName()).matches() || ApplicationFolder.UserHome.getFile().equals(folder.getParentFile()); } public static File getStructureRoot(File file) throws Exception { diff --git a/source/net/filebot/media/ReleaseInfo.java b/source/net/filebot/media/ReleaseInfo.java index c0f00f52..3eeaeae4 100644 --- a/source/net/filebot/media/ReleaseInfo.java +++ b/source/net/filebot/media/ReleaseInfo.java @@ -220,7 +220,7 @@ public class ReleaseInfo { if (volumeRoots == null) { Set volumes = new HashSet(); - File home = ApplicationFolder.UserHome.get(); + File home = ApplicationFolder.UserHome.getFile(); List roots = getFileSystemRoots(); // user root folder diff --git a/source/net/filebot/ui/rename/ExpressionFormatter.java b/source/net/filebot/ui/rename/ExpressionFormatter.java index 7b9ff2c8..cd1faf12 100644 --- a/source/net/filebot/ui/rename/ExpressionFormatter.java +++ b/source/net/filebot/ui/rename/ExpressionFormatter.java @@ -83,7 +83,7 @@ class ExpressionFormatter implements MatchFormatter { // resolve against home folder if (destination.startsWith("~")) { - return ApplicationFolder.UserHome.path(destination.substring(1)).getAbsolutePath(); + return ApplicationFolder.UserHome.resolve(destination.substring(1)).getAbsolutePath(); } // try to resolve against structure root folder by default diff --git a/source/net/filebot/ui/rename/RenamePanel.java b/source/net/filebot/ui/rename/RenamePanel.java index ee690295..9290188a 100644 --- a/source/net/filebot/ui/rename/RenamePanel.java +++ b/source/net/filebot/ui/rename/RenamePanel.java @@ -160,7 +160,7 @@ public class RenamePanel extends JComponent { renameModel.useFormatter(FileInfo.class, new FileNameFormatter()); } - RenameListCellRenderer cellrenderer = new RenameListCellRenderer(renameModel, ApplicationFolder.UserHome.getCanonicalFile()); + RenameListCellRenderer cellrenderer = new RenameListCellRenderer(renameModel, ApplicationFolder.UserHome.getFile()); namesList.getListComponent().setCellRenderer(cellrenderer); filesList.getListComponent().setCellRenderer(cellrenderer); diff --git a/source/net/filebot/util/FileUtilities.java b/source/net/filebot/util/FileUtilities.java index cf6d7b2b..3ec24f03 100644 --- a/source/net/filebot/util/FileUtilities.java +++ b/source/net/filebot/util/FileUtilities.java @@ -179,8 +179,8 @@ public final class FileUtilities { } } - public static File createFolders(File folder) throws IOException { - return Files.createDirectories(folder.toPath()).toFile(); + public static void createFolders(File folder) throws IOException { + Files.createDirectories(folder.toPath()); } private static final String WIN_THUMBNAIL_STORE = "Thumbs.db";