Autopsy 4.22.1
Graphical digital forensics platform for The Sleuth Kit and other tools.
DataModelActionsFactory.java
Go to the documentation of this file.
1/*
2 * Autopsy Forensic Browser
3 *
4 * Copyright 2013-2019 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 */
19package org.sleuthkit.autopsy.datamodel;
20
21import java.util.ArrayList;
22import java.util.Collection;
23import java.util.HashSet;
24import java.util.List;
25import javax.swing.Action;
26
27import org.openide.util.NbBundle;
28import org.openide.util.NbBundle.Messages;
29import org.openide.util.Utilities;
30import org.sleuthkit.autopsy.actions.AddBlackboardArtifactTagAction;
31import org.sleuthkit.autopsy.actions.AddContentTagAction;
32import org.sleuthkit.autopsy.actions.DeleteBlackboardArtifactTagAction;
33import org.sleuthkit.autopsy.actions.DeleteContentTagAction;
34import org.sleuthkit.autopsy.actions.DeleteFileBlackboardArtifactTagAction;
35import org.sleuthkit.autopsy.actions.DeleteFileContentTagAction;
36import org.sleuthkit.autopsy.actions.ReplaceBlackboardArtifactTagAction;
37import org.sleuthkit.autopsy.actions.ReplaceContentTagAction;
38import org.sleuthkit.autopsy.coreutils.ContextMenuExtensionPoint;
39import org.sleuthkit.autopsy.datamodel.OsAccounts.OsAccountNode;
40import org.sleuthkit.autopsy.datamodel.Reports.ReportNode;
41import org.sleuthkit.autopsy.directorytree.ExportCSVAction;
42import org.sleuthkit.autopsy.directorytree.ExternalViewerAction;
43import org.sleuthkit.autopsy.directorytree.ExternalViewerShortcutAction;
44import org.sleuthkit.autopsy.directorytree.ExtractAction;
45import org.sleuthkit.autopsy.directorytree.NewWindowViewAction;
46import org.sleuthkit.autopsy.directorytree.ViewContextAction;
47import org.sleuthkit.datamodel.AbstractFile;
48import org.sleuthkit.datamodel.BlackboardArtifact;
49import org.sleuthkit.datamodel.BlackboardArtifactTag;
50import org.sleuthkit.datamodel.Content;
51import org.sleuthkit.datamodel.ContentTag;
52import org.sleuthkit.datamodel.DerivedFile;
53import org.sleuthkit.datamodel.Directory;
54import org.sleuthkit.datamodel.File;
55import org.sleuthkit.datamodel.LayoutFile;
56import org.sleuthkit.datamodel.LocalFile;
57import org.sleuthkit.datamodel.LocalDirectory;
58import org.sleuthkit.datamodel.OsAccount;
59import org.sleuthkit.datamodel.Report;
60import org.sleuthkit.datamodel.SlackFile;
61import org.sleuthkit.datamodel.VirtualDirectory;
62
67// TODO: All of the methods below that deal with classes derived from AbstractFile are the same except for the creation of wrapper nodes to pass to actions.
68// 1. Do the types of the wrapper nodes really need to vary? If not, it would mean a single
69// static List<Action> getActions(AbstrctFile file, boolean isArtifactSource)
70// method could be implemented. If the different nodes are necessary, is it merely because of some misuse of the Visitor pattern somewhere?
71// 2. All of this would be much improved by not constructing nodes with actions, but this might be necessary with pushing of nodes rather than use of lookups to
72// handle selections.
74
75 public static final String VIEW_SOURCE_FILE_IN_DIR = NbBundle
76 .getMessage(DataModelActionsFactory.class, "DataModelActionsFactory.srcFileInDir.text");
77 public static final String VIEW_FILE_IN_DIR = NbBundle
78 .getMessage(DataModelActionsFactory.class, "DataModelActionsFactory.fileInDir.text");
79 public static final String VIEW_IN_NEW_WINDOW = NbBundle
80 .getMessage(DataModelActionsFactory.class, "DataModelActionsFactory.viewNewWin.text");
81 public static final String OPEN_IN_EXTERNAL_VIEWER = NbBundle
82 .getMessage(DataModelActionsFactory.class, "DataModelActionsFactory.openExtViewer.text");
83
84 public static List<Action> getActions(File file, boolean isArtifactSource) {
85 List<Action> actionsList = new ArrayList<>();
86 actionsList.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), file));
87 final FileNode fileNode = new FileNode(file);
88 actionsList.add(null); // creates a menu separator
89 actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, fileNode));
90 final Collection<AbstractFile> selectedFilesList
91 = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
92 if (selectedFilesList.size() == 1) {
93 actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, fileNode));
94 } else {
96 }
97 actionsList.add(null); // creates a menu separator
98 actionsList.add(ExtractAction.getInstance());
99 actionsList.add(ExportCSVAction.getInstance());
100 actionsList.add(null); // creates a menu separator
101 actionsList.add(AddContentTagAction.getInstance());
102 if (isArtifactSource) {
104 }
105 if (selectedFilesList.size() == 1) {
106 actionsList.add(DeleteFileContentTagAction.getInstance());
107 }
108 if (isArtifactSource) {
109 final Collection<BlackboardArtifact> selectedArtifactsList
110 = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
111 if (selectedArtifactsList.size() == 1) {
113 }
114 }
115 actionsList.addAll(ContextMenuExtensionPoint.getActions());
116 return actionsList;
117 }
118
119 public static List<Action> getActions(SlackFile slackFile, boolean isArtifactSource) {
120 List<Action> actionsList = new ArrayList<>();
121 actionsList.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), slackFile));
122 final SlackFileNode slackFileNode = new SlackFileNode(slackFile);
123 actionsList.add(null); // creates a menu separator
124 actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, slackFileNode));
125 actionsList.add(null); // creates a menu separator
126 actionsList.add(ExtractAction.getInstance());
127 actionsList.add(ExportCSVAction.getInstance());
128 actionsList.add(null); // creates a menu separator
129 actionsList.add(AddContentTagAction.getInstance());
130 if (isArtifactSource) {
132 }
133 final Collection<AbstractFile> selectedFilesList
134 = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
135 if (selectedFilesList.size() == 1) {
136 actionsList.add(DeleteFileContentTagAction.getInstance());
137 }
138 if (isArtifactSource) {
139 final Collection<BlackboardArtifact> selectedArtifactsList
140 = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
141 if (selectedArtifactsList.size() == 1) {
143 }
144 }
145 actionsList.addAll(ContextMenuExtensionPoint.getActions());
146 return actionsList;
147 }
148
149 public static List<Action> getActions(LayoutFile file, boolean isArtifactSource) {
150 List<Action> actionsList = new ArrayList<>();
151 actionsList.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), file));
152 LayoutFileNode layoutFileNode = new LayoutFileNode(file);
153 actionsList.add(null); // creates a menu separator
154 actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, layoutFileNode));
155 final Collection<AbstractFile> selectedFilesList
156 = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
157 if (selectedFilesList.size() == 1) {
158 actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, layoutFileNode));
159 } else {
160 actionsList.add(ExternalViewerShortcutAction.getInstance());
161 }
162 actionsList.add(null); // creates a menu separator
163 actionsList.add(ExtractAction.getInstance());//
164 actionsList.add(ExportCSVAction.getInstance());
165 actionsList.add(null); // creates a menu separator
166 actionsList.add(AddContentTagAction.getInstance());
167 if (isArtifactSource) {
169 }
170 if (selectedFilesList.size() == 1) {
171 actionsList.add(DeleteFileContentTagAction.getInstance());
172 }
173 if (isArtifactSource) {
174 final Collection<BlackboardArtifact> selectedArtifactsList
175 = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
176 if (selectedArtifactsList.size() == 1) {
178 }
179 }
180 actionsList.addAll(ContextMenuExtensionPoint.getActions());
181 return actionsList;
182 }
183
184 public static List<Action> getActions(Directory directory, boolean isArtifactSource) {
185 List<Action> actionsList = new ArrayList<>();
186 actionsList.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), directory));
187 DirectoryNode directoryNode = new DirectoryNode(directory);
188 actionsList.add(null); // creates a menu separator
189 actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, directoryNode));
190 final Collection<AbstractFile> selectedFilesList
191 = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
192 if (selectedFilesList.size() == 1) {
193 actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, directoryNode));
194 } else {
195 actionsList.add(ExternalViewerShortcutAction.getInstance());
196 }
197 actionsList.add(null); // creates a menu separator
198 actionsList.add(ExtractAction.getInstance());
199 actionsList.add(ExportCSVAction.getInstance());
200 actionsList.add(null); // creates a menu separator
201 actionsList.add(AddContentTagAction.getInstance());
202 if (isArtifactSource) {
204 }
205 if (selectedFilesList.size() == 1) {
206 actionsList.add(DeleteFileContentTagAction.getInstance());
207 }
208 if (isArtifactSource) {
209 final Collection<BlackboardArtifact> selectedArtifactsList
210 = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
211 if (selectedArtifactsList.size() == 1) {
213 }
214 }
215 actionsList.addAll(ContextMenuExtensionPoint.getActions());
216 return actionsList;
217 }
218
219 public static List<Action> getActions(VirtualDirectory directory, boolean isArtifactSource) {
220 List<Action> actionsList = new ArrayList<>();
221 actionsList.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), directory));
222 VirtualDirectoryNode directoryNode = new VirtualDirectoryNode(directory);
223 actionsList.add(null); // creates a menu separator
224 actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, directoryNode));
225 final Collection<AbstractFile> selectedFilesList
226 = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
227 if (selectedFilesList.size() == 1) {
228 actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, directoryNode));
229 } else {
230 actionsList.add(ExternalViewerShortcutAction.getInstance());
231 }
232 actionsList.add(null); // creates a menu separator
233 actionsList.add(ExtractAction.getInstance());
234 actionsList.add(ExportCSVAction.getInstance());
235 actionsList.add(null); // creates a menu separator
236 actionsList.add(AddContentTagAction.getInstance());
237 if (isArtifactSource) {
239 }
240 if (selectedFilesList.size() == 1) {
241 actionsList.add(DeleteFileContentTagAction.getInstance());
242 }
243 if (isArtifactSource) {
244 final Collection<BlackboardArtifact> selectedArtifactsList
245 = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
246 if (selectedArtifactsList.size() == 1) {
248 }
249 }
250 actionsList.addAll(ContextMenuExtensionPoint.getActions());
251 return actionsList;
252 }
253
254 public static List<Action> getActions(LocalDirectory directory, boolean isArtifactSource) {
255 List<Action> actionsList = new ArrayList<>();
256 actionsList.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), directory));
257 LocalDirectoryNode directoryNode = new LocalDirectoryNode(directory);
258 actionsList.add(null); // creates a menu separator
259 actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, directoryNode));
260 final Collection<AbstractFile> selectedFilesList
261 = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
262 if (selectedFilesList.size() == 1) {
263 actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, directoryNode));
264 } else {
265 actionsList.add(ExternalViewerShortcutAction.getInstance());
266 }
267 actionsList.add(null); // creates a menu separator
268 actionsList.add(ExtractAction.getInstance());
269 actionsList.add(ExportCSVAction.getInstance());
270 actionsList.add(null); // creates a menu separator
271 actionsList.add(AddContentTagAction.getInstance());
272 if (isArtifactSource) {
274 }
275 if (selectedFilesList.size() == 1) {
276 actionsList.add(DeleteFileContentTagAction.getInstance());
277 }
278 if (isArtifactSource) {
279 final Collection<BlackboardArtifact> selectedArtifactsList
280 = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
281 if (selectedArtifactsList.size() == 1) {
283 }
284 }
285 actionsList.addAll(ContextMenuExtensionPoint.getActions());
286 return actionsList;
287 }
288
289 public static List<Action> getActions(LocalFile file, boolean isArtifactSource) {
290 List<Action> actionsList = new ArrayList<>();
291 actionsList.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), file));
292 final LocalFileNode localFileNode = new LocalFileNode(file);
293 actionsList.add(null); // creates a menu separator
294 actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, localFileNode));
295 final Collection<AbstractFile> selectedFilesList
296 = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
297 if (selectedFilesList.size() == 1) {
298 actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, localFileNode));
299 } else {
300 actionsList.add(ExternalViewerShortcutAction.getInstance());
301 }
302 actionsList.add(null); // creates a menu separator
303 actionsList.add(ExtractAction.getInstance());
304 actionsList.add(ExportCSVAction.getInstance());
305 actionsList.add(null); // creates a menu separator
306 actionsList.add(AddContentTagAction.getInstance());
307 if (isArtifactSource) {
309 }
310 if (selectedFilesList.size() == 1) {
311 actionsList.add(DeleteFileContentTagAction.getInstance());
312 }
313 if (isArtifactSource) {
314 final Collection<BlackboardArtifact> selectedArtifactsList
315 = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
316 if (selectedArtifactsList.size() == 1) {
318 }
319 }
320 actionsList.addAll(ContextMenuExtensionPoint.getActions());
321 return actionsList;
322 }
323
324 public static List<Action> getActions(DerivedFile file, boolean isArtifactSource) {
325 List<Action> actionsList = new ArrayList<>();
326 actionsList.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), file));
327 final LocalFileNode localFileNode = new LocalFileNode(file);
328 actionsList.add(null); // creates a menu separator
329 actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, localFileNode));
330 final Collection<AbstractFile> selectedFilesList
331 = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
332 if (selectedFilesList.size() == 1) {
333 actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, localFileNode));
334 } else {
335 actionsList.add(ExternalViewerShortcutAction.getInstance());
336 }
337 actionsList.add(null); // creates a menu separator
338 actionsList.add(ExtractAction.getInstance());
339 actionsList.add(ExportCSVAction.getInstance());
340 actionsList.add(null); // creates a menu separator
341 actionsList.add(AddContentTagAction.getInstance());
342 if (isArtifactSource) {
344 }
345 if (selectedFilesList.size() == 1) {
346 actionsList.add(DeleteFileContentTagAction.getInstance());
347 }
348 if (isArtifactSource) {
349 final Collection<BlackboardArtifact> selectedArtifactsList
350 = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
351 if (selectedArtifactsList.size() == 1) {
353 }
354 }
355 actionsList.addAll(ContextMenuExtensionPoint.getActions());
356 return actionsList;
357 }
358
359 public static List<Action> getActions(Report report, boolean isArtifactSource) {
360 List<Action> actionsList = new ArrayList<>();
361 final ReportNode reportNode = new ReportNode(report);
362 actionsList.add(null); // creates a menu separator
363 actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, reportNode));
364 actionsList.add(null); // creates a menu separator
365 if (isArtifactSource) {
367 }
368 if (isArtifactSource) {
369 final Collection<BlackboardArtifact> selectedArtifactsList
370 = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
371 if (selectedArtifactsList.size() == 1) {
373 }
374 }
375 actionsList.addAll(ContextMenuExtensionPoint.getActions());
376 return actionsList;
377 }
378
379 public static List<Action> getActions(ContentTag contentTag, boolean isArtifactSource) {
380 List<Action> actionsList = new ArrayList<>();
381 actionsList.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), contentTag.getContent()));
382 final ContentTagNode tagNode = new ContentTagNode(contentTag);
383 actionsList.add(null); // creates a menu separator
384 actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, tagNode));
385 final Collection<AbstractFile> selectedFilesList
386 = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
387 if (selectedFilesList.size() == 1) {
388 actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, tagNode));
389 } else {
390 actionsList.add(ExternalViewerShortcutAction.getInstance());
391 }
392 actionsList.add(null); // creates a menu separator
393 actionsList.add(ExtractAction.getInstance());
394 actionsList.add(ExportCSVAction.getInstance());
395 actionsList.add(null); // creates a menu separator
396 actionsList.add(AddContentTagAction.getInstance());
397 if (isArtifactSource) {
399 }
400 if (selectedFilesList.size() == 1) {
401 actionsList.add(DeleteFileContentTagAction.getInstance());
402 }
403 if (isArtifactSource) {
404 final Collection<BlackboardArtifact> selectedArtifactsList
405 = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
406 if (selectedArtifactsList.size() == 1) {
408 }
409 }
410 actionsList.add(DeleteContentTagAction.getInstance());
411 actionsList.add(ReplaceContentTagAction.getInstance());
412 actionsList.addAll(ContextMenuExtensionPoint.getActions());
413 return actionsList;
414 }
415
416 public static List<Action> getActions(BlackboardArtifactTag artifactTag, boolean isArtifactSource) {
417 List<Action> actionsList = new ArrayList<>();
418 actionsList.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), artifactTag.getContent()));
419 final BlackboardArtifactTagNode tagNode = new BlackboardArtifactTagNode(artifactTag);
420 actionsList.add(null); // creates a menu separator
421 actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, tagNode));
422 final Collection<AbstractFile> selectedFilesList
423 = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
424 if (selectedFilesList.size() == 1) {
425 actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, tagNode));
426 } else {
427 actionsList.add(ExternalViewerShortcutAction.getInstance());
428 }
429 actionsList.add(null); // creates a menu separator
430 actionsList.add(ExtractAction.getInstance());
431 actionsList.add(ExportCSVAction.getInstance());
432 actionsList.add(null); // creates a menu separator
433 actionsList.add(AddContentTagAction.getInstance());
434 if (isArtifactSource) {
436 }
437 if (selectedFilesList.size() == 1) {
438 actionsList.add(DeleteFileContentTagAction.getInstance());
439 }
440 if (isArtifactSource) {
441 final Collection<BlackboardArtifact> selectedArtifactsList
442 = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
443 if (selectedArtifactsList.size() == 1) {
445 }
446 }
449 actionsList.addAll(ContextMenuExtensionPoint.getActions());
450 return actionsList;
451 }
452
453 public static List<Action> getActions(OsAccount osAccount) {
454 List<Action> actionsList = new ArrayList<>();
455
456 OsAccountNode node = new OsAccountNode(osAccount);
457 actionsList.add(null); // creates a menu separator
458 actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, node));
459 actionsList.add(null);
460 actionsList.add(ExportCSVAction.getInstance());
461 actionsList.addAll(ContextMenuExtensionPoint.getActions());
462 return actionsList;
463 }
464
465 public static List<Action> getActions(Content content, boolean isArtifactSource) {
466 if (content instanceof File) {
467 return getActions((File) content, isArtifactSource);
468 } else if (content instanceof LayoutFile) {
469 return getActions((LayoutFile) content, isArtifactSource);
470 } else if (content instanceof Directory) {
471 return getActions((Directory) content, isArtifactSource);
472 } else if (content instanceof VirtualDirectory) {
473 return getActions((VirtualDirectory) content, isArtifactSource);
474 } else if (content instanceof LocalFile) {
475 return getActions((LocalFile) content, isArtifactSource);
476 } else if (content instanceof DerivedFile) {
477 return getActions((DerivedFile) content, isArtifactSource);
478 } else if (content instanceof SlackFile) {
479 return getActions((SlackFile) content, isArtifactSource);
480 } else if (content instanceof Report) {
481 return getActions((Report) content, isArtifactSource);
482 } else if (content instanceof OsAccount) {
483 return getActions((OsAccount) content, isArtifactSource);
484 }else {
485 return new ArrayList<>();
486 }
487 }
488}
static synchronized AddBlackboardArtifactTagAction getInstance()
static synchronized AddContentTagAction getInstance()
static synchronized DeleteBlackboardArtifactTagAction getInstance()
static synchronized DeleteContentTagAction getInstance()
static synchronized DeleteFileContentTagAction getInstance()
static synchronized ReplaceBlackboardArtifactTagAction getInstance()
static synchronized ReplaceContentTagAction getInstance()
static List< Action > getActions(DerivedFile file, boolean isArtifactSource)
static List< Action > getActions(VirtualDirectory directory, boolean isArtifactSource)
static List< Action > getActions(Content content, boolean isArtifactSource)
static List< Action > getActions(BlackboardArtifactTag artifactTag, boolean isArtifactSource)
static List< Action > getActions(Report report, boolean isArtifactSource)
static List< Action > getActions(SlackFile slackFile, boolean isArtifactSource)
static List< Action > getActions(Directory directory, boolean isArtifactSource)
static List< Action > getActions(ContentTag contentTag, boolean isArtifactSource)
static List< Action > getActions(LocalFile file, boolean isArtifactSource)
static List< Action > getActions(File file, boolean isArtifactSource)
static List< Action > getActions(LocalDirectory directory, boolean isArtifactSource)
static List< Action > getActions(LayoutFile file, boolean isArtifactSource)
static synchronized ExportCSVAction getInstance()
static synchronized ExtractAction getInstance()

Copyright © 2012-2024 Sleuth Kit Labs. Generated on:
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.