diff --git a/src/main/java/com/github/mfl28/boundingboxeditor/model/io/services/ImageMetaDataLoadingService.java b/src/main/java/com/github/mfl28/boundingboxeditor/model/io/services/ImageMetaDataLoadingService.java index 5c37b32..b35ff12 100644 --- a/src/main/java/com/github/mfl28/boundingboxeditor/model/io/services/ImageMetaDataLoadingService.java +++ b/src/main/java/com/github/mfl28/boundingboxeditor/model/io/services/ImageMetaDataLoadingService.java @@ -27,12 +27,14 @@ import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.concurrent.Task; +import org.apache.commons.lang3.StringUtils; import java.io.File; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; public class ImageMetaDataLoadingService extends IoService { + private static final String[] ignoredExtensions = {".txt", ".json", ".xml", ".data"}; private final ObjectProperty source = new SimpleObjectProperty<>(this, "source"); private final ObjectProperty> imageFiles = new SimpleObjectProperty<>(this, "imageFiles"); private final BooleanProperty reload = new SimpleBooleanProperty(this, "reload"); @@ -68,11 +70,16 @@ protected ImageMetaDataLoadingResult call() throws Exception { final List errorInfoEntries = Collections.synchronizedList(new ArrayList<>()); - int totalNrOfFiles = imageFiles.get().size(); + final List filteredFiles = imageFiles.get().stream() + .filter(file -> !StringUtils.endsWithAny(file.getName().toLowerCase(Locale.ENGLISH), ignoredExtensions)) + .toList(); + + int totalNrOfFiles = filteredFiles.size(); final AtomicInteger nrProcessedFiles = new AtomicInteger(0); fileNameToMetaDataMap - .putAll(imageFiles.get().parallelStream().collect(HashMap::new, (map, item) -> { + .putAll(filteredFiles.parallelStream() + .collect(HashMap::new, (map, item) -> { updateProgress(1.0 * nrProcessedFiles.incrementAndGet() / totalNrOfFiles, 1.0); try { map.put(item.getName(), ImageMetaData.fromFile(item)); @@ -82,7 +89,7 @@ protected ImageMetaDataLoadingResult call() throws Exception { }, Map::putAll)); final List validImageFiles = - imageFiles.get().stream().filter(item -> fileNameToMetaDataMap.containsKey(item.getName())) + filteredFiles.stream().filter(item -> fileNameToMetaDataMap.containsKey(item.getName())) .toList(); return new ImageMetaDataLoadingResult(fileNameToMetaDataMap.size(), errorInfoEntries, diff --git a/src/test/java/com/github/mfl28/boundingboxeditor/ui/BoundingBoxDrawingTests.java b/src/test/java/com/github/mfl28/boundingboxeditor/ui/BoundingBoxDrawingTests.java index 9ca0dcc..17452bf 100644 --- a/src/test/java/com/github/mfl28/boundingboxeditor/ui/BoundingBoxDrawingTests.java +++ b/src/test/java/com/github/mfl28/boundingboxeditor/ui/BoundingBoxDrawingTests.java @@ -206,7 +206,7 @@ void onOpeningNewImageFolder_WhenBoundingBoxesExist_ShouldResetCorrectly(FxRobot final IOErrorInfoEntry referenceErrorInfoEntry1 = new IOErrorInfoEntry("cameraman.tif", "Unsupported image file format."); - final IOErrorInfoEntry referenceErrorInfoEntry2 = new IOErrorInfoEntry("no_image_file.txt", + final IOErrorInfoEntry referenceErrorInfoEntry2 = new IOErrorInfoEntry("no_image_file.pdf", "Invalid image file."); verifyThat(errorInfoEntries, Matchers.contains(referenceErrorInfoEntry1, referenceErrorInfoEntry2), diff --git a/src/test/resources/testimages/2/no_image_file.txt b/src/test/resources/testimages/2/dummy.data similarity index 100% rename from src/test/resources/testimages/2/no_image_file.txt rename to src/test/resources/testimages/2/dummy.data diff --git a/src/test/resources/testimages/2/dummy.json b/src/test/resources/testimages/2/dummy.json new file mode 100644 index 0000000..e69de29 diff --git a/src/test/resources/testimages/2/dummy.txt b/src/test/resources/testimages/2/dummy.txt new file mode 100644 index 0000000..e69de29 diff --git a/src/test/resources/testimages/2/dummy.xml b/src/test/resources/testimages/2/dummy.xml new file mode 100644 index 0000000..e69de29 diff --git a/src/test/resources/testimages/2/no_image_file.pdf b/src/test/resources/testimages/2/no_image_file.pdf new file mode 100644 index 0000000..e69de29