Polish and minor refactors

This commit is contained in:
Andrew Ziehl 2018-05-21 12:43:40 -07:00
parent 1a0b0a4a86
commit ada7ec2bc0
2 changed files with 39 additions and 38 deletions

View File

@ -677,7 +677,7 @@ public abstract class AbstractSqlEamDb implements EamDb {
ResultSet resultSet = null; ResultSet resultSet = null;
String tableName = EamDbUtil.correlationTypeToInstanceTableName(aType); String tableName = EamDbUtil.correlationTypeToInstanceTableName(aType);
StringBuilder sql = new StringBuilder(9); StringBuilder sql = new StringBuilder(10);
sql.append("SELECT cases.case_name, cases.case_uid, data_sources.name, device_id, file_path, known_status, comment, data_sources.case_id, value FROM "); sql.append("SELECT cases.case_name, cases.case_uid, data_sources.name, device_id, file_path, known_status, comment, data_sources.case_id, value FROM ");
sql.append(tableName); sql.append(tableName);
sql.append(" LEFT JOIN cases ON "); sql.append(" LEFT JOIN cases ON ");

View File

@ -20,7 +20,7 @@
package org.sleuthkit.autopsy.commonfilesearch; package org.sleuthkit.autopsy.commonfilesearch;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Arrays; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -45,7 +45,7 @@ public class AllDataSourcesEamDbCommonFilesAlgorithm extends CommonFilesMetadat
private static final String WHERE_CLAUSE = "%s md5 in (select md5 from tsk_files where (known != 1 OR known IS NULL)%s GROUP BY md5) order by md5"; //NON-NLS private static final String WHERE_CLAUSE = "%s md5 in (select md5 from tsk_files where (known != 1 OR known IS NULL)%s GROUP BY md5) order by md5"; //NON-NLS
private EamDb dbManager; private final EamDb dbManager;
/** /**
* Implements the algorithm for getting common files across all data * Implements the algorithm for getting common files across all data
@ -61,11 +61,11 @@ public class AllDataSourcesEamDbCommonFilesAlgorithm extends CommonFilesMetadat
dbManager = EamDb.getInstance(); dbManager = EamDb.getInstance();
} }
public CommonFilesMetadata findEamDbCommonFiles() throws TskCoreException, NoCurrentCaseException, SQLException, EamDbException { CommonFilesMetadata findEamDbCommonFiles() throws TskCoreException, NoCurrentCaseException, SQLException, EamDbException {
return this.findEamDbCommonFiles(null); return this.findEamDbCommonFiles(null);
} }
public CommonFilesMetadata findEamDbCommonFiles(int correlationCaseId) throws TskCoreException, NoCurrentCaseException, SQLException, EamDbException, Exception { CommonFilesMetadata findEamDbCommonFiles(int correlationCaseId) throws TskCoreException, NoCurrentCaseException, SQLException, EamDbException, Exception {
CorrelationCase cCase = this.getCorrelationCaseFromId(correlationCaseId); CorrelationCase cCase = this.getCorrelationCaseFromId(correlationCaseId);
@ -73,15 +73,14 @@ public class AllDataSourcesEamDbCommonFilesAlgorithm extends CommonFilesMetadat
} }
/** /**
* TODO Refactor, abstract shared code above, call this method via new AllDataSourcesEamDbCommonFilesAlgorithm Class
* @param correlationCase Optionally null, otherwise a case, or could be a CR case ID * @param correlationCase Optionally null, otherwise a case, or could be a CR case ID
* @return * @return CommonFilesMetaData md5s to build Common Files search results.
* @throws TskCoreException * @throws TskCoreException
* @throws NoCurrentCaseException * @throws NoCurrentCaseException
* @throws SQLException * @throws SQLException
* @throws EamDbException * @throws EamDbException
*/ */
public CommonFilesMetadata findEamDbCommonFiles(CorrelationCase correlationCase) throws TskCoreException, NoCurrentCaseException, SQLException, EamDbException { private CommonFilesMetadata findEamDbCommonFiles(CorrelationCase correlationCase) throws TskCoreException, NoCurrentCaseException, SQLException, EamDbException {
CommonFilesMetadata metaData = this.findCommonFiles(); CommonFilesMetadata metaData = this.findCommonFiles();
Map<String, Md5Metadata> commonFiles = metaData.getMetadata(); Map<String, Md5Metadata> commonFiles = metaData.getMetadata();
Collection<String> values = commonFiles.keySet(); Collection<String> values = commonFiles.keySet();
@ -91,8 +90,17 @@ public class AllDataSourcesEamDbCommonFilesAlgorithm extends CommonFilesMetadat
Collection<CorrelationAttributeCommonInstance> artifactInstances = dbManager.getArtifactInstancesByCaseValues(correlationCase, values).stream() Collection<CorrelationAttributeCommonInstance> artifactInstances = dbManager.getArtifactInstancesByCaseValues(correlationCase, values).stream()
.collect(Collectors.toList()); .collect(Collectors.toList());
gatherIntercaseResults(artifactInstances, commonFiles, interCaseCommonFiles);
} catch (EamDbException ex) {
LOGGER.log(Level.SEVERE, "Error getting artifact instances from database.", ex); // NON-NLS
}
// Builds intercase-only matches metadata
return new CommonFilesMetadata(interCaseCommonFiles);
}
private void gatherIntercaseResults(Collection<CorrelationAttributeCommonInstance> artifactInstances, Map<String, Md5Metadata> commonFiles, Map<String, Md5Metadata> interCaseCommonFiles) {
for (CorrelationAttributeCommonInstance instance : artifactInstances) { for (CorrelationAttributeCommonInstance instance : artifactInstances) {
String md5 = instance.getValue(); String md5 = instance.getValue();
@ -111,22 +119,15 @@ public class AllDataSourcesEamDbCommonFilesAlgorithm extends CommonFilesMetadat
md5Metadata.addFileInstanceMetadata(new FileInstanceMetadata(objectId, dataSource)); md5Metadata.addFileInstanceMetadata(new FileInstanceMetadata(objectId, dataSource));
} else { } else {
// Create new intercase metadata final List<FileInstanceMetadata> fileInstances = new ArrayList<>();
final Md5Metadata md5Metadata = commonFiles.get(md5); fileInstances.add(new FileInstanceMetadata(objectId, dataSource));
md5Metadata.addFileInstanceMetadata(new FileInstanceMetadata(objectId, dataSource)); Md5Metadata md5Metadata = new Md5Metadata(md5, fileInstances);
interCaseCommonFiles.put(md5, md5Metadata); interCaseCommonFiles.put(md5, md5Metadata);
} }
} else { } else {
// TODO This should never happen. All current case files with potential matches are in comonFiles Map. // TODO This should never happen. All current case files with potential matches are in comonFiles Map.
} }
} }
} catch (EamDbException ex) {
LOGGER.log(Level.SEVERE, "Error getting artifact instances from database.", ex); // NON-NLS
}
// Builds intercase-only matches metadata
return new CommonFilesMetadata(interCaseCommonFiles);
} }
@Override @Override