Autopsy  4.4.1
Graphical digital forensics platform for The Sleuth Kit and other tools.
AbstractContentChildren.java
Go to the documentation of this file.
1 /*
2  * Autopsy Forensic Browser
3  *
4  * Copyright 2011-2016 Basis Technology Corp.
5  * Contact: carrier <at> sleuthkit <dot> org
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 package org.sleuthkit.autopsy.datamodel;
20 
21 import org.openide.nodes.AbstractNode;
22 import org.openide.nodes.Children.Keys;
23 import org.openide.nodes.Node;
24 import org.openide.util.NbBundle;
28 import org.sleuthkit.datamodel.BlackboardArtifact;
29 import org.sleuthkit.datamodel.Content;
30 import org.sleuthkit.datamodel.DerivedFile;
31 import org.sleuthkit.datamodel.Directory;
32 import org.sleuthkit.datamodel.File;
33 import org.sleuthkit.datamodel.Image;
34 import org.sleuthkit.datamodel.LayoutFile;
35 import org.sleuthkit.datamodel.LocalFile;
36 import org.sleuthkit.datamodel.LocalDirectory;
37 import org.sleuthkit.datamodel.SlackFile;
38 import org.sleuthkit.datamodel.SleuthkitItemVisitor;
39 import org.sleuthkit.datamodel.SleuthkitVisitableItem;
40 import org.sleuthkit.datamodel.VirtualDirectory;
41 import org.sleuthkit.datamodel.Volume;
42 
47 abstract class AbstractContentChildren<T> extends Keys<T> {
48 
49  private final CreateSleuthkitNodeVisitor createSleuthkitNodeVisitor = new CreateSleuthkitNodeVisitor();
50  private final CreateAutopsyNodeVisitor createAutopsyNodeVisitor = new CreateAutopsyNodeVisitor();
51 
55  AbstractContentChildren() {
56  /*
57  * This was turned off because we were getting out of memory errors when
58  * the filter nodes were hiding nodes. Turning this off seemed to help
59  */
60  super(false); //don't use lazy behavior
61  }
62 
63  @Override
64  protected Node[] createNodes(T key) {
65  if (key instanceof SleuthkitVisitableItem) {
66  return new Node[]{((SleuthkitVisitableItem) key).accept(createSleuthkitNodeVisitor)};
67  } else {
68  return new Node[]{((AutopsyVisitableItem) key).accept(createAutopsyNodeVisitor)};
69  }
70  }
71 
75  public static class CreateSleuthkitNodeVisitor extends SleuthkitItemVisitor.Default<AbstractContentNode<? extends Content>> {
76 
77  @Override
79  return new DirectoryNode(drctr);
80  }
81 
82  @Override
84  return new FileNode(file);
85  }
86 
87  @Override
89  return new ImageNode(image);
90  }
91 
92  @Override
94  return new VolumeNode(volume);
95  }
96 
97  @Override
99  return new LayoutFileNode(lf);
100  }
101 
102  @Override
104  return new LocalFileNode(df);
105  }
106 
107  @Override
109  return new LocalFileNode(lf);
110  }
111 
112  @Override
113  public AbstractContentNode<? extends Content> visit(VirtualDirectory ld) {
114  return new VirtualDirectoryNode(ld);
115  }
116 
117  @Override
118  public AbstractContentNode<? extends Content> visit(LocalDirectory ld) {
119  return new LocalDirectoryNode(ld);
120  }
121 
122  @Override
124  return new SlackFileNode(sf);
125  }
126 
127  @Override
128  public AbstractContentNode<? extends Content> visit(BlackboardArtifact art) {
129  return new BlackboardArtifactNode(art);
130  }
131 
132  @Override
133  protected AbstractContentNode<? extends Content> defaultVisit(SleuthkitVisitableItem di) {
134  throw new UnsupportedOperationException(NbBundle.getMessage(this.getClass(),
135  "AbstractContentChildren.CreateTSKNodeVisitor.exception.noNodeMsg"));
136  }
137  }
138 
146  static class CreateAutopsyNodeVisitor extends AutopsyItemVisitor.Default<AbstractNode> {
147 
148  @Override
149  public ExtractedContent.RootNode visit(ExtractedContent ec) {
150  return ec.new RootNode(ec.getSleuthkitCase());
151  }
152 
153  @Override
154  public AbstractNode visit(FileTypesByExtension sf) {
155  return sf.new FileTypesByExtNode(sf.getSleuthkitCase(), null);
156  }
157 
158  @Override
159  public AbstractNode visit(RecentFiles rf) {
160  return new RecentFilesNode(rf.getSleuthkitCase());
161  }
162 
163  @Override
164  public AbstractNode visit(DeletedContent dc) {
165  return new DeletedContent.DeletedContentsNode(dc.getSleuthkitCase());
166  }
167 
168  @Override
169  public AbstractNode visit(FileSize dc) {
170  return new FileSize.FileSizeRootNode(dc.getSleuthkitCase());
171  }
172 
173  @Override
174  public AbstractNode visit(KeywordHits kh) {
175  return kh.new RootNode();
176  }
177 
178  @Override
179  public AbstractNode visit(HashsetHits hh) {
180  return hh.new RootNode();
181  }
182 
183  @Override
184  public AbstractNode visit(InterestingHits ih) {
185  return ih.new RootNode();
186  }
187 
188  @Override
189  public AbstractNode visit(EmailExtracted ee) {
190  return ee.new RootNode();
191  }
192 
193  @Override
194  public AbstractNode visit(Tags tagsNodeKey) {
195  return tagsNodeKey.new RootNode();
196  }
197 
198  @Override
199  public AbstractNode visit(DataSources i) {
200  return new DataSourcesNode();
201  }
202 
203  @Override
204  public AbstractNode visit(Views v) {
205  return new ViewsNode(v.getSleuthkitCase());
206  }
207 
208  @Override
209  public AbstractNode visit(Results r) {
210  return new ResultsNode(r.getSleuthkitCase());
211  }
212 
213  @Override
214  public AbstractNode visit(FileTypes ft) {
215  return ft.new FileTypesNode();
216  }
217 
218  @Override
219  public AbstractNode visit(Reports reportsItem) {
220  return new Reports.ReportsListNode();
221  }
222 
223  @Override
224  public AbstractNode visit(Accounts accountsItem) {
225  return accountsItem.new AccountsRootNode();
226  }
227 
228  @Override
229  protected AbstractNode defaultVisit(AutopsyVisitableItem di) {
230  throw new UnsupportedOperationException(
231  NbBundle.getMessage(this.getClass(),
232  "AbstractContentChildren.createAutopsyNodeVisitor.exception.noNodeMsg"));
233  }
234 
235  @Override
236  public AbstractNode visit(FileTypesByMimeType ftByMimeTypeItem) {
237  return ftByMimeTypeItem.new ByMimeTypeNode();
238  }
239  }
240 }
AbstractContentNode<?extends Content > defaultVisit(SleuthkitVisitableItem di)
AbstractContentNode<?extends Content > visit(BlackboardArtifact art)

Copyright © 2012-2016 Basis Technology. Generated on: Fri Sep 29 2017
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.