mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-19 11:07:43 +00:00
algorithm debugged and simplified
This commit is contained in:
parent
c92e644042
commit
c71d15d51f
@ -32,7 +32,7 @@ import org.sleuthkit.autopsy.datamodel.CommonFileParentNode;
|
|||||||
/**
|
/**
|
||||||
* Makes nodes for common files search results.
|
* Makes nodes for common files search results.
|
||||||
*/
|
*/
|
||||||
final class CommonFilesChildren extends ChildFactory<AbstractFile> {
|
final class CommonFilesChildren extends ChildFactory<String> {
|
||||||
|
|
||||||
private CommonFilesMetaData metaData;
|
private CommonFilesMetaData metaData;
|
||||||
|
|
||||||
@ -46,22 +46,20 @@ final class CommonFilesChildren extends ChildFactory<AbstractFile> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Node createNodeForKey(AbstractFile t) {
|
protected Node createNodeForKey(String md5) {
|
||||||
|
|
||||||
final String md5Hash = t.getMd5Hash();
|
List<AbstractFile> children = this.metaData.getChildrenForFile(md5);
|
||||||
|
|
||||||
List<AbstractFile> children = this.metaData.getChildrenForFile(t);
|
|
||||||
|
|
||||||
int instanceCount = children.size();
|
int instanceCount = children.size();
|
||||||
String dataSources = selectDataSources(children);
|
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
|
@Override
|
||||||
protected boolean createKeys(List<AbstractFile> toPopulate) {
|
protected boolean createKeys(List<String> toPopulate) {
|
||||||
final Map<org.sleuthkit.datamodel.AbstractFile, List<org.sleuthkit.datamodel.AbstractFile>> filesMap = this.metaData.getFilesMap();
|
final Map<String, List<org.sleuthkit.datamodel.AbstractFile>> filesMap = this.metaData.getFilesMap();
|
||||||
Collection<AbstractFile> files = filesMap.keySet();
|
Collection<String> files = filesMap.keySet();
|
||||||
toPopulate.addAll(files);
|
toPopulate.addAll(files);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ import org.sleuthkit.datamodel.TskCoreException;
|
|||||||
*/
|
*/
|
||||||
abstract class CommonFilesMetaData {
|
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 Map<Long, String> dataSourceIdToNameMap;
|
||||||
|
|
||||||
private final SleuthkitCase sleuthkitCase;
|
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);
|
return Collections.unmodifiableMap(this.parentNodes);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,24 +86,16 @@ abstract class CommonFilesMetaData {
|
|||||||
|
|
||||||
List<AbstractFile> files = this.sleuthkitCase.findAllFilesWhere(getSqlWhereClause());
|
List<AbstractFile> files = this.sleuthkitCase.findAllFilesWhere(getSqlWhereClause());
|
||||||
|
|
||||||
AbstractFile previousFile = null;
|
|
||||||
List<AbstractFile> children = new ArrayList<>();
|
|
||||||
|
|
||||||
String previousMd5 = "";
|
|
||||||
|
|
||||||
for (AbstractFile file : files) {
|
for (AbstractFile file : files) {
|
||||||
|
|
||||||
String currentMd5 = file.getMd5Hash();
|
String currentMd5 = file.getMd5Hash();
|
||||||
if (currentMd5.equals(previousMd5)) {
|
|
||||||
children.add(file);
|
if(parentNodes.containsKey(currentMd5)){
|
||||||
|
parentNodes.get(currentMd5).add(file);
|
||||||
} else {
|
} else {
|
||||||
if (previousFile != null) {
|
List<AbstractFile> children = new ArrayList<>();
|
||||||
this.parentNodes.put(previousFile, children);
|
|
||||||
}
|
|
||||||
previousMd5 = currentMd5;
|
|
||||||
previousFile = file;
|
|
||||||
children.clear();
|
|
||||||
children.add(file);
|
children.add(file);
|
||||||
|
parentNodes.put(currentMd5, children);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,7 +117,7 @@ abstract class CommonFilesMetaData {
|
|||||||
* @param t
|
* @param t
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<AbstractFile> getChildrenForFile(AbstractFile t) {
|
List<AbstractFile> getChildrenForFile(String md5) {
|
||||||
return this.parentNodes.get(t);
|
return this.parentNodes.get(md5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user