diff --git a/src/main/java/caosdb/server/database/backend/implementation/UnixFileSystem/UnixFileSystemGetFileIterator.java b/src/main/java/caosdb/server/database/backend/implementation/UnixFileSystem/UnixFileSystemGetFileIterator.java index 5bd6cd56fa40dc8696a8471e33381f1ab2584639..78fcac09e9746374d8e4af85368720e512d6a3b4 100644 --- a/src/main/java/caosdb/server/database/backend/implementation/UnixFileSystem/UnixFileSystemGetFileIterator.java +++ b/src/main/java/caosdb/server/database/backend/implementation/UnixFileSystem/UnixFileSystemGetFileIterator.java @@ -22,14 +22,14 @@ */ package caosdb.server.database.backend.implementation.UnixFileSystem; +import java.io.File; +import java.util.Arrays; +import java.util.Iterator; import caosdb.server.FileSystem; import caosdb.server.database.access.Access; import caosdb.server.database.backend.interfaces.GetFileIteratorImpl; import caosdb.server.database.exceptions.TransactionException; import caosdb.server.entity.Message; -import java.io.File; -import java.util.Arrays; -import java.util.Iterator; public class UnixFileSystemGetFileIterator extends UnixFileSystemTransaction implements GetFileIteratorImpl { diff --git a/src/main/java/caosdb/server/jobs/core/InsertFilesInDir.java b/src/main/java/caosdb/server/jobs/core/InsertFilesInDir.java index ea8836e61f042d5b5fadae340fd23cd3a520eec2..7e0517b0001c18ac4d3aa5577985b87228cfc7d9 100644 --- a/src/main/java/caosdb/server/jobs/core/InsertFilesInDir.java +++ b/src/main/java/caosdb/server/jobs/core/InsertFilesInDir.java @@ -22,6 +22,12 @@ */ package caosdb.server.jobs.core; +import java.io.File; +import java.io.IOException; +import java.util.LinkedList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import caosdb.server.CaosDBException; import caosdb.server.CaosDBServer; import caosdb.server.FileSystem; @@ -42,12 +48,6 @@ import caosdb.server.utils.EntityStatus; import caosdb.server.utils.FileUtils; import caosdb.server.utils.Undoable; import caosdb.server.utils.Utils; -import java.io.File; -import java.io.IOException; -import java.util.LinkedList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; @JobAnnotation( flag = "InsertFilesInDir", @@ -262,23 +262,25 @@ public class InsertFilesInDir extends FlagJob { } private boolean shouldBeProcessed(final File sub) throws IOException { - if (this.isNotIncluded(sub)) { - getContainer() - .addMessage( - new Message( - MessageType.Warning, - 1, - "Not explicitly included directory or file: " + sub.getCanonicalPath())); - return false; - } - if (this.isExcluded(sub)) { - getContainer() - .addMessage( - new Message( - MessageType.Warning, - 2, - "Explicitly excluded directory or file: " + sub.getCanonicalPath())); - return false; + if (sub.isFile()) { + if (this.isNotIncluded(sub)) { + getContainer() + .addMessage( + new Message( + MessageType.Warning, + 1, + "Not explicitly included file: " + sub.getCanonicalPath())); + return false; + } + if (this.isExcluded(sub)) { + getContainer() + .addMessage( + new Message( + MessageType.Warning, + 2, + "Explicitly excluded file: " + sub.getCanonicalPath())); + return false; + } } if (sub.isHidden()) { getContainer() diff --git a/src/main/java/caosdb/server/transaction/FileStorageConsistencyCheck.java b/src/main/java/caosdb/server/transaction/FileStorageConsistencyCheck.java index d1055b5e4c4a3bf0676883cc221e60d47442f304..8bf56a200a6075129506712cab9b7df7ed6f5d0c 100644 --- a/src/main/java/caosdb/server/transaction/FileStorageConsistencyCheck.java +++ b/src/main/java/caosdb/server/transaction/FileStorageConsistencyCheck.java @@ -22,6 +22,13 @@ */ package caosdb.server.transaction; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map.Entry; +import java.util.TimeZone; +import org.jdom2.Element; import caosdb.datetime.UTCDateTime; import caosdb.server.database.DatabaseMonitor; import caosdb.server.database.access.Access; @@ -30,17 +37,11 @@ import caosdb.server.database.backend.transaction.GetFileIterator; import caosdb.server.database.backend.transaction.GetFileRecordByPath; import caosdb.server.database.backend.transaction.RetrieveAllUncheckedFiles; import caosdb.server.database.backend.transaction.SetFileCheckedTimestamp; +import caosdb.server.database.exceptions.EntityDoesNotExistException; import caosdb.server.database.proto.SparseEntity; import caosdb.server.entity.Message; import caosdb.server.entity.xml.ToElementable; import caosdb.server.utils.SHA512; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map.Entry; -import java.util.TimeZone; -import org.jdom2.Element; public class FileStorageConsistencyCheck extends Thread implements ToElementable, TransactionInterface { @@ -81,29 +82,30 @@ public class FileStorageConsistencyCheck extends Thread } final String path = iterator.next(); - // FIXME this prevents all files with ".thumbnail" from being checked. - if (path.contains(".thumbnail")) { + // this prevents all thumbnails from being checked. + if (path.contains(".thumbnails/")) { continue; } - final GetFileRecordByPath t = execute(new GetFileRecordByPath(path), this.access); - - if (t.getEntity() == null) { + try { + final GetFileRecordByPath t = execute(new GetFileRecordByPath(path), this.access); + final int result = + execute( + new FileConsistencyCheck( + path, t.getSize(), t.getHash(), t.getLastConsistencyCheck(), new SHA512()), + this.access) + .getResult(); + + if (result != FileConsistencyCheck.OK) { + this.results.put(path, result); + } + + execute(new SetFileCheckedTimestamp(t.getId(), this.ts), this.access); + } catch (EntityDoesNotExistException e) { this.results.put(path, FileConsistencyCheck.UNKNOWN_FILE); continue; } - final int result = - execute( - new FileConsistencyCheck( - path, t.getSize(), t.getHash(), t.getLastConsistencyCheck(), new SHA512()), - this.access) - .getResult(); - - if (result != FileConsistencyCheck.OK) { - this.results.put(path, result); - } - execute(new SetFileCheckedTimestamp(t.getId(), this.ts), this.access); } // test all remaining file records