From 8f0b9c057c970adcda350ffde1df89fb289cd9bf Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Wed, 23 Nov 2016 11:04:41 -0500 Subject: [PATCH] 1917-fixed re-opening project, and queries only returning files --- .../datamodel/DisplayableItemNodeVisitor.java | 9 ++++- .../datamodel/FileTypesByMimeType.java | 33 +++++++++++++++++-- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/DisplayableItemNodeVisitor.java b/Core/src/org/sleuthkit/autopsy/datamodel/DisplayableItemNodeVisitor.java index 2ec8b205bb..f7fdb96243 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/DisplayableItemNodeVisitor.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/DisplayableItemNodeVisitor.java @@ -152,6 +152,8 @@ public interface DisplayableItemNodeVisitor { T visit(FileTypesByMimeType.MediaSubTypeNode ftByMimeTypeMediaSubType); + T visit(FileTypesByMimeType.EmptyNode.MessageNode aThis); + /** * Visitor with an implementable default behavior for all types. Override @@ -229,7 +231,12 @@ public interface DisplayableItemNodeVisitor { public T visit(FileTypesByMimeType.MediaSubTypeNode ftByMimeTypeMediaTypeNode) { return defaultVisit(ftByMimeTypeMediaTypeNode); } - + + @Override + public T visit(FileTypesByMimeType.EmptyNode.MessageNode ftByMimeTypeEmptyNode) { + return defaultVisit(ftByMimeTypeEmptyNode); + } + @Override public T visit(DeletedContentNode dcn) { return defaultVisit(dcn); diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByMimeType.java b/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByMimeType.java index 892a34b653..444444b64a 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByMimeType.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByMimeType.java @@ -119,7 +119,11 @@ public class FileTypesByMimeType extends Observable implements AutopsyVisitableI private void populateHashMap() { StringBuilder allDistinctMimeTypesQuery = new StringBuilder(); allDistinctMimeTypesQuery.append("SELECT DISTINCT mime_type from tsk_files where mime_type NOT null"); //NON-NLS - allDistinctMimeTypesQuery.append(" AND dir_type = ").append(TskData.TSK_FS_NAME_TYPE_ENUM.REG.getValue()).append(";"); //NON-NLS + allDistinctMimeTypesQuery.append(" AND dir_type = ").append(TskData.TSK_FS_NAME_TYPE_ENUM.REG.getValue()); //NON-NLS + allDistinctMimeTypesQuery.append(" AND (type IN (").append(TskData.TSK_DB_FILES_TYPE_ENUM.FS.ordinal()).append(","); //NON-NLS + allDistinctMimeTypesQuery.append(TskData.TSK_DB_FILES_TYPE_ENUM.CARVED.ordinal()).append(","); + allDistinctMimeTypesQuery.append(TskData.TSK_DB_FILES_TYPE_ENUM.DERIVED.ordinal()).append(","); + allDistinctMimeTypesQuery.append(TskData.TSK_DB_FILES_TYPE_ENUM.LOCAL.ordinal()).append("))"); synchronized (existingMimeTypes) { existingMimeTypes.clear(); } @@ -155,6 +159,7 @@ public class FileTypesByMimeType extends Observable implements AutopsyVisitableI IngestManager.getInstance().addIngestJobEventListener(pcl); IngestManager.getInstance().addIngestModuleEventListener(pcl); FileTypesByMimeType.skCase = skCase; + populateHashMap(); } /** @@ -417,6 +422,10 @@ public class FileTypesByMimeType extends Observable implements AutopsyVisitableI private static String createQuery(String mime_type) { StringBuilder query = new StringBuilder(); query.append("(dir_type = ").append(TskData.TSK_FS_NAME_TYPE_ENUM.REG.getValue()).append(")"); //NON-NLS + query.append(" AND (type IN (").append(TskData.TSK_DB_FILES_TYPE_ENUM.FS.ordinal()).append(","); //NON-NLS + query.append(TskData.TSK_DB_FILES_TYPE_ENUM.CARVED.ordinal()).append(","); + query.append(TskData.TSK_DB_FILES_TYPE_ENUM.DERIVED.ordinal()).append(","); + query.append(TskData.TSK_DB_FILES_TYPE_ENUM.LOCAL.ordinal()).append("))"); if (UserPreferences.hideKnownFilesInViewsTree()) { query.append(" AND (known IS NULL OR known != ").append(TskData.FileKnown.KNOWN.getFileKnownValue()).append(")"); //NON-NLS } @@ -499,7 +508,12 @@ public class FileTypesByMimeType extends Observable implements AutopsyVisitableI } - static class MessageNode extends AbstractNode { + /** + * MessageNode is is the info message that displays in the table view, + * by also extending a DisplayableItemNode type, rather than an + * AbstractNode type it doesn't throw an error when right clicked. + */ + static class MessageNode extends DisplayableItemNode { MessageNode(String name) { super(Children.LEAF); @@ -507,6 +521,21 @@ public class FileTypesByMimeType extends Observable implements AutopsyVisitableI setName(name); setDisplayName(name); } + + @Override + public boolean isLeafTypeNode() { + return true; + } + + @Override + public T accept(DisplayableItemNodeVisitor v) { + return v.visit(this); + } + + @Override + public String getItemType() { + return getClass().getName(); + } } }