mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-13 00:16:16 +00:00
create sheet stuff added
This commit is contained in:
parent
24f58029d2
commit
402c8bb45f
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -53,10 +53,6 @@ public class SleuthkitCaseFileInstanceNode extends FileNode {
|
||||
this.dataSource = dataSource;
|
||||
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) {
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user