Made TagsManager methods more general, moved tag name display logic to TagsManager clients

This commit is contained in:
Sophie Mori 2016-09-27 11:17:31 -04:00
parent e7a5f59081
commit a32b95943f
6 changed files with 50 additions and 22 deletions

View File

@ -19,8 +19,12 @@
package org.sleuthkit.autopsy.actions; package org.sleuthkit.autopsy.actions;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import java.util.logging.Level; import java.util.logging.Level;
import javax.swing.AbstractAction; import javax.swing.AbstractAction;
import javax.swing.JMenu; import javax.swing.JMenu;
@ -89,8 +93,11 @@ abstract class AddTagAction extends AbstractAction implements Presenter.Popup {
TagsManager tagsManager = Case.getCurrentCase().getServices().getTagsManager(); TagsManager tagsManager = Case.getCurrentCase().getServices().getTagsManager();
List<TagName> tagNames = null; List<TagName> tagNames = null;
try { try {
tagNames = tagsManager.getAllTagNamesForDisplay(); Set<TagName> tagNamesSet = new TreeSet<>();
Collections.sort(tagNames); tagNamesSet.addAll(tagsManager.getUserTagNames());
tagNamesSet.addAll(tagsManager.getTagNamesInUse());
tagNamesSet.addAll(tagsManager.getPredefinedTagNames());
tagNames = new ArrayList(tagNamesSet);
} catch (TskCoreException ex) { } catch (TskCoreException ex) {
Logger.getLogger(TagsManager.class.getName()).log(Level.SEVERE, "Failed to get tag names", ex); //NON-NLS Logger.getLogger(TagsManager.class.getName()).log(Level.SEVERE, "Failed to get tag names", ex); //NON-NLS
} }

View File

@ -21,8 +21,11 @@ package org.sleuthkit.autopsy.actions;
import java.awt.Window; import java.awt.Window;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import java.util.logging.Level; import java.util.logging.Level;
import javax.swing.AbstractAction; import javax.swing.AbstractAction;
import javax.swing.ActionMap; import javax.swing.ActionMap;
@ -117,7 +120,11 @@ public class GetTagNameAndCommentDialog extends JDialog {
TagsManager tagsManager = Case.getCurrentCase().getServices().getTagsManager(); TagsManager tagsManager = Case.getCurrentCase().getServices().getTagsManager();
List<TagName> currentTagNames = null; List<TagName> currentTagNames = null;
try { try {
currentTagNames = tagsManager.getAllTagNamesForDisplay(); Set<TagName> tagNamesSet = new TreeSet<>();
tagNamesSet.addAll(tagsManager.getUserTagNames());
tagNamesSet.addAll(tagsManager.getTagNamesInUse());
tagNamesSet.addAll(tagsManager.getPredefinedTagNames());
currentTagNames = new ArrayList(tagNamesSet);
} catch (TskCoreException ex) { } catch (TskCoreException ex) {
Logger.getLogger(GetTagNameAndCommentDialog.class.getName()).log(Level.SEVERE, "Failed to get tag names", ex); //NON-NLS Logger.getLogger(GetTagNameAndCommentDialog.class.getName()).log(Level.SEVERE, "Failed to get tag names", ex); //NON-NLS
} }

View File

@ -24,6 +24,8 @@ import java.awt.event.KeyEvent;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import java.util.logging.Level; import java.util.logging.Level;
import javax.swing.AbstractAction; import javax.swing.AbstractAction;
import javax.swing.ActionMap; import javax.swing.ActionMap;
@ -98,7 +100,11 @@ public class GetTagNameDialog extends JDialog {
TagsManager tagsManager = Case.getCurrentCase().getServices().getTagsManager(); TagsManager tagsManager = Case.getCurrentCase().getServices().getTagsManager();
List<TagName> currentTagNames = null; List<TagName> currentTagNames = null;
try { try {
currentTagNames = tagsManager.getAllTagNamesForDisplay(); Set<TagName> tagNamesSet = new TreeSet<>();
tagNamesSet.addAll(tagsManager.getUserTagNames());
tagNamesSet.addAll(tagsManager.getTagNamesInUse());
tagNamesSet.addAll(tagsManager.getPredefinedTagNames());
currentTagNames = new ArrayList(tagNamesSet);
} catch (TskCoreException ex) { } catch (TskCoreException ex) {
Logger.getLogger(GetTagNameDialog.class.getName()).log(Level.SEVERE, "Failed to get tag names", ex); //NON-NLS Logger.getLogger(GetTagNameDialog.class.getName()).log(Level.SEVERE, "Failed to get tag names", ex); //NON-NLS
} }

View File

@ -143,6 +143,7 @@
</Properties> </Properties>
<Events> <Events>
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="tagNamesListMouseClicked"/> <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="tagNamesListMouseClicked"/>
<EventHandler event="mousePressed" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="tagNamesListMousePressed"/>
</Events> </Events>
<AuxValues> <AuxValues>
<AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;UserTagName&gt;"/> <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;UserTagName&gt;"/>

View File

@ -97,6 +97,9 @@ public class TagNamesSettingsPanel extends javax.swing.JPanel implements Options
public void mouseClicked(java.awt.event.MouseEvent evt) { public void mouseClicked(java.awt.event.MouseEvent evt) {
tagNamesListMouseClicked(evt); tagNamesListMouseClicked(evt);
} }
public void mousePressed(java.awt.event.MouseEvent evt) {
tagNamesListMousePressed(evt);
}
}); });
jScrollPane1.setViewportView(tagNamesList); jScrollPane1.setViewportView(tagNamesList);
@ -236,6 +239,10 @@ public class TagNamesSettingsPanel extends javax.swing.JPanel implements Options
enableButtons(); enableButtons();
}//GEN-LAST:event_tagNamesListMouseClicked }//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 // Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton deleteTagNameButton; private javax.swing.JButton deleteTagNameButton;
private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel1;

View File

@ -64,8 +64,7 @@ public class TagsManager implements Closeable {
} }
/** /**
* Gets a list of all tag names currently available for tagging content or * Gets a list of all tag names currently in the case database.
* artifacts.
* *
* @return A list, possibly empty, of TagName data transfer objects (DTOs). * @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 * Gets a list of all user tag names from the preference file.
* from the properties file.
* *
* @return A list, possibly empty, of TagName data transfer objects (DTOs). * @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<TagName> getAllTagNamesForDisplay() throws TskCoreException { public synchronized List<TagName> getUserTagNames() {
if (null == caseDb) {
throw new TskCoreException("Tags manager has been closed");
}
lazyLoadExistingTagNames(); lazyLoadExistingTagNames();
Set<TagName> tagNameSet = new HashSet<>(); List<TagName> tagNameList = new ArrayList<>();
// 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
String setting = ModuleSettings.getConfigSetting(TAGS_SETTINGS_NAME, TAG_NAMES_SETTING_KEY); String setting = ModuleSettings.getConfigSetting(TAGS_SETTINGS_NAME, TAG_NAMES_SETTING_KEY);
if (null != setting && !setting.isEmpty()) { if (null != setting && !setting.isEmpty()) {
List<String> tagNameTuples = Arrays.asList(setting.split(";")); List<String> tagNameTuples = Arrays.asList(setting.split(";"));
for (String tagNameTuple : tagNameTuples) { for (String tagNameTuple : tagNameTuples) {
String[] tagNameAttributes = tagNameTuple.split(","); 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<TagName> getPredefinedTagNames() {
lazyLoadExistingTagNames();
List<TagName> tagNameList = new ArrayList<>();
tagNameList.add(uniqueTagNames.get(NbBundle.getMessage(this.getClass(), "TagsManager.predefTagNames.bookmark.text")));
return tagNameList;
} }
/** /**