package awesome.console; import com.intellij.openapi.roots.ContentIterator; import com.intellij.openapi.vfs.VirtualFile; import java.util.ArrayList; import java.util.List; import java.util.Map; public class AwesomeProjectFilesIterator implements ContentIterator { private final Map<String, List<VirtualFile>> fileCache; private final Map<String, List<VirtualFile>> fileBaseCache; AwesomeProjectFilesIterator(final Map<String, List<VirtualFile>> fileCache, final Map<String, List<VirtualFile>> fileBaseCache) { this.fileCache = fileCache; this.fileBaseCache = fileBaseCache; } @Override public boolean processFile(final VirtualFile file) { if (!file.isDirectory()) { /* cache for full file name */ final String filename = file.getName(); if (!fileCache.containsKey(filename)) { fileCache.put(filename, new ArrayList<VirtualFile>()); } fileCache.get(filename).add(file); /* cache for basename (fully qualified class names) */ final String basename = file.getNameWithoutExtension(); if (0 >= basename.length()) { return true; } if (!fileBaseCache.containsKey(basename)) { fileBaseCache.put(basename, new ArrayList<VirtualFile>()); } fileBaseCache.get(basename).add(file); } return true; } }