public static GlobalSearchScope adjustScope(PsiDirectory baseDir, GlobalSearchScope scope, boolean skipSourceDirsForBaseTestDirectory, boolean skipTestDirsForBaseSourceDirectory) { if (baseDir != null) { final ProjectFileIndex fileIndex = ProjectRootManager.getInstance(baseDir.getProject()).getFileIndex(); if (fileIndex.isInTestSourceContent(baseDir.getVirtualFile())) { if (skipSourceDirsForBaseTestDirectory) { return scope.intersectWith(GlobalSearchScopes.projectTestScope(baseDir.getProject())); } } else { if (skipTestDirsForBaseSourceDirectory) { return scope.intersectWith(GlobalSearchScopes.projectProductionScope(baseDir.getProject())); } } } return scope; }
protected SearchScope getSearchScope(final String scopeType, final PsiElement thisClass) { SearchScope searchScope = GlobalSearchScope.allScope(myProject); if (HierarchyBrowserBaseEx.SCOPE_CLASS.equals(scopeType)) { searchScope = new LocalSearchScope(thisClass); } else if (HierarchyBrowserBaseEx.SCOPE_PROJECT.equals(scopeType)) { searchScope = GlobalSearchScopes.projectProductionScope(myProject); } else if (HierarchyBrowserBaseEx.SCOPE_TEST.equals(scopeType)) { searchScope = GlobalSearchScopes.projectTestScope(myProject); } else { final NamedScope namedScope = NamedScopesHolder.getScope(myProject, scopeType); if (namedScope != null) { searchScope = GlobalSearchScopes.filterScope(myProject, namedScope); } } return searchScope; }
private Map<MavenId, PsiFile> getNotImportPoms(MavenProject mavenProject) { GlobalSearchScope pomScope = GlobalSearchScopes.directoryScope(project, mavenProject.getDirectoryFile(), true); PsiFile[] psiFiles = FilenameIndex.getFilesByName(project, "pom.xml", pomScope); Map<MavenId, PsiFile> poms = new LinkedHashMap<MavenId, PsiFile>(psiFiles.length); for (PsiFile psiFile : psiFiles) { if (projectsManager.findProject(psiFile.getVirtualFile()) == null) { MavenId mavenId = MavenDomUtil.describe(psiFile); poms.put(mavenId, psiFile); } } return poms; }
@Override public SourceScope getSourceScope() { final String dirName = myConfiguration.getPersistentData().getDirName(); final VirtualFile file = LocalFileSystem.getInstance().findFileByPath(FileUtil.toSystemIndependentName(dirName)); final GlobalSearchScope globalSearchScope = file == null ? GlobalSearchScope.EMPTY_SCOPE : GlobalSearchScopes .directoryScope(myProject, file, true); return new SourceScope() { @Override public GlobalSearchScope getGlobalSearchScope() { return globalSearchScope; } @Override public Project getProject() { return myProject; } @Override public GlobalSearchScope getLibrariesScope() { final Module module = myConfiguration.getConfigurationModule().getModule(); LOG.assertTrue(module != null); return GlobalSearchScope.moduleWithLibrariesScope(module); } @Override public Module[] getModulesToCompile() { final Collection<Module> validModules = myConfiguration.getValidModules(); return validModules.toArray(new Module[validModules.size()]); } }; }
private void buildOutputItemsList(final String outputDir, final Module module, VirtualFile from, final FileTypeManager typeManager, final VirtualFile sourceRoot, final String packagePrefix, final List<File> filesToRefresh, final Map<String, Collection<TranslatingCompiler.OutputItem>> results) throws CacheCorruptedException { final Ref<CacheCorruptedException> exRef = new Ref<CacheCorruptedException>(null); final ModuleFileIndex fileIndex = ModuleRootManager.getInstance(module).getFileIndex(); final GlobalSearchScope srcRootScope = GlobalSearchScope.moduleScope(module).intersectWith( GlobalSearchScopes.directoryScope(myProject, sourceRoot, true)); final ContentIterator contentIterator = new ContentIterator() { public boolean processFile(final VirtualFile child) { try { if (child.isValid()) { if (!child.isDirectory() && myCompiler.getCompilableFileTypes().contains(child.getFileType())) { updateOutputItemsList(outputDir, child, sourceRoot, packagePrefix, filesToRefresh, results, srcRootScope); } } return true; } catch (CacheCorruptedException e) { exRef.set(e); return false; } } }; if (fileIndex.isInContent(from)) { // use file index for iteration to handle 'inner modules' and excludes properly fileIndex.iterateContentUnderDirectory(from, contentIterator); } else { // seems to be a root for generated sources VfsUtilCore.visitChildrenRecursively(from, new VirtualFileVisitor() { @Override public boolean visitFile(@NotNull VirtualFile file) { if (!file.isDirectory()) { contentIterator.processFile(file); } return true; } }); } final CacheCorruptedException exc = exRef.get(); if (exc != null) { throw exc; } }
private void buildOutputItemsList(final String outputDir, final Module module, VirtualFile from, final FileTypeManager typeManager, final VirtualFile sourceRoot, final String packagePrefix, final List<File> filesToRefresh, final Map<String, Collection<TranslatingCompiler.OutputItem>> results) throws CacheCorruptedException { final Ref<CacheCorruptedException> exRef = new Ref<>(null); final ModuleFileIndex fileIndex = ModuleRootManager.getInstance(module).getFileIndex(); final GlobalSearchScope srcRootScope = GlobalSearchScope.moduleScope(module).intersectWith(GlobalSearchScopes.directoryScope(myProject, sourceRoot, true)); final Collection<FileType> registeredInputTypes = CompilerManager.getInstance(myProject).getRegisteredInputTypes(myTranslatingCompiler); final ContentIterator contentIterator = new ContentIterator() { @Override public boolean processFile(final VirtualFile child) { try { if(child.isValid()) { if(!child.isDirectory() && registeredInputTypes.contains(child.getFileType())) { updateOutputItemsList(outputDir, child, sourceRoot, packagePrefix, filesToRefresh, results, srcRootScope); } } return true; } catch(CacheCorruptedException e) { exRef.set(e); return false; } } }; if(fileIndex.isInContent(from)) { // use file index for iteration to handle 'inner modules' and excludes properly fileIndex.iterateContentUnderDirectory(from, contentIterator); } else { // seems to be a root for generated sources VfsUtilCore.visitChildrenRecursively(from, new VirtualFileVisitor() { @Override public boolean visitFile(@NotNull VirtualFile file) { if(!file.isDirectory()) { contentIterator.processFile(file); } return true; } }); } final CacheCorruptedException exc = exRef.get(); if(exc != null) { throw exc; } }