/** * Check if I should accept this file into the index database * * @param file the file to check * @return true if the file should be included, false otherwise */ private boolean accept(File file) { if (!includedNames.isEmpty() && // the filter should not affect directory names (!(file.isDirectory() || includedNames.match(file)))) { return false; } if (ignoredNames.ignore(file)) { return false; } String absolutePath = file.getAbsolutePath(); if (!file.canRead()) { log.log(Level.WARNING, "Warning: could not read {0}", absolutePath); return false; } try { String canonicalPath = file.getCanonicalPath(); if (!absolutePath.equals(canonicalPath) && !acceptSymlink(absolutePath, canonicalPath)) { log.log( Level.FINE, "Skipped symlink ''{0}'' -> ''{1}''", new Object[] {absolutePath, canonicalPath}); return false; } // below will only let go files and directories, anything else is considered special and is // not added if (!file.isFile() && !file.isDirectory()) { log.log(Level.WARNING, "Warning: ignored special file {0}", absolutePath); return false; } } catch (IOException exp) { log.log(Level.WARNING, "Warning: Failed to resolve name: {0}", absolutePath); log.log(Level.FINE, "Stack Trace: ", exp); } if (file.isDirectory()) { // always accept directories so that their files can be examined return true; } if (HistoryGuru.getInstance().hasHistory(file)) { // versioned files should always be accepted return true; } // this is an unversioned file, check if it should be indexed return !RuntimeEnvironment.getInstance().isIndexVersionedFilesOnly(); }