create sheet stuff added

This commit is contained in:
Brian Sweeney 2018-06-05 20:42:28 -06:00
parent 24f58029d2
commit 402c8bb45f
2 changed files with 97 additions and 26 deletions

View File

@ -21,9 +21,13 @@ package org.sleuthkit.autopsy.datamodel;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.swing.Action;
import org.openide.nodes.Children;
import org.openide.nodes.Sheet;
import org.openide.util.NbBundle;
import org.openide.util.lookup.Lookups;
import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepositoryFile;
import org.sleuthkit.datamodel.AbstractFile;
@ -38,8 +42,16 @@ import org.sleuthkit.datamodel.AbstractFile;
*/
public class CentralRepositoryFileInstanceNode extends DisplayableItemNode {
public CentralRepositoryFileInstanceNode(CentralRepositoryFile file, AbstractFile md5Reference) {
super(Children.LEAF, Lookups.fixed(file, md5Reference));
private CentralRepositoryFile content;
//this may not be the same file, but at least it is identical,
// and we can use this to support certain actions in the tree table and content viewer
private AbstractFile md5Reference;
public CentralRepositoryFileInstanceNode(CentralRepositoryFile content, AbstractFile md5Reference) {
super(Children.LEAF, Lookups.fixed(content, md5Reference));
this.content = content;
this.md5Reference = md5Reference;
}
@Override
@ -68,4 +80,69 @@ public class CentralRepositoryFileInstanceNode extends DisplayableItemNode {
// of this type and they will need to provide the same key
return SleuthkitCaseFileInstanceNode.class.getName();
}
@Override
protected Sheet createSheet(){
Sheet sheet = new Sheet();
Sheet.Set sheetSet = sheet.get(Sheet.PROPERTIES);
if(sheetSet == null){
sheetSet = Sheet.createPropertiesSet();
sheet.put(sheetSet);
}
Map<String, Object> map = new LinkedHashMap<>();
fillPropertyMap(map, this);
final String NO_DESCR = Bundle.AbstractFsContentNode_noDesc_text();
for (CentralRepoFileInstancesPropertyType propType : CentralRepoFileInstancesPropertyType.values()) {
final String propString = propType.toString();
final Object property = map.get(propString);
final NodeProperty<Object> nodeProperty = new NodeProperty<>(propString, propString, NO_DESCR, property);
sheetSet.put(nodeProperty);
}
return sheet;
}
private void fillPropertyMap(Map<String, Object> map, CentralRepositoryFileInstanceNode node) {
map.put(CentralRepositoryFileInstanceNode.CentralRepoFileInstancesPropertyType.File.toString(), node.content.getFilePath());
map.put(CentralRepositoryFileInstanceNode.CentralRepoFileInstancesPropertyType.ParentPath.toString(), node.content.getFilePath());
map.put(CentralRepositoryFileInstanceNode.CentralRepoFileInstancesPropertyType.HashsetHits.toString(), "");
map.put(CentralRepositoryFileInstanceNode.CentralRepoFileInstancesPropertyType.DataSource.toString(), node.content.getCorrelationDataSource().getName());
map.put(CentralRepositoryFileInstanceNode.CentralRepoFileInstancesPropertyType.MimeType.toString(), "");
}
/**
* Encapsulates the columns to be displayed for reach row represented by an
* instance of this object.
*/
@NbBundle.Messages({
"CentralRepoFileInstancesPropertyType.fileColLbl=File",
"CentralRepoFileInstancesPropertyType.pathColLbl=Parent Path",
"CentralRepoFileInstancesPropertyType.hashsetHitsColLbl=Hash Set Hits",
"CentralRepoFileInstancesPropertyType.dataSourceColLbl=Data Source",
"CentralRepoFileInstancesPropertyType.mimeTypeColLbl=MIME Type"
})
public enum CentralRepoFileInstancesPropertyType {
File(Bundle.CentralRepoFileInstancesPropertyType_fileColLbl()),
ParentPath(Bundle.CentralRepoFileInstancesPropertyType_pathColLbl()),
HashsetHits(Bundle.CentralRepoFileInstancesPropertyType_hashsetHitsColLbl()),
DataSource(Bundle.CentralRepoFileInstancesPropertyType_dataSourceColLbl()),
MimeType(Bundle.CentralRepoFileInstancesPropertyType_mimeTypeColLbl());
final private String displayString;
private CentralRepoFileInstancesPropertyType(String displayString) {
this.displayString = displayString;
}
@Override
public String toString() {
return displayString;
}
}
}

View File

@ -54,10 +54,6 @@ public class SleuthkitCaseFileInstanceNode extends FileNode {
this.file = file;
}
//TODO add constructor with correlation attr instance
//TODO override getactions
//TODO use constructor overload that consumes a lookup and pass an instance of this (or a subclas of it)
@Override
public <T> T accept(DisplayableItemNodeVisitor<T> visitor) {
return visitor.visit(this);
@ -93,7 +89,7 @@ public class SleuthkitCaseFileInstanceNode extends FileNode {
fillPropertyMap(map, this);
final String NO_DESCR = Bundle.AbstractFsContentNode_noDesc_text();
for (CommonFilePropertyType propType : CommonFilePropertyType.values()) {
for (SleuthkitCaseFileInstanceNode.SleuthkitCaseFileInstanceNodePropertyType propType : SleuthkitCaseFileInstanceNode.SleuthkitCaseFileInstanceNodePropertyType.values()) {
final String propString = propType.toString();
final Object property = map.get(propString);
final NodeProperty<Object> nodeProperty = new NodeProperty<>(propString, propString, NO_DESCR, property);
@ -114,13 +110,11 @@ public class SleuthkitCaseFileInstanceNode extends FileNode {
*/
static private void fillPropertyMap(Map<String, Object> map, SleuthkitCaseFileInstanceNode node) {
//TODO rather than these ternary operators we should subclass SleuthkitCaseFileInstanceNode or derive an interface
map.put(CommonFilePropertyType.File.toString(), node.hasFile() ? node.getFile().getName() : node.getName());
map.put(CommonFilePropertyType.ParentPath.toString(), node.hasFile() ? node.getFile().getParent() : node.getContent().getParentPath()); //TODO this appears to have a bug
map.put(CommonFilePropertyType.HashsetHits.toString(), getHashSetHitsForFile(node.getContent()));
map.put(CommonFilePropertyType.DataSource.toString(), node.getDataSource());
map.put(CommonFilePropertyType.MimeType.toString(), StringUtils.defaultString(node.content.getMIMEType()));
map.put(SleuthkitCaseFileInstanceNode.SleuthkitCaseFileInstanceNodePropertyType.File.toString(), node.hasFile() ? node.getFile().getName() : node.getName());
map.put(SleuthkitCaseFileInstanceNode.SleuthkitCaseFileInstanceNodePropertyType.ParentPath.toString(), node.hasFile() ? node.getFile().getParent() : node.getContent().getParentPath()); //TODO this appears to have a bug
map.put(SleuthkitCaseFileInstanceNode.SleuthkitCaseFileInstanceNodePropertyType.HashsetHits.toString(), getHashSetHitsForFile(node.getContent()));
map.put(SleuthkitCaseFileInstanceNode.SleuthkitCaseFileInstanceNodePropertyType.DataSource.toString(), node.getDataSource());
map.put(SleuthkitCaseFileInstanceNode.SleuthkitCaseFileInstanceNodePropertyType.MimeType.toString(), StringUtils.defaultString(node.content.getMIMEType()));
}
/**
@ -128,23 +122,23 @@ public class SleuthkitCaseFileInstanceNode extends FileNode {
* instance of this object.
*/
@NbBundle.Messages({
"CommonFilePropertyType.fileColLbl=File",
"CommonFilePropertyType.pathColLbl=Parent Path",
"CommonFilePropertyType.hashsetHitsColLbl=Hash Set Hits",
"CommonFilePropertyType.dataSourceColLbl=Data Source",
"CommonFilePropertyType.mimeTypeColLbl=MIME Type"
"SleuthkitCaseFileInstanceNodePropertyType.fileColLbl=File",
"SleuthkitCaseFileInstanceNodePropertyType.pathColLbl=Parent Path",
"SleuthkitCaseFileInstanceNodePropertyType.hashsetHitsColLbl=Hash Set Hits",
"SleuthkitCaseFileInstanceNodePropertyType.dataSourceColLbl=Data Source",
"SleuthkitCaseFileInstanceNodePropertyType.mimeTypeColLbl=MIME Type"
})
public enum CommonFilePropertyType {
public enum SleuthkitCaseFileInstanceNodePropertyType {
File(Bundle.CommonFilePropertyType_fileColLbl()),
ParentPath(Bundle.CommonFilePropertyType_pathColLbl()),
HashsetHits(Bundle.CommonFilePropertyType_hashsetHitsColLbl()),
DataSource(Bundle.CommonFilePropertyType_dataSourceColLbl()),
MimeType(Bundle.CommonFilePropertyType_mimeTypeColLbl());
File(Bundle.SleuthkitCaseFileInstanceNodePropertyType_fileColLbl()),
ParentPath(Bundle.SleuthkitCaseFileInstanceNodePropertyType_pathColLbl()),
HashsetHits(Bundle.SleuthkitCaseFileInstanceNodePropertyType_hashsetHitsColLbl()),
DataSource(Bundle.SleuthkitCaseFileInstanceNodePropertyType_dataSourceColLbl()),
MimeType(Bundle.SleuthkitCaseFileInstanceNodePropertyType_mimeTypeColLbl());
final private String displayString;
private CommonFilePropertyType(String displayString) {
private SleuthkitCaseFileInstanceNodePropertyType(String displayString) {
this.displayString = displayString;
}