diff --git a/Core/src/org/sleuthkit/autopsy/mainui/datamodel/AnalysisResultDAO.java b/Core/src/org/sleuthkit/autopsy/mainui/datamodel/AnalysisResultDAO.java index cddad9b77927d76b624c4b568467005ba351ccf9..118c72cb50a5affc5de49cd19488c323fabb3334 100644 --- a/Core/src/org/sleuthkit/autopsy/mainui/datamodel/AnalysisResultDAO.java +++ b/Core/src/org/sleuthkit/autopsy/mainui/datamodel/AnalysisResultDAO.java @@ -22,6 +22,7 @@ import java.text.MessageFormat; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; import org.sleuthkit.autopsy.ingest.ModuleDataEvent; import org.openide.util.NbBundle; import org.sleuthkit.datamodel.AbstractFile; @@ -183,16 +184,40 @@ protected void onModuleData(ModuleDataEvent evt) { caches.forEach((cache) -> cache.invalidate(evt)); } - public EventUpdatableCache<AnalysisResultSearchParam, AnalysisResultTableSearchResultsDTO, ModuleDataEvent> getAnalysisResults() { - return this.analysisResultCache; + public AnalysisResultTableSearchResultsDTO getAnalysisResultsForTable(AnalysisResultSearchParam artifactKey) throws ExecutionException, IllegalArgumentException { + return analysisResultCache.getValue(artifactKey); } - public EventUpdatableCache<HashHitSearchParam, AnalysisResultTableSearchResultsDTO, ModuleDataEvent> getHashsetHits() { - return this.hashHitCache; + public AnalysisResultTableSearchResultsDTO getAnalysisResultsForTable(AnalysisResultSearchParam artifactKey, boolean hardRefresh) throws ExecutionException, IllegalArgumentException { + return analysisResultCache.getValue(artifactKey, hardRefresh); } - public EventUpdatableCache<KeywordHitSearchParam, AnalysisResultTableSearchResultsDTO, ModuleDataEvent> getKeywordHits() { - return this.keywordHitCache; + public boolean isAnalysisResultsInvalidating(AnalysisResultSearchParam artifactKey, ModuleDataEvent evt) { + return analysisResultCache.isInvalidatingEvent(artifactKey, evt); + } + + public AnalysisResultTableSearchResultsDTO getHashHitsForTable(HashHitSearchParam artifactKey) throws ExecutionException, IllegalArgumentException { + return hashHitCache.getValue(artifactKey); + } + + public AnalysisResultTableSearchResultsDTO getHashHitsForTable(HashHitSearchParam artifactKey, boolean hardRefresh) throws ExecutionException, IllegalArgumentException { + return hashHitCache.getValue(artifactKey, hardRefresh); + } + + public boolean isHashHitsInvalidating(HashHitSearchParam artifactKey, ModuleDataEvent evt) { + return hashHitCache.isInvalidatingEvent(artifactKey, evt); + } + + public AnalysisResultTableSearchResultsDTO getKeywordHitsForTable(KeywordHitSearchParam artifactKey) throws ExecutionException, IllegalArgumentException { + return keywordHitCache.getValue(artifactKey); + } + + public AnalysisResultTableSearchResultsDTO getKeywordHitsForTable(KeywordHitSearchParam artifactKey, boolean hardRefresh) throws ExecutionException, IllegalArgumentException { + return keywordHitCache.getValue(artifactKey, hardRefresh); + } + + public boolean isKeywordHitsInvalidating(KeywordHitSearchParam artifactKey, ModuleDataEvent evt) { + return keywordHitCache.isInvalidatingEvent(artifactKey, evt); } private class AnalysisResultCache extends EventUpdatableCacheImpl<AnalysisResultSearchParam, AnalysisResultTableSearchResultsDTO, ModuleDataEvent> { diff --git a/Core/src/org/sleuthkit/autopsy/mainui/datamodel/DataArtifactDAO.java b/Core/src/org/sleuthkit/autopsy/mainui/datamodel/DataArtifactDAO.java index aa3d89d713421d8de67f0ef97bdb06aebd517205..f0bc5dd4682e6b3b515253869fe00df569fd12ee 100644 --- a/Core/src/org/sleuthkit/autopsy/mainui/datamodel/DataArtifactDAO.java +++ b/Core/src/org/sleuthkit/autopsy/mainui/datamodel/DataArtifactDAO.java @@ -32,7 +32,7 @@ /** * DAO for providing data about data artifacts to populate the results viewer. */ -public class DataArtifactDAO extends BlackboardArtifactDAO implements EventUpdatableCache<DataArtifactSearchParam, DataArtifactTableSearchResultsDTO, ModuleDataEvent> { +public class DataArtifactDAO extends BlackboardArtifactDAO { private static DataArtifactDAO instance = null; @@ -64,21 +64,20 @@ protected void onModuleData(ModuleDataEvent evt) { this.dataArtifactCache.invalidate(evt); } - @Override - public DataArtifactTableSearchResultsDTO getValue(DataArtifactSearchParam key) throws IllegalArgumentException, ExecutionException { - return dataArtifactCache.getValue(key); + + public boolean isDataArtifactInvalidating(DataArtifactSearchParam key, ModuleDataEvent eventData) { + return dataArtifactCache.isInvalidatingEvent(key, eventData); } - @Override - public DataArtifactTableSearchResultsDTO getValue(DataArtifactSearchParam key, boolean hardRefresh) throws IllegalArgumentException, ExecutionException { - return dataArtifactCache.getValue(key, hardRefresh); + public DataArtifactTableSearchResultsDTO getDataArtifactsForTable(DataArtifactSearchParam key) throws ExecutionException, IllegalArgumentException { + return dataArtifactCache.getValue(key); } - @Override - public boolean isInvalidatingEvent(DataArtifactSearchParam key, ModuleDataEvent eventData) { - return dataArtifactCache.isInvalidatingEvent(key, eventData); + public DataArtifactTableSearchResultsDTO getDataArtifactsForTable(DataArtifactSearchParam key, boolean hardRefresh) throws ExecutionException, IllegalArgumentException { + return dataArtifactCache.getValue(key, hardRefresh); } + private class DataArtifactCache extends EventUpdatableCacheImpl<DataArtifactSearchParam, DataArtifactTableSearchResultsDTO, ModuleDataEvent> { @Override diff --git a/Core/src/org/sleuthkit/autopsy/mainui/datamodel/EventUpdatableCacheImpl.java b/Core/src/org/sleuthkit/autopsy/mainui/datamodel/EventUpdatableCacheImpl.java index 339bbb98f5b3e0f1c91db8ae1dabb77f59afb9f8..df87f371d8a27846d0a5bb75cbbc2a8073a895c2 100644 --- a/Core/src/org/sleuthkit/autopsy/mainui/datamodel/EventUpdatableCacheImpl.java +++ b/Core/src/org/sleuthkit/autopsy/mainui/datamodel/EventUpdatableCacheImpl.java @@ -24,6 +24,7 @@ import java.util.HashSet; import java.util.Set; import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -45,11 +46,26 @@ abstract class EventUpdatableCacheImpl<K, V, E> implements EventUpdatableCache<K private static final Logger logger = Logger.getLogger(EventUpdatableCacheImpl.class.getName()); - private final Cache<K, V> cache = CacheBuilder.newBuilder().maximumSize(1000).build(); + private static final int DEFAULT_CACHE_SIZE = 15; // rule of thumb: 5 entries times number of cached SearchParams sub-types + private static final long DEFAULT_CACHE_DURATION = 2; + private static final TimeUnit CACHE_DURATION_UNITS = TimeUnit.MINUTES; + + private final Cache<K, V> cache; // taken from https://stackoverflow.com/questions/66671636/why-is-sinks-many-multicast-onbackpressurebuffer-completing-after-one-of-t private final Sinks.Many<Set<K>> invalidatedKeyMulticast = Sinks.many().multicast().onBackpressureBuffer(Queues.SMALL_BUFFER_SIZE, false); + public EventUpdatableCacheImpl() { + this(CacheBuilder.newBuilder() + .maximumSize(DEFAULT_CACHE_SIZE) + .expireAfterAccess(DEFAULT_CACHE_DURATION, CACHE_DURATION_UNITS) + .build()); + } + + protected EventUpdatableCacheImpl(Cache<K, V> cache) { + this.cache = cache; + } + @Override public V getValue(K key) throws IllegalArgumentException, ExecutionException { return cache.get(key, () -> fetch(key)); diff --git a/Core/src/org/sleuthkit/autopsy/mainui/datamodel/ViewsDAO.java b/Core/src/org/sleuthkit/autopsy/mainui/datamodel/ViewsDAO.java index 32f6b75fc13425c2c4824828a593f111ccdbd73d..c46efe4e2f6828d50954a22cf049aca35c39887d 100644 --- a/Core/src/org/sleuthkit/autopsy/mainui/datamodel/ViewsDAO.java +++ b/Core/src/org/sleuthkit/autopsy/mainui/datamodel/ViewsDAO.java @@ -23,6 +23,7 @@ import java.util.Arrays; import java.util.Comparator; import java.util.List; +import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; import java.util.stream.Stream; import org.apache.commons.lang3.StringUtils; @@ -153,18 +154,42 @@ private static ExtensionMediaType getExtensionMediaType(String ext) { private final FilesBySizeCache sizeCache = new FilesBySizeCache(); private final List<EventUpdatableCacheImpl<?, ?, Content>> caches = ImmutableList.of(extensionCache, mimeCache, sizeCache); - public EventUpdatableCache<FileTypeExtensionsSearchParams, SearchResultsDTO, Content> getFileByExtensions() { - return this.extensionCache; + public SearchResultsDTO getFilesByExtension(FileTypeExtensionsSearchParams key) throws ExecutionException, IllegalArgumentException { + return this.extensionCache.getValue(key); } - public EventUpdatableCache<FileTypeMimeSearchParams, SearchResultsDTO, Content> getFileByMimeTypes() { - return mimeCache; + public SearchResultsDTO getFilesByExtension(FileTypeExtensionsSearchParams key, boolean hardRefresh) throws ExecutionException, IllegalArgumentException { + return this.extensionCache.getValue(key, hardRefresh); + } + + public boolean isFilesByExtInvalidating(FileTypeExtensionsSearchParams key, Content changedContent) { + return this.extensionCache.isInvalidatingEvent(key, changedContent); + } + + public SearchResultsDTO getFilesByMime(FileTypeMimeSearchParams key) throws ExecutionException, IllegalArgumentException { + return this.mimeCache.getValue(key); } - public EventUpdatableCache<FileTypeSizeSearchParams, SearchResultsDTO, Content> getFilesBySize() { - return sizeCache; + public SearchResultsDTO getFilesByMime(FileTypeMimeSearchParams key, boolean hardRefresh) throws ExecutionException, IllegalArgumentException { + return this.mimeCache.getValue(key, hardRefresh); } + public boolean isFilesByMimeInvalidating(FileTypeMimeSearchParams key, Content changedContent) { + return this.mimeCache.isInvalidatingEvent(key, changedContent); + } + + public SearchResultsDTO getFilesBySize(FileTypeSizeSearchParams key) throws ExecutionException, IllegalArgumentException { + return this.sizeCache.getValue(key); + } + + public SearchResultsDTO getFilesBySize(FileTypeSizeSearchParams key, boolean hardRefresh) throws ExecutionException, IllegalArgumentException { + return this.sizeCache.getValue(key, hardRefresh); + } + + public boolean isFilesBySizeInvalidating(FileTypeSizeSearchParams key, Content changedContent) { + return this.sizeCache.isInvalidatingEvent(key, changedContent); + } + private SleuthkitCase getCase() throws NoCurrentCaseException { return Case.getCurrentCaseThrows().getSleuthkitCase(); } diff --git a/Core/src/org/sleuthkit/autopsy/mainui/nodes/SearchResultSupport.java b/Core/src/org/sleuthkit/autopsy/mainui/nodes/SearchResultSupport.java index 49e337722ecb06ee14261c4ce97d70c94079743a..d1eb057499b6bb4c64215c98baaeb44af0c68742 100644 --- a/Core/src/org/sleuthkit/autopsy/mainui/nodes/SearchResultSupport.java +++ b/Core/src/org/sleuthkit/autopsy/mainui/nodes/SearchResultSupport.java @@ -18,6 +18,7 @@ */ package org.sleuthkit.autopsy.mainui.nodes; +import java.beans.PropertyChangeEvent; import java.text.MessageFormat; import java.util.concurrent.ExecutionException; import org.sleuthkit.autopsy.mainui.datamodel.DataArtifactSearchParam; @@ -236,7 +237,7 @@ public synchronized SearchResultsDTO setFileExtensions(final FileTypeExtensionsS fileExtParameters.getDataSourceId(), pageIdx * pageSize, (long) pageSize); - return dao.getViewsDAO().getFileByExtensions().getValue(searchParams); + return dao.getViewsDAO().getFilesByExtension(searchParams); }; return fetchResults(); @@ -262,7 +263,7 @@ public synchronized SearchResultsDTO setDataArtifact(final DataArtifactSearchPar dataArtifactParameters.getDataSourceId(), pageIdx * pageSize, (long) pageSize); - return dao.getDataArtifactsDAO().getValue(searchParams); + return dao.getDataArtifactsDAO().getDataArtifactsForTable(searchParams); }; return fetchResults(); @@ -289,7 +290,7 @@ public synchronized SearchResultsDTO setFileMimes(FileTypeMimeSearchParams fileM fileMimeKey.getDataSourceId(), pageIdx * pageSize, (long) pageSize); - return dao.getViewsDAO().getFileByMimeTypes().getValue(searchParams); + return dao.getViewsDAO().getFilesByMime(searchParams); }; return fetchResults(); @@ -312,4 +313,6 @@ private interface PageFetcher { */ SearchResultsDTO fetch(int pageSize, int pageIdx) throws ExecutionException; } + + } diff --git a/Core/test/qa-functional/src/org/sleuthkit/autopsy/mainui/datamodel/TableSearchTest.java b/Core/test/qa-functional/src/org/sleuthkit/autopsy/mainui/datamodel/TableSearchTest.java index 08807ad7524afb80de912342d4f36ed6093f7a1e..ce96944514b77be6243adcf6aa63f26ee30907de 100644 --- a/Core/test/qa-functional/src/org/sleuthkit/autopsy/mainui/datamodel/TableSearchTest.java +++ b/Core/test/qa-functional/src/org/sleuthkit/autopsy/mainui/datamodel/TableSearchTest.java @@ -20,7 +20,6 @@ import com.google.common.collect.ImmutableSet; import java.util.ArrayList; -import java.util.Collections; import java.util.concurrent.ExecutionException; import java.util.List; import java.util.Set; @@ -320,28 +319,28 @@ public void dataArtifactSearchTest() { DataArtifactSearchParam param = new DataArtifactSearchParam(BlackboardArtifact.Type.TSK_CONTACT, null); DataArtifactDAO dataArtifactDAO = MainDAO.getInstance().getDataArtifactsDAO(); - DataArtifactTableSearchResultsDTO results = dataArtifactDAO.getValue(param); + DataArtifactTableSearchResultsDTO results = dataArtifactDAO.getDataArtifactsForTable(param); assertEquals(BlackboardArtifact.Type.TSK_CONTACT, results.getArtifactType()); assertEquals(2, results.getTotalResultsCount()); assertEquals(2, results.getItems().size()); // Get contacts from data source 2 param = new DataArtifactSearchParam(BlackboardArtifact.Type.TSK_CONTACT, dataSource2.getId()); - results = dataArtifactDAO.getValue(param); + results = dataArtifactDAO.getDataArtifactsForTable(param); assertEquals(BlackboardArtifact.Type.TSK_CONTACT, results.getArtifactType()); assertEquals(1, results.getTotalResultsCount()); assertEquals(1, results.getItems().size()); // Get bookmarks from data source 2 param = new DataArtifactSearchParam(BlackboardArtifact.Type.TSK_WEB_BOOKMARK, dataSource2.getId()); - results = dataArtifactDAO.getValue(param); + results = dataArtifactDAO.getDataArtifactsForTable(param); assertEquals(BlackboardArtifact.Type.TSK_WEB_BOOKMARK, results.getArtifactType()); assertEquals(0, results.getTotalResultsCount()); assertEquals(0, results.getItems().size()); // Get all custom artifacts param = new DataArtifactSearchParam(customDataArtifactType, null); - results = dataArtifactDAO.getValue(param); + results = dataArtifactDAO.getDataArtifactsForTable(param); assertEquals(customDataArtifactType, results.getArtifactType()); assertEquals(1, results.getTotalResultsCount()); assertEquals(1, results.getItems().size()); @@ -387,37 +386,37 @@ public void mimeSearchTest() { // Get plain text files from data source 1 FileTypeMimeSearchParams param = new FileTypeMimeSearchParams("text/plain", dataSource1.getId()); - SearchResultsDTO results = viewsDAO.getFileByMimeTypes().getValue(param); + SearchResultsDTO results = viewsDAO.getFilesByMime(param); assertEquals(2, results.getTotalResultsCount()); assertEquals(2, results.getItems().size()); // Get jpeg files from data source 1 param = new FileTypeMimeSearchParams("image/jpeg", dataSource1.getId()); - results = viewsDAO.getFileByMimeTypes().getValue(param); + results = viewsDAO.getFilesByMime(param); assertEquals(1, results.getTotalResultsCount()); assertEquals(1, results.getItems().size()); // Get jpeg files from data source 2 param = new FileTypeMimeSearchParams("image/jpeg", dataSource2.getId()); - results = viewsDAO.getFileByMimeTypes().getValue(param); + results = viewsDAO.getFilesByMime(param); assertEquals(0, results.getTotalResultsCount()); assertEquals(0, results.getItems().size()); // Search for mime type that should produce no results param = new FileTypeMimeSearchParams("blah/blah", null); - results = viewsDAO.getFileByMimeTypes().getValue(param); + results = viewsDAO.getFilesByMime(param); assertEquals(0, results.getTotalResultsCount()); assertEquals(0, results.getItems().size()); // Get plain text files from all data sources param = new FileTypeMimeSearchParams("text/plain", null); - results = viewsDAO.getFileByMimeTypes().getValue(param); + results = viewsDAO.getFilesByMime(param); assertEquals(3, results.getTotalResultsCount()); assertEquals(3, results.getItems().size()); // Get the custom file by MIME type param = new FileTypeMimeSearchParams(CUSTOM_MIME_TYPE, null); - results = viewsDAO.getFileByMimeTypes().getValue(param); + results = viewsDAO.getFilesByMime(param); assertEquals(1, results.getTotalResultsCount()); assertEquals(1, results.getItems().size()); @@ -442,31 +441,31 @@ public void sizeSearchTest() { // Get "50 - 200MB" files from data source 1 FileTypeSizeSearchParams param = new FileTypeSizeSearchParams(FileTypeSizeSearchParams.FileSizeFilter.SIZE_50_200, dataSource1.getId()); - SearchResultsDTO results = viewsDAO.getFilesBySize().getValue(param); + SearchResultsDTO results = viewsDAO.getFilesBySize(param); assertEquals(2, results.getTotalResultsCount()); assertEquals(2, results.getItems().size()); // Get "200MB - 1GB" files from data source 1 param = new FileTypeSizeSearchParams(FileTypeSizeSearchParams.FileSizeFilter.SIZE_200_1000, dataSource1.getId()); - results = viewsDAO.getFilesBySize().getValue(param); + results = viewsDAO.getFilesBySize(param); assertEquals(0, results.getTotalResultsCount()); assertEquals(0, results.getItems().size()); // Get "200MB - 1GB" files from data source 2 param = new FileTypeSizeSearchParams(FileTypeSizeSearchParams.FileSizeFilter.SIZE_200_1000, dataSource2.getId()); - results = viewsDAO.getFilesBySize().getValue(param); + results = viewsDAO.getFilesBySize(param); assertEquals(1, results.getTotalResultsCount()); assertEquals(1, results.getItems().size()); // Get "1GB+" files from all data sources param = new FileTypeSizeSearchParams(FileTypeSizeSearchParams.FileSizeFilter.SIZE_1000_, null); - results = viewsDAO.getFilesBySize().getValue(param); + results = viewsDAO.getFilesBySize(param); assertEquals(0, results.getTotalResultsCount()); assertEquals(0, results.getItems().size()); // Get "50 - 200MB" files from all data sources param = new FileTypeSizeSearchParams(FileTypeSizeSearchParams.FileSizeFilter.SIZE_50_200, null); - results = viewsDAO.getFilesBySize().getValue(param); + results = viewsDAO.getFilesBySize(param); assertEquals(3, results.getTotalResultsCount()); assertEquals(3, results.getItems().size()); } catch (ExecutionException ex) { @@ -484,21 +483,21 @@ public void analysisResultSearchTest() { AnalysisResultSearchParam param = new AnalysisResultSearchParam(BlackboardArtifact.Type.TSK_ENCRYPTION_DETECTED, null); AnalysisResultDAO analysisResultDAO = MainDAO.getInstance().getAnalysisResultDAO(); - AnalysisResultTableSearchResultsDTO results = analysisResultDAO.getAnalysisResults().getValue(param); + AnalysisResultTableSearchResultsDTO results = analysisResultDAO.getAnalysisResultsForTable(param); assertEquals(BlackboardArtifact.Type.TSK_ENCRYPTION_DETECTED, results.getArtifactType()); assertEquals(3, results.getTotalResultsCount()); assertEquals(3, results.getItems().size()); // Get encryption detected artifacts from data source 2 param = new AnalysisResultSearchParam(BlackboardArtifact.Type.TSK_ENCRYPTION_DETECTED, dataSource2.getId()); - results = analysisResultDAO.getAnalysisResults().getValue(param); + results = analysisResultDAO.getAnalysisResultsForTable(param); assertEquals(BlackboardArtifact.Type.TSK_ENCRYPTION_DETECTED, results.getArtifactType()); assertEquals(1, results.getTotalResultsCount()); assertEquals(1, results.getItems().size()); // Get all custom artifacts param = new AnalysisResultSearchParam(customAnalysisResultType, null); - results = analysisResultDAO.getAnalysisResults().getValue(param); + results = analysisResultDAO.getAnalysisResultsForTable(param); assertEquals(customAnalysisResultType, results.getArtifactType()); assertEquals(1, results.getTotalResultsCount()); assertEquals(1, results.getItems().size()); @@ -538,13 +537,13 @@ private void hashHitSearchTest() { // Test hash set hits AnalysisResultDAO analysisResultDAO = MainDAO.getInstance().getAnalysisResultDAO(); HashHitSearchParam hashParam = new HashHitSearchParam(null, HASH_SET_1); - AnalysisResultTableSearchResultsDTO results = analysisResultDAO.getHashsetHits().getValue(hashParam); + AnalysisResultTableSearchResultsDTO results = analysisResultDAO.getHashHitsForTable(hashParam); assertEquals(BlackboardArtifact.Type.TSK_HASHSET_HIT, results.getArtifactType()); assertEquals(3, results.getTotalResultsCount()); assertEquals(3, results.getItems().size()); hashParam = new HashHitSearchParam(dataSource2.getId(), HASH_SET_1); - results = analysisResultDAO.getHashsetHits().getValue(hashParam); + results = analysisResultDAO.getHashHitsForTable(hashParam); assertEquals(BlackboardArtifact.Type.TSK_HASHSET_HIT, results.getArtifactType()); assertEquals(1, results.getTotalResultsCount()); assertEquals(1, results.getItems().size()); @@ -577,13 +576,13 @@ private void keywordHitSearchTest() { // Test keyword set hits AnalysisResultDAO analysisResultDAO = MainDAO.getInstance().getAnalysisResultDAO(); KeywordHitSearchParam kwParam = new KeywordHitSearchParam(null, KEYWORD_SET_1); - AnalysisResultTableSearchResultsDTO results = analysisResultDAO.getKeywordHits().getValue(kwParam); + AnalysisResultTableSearchResultsDTO results = analysisResultDAO.getKeywordHitsForTable(kwParam); assertEquals(BlackboardArtifact.Type.TSK_KEYWORD_HIT, results.getArtifactType()); assertEquals(2, results.getTotalResultsCount()); assertEquals(2, results.getItems().size()); kwParam = new KeywordHitSearchParam(dataSource2.getId(), KEYWORD_SET_1); - results = analysisResultDAO.getKeywordHits().getValue(kwParam); + results = analysisResultDAO.getKeywordHitsForTable(kwParam); assertEquals(BlackboardArtifact.Type.TSK_KEYWORD_HIT, results.getArtifactType()); assertEquals(1, results.getTotalResultsCount()); assertEquals(1, results.getItems().size()); @@ -621,43 +620,43 @@ public void extensionSearchTest() { // Get all text documents from data source 1 FileTypeExtensionsSearchParams param = new FileTypeExtensionsSearchParams(FileExtRootFilter.TSK_DOCUMENT_FILTER, dataSource1.getId()); - SearchResultsDTO results = viewsDAO.getFileByExtensions().getValue(param); + SearchResultsDTO results = viewsDAO.getFilesByExtension(param); assertEquals(3, results.getTotalResultsCount()); assertEquals(3, results.getItems().size()); // Get Word documents from data source 1 param = new FileTypeExtensionsSearchParams(FileExtDocumentFilter.AUT_DOC_OFFICE, dataSource1.getId()); - results = viewsDAO.getFileByExtensions().getValue(param); + results = viewsDAO.getFilesByExtension(param); assertEquals(1, results.getTotalResultsCount()); assertEquals(1, results.getItems().size()); // Get image/jpeg files from data source 1 param = new FileTypeExtensionsSearchParams(FileExtRootFilter.TSK_IMAGE_FILTER, dataSource1.getId()); - results = viewsDAO.getFileByExtensions().getValue(param); + results = viewsDAO.getFilesByExtension(param); assertEquals(1, results.getTotalResultsCount()); assertEquals(1, results.getItems().size()); // Get text documents from all data sources param = new FileTypeExtensionsSearchParams(FileExtRootFilter.TSK_DOCUMENT_FILTER, null); - results = viewsDAO.getFileByExtensions().getValue(param); + results = viewsDAO.getFilesByExtension(param); assertEquals(4, results.getTotalResultsCount()); assertEquals(4, results.getItems().size()); // Get jpeg files from data source 2 param = new FileTypeExtensionsSearchParams(FileExtRootFilter.TSK_IMAGE_FILTER, dataSource2.getId()); - results = viewsDAO.getFileByExtensions().getValue(param); + results = viewsDAO.getFilesByExtension(param); assertEquals(0, results.getTotalResultsCount()); assertEquals(0, results.getItems().size()); // Search for file extensions that should produce no results param = new FileTypeExtensionsSearchParams(CustomRootFilter.EMPTY_RESULT_SET_FILTER, null); - results = viewsDAO.getFileByExtensions().getValue(param); + results = viewsDAO.getFilesByExtension(param); assertEquals(0, results.getTotalResultsCount()); assertEquals(0, results.getItems().size()); // Get the custom file by extension param = new FileTypeExtensionsSearchParams(CustomRootFilter.CUSTOM_FILTER, null); - results = viewsDAO.getFileByExtensions().getValue(param); + results = viewsDAO.getFilesByExtension(param); assertEquals(1, results.getTotalResultsCount()); assertEquals(1, results.getItems().size()); @@ -706,7 +705,7 @@ public String getDisplayName() { @Override public Set<String> getFilter() { - return Collections.unmodifiableSet(this.filter); + return this.filter; } }