Autopsy  4.20.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.NbBundle.Messages;
29 import org.openide.util.Utilities;
47 import org.sleuthkit.datamodel.AbstractFile;
48 import org.sleuthkit.datamodel.BlackboardArtifact;
49 import org.sleuthkit.datamodel.BlackboardArtifactTag;
50 import org.sleuthkit.datamodel.Content;
51 import org.sleuthkit.datamodel.ContentTag;
52 import org.sleuthkit.datamodel.DerivedFile;
53 import org.sleuthkit.datamodel.Directory;
54 import org.sleuthkit.datamodel.File;
55 import org.sleuthkit.datamodel.LayoutFile;
56 import org.sleuthkit.datamodel.LocalFile;
57 import org.sleuthkit.datamodel.LocalDirectory;
58 import org.sleuthkit.datamodel.OsAccount;
59 import org.sleuthkit.datamodel.Report;
60 import org.sleuthkit.datamodel.SlackFile;
61 import 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 {
95  actionsList.add(ExternalViewerShortcutAction.getInstance());
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) {
103  actionsList.add(AddBlackboardArtifactTagAction.getInstance());
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) {
131  actionsList.add(AddBlackboardArtifactTagAction.getInstance());
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) {
168  actionsList.add(AddBlackboardArtifactTagAction.getInstance());
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) {
203  actionsList.add(AddBlackboardArtifactTagAction.getInstance());
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) {
238  actionsList.add(AddBlackboardArtifactTagAction.getInstance());
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) {
273  actionsList.add(AddBlackboardArtifactTagAction.getInstance());
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) {
308  actionsList.add(AddBlackboardArtifactTagAction.getInstance());
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) {
343  actionsList.add(AddBlackboardArtifactTagAction.getInstance());
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) {
366  actionsList.add(AddBlackboardArtifactTagAction.getInstance());
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) {
398  actionsList.add(AddBlackboardArtifactTagAction.getInstance());
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) {
435  actionsList.add(AddBlackboardArtifactTagAction.getInstance());
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 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-2022 Basis Technology. Generated on: Tue Aug 1 2023
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.