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);
}