19 package org.sleuthkit.autopsy.directorytree;
21 import java.util.List;
22 import java.util.logging.Level;
24 import org.openide.nodes.Children;
26 import org.openide.nodes.FilterNode;
27 import org.openide.nodes.Node;
42 import org.
sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE;
55 class DirectoryTreeFilterChildren
extends FilterNode.Children {
57 private final ShowItemVisitor showItemV =
new ShowItemVisitor();
58 private final IsLeafItemVisitor isLeafItemV =
new IsLeafItemVisitor();
59 private final static Logger logger = Logger.getLogger(DirectoryTreeFilterChildren.class.getName());
64 public DirectoryTreeFilterChildren(Node arg) {
69 protected Node copyNode(Node arg0) {
70 return new DirectoryTreeFilterNode(arg0,
true);
73 protected Node copyNode(Node arg0,
boolean createChildren) {
74 return new DirectoryTreeFilterNode(arg0, createChildren);
86 protected Node[] createNodes(Node origNode) {
87 if (origNode == null || !(origNode instanceof DisplayableItemNode)) {
92 final DisplayableItemNode diNode = (DisplayableItemNode) origNode;
93 if (diNode.accept(showItemV) ==
false) {
101 final boolean isLeaf = diNode.accept(isLeafItemV);
103 return new Node[]{this.copyNode(origNode, !isLeaf)};
114 private static boolean isLeafDirectory(DirectoryNode node) {
115 Directory dir = node.getLookup().lookup(Directory.class);
118 for (Content c : dir.getChildren()) {
119 if (c instanceof Directory && (!((Directory) c).getName().equals(
".")
120 && !((Directory) c).getName().equals(
".."))) {
123 }
else if(AbstractContentNode.contentHasVisibleContentChildren(c)){
129 }
catch (TskException ex) {
130 Logger.getLogger(DirectoryTreeFilterChildren.class.getName())
131 .log(Level.WARNING,
"Error getting directory children", ex);
137 private static boolean isLeafVolume(VolumeNode node) {
138 Volume vol = node.getLookup().lookup(Volume.class);
142 for (Content c : vol.getChildren()) {
143 if (!(c instanceof LayoutFile
144 || c instanceof VirtualDirectory)) {
150 }
catch (TskException ex) {
151 Logger.getLogger(DirectoryTreeFilterChildren.class.getName())
152 .log(Level.WARNING,
"Error getting volume children", ex);
161 private static boolean isDotDirectory(DirectoryNode dir) {
162 String name = dir.getDisplayName();
163 return name.equals(DirectoryNode.DOTDIR) || name.equals(DirectoryNode.DOTDOTDIR);
175 public static Children createInstance(Node arg,
boolean createChildren) {
176 if (createChildren) {
177 return new DirectoryTreeFilterChildren(arg);
179 return Children.LEAF;
192 return isLeafDirectory(dn);
203 for (Content childContent : derivedChildren) {
204 if ((childContent instanceof AbstractFile) && ((AbstractFile) childContent).isDir()) {
237 return isLeafVolume(vn);
258 if ( (bbafn.
getArtifact().getArtifactTypeID() == ARTIFACT_TYPE.TSK_EMAIL_MSG.getTypeID()) ||
259 (bbafn.
getArtifact().getArtifactTypeID() == ARTIFACT_TYPE.TSK_MESSAGE.getTypeID()) ) {
276 if (isDotDirectory(dn)) {
284 return fn.hasVisibleContentChildren();
289 return lfn.hasVisibleContentChildren();
294 return ln.hasVisibleContentChildren();
299 return sfn.hasVisibleContentChildren();
323 if ( (bbafn.
getArtifact().getArtifactTypeID() == ARTIFACT_TYPE.TSK_EMAIL_MSG.getTypeID()) ||
324 (bbafn.
getArtifact().getArtifactTypeID() == ARTIFACT_TYPE.TSK_MESSAGE.getTypeID()) ) {
Boolean visit(FileNode fn)
Boolean visit(VirtualDirectoryNode vdn)
Boolean visit(LocalFileNode lfn)
Boolean visit(VirtualDirectoryNode vdn)
abstract boolean isLeafTypeNode()
List< Content > getContentChildren()
Boolean visit(LayoutFileNode fn)
Boolean visit(FileTypesNode fileTypes)
Boolean visit(BlackboardArtifactNode bbafn)
Boolean visit(LocalDirectoryNode ldn)
Boolean visit(LocalFileNode lfn)
Boolean visit(SlackFileNode sfn)
Boolean visit(SlackFileNode sfn)
Boolean defaultVisit(DisplayableItemNode c)
Boolean visit(VolumeNode vn)
boolean hasContentChildren()
Boolean visit(FileTypesNode ft)
Boolean visitDeep(AbstractAbstractFileNode<?extends AbstractFile > node)
Boolean defaultVisit(DisplayableItemNode c)
BlackboardArtifact getArtifact()
Boolean visit(LocalDirectoryNode ldn)
Boolean visit(BlackboardArtifactNode bbafn)
Boolean visit(DirectoryNode dn)
Boolean visit(DirectoryNode dn)
Boolean visit(FileNode fn)
Boolean visit(LayoutFileNode ln)
static boolean contentHasVisibleContentChildren(Content c)