mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-06 21:00:22 +00:00
4791 fix sorting of results by count for inter-case search
This commit is contained in:
parent
b6c8936d55
commit
88404aa9ee
@ -130,9 +130,9 @@ public abstract class AbstractCommonAttributeSearcher {
|
||||
}
|
||||
}
|
||||
|
||||
static Map<Integer, CommonAttributeValueList> collateMatchesByNumberOfInstances(Map<String, CommonAttributeValue> commonFiles) {
|
||||
static TreeMap<Integer, CommonAttributeValueList> collateMatchesByNumberOfInstances(Map<String, CommonAttributeValue> commonFiles) {
|
||||
//collate matches by number of matching instances - doing this in sql doesnt seem efficient
|
||||
Map<Integer, CommonAttributeValueList> instanceCollatedCommonFiles = new TreeMap<>();
|
||||
TreeMap<Integer, CommonAttributeValueList> instanceCollatedCommonFiles = new TreeMap<>();
|
||||
|
||||
for (CommonAttributeValue md5Metadata : commonFiles.values()) {
|
||||
Integer size = md5Metadata.getDataSources().size();
|
||||
|
@ -25,6 +25,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.TreeMap;
|
||||
import java.util.logging.Level;
|
||||
import org.sleuthkit.autopsy.centralrepository.datamodel.CorrelationAttributeInstance;
|
||||
import org.sleuthkit.autopsy.centralrepository.datamodel.CorrelationAttributeNormalizationException;
|
||||
@ -41,7 +42,7 @@ final public class CommonAttributeCountSearchResults {
|
||||
private static final Logger LOGGER = Logger.getLogger(CommonAttributeCountSearchResults.class.getName());
|
||||
|
||||
// maps instance count to list of attribute values.
|
||||
private final Map<Integer, CommonAttributeValueList> instanceCountToAttributeValues;
|
||||
private final TreeMap<Integer, CommonAttributeValueList> instanceCountToAttributeValues;
|
||||
private final int percentageThreshold;
|
||||
private final int resultTypeId;
|
||||
|
||||
@ -58,7 +59,7 @@ final public class CommonAttributeCountSearchResults {
|
||||
*/
|
||||
CommonAttributeCountSearchResults(Map<Integer, CommonAttributeValueList> metadata, int percentageThreshold, CorrelationAttributeInstance.Type resultType) {
|
||||
//wrap in a new object in case any client code has used an unmodifiable collection
|
||||
this.instanceCountToAttributeValues = new HashMap<>(metadata);
|
||||
this.instanceCountToAttributeValues = new TreeMap<>(metadata);
|
||||
this.percentageThreshold = percentageThreshold;
|
||||
this.resultTypeId = resultType.getId();
|
||||
}
|
||||
@ -73,7 +74,7 @@ final public class CommonAttributeCountSearchResults {
|
||||
*/
|
||||
CommonAttributeCountSearchResults(Map<Integer, CommonAttributeValueList> metadata, int percentageThreshold) {
|
||||
//wrap in a new object in case any client code has used an unmodifiable collection
|
||||
this.instanceCountToAttributeValues = new HashMap<>(metadata);
|
||||
this.instanceCountToAttributeValues = new TreeMap<>(metadata);
|
||||
this.percentageThreshold = percentageThreshold;
|
||||
this.resultTypeId = CorrelationAttributeInstance.FILES_TYPE_ID;
|
||||
}
|
||||
|
@ -29,6 +29,7 @@ import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
import java.util.logging.Level;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.centralrepository.datamodel.CorrelationAttributeInstance;
|
||||
@ -173,7 +174,7 @@ final class InterCaseSearchResultsProcessor {
|
||||
} catch (EamDbException | TskCoreException ex) {
|
||||
LOGGER.log(Level.SEVERE, "Error accessing EamDb processing CaseInstancesTable.", ex);
|
||||
}
|
||||
return new HashMap<>();
|
||||
return new TreeMap<>();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -205,7 +206,7 @@ final class InterCaseSearchResultsProcessor {
|
||||
} catch (EamDbException | TskCoreException ex) {
|
||||
LOGGER.log(Level.SEVERE, "Error accessing EamDb processing CaseInstancesTable.", ex);
|
||||
}
|
||||
return new HashMap<>();
|
||||
return new TreeMap<>();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -248,7 +249,7 @@ final class InterCaseSearchResultsProcessor {
|
||||
*/
|
||||
private class InterCaseByCountCallback implements CaseDbAccessManager.CaseDbAccessQueryCallback, InstanceTableCallback {
|
||||
|
||||
private final Map<Integer, CommonAttributeValueList> instanceCollatedCommonFiles = new HashMap<>();
|
||||
private final TreeMap<Integer, CommonAttributeValueList> instanceCollatedCommonFiles = new TreeMap<>();
|
||||
private final int caseID;
|
||||
private final int targetCase;
|
||||
|
||||
@ -311,7 +312,7 @@ final class InterCaseSearchResultsProcessor {
|
||||
}
|
||||
|
||||
Map<Integer, CommonAttributeValueList> getInstanceCollatedCommonFiles() {
|
||||
return Collections.unmodifiableMap(instanceCollatedCommonFiles);
|
||||
return Collections.unmodifiableSortedMap(instanceCollatedCommonFiles);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -26,6 +26,7 @@ import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TreeMap;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
|
||||
import org.sleuthkit.autopsy.centralrepository.datamodel.EamDbException;
|
||||
@ -137,7 +138,7 @@ public abstract class IntraCaseCommonAttributeSearcher extends AbstractCommonAtt
|
||||
}
|
||||
}
|
||||
|
||||
Map<Integer, CommonAttributeValueList> instanceCollatedCommonFiles = collateMatchesByNumberOfInstances(commonFiles);
|
||||
TreeMap<Integer, CommonAttributeValueList> instanceCollatedCommonFiles = collateMatchesByNumberOfInstances(commonFiles);
|
||||
|
||||
return new CommonAttributeCountSearchResults(instanceCollatedCommonFiles, this.frequencyPercentageThreshold);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user