23 package org.sleuthkit.autopsy.casemodule.services;
 
   25 import java.io.Closeable;
 
   26 import java.io.IOException;
 
   27 import java.util.ArrayList;
 
   28 import java.util.Collection;
 
   29 import java.util.List;
 
   30 import java.util.logging.Level;
 
   31 import org.openide.util.NbBundle;
 
   46 import org.apache.commons.lang3.StringUtils;
 
  102         if (null == caseDb) {
 
  116         String types = StringUtils.join(mimeTypes, 
"', '");
 
  117         return "mime_type IN ('" + types + 
"')";
 
  133         if (null == caseDb) {
 
  136         List<AbstractFile> result = 
new ArrayList<>();
 
  138         for (
Content dataSource : dataSources) {
 
  139             result.addAll(
findFiles(dataSource, fileName));
 
  159         if (null == caseDb) {
 
  162         List<AbstractFile> result = 
new ArrayList<>();
 
  164         for (
Content dataSource : dataSources) {
 
  165             result.addAll(
findFiles(dataSource, fileName, parentName));
 
  185         if (null == caseDb) {
 
  188         List<AbstractFile> result = 
new ArrayList<>();
 
  190         for (
Content dataSource : dataSources) {
 
  191             result.addAll(
findFiles(dataSource, fileName, parent));
 
  211         if (null == caseDb) {
 
  214         return caseDb.
findFiles(dataSource, fileName);
 
  234         if (null == caseDb) {
 
  237         return caseDb.
findFiles(dataSource, fileName, parentName);
 
  257         if (null == caseDb) {
 
  260         return findFiles(dataSource, fileName, parent.getName());
 
  280         if (null == caseDb) {
 
  283         return caseDb.
openFiles(dataSource, filePath);
 
  318             long ctime, 
long crtime, 
long atime, 
long mtime,
 
  321             String rederiveDetails, String toolName, String toolVersion, String otherDetails,
 
  323         if (null == caseDb) {
 
  324             throw new TskCoreException(
"File manager has been closed");
 
  327                 ctime, crtime, atime, mtime,
 
  328                 isFile, parentFile, rederiveDetails, toolName, toolVersion, otherDetails, encodingType);
 
  343         if (null == caseDb) {
 
  392         if (null == caseDb) {
 
  393             throw new TskCoreException(
"File manager has been closed");
 
  398             String rootDirectoryName = rootVirtualDirectoryName;
 
  399             if (rootDirectoryName.isEmpty()) {
 
  410             List<AbstractFile> filesAdded = 
new ArrayList<>();
 
  411             for (java.io.File localFile : localFiles) {
 
  413                 if (null != fileAdded) {
 
  414                     filesAdded.add(fileAdded);
 
  416                     throw new TskCoreException(NbBundle.getMessage(
this.getClass(), 
"FileManager.addLocalFilesDirs.exception.cantAdd.msg", localFile.getAbsolutePath()));
 
  430         } 
catch (TskCoreException ex) {
 
  434                 } 
catch (TskCoreException ex2) {
 
  435                     LOGGER.log(Level.SEVERE, String.format(
"Failed to rollback transaction after exception: %s", ex.getMessage()), ex2);
 
  456         int localFileDataSourcesCounter = 0;
 
  461                     ++localFileDataSourcesCounter;
 
  465         } 
catch (TskCoreException ex) {
 
  466             throw new TskCoreException(
"Error querying for existing local file data sources with defualt names", ex);
 
  483         List<java.io.File> localFiles = 
new ArrayList<>();
 
  484         for (String path : localFilePaths) {
 
  485             java.io.File localFile = 
new java.io.File(path);
 
  486             if (!localFile.exists() || !localFile.canRead()) {
 
  487                 throw new TskDataException(String.format(
"File at %s does not exist or cannot be read", localFile.getAbsolutePath()));
 
  489             localFiles.add(localFile);
 
  515         if (localFile.isDirectory()) {
 
  520             progressUpdater.fileAdded(virtualDirectory);
 
  525             final java.io.File[] childFiles = localFile.
listFiles();
 
  526             if (childFiles != null && childFiles.length > 0) {
 
  527                 for (java.io.File childFile : childFiles) {
 
  528                     addLocalFile(trans, virtualDirectory, childFile, progressUpdater);
 
  532             return virtualDirectory;
 
  534             return caseDb.
addLocalFile(localFile.getName(), localFile.getAbsolutePath(), localFile.length(),
 
  536                     localFile.isFile(), encodingType, parentDirectory, trans);
 
  546     public synchronized void close() throws IOException {
 
  570         if (null == caseDb) {
 
  571             throw new TskCoreException(
"File manager has been closed");
 
  576             throw new TskCoreException(ex.getLocalizedMessage(), ex);
 
  599     public synchronized LayoutFile addCarvedFile(String fileName, 
long fileSize, 
long parentObjId, List<TskFileRange> layout) 
throws TskCoreException {
 
  600         if (null == caseDb) {
 
  601             throw new TskCoreException(
"File manager has been closed");
 
  607         return layoutFiles.get(0);
 
  626     public synchronized List<LayoutFile> 
addCarvedFiles(List<org.sleuthkit.datamodel.CarvedFileContainer> filesToAdd) 
throws TskCoreException {
 
  627         if (null == caseDb) {
 
  628             throw new TskCoreException(
"File manager has been closed");
 
  667             long ctime, 
long crtime, 
long atime, 
long mtime,
 
  670             String rederiveDetails, String toolName, String toolVersion, String otherDetails) 
throws TskCoreException {
 
  671         return addDerivedFile(fileName, localPath, size, ctime, crtime, atime, mtime, isFile, parentFile,
 
synchronized List< AbstractFile > findFiles(String fileName, String parentName)
 
synchronized void close()
 
static String createFileTypeInCondition(Collection< String > mimeTypes)
 
CaseDbTransaction beginTransaction()
 
VirtualDirectory getRootDirectory()
 
synchronized VirtualDirectory addLocalFilesDirs(List< String > localFilePaths, FileAddProgressUpdater progressUpdater)
 
static final Logger LOGGER
 
synchronized LayoutFile addCarvedFile(String fileName, long fileSize, long parentObjId, List< TskFileRange > layout)
 
List< AbstractFile > openFiles(Content dataSource, String filePath)
 
Content getContentById(long id)
 
void fileAdded(AbstractFile newFile)
 
List< VirtualDirectory > getVirtualDirectoryRoots()
 
AbstractFile addLocalFile(CaseDbTransaction trans, VirtualDirectory parentDirectory, java.io.File localFile, TskData.EncodingType encodingType, FileAddProgressUpdater progressUpdater)
 
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, TskData.EncodingType encodingType)
 
synchronized List< AbstractFile > findFiles(Content dataSource, String fileName)
 
synchronized 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)
 
synchronized List< AbstractFile > findFilesByMimeType(Collection< String > mimeTypes)
 
synchronized List< LayoutFile > addCarvedFiles(List< org.sleuthkit.datamodel.CarvedFileContainer > filesToAdd)
 
final List< LayoutFile > addCarvedFiles(CarvingResult carvingResult)
 
synchronized List< AbstractFile > openFiles(Content dataSource, String filePath)
 
List< AbstractFile > listFiles()
 
List< AbstractFile > findFiles(Content dataSource, String fileName)
 
synchronized LocalFilesDataSource addLocalFilesDataSource(String deviceId, String rootVirtualDirectoryName, String timeZone, List< String > localFilePaths, FileAddProgressUpdater progressUpdater)
 
static synchronized String generateFilesDataSourceName(SleuthkitCase caseDb)
 
List< Content > getRootObjects()
 
synchronized List< AbstractFile > findFilesByMimeType(Content dataSource, Collection< String > mimeTypes)
 
LocalFile addLocalFile(String fileName, String localPath, long size, long ctime, long crtime, long atime, long mtime, boolean isFile, TskData.EncodingType encodingType, AbstractFile parent)
 
void fireModuleContentEvent(ModuleContentEvent moduleContentEvent)
 
synchronized 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, TskData.EncodingType encodingType)
 
synchronized List< AbstractFile > findFiles(String fileName)
 
List< AbstractFile > findAllFilesWhere(String sqlWhereClause)
 
synchronized static Logger getLogger(String name)
 
synchronized List< LayoutFile > addCarvedFiles(CarvingResult carvingResult)
 
FileManager(SleuthkitCase caseDb)
 
VirtualDirectory addVirtualDirectory(long parentId, String directoryName)
 
static final String LOGICAL_FILE_SET_PREFIX
 
synchronized List< AbstractFile > findFiles(Content dataSource, String fileName, AbstractFile parent)
 
synchronized List< AbstractFile > findFiles(String fileName, AbstractFile parent)
 
List< java.io.File > getFilesAndDirectories(List< String > localFilePaths)
 
LocalFilesDataSource addLocalFilesDataSource(String deviceId, String rootDirectoryName, String timeZone, CaseDbTransaction transaction)
 
AbstractFile addLocalFile(CaseDbTransaction trans, VirtualDirectory parentDirectory, java.io.File localFile, FileAddProgressUpdater progressUpdater)
 
synchronized List< AbstractFile > findFiles(Content dataSource, String fileName, String parentName)
 
static synchronized IngestServices getInstance()