use extension column in query

This commit is contained in:
millmanorama 2017-07-27 13:23:59 +02:00
parent de5d9e3629
commit 44777dc60b

View File

@ -353,29 +353,14 @@ public final class FileTypesByExtension implements AutopsyVisitableItem {
throw new IllegalArgumentException("Empty filter list passed to createQuery()"); // NON-NLS throw new IllegalArgumentException("Empty filter list passed to createQuery()"); // NON-NLS
} }
String query = "(dir_type = " + TskData.TSK_FS_NAME_TYPE_ENUM.REG.getValue() + ")" return "(dir_type = " + TskData.TSK_FS_NAME_TYPE_ENUM.REG.getValue() + ")"
+ (UserPreferences.hideKnownFilesInViewsTree() ? " AND (known IS NULL OR known != " + (UserPreferences.hideKnownFilesInViewsTree()
+ TskData.FileKnown.KNOWN.getFileKnownValue() + ")" : " ") ? " AND (known IS NULL OR known != " + TskData.FileKnown.KNOWN.getFileKnownValue() + ")"
+ " AND (NULL "; //NON-NLS : " ")
+ " AND (extension IN (" + filter.getFilter().stream()
if (skCase.getDatabaseType().equals(TskData.DbType.POSTGRESQL)) { .map(String::toLowerCase)
// For PostgreSQL we get a more efficient query by using builtin .map(s -> "'"+StringUtils.substringAfter(s, ".")+"'")
// regular expression support and or'ing all extensions. We also .collect(Collectors.joining(", ")) + "))";
// escape the dot at the beginning of the extension.
// We will end up with a query that looks something like this:
// OR LOWER(name) ~ '(\.zip|\.rar|\.7zip|\.cab|\.jar|\.cpio|\.ar|\.gz|\.tgz|\.bz2)$')
query += "OR LOWER(name) ~ '(\\";
query += StringUtils.join(filter.getFilter().stream()
.map(String::toLowerCase).collect(Collectors.toList()), "|\\");
query += ")$'";
} else {
for (String s : filter.getFilter()) {
query += "OR LOWER(name) LIKE '%" + s.toLowerCase() + "'"; // NON-NLS
}
}
query += ')';
return query;
} }
/** /**