algorithm debugged and simplified

This commit is contained in:
Brian Sweeney 2018-03-23 06:11:45 -06:00
parent c92e644042
commit c71d15d51f
2 changed files with 16 additions and 26 deletions

View File

@ -32,7 +32,7 @@ import org.sleuthkit.autopsy.datamodel.CommonFileParentNode;
/**
* Makes nodes for common files search results.
*/
final class CommonFilesChildren extends ChildFactory<AbstractFile> {
final class CommonFilesChildren extends ChildFactory<String> {
private CommonFilesMetaData metaData;
@ -46,22 +46,20 @@ final class CommonFilesChildren extends ChildFactory<AbstractFile> {
}
@Override
protected Node createNodeForKey(AbstractFile t) {
protected Node createNodeForKey(String md5) {
final String md5Hash = t.getMd5Hash();
List<AbstractFile> children = this.metaData.getChildrenForFile(t);
List<AbstractFile> 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<AbstractFile> toPopulate) {
final Map<org.sleuthkit.datamodel.AbstractFile, List<org.sleuthkit.datamodel.AbstractFile>> filesMap = this.metaData.getFilesMap();
Collection<AbstractFile> files = filesMap.keySet();
protected boolean createKeys(List<String> toPopulate) {
final Map<String, List<org.sleuthkit.datamodel.AbstractFile>> filesMap = this.metaData.getFilesMap();
Collection<String> files = filesMap.keySet();
toPopulate.addAll(files);
return true;
}

View File

@ -38,7 +38,7 @@ import org.sleuthkit.datamodel.TskCoreException;
*/
abstract class CommonFilesMetaData {
private final Map<AbstractFile, List<AbstractFile>> parentNodes;
private final Map<String, List<AbstractFile>> parentNodes;
private final Map<Long, String> dataSourceIdToNameMap;
private final SleuthkitCase sleuthkitCase;
@ -67,7 +67,7 @@ abstract class CommonFilesMetaData {
}
}
Map<AbstractFile, List<AbstractFile>> getFilesMap() {
Map<String, List<AbstractFile>> getFilesMap() {
return Collections.unmodifiableMap(this.parentNodes);
}
@ -86,24 +86,16 @@ abstract class CommonFilesMetaData {
List<AbstractFile> files = this.sleuthkitCase.findAllFilesWhere(getSqlWhereClause());
AbstractFile previousFile = null;
List<AbstractFile> 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<AbstractFile> children = new ArrayList<>();
children.add(file);
parentNodes.put(currentMd5, children);
}
}
@ -125,7 +117,7 @@ abstract class CommonFilesMetaData {
* @param t
* @return
*/
List<AbstractFile> getChildrenForFile(AbstractFile t) {
return this.parentNodes.get(t);
List<AbstractFile> getChildrenForFile(String md5) {
return this.parentNodes.get(md5);
}
}