From 77fcc58d1facffbc3af50be8c05985350e9f1355 Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Sun, 17 Apr 2016 15:01:44 -0400 Subject: Code maintenace and changes --- .../bjc/utils/funcutils/FunctionalFileVisitor.java | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 BJC-Utils2/src/main/java/bjc/utils/funcutils/FunctionalFileVisitor.java (limited to 'BJC-Utils2/src/main/java/bjc/utils/funcutils/FunctionalFileVisitor.java') diff --git a/BJC-Utils2/src/main/java/bjc/utils/funcutils/FunctionalFileVisitor.java b/BJC-Utils2/src/main/java/bjc/utils/funcutils/FunctionalFileVisitor.java new file mode 100644 index 0000000..6d3336a --- /dev/null +++ b/BJC-Utils2/src/main/java/bjc/utils/funcutils/FunctionalFileVisitor.java @@ -0,0 +1,41 @@ +package bjc.utils.funcutils; + +import java.io.IOException; +import java.nio.file.FileVisitResult; +import java.nio.file.Path; +import java.nio.file.SimpleFileVisitor; +import java.nio.file.attribute.BasicFileAttributes; +import java.util.function.BiPredicate; + +final class FunctionalFileVisitor + extends SimpleFileVisitor { + private BiPredicate traversalPredicate; + private BiPredicate traversalAction; + + public FunctionalFileVisitor( + BiPredicate traversalPredicate, + BiPredicate traversalAction) { + this.traversalPredicate = traversalPredicate; + this.traversalAction = traversalAction; + } + + @Override + public FileVisitResult preVisitDirectory(Path dir, + BasicFileAttributes attrs) throws IOException { + if (traversalPredicate.test(dir, attrs)) { + return FileVisitResult.CONTINUE; + } + + return FileVisitResult.SKIP_SUBTREE; + } + + @Override + public FileVisitResult visitFile(Path file, + BasicFileAttributes attrs) throws IOException { + if (traversalAction.test(file, attrs)) { + return FileVisitResult.CONTINUE; + } + + return FileVisitResult.TERMINATE; + } +} \ No newline at end of file -- cgit v1.2.3