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

Copyright © 2012-2021 Basis Technology. Generated on: Thu Jul 8 2021
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.