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;
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<TagName> tagNames = null;
try {
tagNames = tagsManager.getAllTagNamesForDisplay();
Collections.sort(tagNames);
Set<TagName> 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
}

View File

@ -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<TagName> currentTagNames = null;
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) {
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.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<TagName> currentTagNames = null;
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) {
Logger.getLogger(GetTagNameDialog.class.getName()).log(Level.SEVERE, "Failed to get tag names", ex); //NON-NLS
}

View File

@ -143,6 +143,7 @@
</Properties>
<Events>
<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>
<AuxValues>
<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) {
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;

View File

@ -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<TagName> getAllTagNamesForDisplay() throws TskCoreException {
if (null == caseDb) {
throw new TskCoreException("Tags manager has been closed");
}
public synchronized List<TagName> getUserTagNames() {
lazyLoadExistingTagNames();
Set<TagName> 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<TagName> tagNameList = new ArrayList<>();
String setting = ModuleSettings.getConfigSetting(TAGS_SETTINGS_NAME, TAG_NAMES_SETTING_KEY);
if (null != setting && !setting.isEmpty()) {
List<String> 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<TagName> getPredefinedTagNames() {
lazyLoadExistingTagNames();
List<TagName> tagNameList = new ArrayList<>();
tagNameList.add(uniqueTagNames.get(NbBundle.getMessage(this.getClass(), "TagsManager.predefTagNames.bookmark.text")));
return tagNameList;
}
/**