diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/FileTypeViewer.java b/Core/src/org/sleuthkit/autopsy/contentviewers/FileTypeViewer.java index a2096dd2d9..48cb044af1 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/FileTypeViewer.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/FileTypeViewer.java @@ -52,4 +52,6 @@ interface FileTypeViewer { * fine. Otherwise, it is ambiguous. */ void resetComponent(); + + boolean isSupported(AbstractFile file); } diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/FileViewer.java b/Core/src/org/sleuthkit/autopsy/contentviewers/FileViewer.java index ab92f3f543..1ffd42e4ed 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/FileViewer.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/FileViewer.java @@ -18,7 +18,6 @@ */ package org.sleuthkit.autopsy.contentviewers; - import com.google.common.base.Strings; import java.awt.Component; import java.util.HashMap; @@ -50,7 +49,8 @@ public class FileViewer extends javax.swing.JPanel implements DataContentViewer new SQLiteViewer(), new PListViewer(), new MediaFileViewer(), - new HtmlViewer() + new HtmlViewer(), + new WindowsRegistryViewer() }; private FileTypeViewer lastViewer; @@ -81,10 +81,15 @@ public class FileViewer extends javax.swing.JPanel implements DataContentViewer * * @param mimeType * - * @return FileTypeViewer, null if no known content viewer supports the mimetype + * @return FileTypeViewer, null if no known content viewer supports the + * mimetype */ - private FileTypeViewer getSupportingViewer(String mimeType) { - return mimeTypeToViewerMap.get(mimeType); + private FileTypeViewer getSupportingViewer(AbstractFile file) { + FileTypeViewer viewer = mimeTypeToViewerMap.get(file.getMIMEType()); + if (viewer == null || viewer.isSupported(file)) { + return viewer; + } + return null; } /** @@ -102,12 +107,11 @@ public class FileViewer extends javax.swing.JPanel implements DataContentViewer // Variables declaration - do not modify//GEN-BEGIN:variables // End of variables declaration//GEN-END:variables - @Override public void setNode(Node selectedNode) { - + resetComponent(); - + if (selectedNode == null) { return; } @@ -123,27 +127,22 @@ public class FileViewer extends javax.swing.JPanel implements DataContentViewer try { FileTypeDetector fileTypeDetector = new FileTypeDetector(); mimeType = fileTypeDetector.getMIMEType(file); - }catch (FileTypeDetector.FileTypeDetectorInitException ex) { + } catch (FileTypeDetector.FileTypeDetectorInitException ex) { LOGGER.log(Level.SEVERE, "Failed to initialize FileTypeDetector.", ex); //NON-NLS return; } } - - if (mimeType.equalsIgnoreCase("application/octet-stream")) { - return; - } - else { - FileTypeViewer viewer = getSupportingViewer(mimeType); - if (viewer != null) { - lastViewer = viewer; - viewer.setFile(file); - this.removeAll(); - this.add(viewer.getComponent()); - this.repaint(); - } + FileTypeViewer viewer = getSupportingViewer(file); + if (viewer != null) { + lastViewer = viewer; + + viewer.setFile(file); + this.removeAll(); + this.add(viewer.getComponent()); + this.repaint(); } - + } @Override @@ -196,44 +195,36 @@ public class FileViewer extends javax.swing.JPanel implements DataContentViewer try { FileTypeDetector fileTypeDetector = new FileTypeDetector(); mimeType = fileTypeDetector.getMIMEType(aFile); - }catch (FileTypeDetector.FileTypeDetectorInitException ex) { + } catch (FileTypeDetector.FileTypeDetectorInitException ex) { LOGGER.log(Level.SEVERE, "Failed to initialize FileTypeDetector.", ex); //NON-NLS return false; } } - - if (mimeType.equalsIgnoreCase("application/octet-stream")) { - return false; - } else { - return (getSupportingViewer(mimeType) != null); - } - + + return (getSupportingViewer(aFile) != null); + } @Override public int isPreferred(Node node) { AbstractFile file = node.getLookup().lookup(AbstractFile.class); String mimeType = file.getMIMEType(); - + if (Strings.isNullOrEmpty(mimeType)) { LOGGER.log(Level.INFO, "Mimetype not known for file: {0}", file.getName()); //NON-NLS try { FileTypeDetector fileTypeDetector = new FileTypeDetector(); mimeType = fileTypeDetector.getMIMEType(file); - }catch (FileTypeDetector.FileTypeDetectorInitException ex) { + } catch (FileTypeDetector.FileTypeDetectorInitException ex) { LOGGER.log(Level.SEVERE, "Failed to initialize FileTypeDetector.", ex); //NON-NLS return 0; } } - - if (mimeType.equalsIgnoreCase("application/octet-stream")) { - return 0; - } else { - if (null != getSupportingViewer(mimeType)) { - return CONFIDENCE_LEVEL; - } + + if (null != getSupportingViewer(file)) { + return CONFIDENCE_LEVEL; } - + return 0; } } diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/HtmlViewer.java b/Core/src/org/sleuthkit/autopsy/contentviewers/HtmlViewer.java index 07e6e4cb5a..a7e3e7fd11 100755 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/HtmlViewer.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/HtmlViewer.java @@ -37,29 +37,28 @@ final class HtmlViewer extends javax.swing.JPanel implements FileTypeViewer { private static final long serialVersionUID = 1L; private static final Logger logger = Logger.getLogger(HtmlViewer.class.getName()); - + private static final String[] SUPPORTED_MIMETYPES = new String[]{ - "text/html", - "application/xhtml+xml" + "text/html", + "application/xhtml+xml" }; - + /** * Creates new form HtmlViewerPanel */ HtmlViewer() { initComponents(); } - + /** * Retrieve the HTML text content from the supplied file. - * + * * @param abstractFile The file to read. - * + * * @return The text content of the file. */ @NbBundle.Messages({ - "HtmlViewer_file_error=This file is missing or unreadable.", - }) + "HtmlViewer_file_error=This file is missing or unreadable.",}) private String getHtmlText(AbstractFile abstractFile) { try { int fileSize = (int) abstractFile.getSize(); @@ -128,4 +127,9 @@ final class HtmlViewer extends javax.swing.JPanel implements FileTypeViewer { public void resetComponent() { htmlPanel.reset(); } + + @Override + public boolean isSupported(AbstractFile file) { + return true; + } } diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/MediaFileViewer.java b/Core/src/org/sleuthkit/autopsy/contentviewers/MediaFileViewer.java index b2d4baef99..70e04a8591 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/MediaFileViewer.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/MediaFileViewer.java @@ -191,4 +191,8 @@ class MediaFileViewer extends javax.swing.JPanel implements FileTypeViewer { boolean isSupported(AbstractFile file); } + @Override + public boolean isSupported(AbstractFile file){ + return true; + } } diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/PListViewer.java b/Core/src/org/sleuthkit/autopsy/contentviewers/PListViewer.java index c1fdda1efc..b7b209b3eb 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/PListViewer.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/PListViewer.java @@ -538,6 +538,11 @@ class PListViewer extends javax.swing.JPanel implements FileTypeViewer, Explorer } + @Override + public boolean isSupported(AbstractFile file){ + return true; + } + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton exportButton; private javax.swing.JPanel hdrPanel; diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/SQLiteViewer.java b/Core/src/org/sleuthkit/autopsy/contentviewers/SQLiteViewer.java index 078cc78c58..e9ba40eef0 100755 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/SQLiteViewer.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/SQLiteViewer.java @@ -413,8 +413,8 @@ class SQLiteViewer extends javax.swing.JPanel implements FileTypeViewer { currentTableHeader = new ArrayList<>(); viewReader.read(tableName); Map columnRow = new LinkedHashMap<>(); - for(int i = 0; i< currentTableHeader.size(); i++){ - columnRow.put(currentTableHeader.get(i), ""); + for (int i = 0; i < currentTableHeader.size(); i++) { + columnRow.put(currentTableHeader.get(i), ""); } selectedTableView.setupTable(Collections.singletonList(columnRow)); } @@ -617,4 +617,9 @@ class SQLiteViewer extends javax.swing.JPanel implements FileTypeViewer { } }; } + + @Override + public boolean isSupported(AbstractFile file) { + return true; + } } diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/WindowsRegistryViewer.java b/Core/src/org/sleuthkit/autopsy/contentviewers/WindowsRegistryViewer.java index 73c871b58e..8c23300f53 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/WindowsRegistryViewer.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/WindowsRegistryViewer.java @@ -48,9 +48,11 @@ class WindowsRegistryViewer extends JPanel implements FileTypeViewer { WindowsRegistryViewer() { super(new BorderLayout()); + System.out.println("CREATED REGISTRY VIEWER"); } private void setDataView(Content content) { + System.out.println("setDataview called"); if (content == null) { this.resetComponent(); return; @@ -80,11 +82,13 @@ class WindowsRegistryViewer extends JPanel implements FileTypeViewer { @Override public Component getComponent() { + System.out.println("component GOTTEN"); return this; } @Override public void resetComponent() { + System.out.println("RESETING COMP"); // cleanup anything if (this.regview != null) { this.remove(this.regview); @@ -92,7 +96,9 @@ class WindowsRegistryViewer extends JPanel implements FileTypeViewer { } } - private boolean isSupported(AbstractFile file) { + @Override + public boolean isSupported(AbstractFile file) { + System.out.println("IS THIS SUPPORTED?"); if (file == null) { return false; } @@ -111,19 +117,23 @@ class WindowsRegistryViewer extends JPanel implements FileTypeViewer { RegistryHive hive = new RegistryHiveBuffer(buf); try { hive.getHeader(); + System.out.println("is supported " + file.getName()); return true; } catch (RegistryParseException ex) { + System.out.println("not supported "+ file.getName()); return false; } } @Override public List getSupportedMIMETypes() { + System.out.println("GET SUPPORTED MIME TYPES"); return Arrays.asList(SUPPORTED_MIMETYPES); } @Override public void setFile(AbstractFile file) { + System.out.println("SET THE FILE"); if (file == null) { resetComponent(); return;