diff options
Diffstat (limited to 'java/java-impl/src/com/intellij/compilerOutputIndex/api/fs/FileVisitorService.java')
-rw-r--r-- | java/java-impl/src/com/intellij/compilerOutputIndex/api/fs/FileVisitorService.java | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/java/java-impl/src/com/intellij/compilerOutputIndex/api/fs/FileVisitorService.java b/java/java-impl/src/com/intellij/compilerOutputIndex/api/fs/FileVisitorService.java new file mode 100644 index 000000000000..9a7f00be3dc3 --- /dev/null +++ b/java/java-impl/src/com/intellij/compilerOutputIndex/api/fs/FileVisitorService.java @@ -0,0 +1,53 @@ +package com.intellij.compilerOutputIndex.api.fs; + +import com.intellij.openapi.project.Project; +import com.intellij.util.Consumer; + +import java.io.File; + +/** + * @author Dmitry Batkovich <dmitry.batkovich@jetbrains.com> + */ +public interface FileVisitorService { + + interface Visitor { + void visit(File file); + } + + void visit(final Consumer<File> visitor); + + class ProjectClassFiles implements FileVisitorService { + private final Project myProject; + + public ProjectClassFiles(final Project project) { + myProject = project; + } + + @Override + public void visit(final Consumer<File> visitor) { + CompilerOutputFilesUtil.iterateProjectClassFiles(myProject, visitor); + } + } + + class DirectoryClassFiles implements FileVisitorService { + private final File myDir; + + public DirectoryClassFiles(final File dir) { + if (!dir.isDirectory()) { + throw new IllegalArgumentException(); + } + myDir = dir; + } + + @Override + public void visit(final Consumer<File> visitor) { + //noinspection ConstantConditions + for (final File file : myDir.listFiles()) { + if (file.getName().endsWith(CompilerOutputFilesUtil.CLASS_FILES_SUFFIX)) { + visitor.consume(file); + } + } + } + } +} + |