aboutsummaryrefslogtreecommitdiff
path: root/umlgen/src/main/java/moe/yuuta/umlgen/Visitor.kt
diff options
context:
space:
mode:
Diffstat (limited to 'umlgen/src/main/java/moe/yuuta/umlgen/Visitor.kt')
-rw-r--r--umlgen/src/main/java/moe/yuuta/umlgen/Visitor.kt37
1 files changed, 37 insertions, 0 deletions
diff --git a/umlgen/src/main/java/moe/yuuta/umlgen/Visitor.kt b/umlgen/src/main/java/moe/yuuta/umlgen/Visitor.kt
new file mode 100644
index 0000000..ea99b99
--- /dev/null
+++ b/umlgen/src/main/java/moe/yuuta/umlgen/Visitor.kt
@@ -0,0 +1,37 @@
+package moe.yuuta.umlgen
+
+import java.io.IOException
+import java.nio.charset.StandardCharsets
+import java.nio.file.*
+import java.nio.file.attribute.BasicFileAttributes
+import java.util.function.BiFunction
+
+class Visitor(private val consumer: BiFunction<Path, String, Void?>) : FileVisitor<Path> {
+ @Throws(IOException::class)
+ override fun preVisitDirectory(path: Path, basicFileAttributes: BasicFileAttributes): FileVisitResult {
+ return FileVisitResult.CONTINUE
+ }
+
+ @Throws(IOException::class)
+ override fun visitFileFailed(path: Path, e: IOException?): FileVisitResult {
+ System.err.printf("Open %s: %s\n", path.toFile(), e?.message)
+ return FileVisitResult.CONTINUE
+ }
+
+ @Throws(IOException::class)
+ override fun postVisitDirectory(path: Path, e: IOException?): FileVisitResult {
+ return FileVisitResult.CONTINUE
+ }
+
+ @Throws(IOException::class)
+ override fun visitFile(path: Path, basicFileAttributes: BasicFileAttributes?): FileVisitResult {
+ if (path.fileName.endsWith(".java")) {
+ return FileVisitResult.CONTINUE
+ }
+ val fd = Files.newInputStream(path, StandardOpenOption.READ)
+ val buf = String(fd.readAllBytes(), StandardCharsets.UTF_8)
+ fd.close()
+ consumer.apply(path, buf)
+ return FileVisitResult.CONTINUE
+ }
+}