19 package org.sleuthkit.autopsy.datamodel;
21 import java.util.List;
22 import java.util.Observable;
23 import java.util.Observer;
24 import java.util.logging.Level;
25 import org.openide.nodes.AbstractNode;
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;
52 FileTypeExtensionFilters.SearchFilterInterface filter;
57 FileTypeNode(FileTypeExtensionFilters.SearchFilterInterface filter, SleuthkitCase skCase) {
58 super(Children.create(
new FileTypeChildFactory(filter, skCase),
true), Lookups.singleton(filter.getDisplayName()));
71 FileTypeNode(FileTypeExtensionFilters.SearchFilterInterface filter, SleuthkitCase skCase, Observable o) {
72 super(Children.create(
new FileTypeChildFactory(filter, skCase, o),
true), Lookups.singleton(filter.getDisplayName()));
80 super.setName(filter.getName());
82 this.setIconBaseWithExtension(
"org/sleuthkit/autopsy/images/file-filter-icon.png");
99 public void update(Observable o, Object arg) {
106 super.setDisplayName(filter.getDisplayName() +
" (" + count +
")");
111 return v.
visit(
this);
116 Sheet s = super.createSheet();
117 Sheet.Set ss = s.get(Sheet.PROPERTIES);
119 ss = Sheet.createPropertiesSet();
123 ss.put(
new NodeProperty<>(NbBundle.getMessage(
this.getClass(),
"FileTypeNode.createSheet.filterType.name"),
124 NbBundle.getMessage(
this.getClass(),
"FileTypeNode.createSheet.filterType.displayName"),
125 NbBundle.getMessage(
this.getClass(),
"FileTypeNode.createSheet.filterType.desc"),
126 filter.getDisplayName()));
127 String extensions =
"";
128 for (String ext : filter.getFilter()) {
129 extensions +=
"'" + ext +
"', ";
131 extensions = extensions.substring(0, extensions.lastIndexOf(
','));
132 ss.put(
new NodeProperty<>(NbBundle.getMessage(
this.getClass(),
"FileTypeNode.createSheet.fileExt.name"),
133 NbBundle.getMessage(
this.getClass(),
"FileTypeNode.createSheet.fileExt.displayName"),
134 NbBundle.getMessage(
this.getClass(),
"FileTypeNode.createSheet.fileExt.desc"),
151 private final FileTypeExtensionFilters.SearchFilterInterface
filter;
180 if (notifier != null) {
187 if (notifier != null) {
197 public void update(Observable o, Object arg) {
207 static long calculateItems(SleuthkitCase sleuthkitCase, FileTypeExtensionFilters.SearchFilterInterface
filter) {
210 }
catch (TskCoreException ex) {
211 logger.log(Level.SEVERE,
"Error getting file search view count", ex);
221 }
catch (TskCoreException ex) {
222 logger.log(Level.SEVERE,
"Couldn't get search results", ex);
228 StringBuilder query =
new StringBuilder();
229 query.append(
"(dir_type = ").append(TskData.TSK_FS_NAME_TYPE_ENUM.REG.getValue()).append(
")");
231 query.append(
" AND (known IS NULL OR known != ").append(TskData.FileKnown.KNOWN.getFileKnownValue()).append(
")");
233 query.append(
" AND (NULL");
234 for (String s :
filter.getFilter()) {
235 query.append(
" OR LOWER(name) LIKE LOWER('%").append(s).append(
"')");
238 return query.toString();
243 return key.accept(
new ContentVisitor.Default<AbstractNode>() {
245 public FileNode visit(File f) {
246 return new FileNode(f, false);
270 protected AbstractNode defaultVisit(Content di) {
271 throw new UnsupportedOperationException(NbBundle.getMessage(
this.getClass(),
"FileTypeChildren.exception.notSupported.msg", di.toString()));
boolean createKeys(List< Content > list)
static final Logger logger
void update(Observable o, Object arg)
static boolean hideKnownFilesInViewsTree()
T visit(DataSourcesNode in)
static String createQuery(FileTypeExtensionFilters.SearchFilterInterface filter)
Node createNodeForKey(Content key)
void update(Observable o, Object arg)
final FileTypeExtensionFilters.SearchFilterInterface filter
synchronized static Logger getLogger(String name)
final SleuthkitCase skCase