From c71d15d51f27cb0315f4ac09aa8b591c1a29d668 Mon Sep 17 00:00:00 2001 From: Brian Sweeney Date: Fri, 23 Mar 2018 06:11:45 -0600 Subject: [PATCH] algorithm debugged and simplified --- .../commonfilesearch/CommonFilesChildren.java | 16 +++++------- .../commonfilesearch/CommonFilesMetaData.java | 26 +++++++------------ 2 files changed, 16 insertions(+), 26 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/commonfilesearch/CommonFilesChildren.java b/Core/src/org/sleuthkit/autopsy/commonfilesearch/CommonFilesChildren.java index 4cdfbf4273..3773f21c95 100644 --- a/Core/src/org/sleuthkit/autopsy/commonfilesearch/CommonFilesChildren.java +++ b/Core/src/org/sleuthkit/autopsy/commonfilesearch/CommonFilesChildren.java @@ -32,7 +32,7 @@ import org.sleuthkit.autopsy.datamodel.CommonFileParentNode; /** * Makes nodes for common files search results. */ -final class CommonFilesChildren extends ChildFactory { +final class CommonFilesChildren extends ChildFactory { private CommonFilesMetaData metaData; @@ -46,22 +46,20 @@ final class CommonFilesChildren extends ChildFactory { } @Override - protected Node createNodeForKey(AbstractFile t) { + protected Node createNodeForKey(String md5) { - final String md5Hash = t.getMd5Hash(); - - List children = this.metaData.getChildrenForFile(t); + List children = this.metaData.getChildrenForFile(md5); int instanceCount = children.size(); String dataSources = selectDataSources(children); - return new CommonFileParentNode(Children.create(new CommonFilesDescendants(children, this.metaData.getDataSourceIdToNameMap()), true), md5Hash, instanceCount, dataSources); + return new CommonFileParentNode(Children.create(new CommonFilesDescendants(children, this.metaData.getDataSourceIdToNameMap()), true), md5, instanceCount, dataSources); } @Override - protected boolean createKeys(List toPopulate) { - final Map> filesMap = this.metaData.getFilesMap(); - Collection files = filesMap.keySet(); + protected boolean createKeys(List toPopulate) { + final Map> filesMap = this.metaData.getFilesMap(); + Collection files = filesMap.keySet(); toPopulate.addAll(files); return true; } diff --git a/Core/src/org/sleuthkit/autopsy/commonfilesearch/CommonFilesMetaData.java b/Core/src/org/sleuthkit/autopsy/commonfilesearch/CommonFilesMetaData.java index ff6c4cd418..c0b4ba660c 100644 --- a/Core/src/org/sleuthkit/autopsy/commonfilesearch/CommonFilesMetaData.java +++ b/Core/src/org/sleuthkit/autopsy/commonfilesearch/CommonFilesMetaData.java @@ -38,7 +38,7 @@ import org.sleuthkit.datamodel.TskCoreException; */ abstract class CommonFilesMetaData { - private final Map> parentNodes; + private final Map> parentNodes; private final Map dataSourceIdToNameMap; private final SleuthkitCase sleuthkitCase; @@ -67,7 +67,7 @@ abstract class CommonFilesMetaData { } } - Map> getFilesMap() { + Map> getFilesMap() { return Collections.unmodifiableMap(this.parentNodes); } @@ -86,24 +86,16 @@ abstract class CommonFilesMetaData { List files = this.sleuthkitCase.findAllFilesWhere(getSqlWhereClause()); - AbstractFile previousFile = null; - List children = new ArrayList<>(); - - String previousMd5 = ""; - for (AbstractFile file : files) { String currentMd5 = file.getMd5Hash(); - if (currentMd5.equals(previousMd5)) { - children.add(file); + + if(parentNodes.containsKey(currentMd5)){ + parentNodes.get(currentMd5).add(file); } else { - if (previousFile != null) { - this.parentNodes.put(previousFile, children); - } - previousMd5 = currentMd5; - previousFile = file; - children.clear(); + List children = new ArrayList<>(); children.add(file); + parentNodes.put(currentMd5, children); } } @@ -125,7 +117,7 @@ abstract class CommonFilesMetaData { * @param t * @return */ - List getChildrenForFile(AbstractFile t) { - return this.parentNodes.get(t); + List getChildrenForFile(String md5) { + return this.parentNodes.get(md5); } }