diff --git a/pom.xml b/pom.xml index 2f87307..2542ed6 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ life.qbic data-processing - 0.3.2 + 0.4.1 data processing A Java tool that scans file move events and triggers a cascade of dataset pre-processing diff --git a/src/main/java/life/qbic/data/processing/AccessRightsEvaluation.java b/src/main/java/life/qbic/data/processing/AccessRightsEvaluation.java index a9e2cc1..47297af 100644 --- a/src/main/java/life/qbic/data/processing/AccessRightsEvaluation.java +++ b/src/main/java/life/qbic/data/processing/AccessRightsEvaluation.java @@ -67,5 +67,32 @@ public static void evaluateExistenceAndDirectory(File file) throws IOException { } } + /** + * Convenience method that checks if file can be read and executed by the application. + * + * @param file the path of the file of interest to evaluate + * @throws IOException if neither of the evaluated conditions are failing + * @since 1.0.0 + */ + public static void evaluateReadAndExecutablePermission(Path file) throws IOException { + evaluateReadAndExecutablePermission(file.toFile()); + } + + /** + * Convenience method that checks if file can be read and executed by the application. + * + * @param file the file of interest to evaluate + * @throws IOException if neither of the evaluated conditions are failing + * @since 1.0.0 + */ + public static void evaluateReadAndExecutablePermission(File file) throws IOException { + if (!file.canExecute()) { + throw new IOException("Cannot execute file " + file); + } + if (!file.canRead()) { + throw new IOException("Cannot read file " + file); + } + } + } diff --git a/src/main/java/life/qbic/data/processing/scanner/ScannerConfiguration.java b/src/main/java/life/qbic/data/processing/scanner/ScannerConfiguration.java index 47c55bb..4ce6490 100644 --- a/src/main/java/life/qbic/data/processing/scanner/ScannerConfiguration.java +++ b/src/main/java/life/qbic/data/processing/scanner/ScannerConfiguration.java @@ -21,7 +21,7 @@ public ScannerConfiguration(String scannerDirectory, int interval, String[] igno throw new IllegalArgumentException("Interval must be greater than 0"); } AccessRightsEvaluation.evaluateExistenceAndDirectory(this.scannerDirectory); - AccessRightsEvaluation.evaluateWriteAndExecutablePermission(this.scannerDirectory); + AccessRightsEvaluation.evaluateReadAndExecutablePermission(this.scannerDirectory); this.scanInterval = interval; this.ignore = Arrays.copyOf(Objects.requireNonNull(ignore), ignore.length); }