diff --git a/iped-app/src/main/java/iped/app/ui/CaseSearcherFilter.java b/iped-app/src/main/java/iped/app/ui/CaseSearcherFilter.java index e7eb607e26..a45496211c 100644 --- a/iped-app/src/main/java/iped/app/ui/CaseSearcherFilter.java +++ b/iped-app/src/main/java/iped/app/ui/CaseSearcherFilter.java @@ -37,7 +37,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import iped.app.ui.App.DuplicatesFilterer; import iped.engine.data.IPEDMultiSource; import iped.engine.data.IPEDSource; import iped.engine.data.ItemId; @@ -183,8 +182,6 @@ public MultiSearchResult doInBackground() { allItemsCache = new SoftReference(result.clone()); } - IResultSetFilterer dupFilterer = null; - result.setIPEDSource(ipedCase); if (applyUIFilters && filterManager != null) { @@ -196,11 +193,27 @@ public MultiSearchResult doInBackground() { } IResultSetFilterer iRSFilterer = (IResultSetFilterer) iterator.next(); - if(iRSFilterer instanceof DuplicatesFilterer) { - dupFilterer=iRSFilterer; - continue;//Duplicate filterer must be applied as last filterer + if (filterManager.isFiltererEnabled(iRSFilterer)) { + IFilter rsFilter = iRSFilterer.getFilter(); + + if (rsFilter != null) { + if (rsFilter instanceof IBitmapFilter) {// if the filter exposes a internal bitmap + addBitmapFilter((IBitmapFilter) rsFilter); + } else { + RoaringBitmap[] cachedBitmaps = filterManager.getCachedBitmaps((IResultSetFilter) rsFilter); + if (cachedBitmaps != null) { // if filtermanager returned a cached bitmap + addBitmapFilter(cachedBitmaps); + } else { + MultiSearchResult newresult = filterManager.applyFilter((IResultSetFilter) rsFilter, result); + if (newresult != result) { + numFilters++; + result = newresult; + result.setIPEDSource(ipedCase); + } + } + } + } } - applyFilterer(iRSFilterer, result); } } @@ -223,11 +236,6 @@ public MultiSearchResult doInBackground() { result.setIPEDSource(ipedCase); } } - - if(dupFilterer!=null) { - applyFilterer(dupFilterer, result); - } - } catch (Throwable e) { if (!(e instanceof CancellationException)) { @@ -248,31 +256,7 @@ public MultiSearchResult doInBackground() { } - private void applyFilterer(IResultSetFilterer iRSFilterer, MultiSearchResult result2) { - if (filterManager.isFiltererEnabled(iRSFilterer)) { - IFilter rsFilter = iRSFilterer.getFilter(); - - if (rsFilter != null) { - if (rsFilter instanceof IBitmapFilter) {// if the filter exposes a internal bitmap - addBitmapFilter((IBitmapFilter) rsFilter); - } else { - RoaringBitmap[] cachedBitmaps = filterManager.getCachedBitmaps((IResultSetFilter) rsFilter); - if (cachedBitmaps != null) { // if filtermanager returned a cached bitmap - addBitmapFilter(cachedBitmaps); - } else { - MultiSearchResult newresult = filterManager.applyFilter((IResultSetFilter) rsFilter, result); - if (newresult != result) { - numFilters++; - result = newresult; - result.setIPEDSource(ipedCase); - } - } - } - } - } - } - - @Override + @Override public void done() { for (CaseSearchFilterListener caseSearchFilterListener : listeners) { if (isCancelled()) { @@ -376,6 +360,6 @@ public void addBitmapFilter(RoaringBitmap[] lunionsArray) { } else { unionsArray[i].and(lunionsArray[i]); } - } + } } }