From b3665a65dcaeaad3a71e56827f79ffedaeb39b74 Mon Sep 17 00:00:00 2001 From: Richard Cordovano <rcordovano@basistech.com> Date: Fri, 27 May 2016 15:56:42 -0400 Subject: [PATCH] Add FileManager.findFilesByMimeType API --- .../casemodule/services/FileManager.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/services/FileManager.java b/Core/src/org/sleuthkit/autopsy/casemodule/services/FileManager.java index 49530fc108..b840634420 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/services/FileManager.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/services/FileManager.java @@ -65,6 +65,54 @@ public FileManager(SleuthkitCase caseDb) { this.caseDb = caseDb; } + /** + * Finds all files with types that match one of a collection of MIME types. + * + * @param mimeTypes The MIME types. + * + * @return The files. + * + * @throws TskCoreException If there is a problem querying the case + * database. + */ + public synchronized List<AbstractFile> findFilesByMimeType(Collection<String> mimeTypes) throws TskCoreException { + if (null == caseDb) { + throw new TskCoreException("File manager has been closed"); + } + return caseDb.findAllFilesWhere(createFileTypeInCondition(mimeTypes)); + } + + /** + * Finds all files in a given data source (image, local/logical files set, + * etc.) with types that match one of a collection of MIME types. + * + * @param dataSource The data source. + * @param mimeTypes The MIME types. + * + * @return The files. + * + * @throws TskCoreException If there is a problem querying the case + * database. + */ + public synchronized List<AbstractFile> findFilesByMimeType(Content dataSource, Collection<String> mimeTypes) throws TskCoreException { + if (null == caseDb) { + throw new TskCoreException("File manager has been closed"); + } + return caseDb.findAllFilesWhere("data_source_obj_id = " + dataSource.getId() + " AND " + createFileTypeInCondition(mimeTypes)); + } + + /** + * Converts a list of MIME types into an SQL "mime_type IN" condition. + * + * @param mimeTypes The MIIME types. + * + * @return The condition string. + */ + private static String createFileTypeInCondition(Collection<String> mimeTypes) { + String types = StringUtils.join(mimeTypes, "', '"); + return "mime_type IN ('" + types + "')"; + } + /** * Finds all files and directories with a given file name. The name search * is for full or partial matches and is case insensitive (a case -- GitLab