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.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import javax.swing.Action;
|
import javax.swing.Action;
|
||||||
import org.openide.nodes.Children;
|
import org.openide.nodes.Children;
|
||||||
|
import org.openide.nodes.Sheet;
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.openide.util.lookup.Lookups;
|
import org.openide.util.lookup.Lookups;
|
||||||
import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepositoryFile;
|
import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepositoryFile;
|
||||||
import org.sleuthkit.datamodel.AbstractFile;
|
import org.sleuthkit.datamodel.AbstractFile;
|
||||||
@ -38,8 +42,16 @@ import org.sleuthkit.datamodel.AbstractFile;
|
|||||||
*/
|
*/
|
||||||
public class CentralRepositoryFileInstanceNode extends DisplayableItemNode {
|
public class CentralRepositoryFileInstanceNode extends DisplayableItemNode {
|
||||||
|
|
||||||
public CentralRepositoryFileInstanceNode(CentralRepositoryFile file, AbstractFile md5Reference) {
|
private CentralRepositoryFile content;
|
||||||
super(Children.LEAF, Lookups.fixed(file, md5Reference));
|
|
||||||
|
//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
|
@Override
|
||||||
@ -68,4 +80,69 @@ public class CentralRepositoryFileInstanceNode extends DisplayableItemNode {
|
|||||||
// of this type and they will need to provide the same key
|
// of this type and they will need to provide the same key
|
||||||
return SleuthkitCaseFileInstanceNode.class.getName();
|
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.dataSource = dataSource;
|
||||||
this.file = file;
|
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
|
@Override
|
||||||
public <T> T accept(DisplayableItemNodeVisitor<T> visitor) {
|
public <T> T accept(DisplayableItemNodeVisitor<T> visitor) {
|
||||||
@ -93,7 +89,7 @@ public class SleuthkitCaseFileInstanceNode extends FileNode {
|
|||||||
fillPropertyMap(map, this);
|
fillPropertyMap(map, this);
|
||||||
|
|
||||||
final String NO_DESCR = Bundle.AbstractFsContentNode_noDesc_text();
|
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 String propString = propType.toString();
|
||||||
final Object property = map.get(propString);
|
final Object property = map.get(propString);
|
||||||
final NodeProperty<Object> nodeProperty = new NodeProperty<>(propString, propString, NO_DESCR, property);
|
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) {
|
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(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(CommonFilePropertyType.File.toString(), node.hasFile() ? node.getFile().getName() : node.getName());
|
map.put(SleuthkitCaseFileInstanceNode.SleuthkitCaseFileInstanceNodePropertyType.HashsetHits.toString(), getHashSetHitsForFile(node.getContent()));
|
||||||
map.put(CommonFilePropertyType.ParentPath.toString(), node.hasFile() ? node.getFile().getParent() : node.getContent().getParentPath()); //TODO this appears to have a bug
|
map.put(SleuthkitCaseFileInstanceNode.SleuthkitCaseFileInstanceNodePropertyType.DataSource.toString(), node.getDataSource());
|
||||||
map.put(CommonFilePropertyType.HashsetHits.toString(), getHashSetHitsForFile(node.getContent()));
|
map.put(SleuthkitCaseFileInstanceNode.SleuthkitCaseFileInstanceNodePropertyType.MimeType.toString(), StringUtils.defaultString(node.content.getMIMEType()));
|
||||||
map.put(CommonFilePropertyType.DataSource.toString(), node.getDataSource());
|
|
||||||
map.put(CommonFilePropertyType.MimeType.toString(), StringUtils.defaultString(node.content.getMIMEType()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -128,23 +122,23 @@ public class SleuthkitCaseFileInstanceNode extends FileNode {
|
|||||||
* instance of this object.
|
* instance of this object.
|
||||||
*/
|
*/
|
||||||
@NbBundle.Messages({
|
@NbBundle.Messages({
|
||||||
"CommonFilePropertyType.fileColLbl=File",
|
"SleuthkitCaseFileInstanceNodePropertyType.fileColLbl=File",
|
||||||
"CommonFilePropertyType.pathColLbl=Parent Path",
|
"SleuthkitCaseFileInstanceNodePropertyType.pathColLbl=Parent Path",
|
||||||
"CommonFilePropertyType.hashsetHitsColLbl=Hash Set Hits",
|
"SleuthkitCaseFileInstanceNodePropertyType.hashsetHitsColLbl=Hash Set Hits",
|
||||||
"CommonFilePropertyType.dataSourceColLbl=Data Source",
|
"SleuthkitCaseFileInstanceNodePropertyType.dataSourceColLbl=Data Source",
|
||||||
"CommonFilePropertyType.mimeTypeColLbl=MIME Type"
|
"SleuthkitCaseFileInstanceNodePropertyType.mimeTypeColLbl=MIME Type"
|
||||||
})
|
})
|
||||||
public enum CommonFilePropertyType {
|
public enum SleuthkitCaseFileInstanceNodePropertyType {
|
||||||
|
|
||||||
File(Bundle.CommonFilePropertyType_fileColLbl()),
|
File(Bundle.SleuthkitCaseFileInstanceNodePropertyType_fileColLbl()),
|
||||||
ParentPath(Bundle.CommonFilePropertyType_pathColLbl()),
|
ParentPath(Bundle.SleuthkitCaseFileInstanceNodePropertyType_pathColLbl()),
|
||||||
HashsetHits(Bundle.CommonFilePropertyType_hashsetHitsColLbl()),
|
HashsetHits(Bundle.SleuthkitCaseFileInstanceNodePropertyType_hashsetHitsColLbl()),
|
||||||
DataSource(Bundle.CommonFilePropertyType_dataSourceColLbl()),
|
DataSource(Bundle.SleuthkitCaseFileInstanceNodePropertyType_dataSourceColLbl()),
|
||||||
MimeType(Bundle.CommonFilePropertyType_mimeTypeColLbl());
|
MimeType(Bundle.SleuthkitCaseFileInstanceNodePropertyType_mimeTypeColLbl());
|
||||||
|
|
||||||
final private String displayString;
|
final private String displayString;
|
||||||
|
|
||||||
private CommonFilePropertyType(String displayString) {
|
private SleuthkitCaseFileInstanceNodePropertyType(String displayString) {
|
||||||
this.displayString = displayString;
|
this.displayString = displayString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user