19 package org.sleuthkit.autopsy.datamodel;
21 import java.sql.ResultSet;
22 import java.sql.SQLException;
23 import java.util.LinkedHashMap;
25 import java.util.logging.Level;
26 import org.openide.nodes.Sheet;
27 import org.openide.util.NbBundle;
52 String name = ld.getName();
55 if (ld.isDataSource()) {
56 this.setIconBaseWithExtension(
"org/sleuthkit/autopsy/images/fileset-icon-16.png");
58 this.setIconBaseWithExtension(
"org/sleuthkit/autopsy/images/folder-icon-virtual.png");
63 @NbBundle.Messages({
"VirtualDirectoryNode.createSheet.size.name=Size (Bytes)",
64 "VirtualDirectoryNode.createSheet.size.displayName=Size (Bytes)",
65 "VirtualDirectoryNode.createSheet.size.desc=Size of the data source in bytes.",
66 "VirtualDirectoryNode.createSheet.type.name=Type",
67 "VirtualDirectoryNode.createSheet.type.displayName=Type",
68 "VirtualDirectoryNode.createSheet.type.desc=Type of the image.",
69 "VirtualDirectoryNode.createSheet.type.text=Logical File Set",
70 "VirtualDirectoryNode.createSheet.timezone.name=Timezone",
71 "VirtualDirectoryNode.createSheet.timezone.displayName=Timezone",
72 "VirtualDirectoryNode.createSheet.timezone.desc=Timezone of the image",
73 "VirtualDirectoryNode.createSheet.deviceId.name=Device ID",
74 "VirtualDirectoryNode.createSheet.deviceId.displayName=Device ID",
75 "VirtualDirectoryNode.createSheet.deviceId.desc=Device ID of the image"})
77 Sheet s = super.createSheet();
78 Sheet.Set ss = s.get(Sheet.PROPERTIES);
80 ss = Sheet.createPropertiesSet();
84 ss.put(
new NodeProperty<>(NbBundle.getMessage(
this.getClass(),
"VirtualDirectoryNode.createSheet.name.name"),
85 NbBundle.getMessage(
this.getClass(),
86 "VirtualDirectoryNode.createSheet.name.displayName"),
87 NbBundle.getMessage(
this.getClass(),
"VirtualDirectoryNode.createSheet.name.desc"),
90 if (!this.content.isDataSource()) {
91 Map<String, Object> map =
new LinkedHashMap<>();
94 final String
NO_DESCR = NbBundle.getMessage(this.getClass(),
"VirtualDirectoryNode.createSheet.noDesc");
95 for (Map.Entry<String, Object> entry : map.entrySet()) {
100 ss.put(
new NodeProperty<>(Bundle.VirtualDirectoryNode_createSheet_type_name(),
101 Bundle.VirtualDirectoryNode_createSheet_type_displayName(),
102 Bundle.VirtualDirectoryNode_createSheet_type_desc(),
103 Bundle.VirtualDirectoryNode_createSheet_type_text()));
104 ss.put(
new NodeProperty<>(Bundle.VirtualDirectoryNode_createSheet_size_name(),
105 Bundle.VirtualDirectoryNode_createSheet_size_displayName(),
106 Bundle.VirtualDirectoryNode_createSheet_size_desc(),
107 this.content.getSize()));
108 try (SleuthkitCase.CaseDbQuery query =
Case.
getCurrentCase().
getSleuthkitCase().executeQuery(
"SELECT time_zone FROM data_source_info WHERE obj_id = " + this.content.getId())) {
109 ResultSet timeZoneSet = query.getResultSet();
110 if (timeZoneSet.next()) {
111 ss.put(
new NodeProperty<>(Bundle.VirtualDirectoryNode_createSheet_timezone_name(),
112 Bundle.VirtualDirectoryNode_createSheet_timezone_displayName(),
113 Bundle.VirtualDirectoryNode_createSheet_timezone_desc(),
114 timeZoneSet.getString(
"time_zone")));
116 }
catch (SQLException | TskCoreException ex) {
117 logger.log(Level.SEVERE,
"Failed to get time zone for the following image: " +
this.content.getId(), ex);
119 try (SleuthkitCase.CaseDbQuery query =
Case.
getCurrentCase().
getSleuthkitCase().executeQuery(
"SELECT device_id FROM data_source_info WHERE obj_id = " + this.content.getId());) {
120 ResultSet deviceIdSet = query.getResultSet();
121 if (deviceIdSet.next()) {
122 ss.put(
new NodeProperty<>(Bundle.VirtualDirectoryNode_createSheet_deviceId_name(),
123 Bundle.VirtualDirectoryNode_createSheet_deviceId_displayName(),
124 Bundle.VirtualDirectoryNode_createSheet_deviceId_desc(),
125 deviceIdSet.getString(
"device_id")));
127 }
catch (SQLException | TskCoreException ex) {
128 logger.log(Level.SEVERE,
"Failed to get device id for the following image: " +
this.content.getId(), ex);
137 public <T> T accept(ContentNodeVisitor<T> v) {
138 return v.visit(
this);
142 public <T> T accept(DisplayableItemNodeVisitor<T> v) {
143 return v.visit(
this);
void addTagProperty(Sheet.Set ss)
static void fillPropertyMap(Map< String, Object > map, AbstractFile content)
VirtualDirectoryNode(VirtualDirectory ld)
static final Logger logger
static final String NO_DESCR
SleuthkitCase getSleuthkitCase()
static Case getCurrentCase()
synchronized static Logger getLogger(String name)
static final String LOGICAL_FILE_SET_PREFIX
static String nameForVirtualDirectory(VirtualDirectory ld)