mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-14 08:56:15 +00:00
Complete docs/deprecation for FileManager API
This commit is contained in:
parent
a855009740
commit
f746f455c8
@ -282,6 +282,7 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
||||
/**
|
||||
* Constructor for the Case class
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
private Case(CaseMetadata caseMetadata, SleuthkitCase db) {
|
||||
this.caseMetadata = caseMetadata;
|
||||
this.db = db;
|
||||
@ -835,6 +836,7 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
||||
/**
|
||||
* Closes this case. This methods close the xml and clear all the fields.
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public void closeCase() throws CaseActionException {
|
||||
changeCase(null);
|
||||
try {
|
||||
|
@ -109,10 +109,13 @@ public final class Blackboard implements Closeable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Cloese this blackboard and releases any resources associated with it.
|
||||
* @throws IOException
|
||||
* Closes the blackboard.
|
||||
*
|
||||
* @throws IOException If there is a problem closing the blackboard.
|
||||
* @deprecated File manager clients should not close the blackboard.
|
||||
*/
|
||||
@Override
|
||||
@Deprecated
|
||||
public void close() throws IOException {
|
||||
}
|
||||
|
||||
|
@ -26,10 +26,8 @@ import java.io.Closeable;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.autopsy.datamodel.VirtualDirectoryNode;
|
||||
import org.sleuthkit.autopsy.ingest.IngestServices;
|
||||
import org.sleuthkit.autopsy.ingest.ModuleContentEvent;
|
||||
@ -37,7 +35,6 @@ import org.sleuthkit.datamodel.AbstractFile;
|
||||
import org.sleuthkit.datamodel.Content;
|
||||
import org.sleuthkit.datamodel.DerivedFile;
|
||||
import org.sleuthkit.datamodel.LayoutFile;
|
||||
import org.sleuthkit.datamodel.LocalFile;
|
||||
import org.sleuthkit.datamodel.SleuthkitCase;
|
||||
import org.sleuthkit.datamodel.SleuthkitCase.CaseDbTransaction;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
@ -48,55 +45,19 @@ import org.sleuthkit.datamodel.LocalFilesDataSource;
|
||||
import org.sleuthkit.datamodel.TskDataException;
|
||||
|
||||
/**
|
||||
* A case-level service that provides methods for retrieving files associated
|
||||
* with the case and for adding local files, carved files, and derived files to
|
||||
* the case.
|
||||
* A manager that provides methods for retrieving files from the current case
|
||||
* and for adding local files, carved files, and derived files to the current
|
||||
* case.
|
||||
*/
|
||||
public class FileManager implements Closeable {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(FileManager.class.getName());
|
||||
private SleuthkitCase caseDb;
|
||||
|
||||
/*
|
||||
* TODO (AUT-1905): Although this counter is guarded by the monitor of the
|
||||
* FileManager, this does not guarantee unique default file set names for
|
||||
* multi-user cases where multiple nodes can be running FileManagers for the
|
||||
* same case.
|
||||
*/
|
||||
private int localFileDataSourcesCounter;
|
||||
|
||||
/**
|
||||
* Constructs a case-level service that provides methods for retrieving
|
||||
* files associated with the case and for adding local files, carved files,
|
||||
* and derived files to the case.
|
||||
* Constructs a manager that provides methods for retrieving files from the
|
||||
* current case and for adding local files, carved files, and derived files
|
||||
* to the current case.
|
||||
*
|
||||
*/
|
||||
FileManager(Case currentCase, SleuthkitCase caseDb) throws TskCoreException {
|
||||
this.caseDb = caseDb;
|
||||
initializeLocalFileDataSourcesCounter();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize the counter for the number of logical/local file sets that is
|
||||
* used to generate the default logical/local file data source names.
|
||||
*/
|
||||
private void initializeLocalFileDataSourcesCounter() {
|
||||
/*
|
||||
* TODO (AUT-1905): Although the counter is guarded by the monitor of
|
||||
* the FileManager, this does not guarantee unique default file set
|
||||
* names for multi-user cases where multiple nodes can be running
|
||||
* FileManagers for the same case.
|
||||
*/
|
||||
localFileDataSourcesCounter = 0;
|
||||
try {
|
||||
List<VirtualDirectory> localFileDataSources = caseDb.getVirtualDirectoryRoots();
|
||||
for (VirtualDirectory vd : localFileDataSources) {
|
||||
if (vd.getName().startsWith(VirtualDirectoryNode.LOGICAL_FILE_SET_PREFIX)) {
|
||||
++localFileDataSourcesCounter;
|
||||
}
|
||||
}
|
||||
} catch (TskCoreException ex) {
|
||||
logger.log(Level.SEVERE, "Error initializing logical files counter", ex); //NON-NLS
|
||||
}
|
||||
FileManager() {
|
||||
}
|
||||
|
||||
/**
|
||||
@ -111,12 +72,9 @@ public class FileManager implements Closeable {
|
||||
* @throws TskCoreException if there is a problem querying the case
|
||||
* database.
|
||||
*/
|
||||
public synchronized List<AbstractFile> findFiles(String fileName) throws TskCoreException {
|
||||
if (null == caseDb) {
|
||||
throw new TskCoreException("FileManager closed");
|
||||
}
|
||||
public List<AbstractFile> findFiles(String fileName) throws TskCoreException {
|
||||
List<AbstractFile> result = new ArrayList<>();
|
||||
List<Content> dataSources = caseDb.getRootObjects();
|
||||
List<Content> dataSources = Case.getCurrentCase().getSleuthkitCase().getRootObjects();
|
||||
for (Content dataSource : dataSources) {
|
||||
result.addAll(findFiles(dataSource, fileName));
|
||||
}
|
||||
@ -137,12 +95,9 @@ public class FileManager implements Closeable {
|
||||
* @throws TskCoreException if there is a problem querying the case
|
||||
* database.
|
||||
*/
|
||||
public synchronized List<AbstractFile> findFiles(String fileName, String parentName) throws TskCoreException {
|
||||
if (null == caseDb) {
|
||||
throw new TskCoreException("FileManager closed");
|
||||
}
|
||||
public List<AbstractFile> findFiles(String fileName, String parentName) throws TskCoreException {
|
||||
List<AbstractFile> result = new ArrayList<>();
|
||||
List<Content> dataSources = caseDb.getRootObjects();
|
||||
List<Content> dataSources = Case.getCurrentCase().getSleuthkitCase().getRootObjects();
|
||||
for (Content dataSource : dataSources) {
|
||||
result.addAll(findFiles(dataSource, fileName, parentName));
|
||||
}
|
||||
@ -163,12 +118,9 @@ public class FileManager implements Closeable {
|
||||
* @throws TskCoreException if there is a problem querying the case
|
||||
* database.
|
||||
*/
|
||||
public synchronized List<AbstractFile> findFiles(String fileName, AbstractFile parent) throws TskCoreException {
|
||||
if (null == caseDb) {
|
||||
throw new TskCoreException("FileManager closed");
|
||||
}
|
||||
public List<AbstractFile> findFiles(String fileName, AbstractFile parent) throws TskCoreException {
|
||||
List<AbstractFile> result = new ArrayList<>();
|
||||
List<Content> dataSources = caseDb.getRootObjects();
|
||||
List<Content> dataSources = Case.getCurrentCase().getSleuthkitCase().getRootObjects();
|
||||
for (Content dataSource : dataSources) {
|
||||
result.addAll(findFiles(dataSource, fileName, parent));
|
||||
}
|
||||
@ -189,8 +141,8 @@ public class FileManager implements Closeable {
|
||||
* @throws TskCoreException if there is a problem querying the case
|
||||
* database.
|
||||
*/
|
||||
public synchronized List<AbstractFile> findFiles(Content dataSource, String fileName) throws TskCoreException {
|
||||
return caseDb.findFiles(dataSource, fileName);
|
||||
public List<AbstractFile> findFiles(Content dataSource, String fileName) throws TskCoreException {
|
||||
return Case.getCurrentCase().getSleuthkitCase().findFiles(dataSource, fileName);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -209,8 +161,8 @@ public class FileManager implements Closeable {
|
||||
* @throws TskCoreException if there is a problem querying the case
|
||||
* database.
|
||||
*/
|
||||
public synchronized List<AbstractFile> findFiles(Content dataSource, String fileName, String parentName) throws TskCoreException {
|
||||
return caseDb.findFiles(dataSource, fileName, parentName);
|
||||
public List<AbstractFile> findFiles(Content dataSource, String fileName, String parentName) throws TskCoreException {
|
||||
return Case.getCurrentCase().getSleuthkitCase().findFiles(dataSource, fileName, parentName);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -229,7 +181,7 @@ public class FileManager implements Closeable {
|
||||
* @throws TskCoreException if there is a problem querying the case
|
||||
* database.
|
||||
*/
|
||||
public synchronized List<AbstractFile> findFiles(Content dataSource, String fileName, AbstractFile parent) throws TskCoreException {
|
||||
public List<AbstractFile> findFiles(Content dataSource, String fileName, AbstractFile parent) throws TskCoreException {
|
||||
return findFiles(dataSource, fileName, parent.getName());
|
||||
}
|
||||
|
||||
@ -258,11 +210,8 @@ public class FileManager implements Closeable {
|
||||
* @throws TskCoreException if there is a problem querying the case
|
||||
* database.
|
||||
*/
|
||||
public synchronized List<AbstractFile> openFiles(Content dataSource, String filePath) throws TskCoreException {
|
||||
if (null == caseDb) {
|
||||
throw new TskCoreException("FileManager closed");
|
||||
}
|
||||
return caseDb.openFiles(dataSource, filePath);
|
||||
public List<AbstractFile> openFiles(Content dataSource, String filePath) throws TskCoreException {
|
||||
return Case.getCurrentCase().getSleuthkitCase().openFiles(dataSource, filePath);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -293,14 +242,15 @@ public class FileManager implements Closeable {
|
||||
* @throws TskCoreException if there is a problem adding the file to the
|
||||
* case database.
|
||||
*/
|
||||
public synchronized DerivedFile addDerivedFile(String fileName,
|
||||
public DerivedFile addDerivedFile(String fileName,
|
||||
String localPath,
|
||||
long size,
|
||||
long ctime, long crtime, long atime, long mtime,
|
||||
boolean isFile,
|
||||
AbstractFile parentFile,
|
||||
String rederiveDetails, String toolName, String toolVersion, String otherDetails) throws TskCoreException {
|
||||
return caseDb.addDerivedFile(fileName, localPath, size,
|
||||
|
||||
return Case.getCurrentCase().getSleuthkitCase().addDerivedFile(fileName, localPath, size,
|
||||
ctime, crtime, atime, mtime,
|
||||
isFile, parentFile, rederiveDetails, toolName, toolVersion, otherDetails);
|
||||
}
|
||||
@ -322,7 +272,7 @@ public class FileManager implements Closeable {
|
||||
* case database.
|
||||
*/
|
||||
public synchronized LayoutFile addCarvedFile(String fileName, long fileSize, long parentObjId, List<TskFileRange> layout) throws TskCoreException {
|
||||
return caseDb.addCarvedFile(fileName, fileSize, parentObjId, layout);
|
||||
return Case.getCurrentCase().getSleuthkitCase().addCarvedFile(fileName, fileSize, parentObjId, layout);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -338,7 +288,7 @@ public class FileManager implements Closeable {
|
||||
* case database.
|
||||
*/
|
||||
public List<LayoutFile> addCarvedFiles(List<CarvedFileContainer> filesToAdd) throws TskCoreException {
|
||||
return caseDb.addCarvedFiles(filesToAdd);
|
||||
return Case.getCurrentCase().getSleuthkitCase().addCarvedFiles(filesToAdd);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -352,7 +302,7 @@ public class FileManager implements Closeable {
|
||||
*
|
||||
* @param An AbstractFile represeting the added file or directory.
|
||||
*/
|
||||
public void fileAdded(AbstractFile newFile);
|
||||
void fileAdded(AbstractFile newFile);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -384,27 +334,19 @@ public class FileManager implements Closeable {
|
||||
* directory that does not exist or cannot be read.
|
||||
*/
|
||||
public synchronized LocalFilesDataSource addLocalFilesDataSource(String deviceId, String rootVirtualDirectoryName, String timeZone, List<String> localFilePaths, FileAddProgressUpdater progressUpdater) throws TskCoreException, TskDataException {
|
||||
/*
|
||||
* Convert the local/logical file paths into File objects.
|
||||
*/
|
||||
List<java.io.File> localFiles = getFilesAndDirectories(localFilePaths);
|
||||
CaseDbTransaction trans = null;
|
||||
try {
|
||||
/*
|
||||
* Generate a name for the root virtual directory for the data
|
||||
* source, if a name was not supplied, and increment the counter
|
||||
* used to generate the default names.
|
||||
*/
|
||||
int newLocalFilesSetCount = localFileDataSourcesCounter + 1;
|
||||
String rootDirectoryName = rootVirtualDirectoryName;
|
||||
if (rootVirtualDirectoryName.isEmpty()) {
|
||||
rootDirectoryName = VirtualDirectoryNode.LOGICAL_FILE_SET_PREFIX + newLocalFilesSetCount;
|
||||
if (rootDirectoryName.isEmpty()) {
|
||||
rootDirectoryName = generateFilesDataSourceName();
|
||||
}
|
||||
|
||||
/*
|
||||
* Add the root virtual directory and its local/logical file
|
||||
* chioldren to the case database.
|
||||
* children to the case database.
|
||||
*/
|
||||
SleuthkitCase caseDb = Case.getCurrentCase().getSleuthkitCase();
|
||||
trans = caseDb.beginTransaction();
|
||||
LocalFilesDataSource dataSource = caseDb.addLocalFilesDataSource(deviceId, rootDirectoryName, timeZone, trans);
|
||||
VirtualDirectory rootDirectory = dataSource.getRootDirectory();
|
||||
@ -419,18 +361,6 @@ public class FileManager implements Closeable {
|
||||
}
|
||||
trans.commit();
|
||||
|
||||
/*
|
||||
* Update the counter used to generate the default names.
|
||||
*
|
||||
* TODO (AUT-1905): Although the counter is guarded by the monitor
|
||||
* of the FileManager, this does not guarantee unique default file
|
||||
* set names for multi-user cases where multiple nodes can be
|
||||
* running FileManagers for the same case.
|
||||
*/
|
||||
if (rootVirtualDirectoryName.isEmpty()) {
|
||||
localFileDataSourcesCounter = newLocalFilesSetCount;
|
||||
}
|
||||
|
||||
/*
|
||||
* Publish content added events for the added files and directories.
|
||||
*/
|
||||
@ -448,6 +378,34 @@ public class FileManager implements Closeable {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a name for the root virtual directory for the data source.
|
||||
*
|
||||
* NOTE: Although this method is guarded by the file manager's monitor,
|
||||
* there is currently a minimal chance of default name duplication for
|
||||
* multi-user cases with multiple FileManagers running on different nodes.
|
||||
*
|
||||
* @return A default name for a local/logical files data source of the form:
|
||||
* LogicalFileSet[N].
|
||||
*
|
||||
* @throws TskCoreException If there is a problem querying the case
|
||||
* database.
|
||||
*/
|
||||
private synchronized String generateFilesDataSourceName() throws TskCoreException {
|
||||
int localFileDataSourcesCounter = 0;
|
||||
try {
|
||||
List<VirtualDirectory> localFileDataSources = Case.getCurrentCase().getSleuthkitCase().getVirtualDirectoryRoots();
|
||||
for (VirtualDirectory vd : localFileDataSources) {
|
||||
if (vd.getName().startsWith(VirtualDirectoryNode.LOGICAL_FILE_SET_PREFIX)) {
|
||||
++localFileDataSourcesCounter;
|
||||
}
|
||||
}
|
||||
return VirtualDirectoryNode.LOGICAL_FILE_SET_PREFIX + (localFileDataSourcesCounter + 1);
|
||||
} catch (TskCoreException ex) {
|
||||
throw new TskCoreException("Error querying for existing local file data sources with defualt names", ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a list of local/logical file and/or directory paths to a list of
|
||||
* file objects.
|
||||
@ -497,7 +455,7 @@ public class FileManager implements Closeable {
|
||||
/*
|
||||
* Add the directory as a virtual directory.
|
||||
*/
|
||||
VirtualDirectory virtualDirectory = caseDb.addVirtualDirectory(parentDirectory.getId(), localFile.getName(), trans);
|
||||
VirtualDirectory virtualDirectory = Case.getCurrentCase().getSleuthkitCase().addVirtualDirectory(parentDirectory.getId(), localFile.getName(), trans);
|
||||
progressUpdater.fileAdded(virtualDirectory);
|
||||
|
||||
/*
|
||||
@ -512,32 +470,12 @@ public class FileManager implements Closeable {
|
||||
|
||||
return virtualDirectory;
|
||||
} else {
|
||||
return caseDb.addLocalFile(localFile.getName(), localFile.getAbsolutePath(), localFile.length(),
|
||||
return Case.getCurrentCase().getSleuthkitCase().addLocalFile(localFile.getName(), localFile.getAbsolutePath(), localFile.length(),
|
||||
0, 0, 0, 0,
|
||||
localFile.isFile(), parentDirectory, trans);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void close() throws IOException {
|
||||
caseDb = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Contructs a case-level service that provides management of files within
|
||||
* the data sources added to a case and the local files associated with a
|
||||
* case.
|
||||
*
|
||||
* @param tskCase The case database.
|
||||
*
|
||||
* @deprecated Use Case.getCurrentCase().getServices().getFileManager()
|
||||
* instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public FileManager(SleuthkitCase tskCase) {
|
||||
this();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a set of local/logical files and/or directories to the case database
|
||||
* as data source.
|
||||
@ -557,7 +495,7 @@ public class FileManager implements Closeable {
|
||||
* @deprecated Use addLocalFilesDataSource instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public synchronized VirtualDirectory addLocalFilesDirs(List<String> localFilePaths, FileAddProgressUpdater progressUpdater) throws TskCoreException {
|
||||
public VirtualDirectory addLocalFilesDirs(List<String> localFilePaths, FileAddProgressUpdater progressUpdater) throws TskCoreException {
|
||||
try {
|
||||
return addLocalFilesDataSource("", "", "", localFilePaths, progressUpdater).getRootDirectory();
|
||||
} catch (TskDataException ex) {
|
||||
@ -565,4 +503,29 @@ public class FileManager implements Closeable {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a manager that provides methods for retrieving files from the
|
||||
* current case and for adding local files, carved files, and derived files
|
||||
* to the current case.
|
||||
*
|
||||
* @param caseDb The case database.
|
||||
*
|
||||
* @deprecated Use Case.getCurrentCase().getServices().getFileManager()
|
||||
* instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public FileManager(SleuthkitCase caseDb) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Closes the file manager.
|
||||
*
|
||||
* @throws IOException If there is a problem closing the file manager.
|
||||
* @deprecated File manager clients should not close the file manager.
|
||||
*/
|
||||
@Override
|
||||
@Deprecated
|
||||
public void close() throws IOException {
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -2,11 +2,10 @@
|
||||
*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2012-2016 Basis Technology Corp.
|
||||
*
|
||||
* Copyright 2011-2016 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
* Copyright 2012 42six Solutions.
|
||||
* Contact: aebadirad <at> 42six <dot> com
|
||||
* Project Contact/Architect: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@ -29,10 +28,10 @@ import java.util.List;
|
||||
import org.openide.util.Lookup;
|
||||
import org.sleuthkit.autopsy.keywordsearchservice.KeywordSearchService;
|
||||
import org.sleuthkit.datamodel.SleuthkitCase;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
|
||||
/**
|
||||
* A class to manage various services.
|
||||
* A collection of case-level services (e.g., file manager, tags manager,
|
||||
* keyword search, blackboard).
|
||||
*/
|
||||
public class Services implements Closeable {
|
||||
|
||||
@ -42,25 +41,22 @@ public class Services implements Closeable {
|
||||
private final KeywordSearchService keywordSearchService;
|
||||
private final Blackboard blackboard;
|
||||
|
||||
Services(Case currentCase, SleuthkitCase caseDb) {
|
||||
fileManager = new FileManager(currentCase, caseDb);
|
||||
/**
|
||||
* Constructs a collection of case-level services (e.g., file manager, tags
|
||||
* manager, keyword search, blackboard).
|
||||
*
|
||||
* @param caseDb The case database for the current case.
|
||||
*
|
||||
* @deprecated Use Case.getCurrentCase().getServices() instead.
|
||||
*
|
||||
* TODO (AUT-2158): Prevent public construction of the Services class.
|
||||
*/
|
||||
@Deprecated
|
||||
public Services(SleuthkitCase caseDb) {
|
||||
fileManager = new FileManager();
|
||||
services.add(fileManager);
|
||||
|
||||
tagsManager = new TagsManager(caseDb);
|
||||
services.add(tagsManager);
|
||||
|
||||
keywordSearchService = Lookup.getDefault().lookup(KeywordSearchService.class);
|
||||
services.add(keywordSearchService);
|
||||
|
||||
blackboard = new Blackboard();
|
||||
services.add(blackboard);
|
||||
}
|
||||
|
||||
public Services(SleuthkitCase tskCase) {
|
||||
fileManager = new FileManager(tskCase);
|
||||
services.add(fileManager);
|
||||
|
||||
tagsManager = new TagsManager(tskCase);
|
||||
tagsManager = new TagsManager();
|
||||
services.add(tagsManager);
|
||||
|
||||
keywordSearchService = Lookup.getDefault().lookup(KeywordSearchService.class);
|
||||
@ -70,23 +66,51 @@ public class Services implements Closeable {
|
||||
services.add(blackboard);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the file manager service for the current case.
|
||||
*
|
||||
* @return The file manager service for the current case.
|
||||
*/
|
||||
public FileManager getFileManager() {
|
||||
return fileManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the tags manager service for the current case.
|
||||
*
|
||||
* @return The tags manager service for the current case.
|
||||
*/
|
||||
public TagsManager getTagsManager() {
|
||||
return tagsManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the keyword search service for the current case.
|
||||
*
|
||||
* @return The keyword search service for the current case.
|
||||
*/
|
||||
public KeywordSearchService getKeywordSearchService() {
|
||||
return keywordSearchService;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the blackboard service for the current case.
|
||||
*
|
||||
* @return The blackboard service for the current case.
|
||||
*/
|
||||
public Blackboard getBlackboard() {
|
||||
return blackboard;
|
||||
}
|
||||
|
||||
/**
|
||||
* Closes the services for the current case.
|
||||
*
|
||||
* @throws IOException if there is a problem closing the services.
|
||||
* @deprecated Services clients other than the case should not close the
|
||||
* services.
|
||||
*/
|
||||
@Override
|
||||
@Deprecated
|
||||
public void close() throws IOException {
|
||||
for (Closeable service : services) {
|
||||
service.close();
|
||||
|
@ -32,7 +32,6 @@ import org.sleuthkit.datamodel.BlackboardArtifact;
|
||||
import org.sleuthkit.datamodel.BlackboardArtifactTag;
|
||||
import org.sleuthkit.datamodel.Content;
|
||||
import org.sleuthkit.datamodel.ContentTag;
|
||||
import org.sleuthkit.datamodel.SleuthkitCase;
|
||||
import org.sleuthkit.datamodel.TagName;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
|
||||
@ -45,7 +44,6 @@ public class TagsManager implements Closeable {
|
||||
private static final Logger logger = Logger.getLogger(TagsManager.class.getName());
|
||||
private static final String TAGS_SETTINGS_NAME = "Tags"; //NON-NLS
|
||||
private static final String TAG_NAMES_SETTING_KEY = "TagNames"; //NON-NLS
|
||||
private final SleuthkitCase caseDb;
|
||||
private final HashMap<String, TagName> uniqueTagNames = new HashMap<>();
|
||||
private boolean tagNamesLoaded = false;
|
||||
|
||||
@ -53,11 +51,8 @@ public class TagsManager implements Closeable {
|
||||
* Constructs a per case Autopsy service that manages the creation,
|
||||
* updating, and deletion of tags applied to content and blackboard
|
||||
* artifacts by users.
|
||||
*
|
||||
* @param caseDb The case database for the current case.
|
||||
*/
|
||||
TagsManager(SleuthkitCase caseDb) {
|
||||
this.caseDb = caseDb;
|
||||
TagsManager() {
|
||||
}
|
||||
|
||||
/**
|
||||
@ -71,7 +66,7 @@ public class TagsManager implements Closeable {
|
||||
*/
|
||||
public synchronized List<TagName> getAllTagNames() throws TskCoreException {
|
||||
lazyLoadExistingTagNames();
|
||||
return caseDb.getAllTagNames();
|
||||
return Case.getCurrentCase().getSleuthkitCase().getAllTagNames();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -85,7 +80,7 @@ public class TagsManager implements Closeable {
|
||||
*/
|
||||
public synchronized List<TagName> getTagNamesInUse() throws TskCoreException {
|
||||
lazyLoadExistingTagNames();
|
||||
return caseDb.getTagNamesInUse();
|
||||
return Case.getCurrentCase().getSleuthkitCase().getTagNamesInUse();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -159,7 +154,7 @@ public class TagsManager implements Closeable {
|
||||
/*
|
||||
* Add the tag name to the case.
|
||||
*/
|
||||
TagName newTagName = caseDb.addTagName(displayName, description, color);
|
||||
TagName newTagName = Case.getCurrentCase().getSleuthkitCase().addTagName(displayName, description, color);
|
||||
|
||||
/*
|
||||
* Add the tag name to the tags settings.
|
||||
@ -245,7 +240,7 @@ public class TagsManager implements Closeable {
|
||||
}
|
||||
}
|
||||
|
||||
tag = caseDb.addContentTag(content, tagName, comment, beginByteOffset, endByteOffset);
|
||||
tag = Case.getCurrentCase().getSleuthkitCase().addContentTag(content, tagName, comment, beginByteOffset, endByteOffset);
|
||||
}
|
||||
|
||||
try {
|
||||
@ -267,7 +262,7 @@ public class TagsManager implements Closeable {
|
||||
public void deleteContentTag(ContentTag tag) throws TskCoreException {
|
||||
synchronized (this) {
|
||||
lazyLoadExistingTagNames();
|
||||
caseDb.deleteContentTag(tag);
|
||||
Case.getCurrentCase().getSleuthkitCase().deleteContentTag(tag);
|
||||
}
|
||||
|
||||
try {
|
||||
@ -287,7 +282,7 @@ public class TagsManager implements Closeable {
|
||||
*/
|
||||
public synchronized List<ContentTag> getAllContentTags() throws TskCoreException {
|
||||
lazyLoadExistingTagNames();
|
||||
return caseDb.getAllContentTags();
|
||||
return Case.getCurrentCase().getSleuthkitCase().getAllContentTags();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -302,7 +297,7 @@ public class TagsManager implements Closeable {
|
||||
*/
|
||||
public synchronized long getContentTagsCountByTagName(TagName tagName) throws TskCoreException {
|
||||
lazyLoadExistingTagNames();
|
||||
return caseDb.getContentTagsCountByTagName(tagName);
|
||||
return Case.getCurrentCase().getSleuthkitCase().getContentTagsCountByTagName(tagName);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -317,7 +312,7 @@ public class TagsManager implements Closeable {
|
||||
*/
|
||||
public synchronized ContentTag getContentTagByTagID(long tagID) throws TskCoreException {
|
||||
lazyLoadExistingTagNames();
|
||||
return caseDb.getContentTagByID(tagID);
|
||||
return Case.getCurrentCase().getSleuthkitCase().getContentTagByID(tagID);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -333,7 +328,7 @@ public class TagsManager implements Closeable {
|
||||
*/
|
||||
public synchronized List<ContentTag> getContentTagsByTagName(TagName tagName) throws TskCoreException {
|
||||
lazyLoadExistingTagNames();
|
||||
return caseDb.getContentTagsByTagName(tagName);
|
||||
return Case.getCurrentCase().getSleuthkitCase().getContentTagsByTagName(tagName);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -349,7 +344,7 @@ public class TagsManager implements Closeable {
|
||||
*/
|
||||
public synchronized List<ContentTag> getContentTagsByContent(Content content) throws TskCoreException {
|
||||
lazyLoadExistingTagNames();
|
||||
return caseDb.getContentTagsByContent(content);
|
||||
return Case.getCurrentCase().getSleuthkitCase().getContentTagsByContent(content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -388,7 +383,7 @@ public class TagsManager implements Closeable {
|
||||
if (null == comment) {
|
||||
throw new IllegalArgumentException("Passed null comment argument");
|
||||
}
|
||||
tag = caseDb.addBlackboardArtifactTag(artifact, tagName, comment);
|
||||
tag = Case.getCurrentCase().getSleuthkitCase().addBlackboardArtifactTag(artifact, tagName, comment);
|
||||
}
|
||||
|
||||
try {
|
||||
@ -410,7 +405,7 @@ public class TagsManager implements Closeable {
|
||||
public void deleteBlackboardArtifactTag(BlackboardArtifactTag tag) throws TskCoreException {
|
||||
synchronized (this) {
|
||||
lazyLoadExistingTagNames();
|
||||
caseDb.deleteBlackboardArtifactTag(tag);
|
||||
Case.getCurrentCase().getSleuthkitCase().deleteBlackboardArtifactTag(tag);
|
||||
}
|
||||
|
||||
try {
|
||||
@ -430,7 +425,7 @@ public class TagsManager implements Closeable {
|
||||
*/
|
||||
public synchronized List<BlackboardArtifactTag> getAllBlackboardArtifactTags() throws TskCoreException {
|
||||
lazyLoadExistingTagNames();
|
||||
return caseDb.getAllBlackboardArtifactTags();
|
||||
return Case.getCurrentCase().getSleuthkitCase().getAllBlackboardArtifactTags();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -446,7 +441,7 @@ public class TagsManager implements Closeable {
|
||||
*/
|
||||
public synchronized long getBlackboardArtifactTagsCountByTagName(TagName tagName) throws TskCoreException {
|
||||
lazyLoadExistingTagNames();
|
||||
return caseDb.getBlackboardArtifactTagsCountByTagName(tagName);
|
||||
return Case.getCurrentCase().getSleuthkitCase().getBlackboardArtifactTagsCountByTagName(tagName);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -461,7 +456,7 @@ public class TagsManager implements Closeable {
|
||||
*/
|
||||
public synchronized BlackboardArtifactTag getBlackboardArtifactTagByTagID(long tagID) throws TskCoreException {
|
||||
lazyLoadExistingTagNames();
|
||||
return caseDb.getBlackboardArtifactTagByID(tagID);
|
||||
return Case.getCurrentCase().getSleuthkitCase().getBlackboardArtifactTagByID(tagID);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -477,7 +472,7 @@ public class TagsManager implements Closeable {
|
||||
*/
|
||||
public synchronized List<BlackboardArtifactTag> getBlackboardArtifactTagsByTagName(TagName tagName) throws TskCoreException {
|
||||
lazyLoadExistingTagNames();
|
||||
return caseDb.getBlackboardArtifactTagsByTagName(tagName);
|
||||
return Case.getCurrentCase().getSleuthkitCase().getBlackboardArtifactTagsByTagName(tagName);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -493,13 +488,18 @@ public class TagsManager implements Closeable {
|
||||
*/
|
||||
public synchronized List<BlackboardArtifactTag> getBlackboardArtifactTagsByArtifact(BlackboardArtifact artifact) throws TskCoreException {
|
||||
lazyLoadExistingTagNames();
|
||||
return caseDb.getBlackboardArtifactTagsByArtifact(artifact);
|
||||
return Case.getCurrentCase().getSleuthkitCase().getBlackboardArtifactTagsByArtifact(artifact);
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves the avaialble tag names to secondary storage.
|
||||
* Closes the tags manager, saving the avaialble tag names to secondary
|
||||
* storage.
|
||||
*
|
||||
* @throws IOException If there is a problem closing the tags manager.
|
||||
* @deprecated Tags manager clients should not close the tags manager.
|
||||
*/
|
||||
@Override
|
||||
@Deprecated
|
||||
public synchronized void close() throws IOException {
|
||||
saveTagNamesToTagsSettings();
|
||||
}
|
||||
@ -524,7 +524,7 @@ public class TagsManager implements Closeable {
|
||||
*/
|
||||
private void addTagNamesFromCurrentCase() {
|
||||
try {
|
||||
List<TagName> currentTagNames = caseDb.getAllTagNames();
|
||||
List<TagName> currentTagNames = Case.getCurrentCase().getSleuthkitCase().getAllTagNames();
|
||||
for (TagName tagName : currentTagNames) {
|
||||
uniqueTagNames.put(tagName.getDisplayName(), tagName);
|
||||
}
|
||||
@ -550,7 +550,7 @@ public class TagsManager implements Closeable {
|
||||
String[] tagNameAttributes = tagNameTuple.split(",");
|
||||
if (!uniqueTagNames.containsKey(tagNameAttributes[0])) {
|
||||
try {
|
||||
TagName tagName = caseDb.addTagName(tagNameAttributes[0], tagNameAttributes[1], TagName.HTML_COLOR.getColorByName(tagNameAttributes[2]));
|
||||
TagName tagName = Case.getCurrentCase().getSleuthkitCase().addTagName(tagNameAttributes[0], tagNameAttributes[1], TagName.HTML_COLOR.getColorByName(tagNameAttributes[2]));
|
||||
uniqueTagNames.put(tagName.getDisplayName(), tagName);
|
||||
} catch (TskCoreException ex) {
|
||||
Logger.getLogger(TagsManager.class.getName()).log(Level.SEVERE, "Failed to add saved tag name " + tagNameAttributes[0], ex); //NON-NLS
|
||||
@ -566,7 +566,7 @@ public class TagsManager implements Closeable {
|
||||
private void addPredefinedTagNames() {
|
||||
if (!uniqueTagNames.containsKey(NbBundle.getMessage(this.getClass(), "TagsManager.predefTagNames.bookmark.text"))) {
|
||||
try {
|
||||
TagName tagName = caseDb.addTagName(
|
||||
TagName tagName = Case.getCurrentCase().getSleuthkitCase().addTagName(
|
||||
NbBundle.getMessage(this.getClass(), "TagsManager.predefTagNames.bookmark.text"), "", TagName.HTML_COLOR.NONE);
|
||||
uniqueTagNames.put(tagName.getDisplayName(), tagName);
|
||||
} catch (TskCoreException ex) {
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2014 Basis Technology Corp.
|
||||
* Copyright 2011-2016 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -23,7 +23,9 @@ import org.sleuthkit.datamodel.BlackboardArtifact;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
|
||||
/**
|
||||
* An implementation of a keyword search service.
|
||||
*
|
||||
* TODO (AUT-2158: This interface should not extend Closeable.
|
||||
*/
|
||||
public interface KeywordSearchService extends Closeable {
|
||||
|
||||
@ -49,4 +51,4 @@ public interface KeywordSearchService extends Closeable {
|
||||
*/
|
||||
public void tryConnect(String host, int port) throws KeywordSearchServiceException;
|
||||
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user