Class LayerManager<T extends BloomFilter>
java.lang.Object
org.apache.commons.collections4.bloomfilter.LayerManager<T>
- All Implemented Interfaces:
BloomFilterExtractor
Implementation of the methods to manage the layers in a layered Bloom filter.
The manager comprises a list of Bloom filters that are managed based on
various rules. The last filter in the list is known as the target
and
is the filter into which merges are performed. The Layered manager utilizes
three methods to manage the list.
- ExtendCheck - A Predicate that if true causes a new Bloom filter to be created as the new target.
- FilterSupplier - A Supplier that produces empty Bloom filters to be used as a new target.
- Cleanup - A Consumer of a
LinkedList
of BloomFilter that removes any expired or out dated filters from the list.
When extendCheck returns true
the following steps are taken:
Cleanup
is calledFilterSuplier
is executed and the new filter added to the list as thetarget
filter.
- Since:
- 4.5
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
LayerManager.Builder<T extends BloomFilter>
Builder to create Layer Managerstatic final class
Static methods to create a Consumer of a List of BloomFilter perform tests on whether to reduce the collection of Bloom filters.static final class
A collection of common ExtendCheck implementations to test whether to extend the depth of a LayerManager. -
Method Summary
Modifier and TypeMethodDescriptionstatic <T extends BloomFilter>
LayerManager.Builder<T>builder()
Creates a new Builder with defaults ofExtendCheck.neverAdvance()
andCleanup.noCleanup()
.final void
clear()
Removes all the filters from the layer manager, and sets up a new one as the target.copy()
Creates a deep copy of this LayerManager.final T
first()
Gets the Bloom filter from the first layer.final T
get
(int depth) Gets the Bloom filter at the specified depth.final int
getDepth()
Returns the number of filters in the LayerManager.final T
Returns the current target filter.final T
last()
Gets the Bloom filter from the last layer.boolean
processBloomFilters
(Predicate<BloomFilter> bloomFilterPredicate) Executes a Bloom filter Predicate on each Bloom filter in the manager in depth order.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.apache.commons.collections4.bloomfilter.BloomFilterExtractor
asBloomFilterArray, flatten, processBloomFilterPair
-
Method Details
-
builder
Creates a new Builder with defaults ofExtendCheck.neverAdvance()
andCleanup.noCleanup()
.- Type Parameters:
T
- Type of BloomFilter.- Returns:
- A builder.
- See Also:
-
clear
Removes all the filters from the layer manager, and sets up a new one as the target. -
copy
Creates a deep copy of this LayerManager.Filters in the copy are deep copies, not references, so changes in the copy are NOT reflected in the original.
The
filterSupplier
,extendCheck
, and thefilterCleanup
are shared between the copy and this instance.- Returns:
- a copy of this layer Manager.
-
first
Gets the Bloom filter from the first layer. No extension check is performed during this call.- Returns:
- The Bloom filter from the first layer.
- See Also:
-
processBloomFilters
Executes a Bloom filter Predicate on each Bloom filter in the manager in depth order. Oldest filter first.- Specified by:
processBloomFilters
in interfaceBloomFilterExtractor
- Parameters:
bloomFilterPredicate
- the predicate to evaluate each Bloom filter with.- Returns:
false
when the a filter fails the predicate test. Returnstrue
if all filters pass the test.
-
get
Gets the Bloom filter at the specified depth. The filter at depth 0 is the oldest filter.- Parameters:
depth
- the depth at which the desired filter is to be found.- Returns:
- the filter.
- Throws:
NoSuchElementException
- if depth is not in the range [0,filters.size())
-
getDepth
Returns the number of filters in the LayerManager. In the default LayerManager implementation there is always at least one layer.- Returns:
- the current depth.
-
getTarget
Returns the current target filter. If a new filter should be created based onextendCheck
it will be created before this method returns.- Returns:
- the current target filter after any extension.
-
last
Gets the Bloom filter from the last layer. No extension check is performed during this call.- Returns:
- The Bloom filter from the last layer.
- See Also:
-