From fade9f18d8297bc1ec745cad1976bec249a0ca53 Mon Sep 17 00:00:00 2001 From: momo Date: Tue, 20 Oct 2015 10:45:28 -0400 Subject: [PATCH] remove maps --- .../modules/filetypeid/FileTypeDetector.java | 41 +++++++++-------- .../FileTypeIdGlobalSettingsPanel.java | 24 +++++----- .../UserDefinedFileTypesManager.java | 44 +++++++++---------- 3 files changed, 55 insertions(+), 54 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeDetector.java b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeDetector.java index 9f969410af..cde31639f4 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeDetector.java +++ b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeDetector.java @@ -39,7 +39,7 @@ public class FileTypeDetector { private static final Tika tika = new Tika(); private static final int BUFFER_SIZE = 64 * 1024; private final byte buffer[] = new byte[BUFFER_SIZE]; - private final Map> userDefinedFileTypes; + private final List userDefinedFileTypes; /** * Constructs an object that detects the type of a file by an inspection of @@ -77,7 +77,12 @@ public class FileTypeDetector { * @return True if MIME type is detectable. */ private boolean isDetectableAsUserDefinedType(String mimeType) { - return userDefinedFileTypes.containsKey(mimeType); + for (FileType fileType : userDefinedFileTypes) { + if (fileType.getMimeType().equals(mimeType)) { + return true; + } + } + return false; } /** @@ -216,25 +221,23 @@ public class FileTypeDetector { * @throws TskCoreException */ private String detectUserDefinedType(AbstractFile file) throws TskCoreException { - for (List fileTypes : userDefinedFileTypes.values()) { - for (FileType fileType : fileTypes) { - if (fileType.matches(file)) { - if (fileType.alertOnMatch()) { - BlackboardArtifact artifact; - artifact = file.newArtifact(BlackboardArtifact.ARTIFACT_TYPE.TSK_INTERESTING_FILE_HIT); - BlackboardAttribute setNameAttribute = new BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_SET_NAME.getTypeID(), FileTypeIdModuleFactory.getModuleName(), fileType.getFilesSetName()); - artifact.addAttribute(setNameAttribute); + for (FileType fileType : userDefinedFileTypes) { + if (fileType.matches(file)) { + if (fileType.alertOnMatch()) { + BlackboardArtifact artifact; + artifact = file.newArtifact(BlackboardArtifact.ARTIFACT_TYPE.TSK_INTERESTING_FILE_HIT); + BlackboardAttribute setNameAttribute = new BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_SET_NAME.getTypeID(), FileTypeIdModuleFactory.getModuleName(), fileType.getFilesSetName()); + artifact.addAttribute(setNameAttribute); - /** - * Use the MIME type as the category, i.e., the rule - * that determined this file belongs to the interesting - * files set. - */ - BlackboardAttribute ruleNameAttribute = new BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_CATEGORY.getTypeID(), FileTypeIdModuleFactory.getModuleName(), fileType.getMimeType()); - artifact.addAttribute(ruleNameAttribute); - } - return fileType.getMimeType(); + /** + * Use the MIME type as the category, i.e., the rule that + * determined this file belongs to the interesting files + * set. + */ + BlackboardAttribute ruleNameAttribute = new BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_CATEGORY.getTypeID(), FileTypeIdModuleFactory.getModuleName(), fileType.getMimeType()); + artifact.addAttribute(ruleNameAttribute); } + return fileType.getMimeType(); } } return null; diff --git a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeIdGlobalSettingsPanel.java b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeIdGlobalSettingsPanel.java index 578264eb87..8f65e1a5e2 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeIdGlobalSettingsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeIdGlobalSettingsPanel.java @@ -59,7 +59,7 @@ final class FileTypeIdGlobalSettingsPanel extends IngestModuleGlobalSettingsPane * is obtained from the user-defined types manager. */ private DefaultListModel typesListModel; - private Map> fileTypes; + private java.util.List fileTypes; /** * This panel implements a property change listener that listens to ingest @@ -227,7 +227,7 @@ final class FileTypeIdGlobalSettingsPanel extends IngestModuleGlobalSettingsPane ex.getLocalizedMessage(), NbBundle.getMessage(FileTypeIdGlobalSettingsPanel.class, "FileTypeIdGlobalSettingsPanel.JOptionPane.loadFailed.title"), JOptionPane.ERROR_MESSAGE); - fileTypes = Collections.emptyMap(); + fileTypes = Collections.emptyList(); } enableButtons(); } @@ -236,13 +236,9 @@ final class FileTypeIdGlobalSettingsPanel extends IngestModuleGlobalSettingsPane * Sets the list model for the file types list component. */ private void updateFileTypesListModel() { - ArrayList mimeTypes = new ArrayList<>(fileTypes.keySet()); - Collections.sort(mimeTypes); typesListModel.clear(); - for (String mimeType : mimeTypes) { - for (FileType fileType : fileTypes.get(mimeType)) { - typesListModel.addElement(fileType); - } + for (FileType fileType : fileTypes) { + typesListModel.addElement(fileType); } } @@ -561,7 +557,7 @@ final class FileTypeIdGlobalSettingsPanel extends IngestModuleGlobalSettingsPane private void deleteTypeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteTypeButtonActionPerformed FileType fileType = typesList.getSelectedValue(); - UserDefinedFileTypesManager.getInstance().removeFileTypeFromMap(fileTypes, fileType); + fileTypes.remove(fileType); updateFileTypesListModel(); if (!typesListModel.isEmpty()) { typesList.setSelectedIndex(0); @@ -630,8 +626,9 @@ final class FileTypeIdGlobalSettingsPanel extends IngestModuleGlobalSettingsPane * Get the interesting files set details. */ String filesSetName = ""; - if(postHitCheckBox.isSelected()) + if (postHitCheckBox.isSelected()) { filesSetName = filesSetNameTextField.getText(); + } if (postHitCheckBox.isSelected() && filesSetName.isEmpty()) { JOptionPane.showMessageDialog(null, NbBundle.getMessage(FileTypeIdGlobalSettingsPanel.class, "FileTypeIdGlobalSettingsPanel.JOptionPane.invalidInterestingFilesSetName.message"), @@ -646,9 +643,10 @@ final class FileTypeIdGlobalSettingsPanel extends IngestModuleGlobalSettingsPane FileType.Signature signature = new FileType.Signature(signatureBytes, offset, sigType); FileType fileType = new FileType(typeName, signature, filesSetName, postHitCheckBox.isSelected()); FileType selected = typesList.getSelectedValue(); - if (selected != null) - UserDefinedFileTypesManager.getInstance().removeFileTypeFromMap(fileTypes, selected); - UserDefinedFileTypesManager.getInstance().addFileTypeToMap(fileTypes, fileType); + if (selected != null) { + fileTypes.remove(selected); + } + fileTypes.add(fileType); updateFileTypesListModel(); typesList.setSelectedValue(fileType.getMimeType(), true); }//GEN-LAST:event_saveTypeButtonActionPerformed diff --git a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/UserDefinedFileTypesManager.java b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/UserDefinedFileTypesManager.java index 8f33d55e56..2f00972c62 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/UserDefinedFileTypesManager.java +++ b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/UserDefinedFileTypesManager.java @@ -82,7 +82,7 @@ final class UserDefinedFileTypesManager { * map is guarded by the intrinsic lock of the user-defined file types * manager for thread-safety. */ - private final Map> userDefinedFileTypes = new HashMap<>(); + private final List userDefinedFileTypes = new ArrayList<>(); /** * The combined set of user-defined file types and file types predefined by @@ -91,7 +91,7 @@ final class UserDefinedFileTypesManager { * the intrinsic lock of the user-defined file types manager for * thread-safety. */ - private final Map> fileTypes = new HashMap<>(); + private final List fileTypes = new ArrayList<>(); /** * Gets the singleton manager of user-defined file types characterized by @@ -122,7 +122,7 @@ final class UserDefinedFileTypesManager { * @throws * org.sleuthkit.autopsy.modules.filetypeid.UserDefinedFileTypesManager.UserDefinedFileTypesException */ - synchronized Map> getFileTypes() throws UserDefinedFileTypesException { + synchronized List getFileTypes() throws UserDefinedFileTypesException { loadFileTypes(); /** @@ -131,7 +131,7 @@ final class UserDefinedFileTypesManager { * Collections.unmodifiableCollection() is not used here because this * view of the file types is a snapshot. */ - return new HashMap<>(fileTypes); + return new ArrayList<>(fileTypes); } /** @@ -142,7 +142,7 @@ final class UserDefinedFileTypesManager { * @throws * org.sleuthkit.autopsy.modules.filetypeid.UserDefinedFileTypesManager.UserDefinedFileTypesException */ - synchronized Map> getUserDefinedFileTypes() throws UserDefinedFileTypesException { + synchronized List getUserDefinedFileTypes() throws UserDefinedFileTypesException { loadFileTypes(); /** @@ -151,7 +151,7 @@ final class UserDefinedFileTypesManager { * Collections.unmodifiableCollection() is not used here because this * view of the file types is a snapshot. */ - return new HashMap<>(userDefinedFileTypes); + return new ArrayList<>(userDefinedFileTypes); } /** @@ -182,11 +182,11 @@ final class UserDefinedFileTypesManager { private void loadPredefinedFileTypes() throws UserDefinedFileTypesException { try { FileType fileTypeXml = new FileType("text/xml", new Signature("> map, FileType fileType) { String mimeType = fileType.getMimeType(); @@ -271,10 +273,10 @@ final class UserDefinedFileTypesManager { * @param newFileTypes A mapping of file type names to user-defined file * types. */ - synchronized void setUserDefinedFileTypes(Map> newFileTypes) throws UserDefinedFileTypesException { + synchronized void setUserDefinedFileTypes(List newFileTypes) throws UserDefinedFileTypesException { try { String filePath = getFileTypeDefinitionsFilePath(USER_DEFINED_TYPE_DEFINITIONS_FILE); - XmlWriter.writeFileTypes(newFileTypes.values(), filePath); + XmlWriter.writeFileTypes(newFileTypes, filePath); } catch (ParserConfigurationException | FileNotFoundException | UnsupportedEncodingException | TransformerException ex) { throwUserDefinedFileTypesException(ex, "UserDefinedFileTypesManager.saveFileTypes.errorMessage"); } catch (IOException ex) { @@ -312,15 +314,13 @@ final class UserDefinedFileTypesManager { * @throws UnsupportedEncodingException * @throws TransformerException */ - private static void writeFileTypes(Collection> fileTypes, String filePath) throws ParserConfigurationException, IOException, FileNotFoundException, UnsupportedEncodingException, TransformerException { + private static void writeFileTypes(List fileTypes, String filePath) throws ParserConfigurationException, IOException, FileNotFoundException, UnsupportedEncodingException, TransformerException { Document doc = XMLUtil.createDocument(); Element fileTypesElem = doc.createElement(FILE_TYPES_TAG_NAME); doc.appendChild(fileTypesElem); - for (List fileTypeList : fileTypes) { - for (FileType fileType : fileTypeList) { - Element fileTypeElem = XmlWriter.createFileTypeElement(fileType, doc); - fileTypesElem.appendChild(fileTypeElem); - } + for (FileType fileType : fileTypes) { + Element fileTypeElem = XmlWriter.createFileTypeElement(fileType, doc); + fileTypesElem.appendChild(fileTypeElem); } XMLUtil.saveDocument(doc, ENCODING_FOR_XML_FILE, filePath); }