From a32b95943f5b997c0a722025dd71774954ededd2 Mon Sep 17 00:00:00 2001 From: Sophie Mori Date: Tue, 27 Sep 2016 11:17:31 -0400 Subject: [PATCH] Made TagsManager methods more general, moved tag name display logic to TagsManager clients --- .../autopsy/actions/AddTagAction.java | 11 ++++-- .../actions/GetTagNameAndCommentDialog.java | 9 ++++- .../autopsy/actions/GetTagNameDialog.java | 8 ++++- .../services/TagNamesSettingsPanel.form | 1 + .../services/TagNamesSettingsPanel.java | 7 ++++ .../casemodule/services/TagsManager.java | 36 +++++++++---------- 6 files changed, 50 insertions(+), 22 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/actions/AddTagAction.java b/Core/src/org/sleuthkit/autopsy/actions/AddTagAction.java index 7db5a5e0ee..2729e5e6ff 100755 --- a/Core/src/org/sleuthkit/autopsy/actions/AddTagAction.java +++ b/Core/src/org/sleuthkit/autopsy/actions/AddTagAction.java @@ -19,8 +19,12 @@ package org.sleuthkit.autopsy.actions; import java.awt.event.ActionEvent; +import java.util.ArrayList; import java.util.Collections; +import java.util.HashSet; import java.util.List; +import java.util.Set; +import java.util.TreeSet; import java.util.logging.Level; import javax.swing.AbstractAction; import javax.swing.JMenu; @@ -89,8 +93,11 @@ abstract class AddTagAction extends AbstractAction implements Presenter.Popup { TagsManager tagsManager = Case.getCurrentCase().getServices().getTagsManager(); List tagNames = null; try { - tagNames = tagsManager.getAllTagNamesForDisplay(); - Collections.sort(tagNames); + Set tagNamesSet = new TreeSet<>(); + tagNamesSet.addAll(tagsManager.getUserTagNames()); + tagNamesSet.addAll(tagsManager.getTagNamesInUse()); + tagNamesSet.addAll(tagsManager.getPredefinedTagNames()); + tagNames = new ArrayList(tagNamesSet); } catch (TskCoreException ex) { Logger.getLogger(TagsManager.class.getName()).log(Level.SEVERE, "Failed to get tag names", ex); //NON-NLS } diff --git a/Core/src/org/sleuthkit/autopsy/actions/GetTagNameAndCommentDialog.java b/Core/src/org/sleuthkit/autopsy/actions/GetTagNameAndCommentDialog.java index 19b32e3905..9d9dbaa7c2 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/GetTagNameAndCommentDialog.java +++ b/Core/src/org/sleuthkit/autopsy/actions/GetTagNameAndCommentDialog.java @@ -21,8 +21,11 @@ package org.sleuthkit.autopsy.actions; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Set; +import java.util.TreeSet; import java.util.logging.Level; import javax.swing.AbstractAction; import javax.swing.ActionMap; @@ -117,7 +120,11 @@ public class GetTagNameAndCommentDialog extends JDialog { TagsManager tagsManager = Case.getCurrentCase().getServices().getTagsManager(); List currentTagNames = null; try { - currentTagNames = tagsManager.getAllTagNamesForDisplay(); + Set tagNamesSet = new TreeSet<>(); + tagNamesSet.addAll(tagsManager.getUserTagNames()); + tagNamesSet.addAll(tagsManager.getTagNamesInUse()); + tagNamesSet.addAll(tagsManager.getPredefinedTagNames()); + currentTagNames = new ArrayList(tagNamesSet); } catch (TskCoreException ex) { Logger.getLogger(GetTagNameAndCommentDialog.class.getName()).log(Level.SEVERE, "Failed to get tag names", ex); //NON-NLS } diff --git a/Core/src/org/sleuthkit/autopsy/actions/GetTagNameDialog.java b/Core/src/org/sleuthkit/autopsy/actions/GetTagNameDialog.java index fd8634e123..f055469fef 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/GetTagNameDialog.java +++ b/Core/src/org/sleuthkit/autopsy/actions/GetTagNameDialog.java @@ -24,6 +24,8 @@ import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Set; +import java.util.TreeSet; import java.util.logging.Level; import javax.swing.AbstractAction; import javax.swing.ActionMap; @@ -98,7 +100,11 @@ public class GetTagNameDialog extends JDialog { TagsManager tagsManager = Case.getCurrentCase().getServices().getTagsManager(); List currentTagNames = null; try { - currentTagNames = tagsManager.getAllTagNamesForDisplay(); + Set tagNamesSet = new TreeSet<>(); + tagNamesSet.addAll(tagsManager.getUserTagNames()); + tagNamesSet.addAll(tagsManager.getTagNamesInUse()); + tagNamesSet.addAll(tagsManager.getPredefinedTagNames()); + currentTagNames = new ArrayList(tagNamesSet); } catch (TskCoreException ex) { Logger.getLogger(GetTagNameDialog.class.getName()).log(Level.SEVERE, "Failed to get tag names", ex); //NON-NLS } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/services/TagNamesSettingsPanel.form b/Core/src/org/sleuthkit/autopsy/casemodule/services/TagNamesSettingsPanel.form index 3e71ffdeeb..2ebeee3142 100755 --- a/Core/src/org/sleuthkit/autopsy/casemodule/services/TagNamesSettingsPanel.form +++ b/Core/src/org/sleuthkit/autopsy/casemodule/services/TagNamesSettingsPanel.form @@ -143,6 +143,7 @@ + diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/services/TagNamesSettingsPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/services/TagNamesSettingsPanel.java index 576b375b5d..9905869ae5 100755 --- a/Core/src/org/sleuthkit/autopsy/casemodule/services/TagNamesSettingsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/services/TagNamesSettingsPanel.java @@ -97,6 +97,9 @@ public class TagNamesSettingsPanel extends javax.swing.JPanel implements Options public void mouseClicked(java.awt.event.MouseEvent evt) { tagNamesListMouseClicked(evt); } + public void mousePressed(java.awt.event.MouseEvent evt) { + tagNamesListMousePressed(evt); + } }); jScrollPane1.setViewportView(tagNamesList); @@ -236,6 +239,10 @@ public class TagNamesSettingsPanel extends javax.swing.JPanel implements Options enableButtons(); }//GEN-LAST:event_tagNamesListMouseClicked + private void tagNamesListMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tagNamesListMousePressed + enableButtons(); + }//GEN-LAST:event_tagNamesListMousePressed + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton deleteTagNameButton; private javax.swing.JPanel jPanel1; diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/services/TagsManager.java b/Core/src/org/sleuthkit/autopsy/casemodule/services/TagsManager.java index e2b3fd6ab1..3d29b17ebb 100755 --- a/Core/src/org/sleuthkit/autopsy/casemodule/services/TagsManager.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/services/TagsManager.java @@ -64,8 +64,7 @@ public class TagsManager implements Closeable { } /** - * Gets a list of all tag names currently available for tagging content or - * artifacts. + * Gets a list of all tag names currently in the case database. * * @return A list, possibly empty, of TagName data transfer objects (DTOs). * @@ -81,33 +80,34 @@ public class TagsManager implements Closeable { } /** - * Gets a list of all tag names currently being used or tag names loaded - * from the properties file. + * Gets a list of all user tag names from the preference file. * * @return A list, possibly empty, of TagName data transfer objects (DTOs). - * - * @throws TskCoreException If there is an error reading from the case - * database. */ - public synchronized List getAllTagNamesForDisplay() throws TskCoreException { - if (null == caseDb) { - throw new TskCoreException("Tags manager has been closed"); - } + public synchronized List getUserTagNames() { lazyLoadExistingTagNames(); - Set tagNameSet = new HashSet<>(); - // Add bookmark tag and other tag names that are in use - tagNameSet.add(uniqueTagNames.get(NbBundle.getMessage(this.getClass(), "TagsManager.predefTagNames.bookmark.text"))); - tagNameSet.addAll(getTagNamesInUse()); - // Add any tag names defined by the user + List tagNameList = new ArrayList<>(); String setting = ModuleSettings.getConfigSetting(TAGS_SETTINGS_NAME, TAG_NAMES_SETTING_KEY); if (null != setting && !setting.isEmpty()) { List tagNameTuples = Arrays.asList(setting.split(";")); for (String tagNameTuple : tagNameTuples) { String[] tagNameAttributes = tagNameTuple.split(","); - tagNameSet.add(uniqueTagNames.get(tagNameAttributes[0])); + tagNameList.add(uniqueTagNames.get(tagNameAttributes[0])); } } - return new ArrayList<>(tagNameSet); + return tagNameList; + } + + /** + * Gets a list of all predefined tag names. + * + * @return A list of TagName data transfer objects (DTOs). + */ + public synchronized List getPredefinedTagNames() { + lazyLoadExistingTagNames(); + List tagNameList = new ArrayList<>(); + tagNameList.add(uniqueTagNames.get(NbBundle.getMessage(this.getClass(), "TagsManager.predefTagNames.bookmark.text"))); + return tagNameList; } /**