20 package org.sleuthkit.autopsy.datamodel;
22 import java.util.LinkedHashMap;
23 import java.util.List;
25 import java.util.logging.Level;
26 import org.openide.nodes.ChildFactory;
27 import org.openide.nodes.Children;
28 import org.openide.nodes.Node;
29 import org.openide.nodes.Sheet;
30 import org.openide.util.NbBundle;
31 import org.openide.util.lookup.Lookups;
56 super(Children.create(
57 new FileInstanceNodeFactory(data),
true),
58 Lookups.singleton(data.
getMd5()));
60 this.commonFileCount = data.
size();
62 this.md5Hash = data.
getMd5();
64 this.setDisplayName(this.md5Hash);
67 int getCommonFileCount() {
71 String getDataSources() {
81 Sheet sheet =
new Sheet();
82 Sheet.Set sheetSet = sheet.get(Sheet.PROPERTIES);
83 if (sheetSet == null) {
84 sheetSet = Sheet.createPropertiesSet();
88 Map<String, Object> map =
new LinkedHashMap<>();
91 final String NO_DESCR = Bundle.AbstractFsContentNode_noDesc_text();
93 final String propString = propType.toString();
94 sheetSet.put(
new NodeProperty<>(propString, propString, NO_DESCR, map.get(propString)));
115 return visitor.
visit(
this);
125 return getClass().getName();
131 static class FileInstanceNodeFactory
extends ChildFactory<FileInstanceMetadata> {
136 this.descendants = descendants;
140 protected Node createNodeForKey(FileInstanceMetadata file) {
142 Case currentCase = Case.getCurrentCaseThrows();
143 SleuthkitCase tskDb = currentCase.getSleuthkitCase();
144 AbstractFile abstractFile = tskDb.findAllFilesWhere(String.format(
"obj_id in (%s)", file.getObjectId())).get(0);
146 return new FileInstanceNode(abstractFile, file.getDataSourceName());
147 }
catch (NoCurrentCaseException ex) {
148 LOGGER.log(Level.SEVERE, String.format(
"Unable to create node for file with obj_id: %s.",
new Object[]{file.getObjectId()}), ex);
149 }
catch (TskCoreException ex) {
150 LOGGER.log(Level.SEVERE, String.format(
"Unable to create node for file with obj_id: %s.",
new Object[]{file.getObjectId()}), ex);
156 protected boolean createKeys(List<FileInstanceMetadata> list) {
163 "CommonFileParentPropertyType.fileColLbl=File",
164 "CommonFileParentPropertyType.instanceColLbl=Instance Count",
165 "CommonFileParentPropertyType.dataSourceColLbl=Data Source"})
168 File(Bundle.CommonFileParentPropertyType_fileColLbl()),
170 DataSource(Bundle.CommonFileParentPropertyType_dataSourceColLbl());
175 this.displayString = displayString;
180 return displayString;
static void fillPropertyMap(Map< String, Object > map, Md5Node node)
Md5Node(Md5Metadata data)
T visit(DataSourcesNode in)
final String displayString
CommonFileParentPropertyType(String displayString)
static final Logger LOGGER
synchronized static Logger getLogger(String name)
final int commonFileCount