diff --git a/Core/src/org/sleuthkit/autopsy/commonfilesearch/CommonFilesMetadataBuilder.java b/Core/src/org/sleuthkit/autopsy/commonfilesearch/CommonFilesMetadataBuilder.java index ea9e022ee4..6bee5f2242 100644 --- a/Core/src/org/sleuthkit/autopsy/commonfilesearch/CommonFilesMetadataBuilder.java +++ b/Core/src/org/sleuthkit/autopsy/commonfilesearch/CommonFilesMetadataBuilder.java @@ -225,6 +225,7 @@ abstract class CommonFilesMetadataBuilder { Map commonFiles = metaData.getMetadata(); List values = Arrays.asList((String[]) commonFiles.keySet().toArray()); + Map interCaseCommonFiles = metaData.getMetadata(); try { EamDb dbManager = EamDb.getInstance(); @@ -233,30 +234,38 @@ abstract class CommonFilesMetadataBuilder { for (CorrelationAttributeCommonInstance instance : artifactInstances) { - Long objectId = 1L; //TODO, need to retrieve ALL (even count < 2) AbstractFiles from this case to us for objectId for CR matches; + //Long objectId = 1L; //TODO, need to retrieve ALL (even count < 2) AbstractFiles from this case to us for objectId for CR matches; String md5 = instance.getValue(); String dataSource = instance.getCorrelationDataSource().getName(); if (md5 == null || HashUtility.isNoDataMd5(md5)) { continue; } - // TODO Build a 3rd list which contains instances which are in commonFiles map, use current case objectId + //Builds a 3rd list which contains instances which are in commonFiles map, uses current case objectId if (commonFiles.containsKey(md5)) { - final Md5Metadata md5Metadata = commonFiles.get(md5); - //TODO should FIleInstanceMetadata carry Knownstatus from CR instances? - md5Metadata.addFileInstanceMetadata(new FileInstanceMetadata(objectId, dataSource)); + // TODO sloppy, but we don't *have* all the information for the rows in the CR, so what do we do? + Long objectId = commonFiles.get(md5).getMetadata().iterator().next().getObjectId(); + if(interCaseCommonFiles.containsKey(md5)) { + //Add to intercase metaData + final Md5Metadata md5Metadata = interCaseCommonFiles.get(md5); + md5Metadata.addFileInstanceMetadata(new FileInstanceMetadata(objectId, dataSource)); + + } else { + // Create new intercase metadata + final Md5Metadata md5Metadata = commonFiles.get(md5); + md5Metadata.addFileInstanceMetadata(new FileInstanceMetadata(objectId, dataSource)); + interCaseCommonFiles.put(md5, md5Metadata); + } } else { - final List fileInstances = new ArrayList<>(); - fileInstances.add(new FileInstanceMetadata(objectId, dataSource)); - Md5Metadata md5Metadata = new Md5Metadata(md5, fileInstances); - commonFiles.put(md5, md5Metadata); + // 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 } - return new CommonFilesMetadata(commonFiles); + // Builds intercase-only matches metadata + return new CommonFilesMetadata(interCaseCommonFiles); } diff --git a/Core/src/org/sleuthkit/autopsy/commonfilesearch/CommonFilesPanel.java b/Core/src/org/sleuthkit/autopsy/commonfilesearch/CommonFilesPanel.java index 014e962931..a33c215040 100644 --- a/Core/src/org/sleuthkit/autopsy/commonfilesearch/CommonFilesPanel.java +++ b/Core/src/org/sleuthkit/autopsy/commonfilesearch/CommonFilesPanel.java @@ -267,10 +267,10 @@ public final class CommonFilesPanel extends javax.swing.JPanel { builder = new SingleDataSource(dataSourceId, CommonFilesPanel.this.dataSourceMap, filterByMedia, filterByDocuments); setTitleForSingleSource(dataSourceId); - } else if(false) { + }// else if(false) { // TODO, is CR cases, add option chosen CorrelationCase ID lookup - builder = new AllDataSourcesEamDbCommonFilesAlgorithm(CommonFilesPanel.this.dataSourceMap, filterByMedia, filterByDocuments); - } + // builder = new AllDataSourcesEamDbCommonFilesAlgorithm(CommonFilesPanel.this.dataSourceMap, filterByMedia, filterByDocuments); + //} this.tabTitle = builder.buildTabTitle();