Package it.tidalwave.util.spi
Class HierarchicFinderSupport<TYPE,EXTENDED_FINDER extends Finder<TYPE>>
- java.lang.Object
-
- it.tidalwave.util.spi.HierarchicFinderSupport<TYPE,EXTENDED_FINDER>
-
- All Implemented Interfaces:
Finder<TYPE>
,java.io.Serializable
,java.lang.Cloneable
- Direct Known Subclasses:
SimpleFinderSupport
public class HierarchicFinderSupport<TYPE,EXTENDED_FINDER extends Finder<TYPE>> extends java.lang.Object implements Finder<TYPE>
A support class for implementing aFinder
. Subclasses only need to implement thecomputeResults()
method where raw results are retrieved (with raw we mean that they shouldn't be filtered or sorted, as post-processing will be performed by this class) and a clone constructor. If you don't need to extend theFinder
with extra methods, please use the simplifiedSimpleFinderSupport
.- Author:
- Fabrizio Giudici
- See Also:
- Serialized Form
- Status: draft API
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface it.tidalwave.util.Finder
Finder.InMemorySortCriterion<TYPE>, Finder.SortCriterion, Finder.SortDirection
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
HierarchicFinderSupport()
Default constructor.protected
HierarchicFinderSupport(HierarchicFinderSupport<TYPE,EXTENDED_FINDER> other, java.lang.Object holder)
Clone constructor for subclasses.protected
HierarchicFinderSupport(java.lang.String name)
Creates an instance with the given name (that will be used for diagnostics).
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description HierarchicFinderSupport<TYPE,EXTENDED_FINDER>
clone()
Deprecated.protected EXTENDED_FINDER
clone(java.lang.Object override)
Deprecated.UseclonedWith(Object)
instead.protected EXTENDED_FINDER
clonedWith(java.lang.Object override)
Create a clone of this object calling the special copy constructor by reflection.protected java.util.List<? extends TYPE>
computeNeededResults()
Subclasses can implement this method where *only the requested* raw results must be retrieved.protected java.util.List<? extends TYPE>
computeResults()
Subclasses can implement this method where *all* the raw results must be actually retrieved.int
count()
Performs the search and returns the count of found items.EXTENDED_FINDER
from(int firstResult)
Tells theFinder
that only a subset of found items will be returned, starting from the given position.protected static <T> T
getSource(java.lang.Class<T> type, T other, java.lang.Object override)
A utility method used by the copy constructor (see general documentation).EXTENDED_FINDER
max(int maxResults)
Tells theFinder
that only a maximum number of found items will be returned.<ANOTHER_TYPE>
Finder<ANOTHER_TYPE>ofType(java.lang.Class<ANOTHER_TYPE> type)
Tells theFinder
that the specified type of results is expected.java.util.List<? extends TYPE>
results()
Performs the search and returns the found items.EXTENDED_FINDER
sort(Finder.SortCriterion criterion)
Tells theFinder
that results will be sorted according to the given criterion, in ascending direction.EXTENDED_FINDER
sort(Finder.SortCriterion criterion, Finder.SortDirection direction)
Tells theFinder
that results will be sorted according to the given criterion and direction.EXTENDED_FINDER
withContext(java.lang.Object context)
Tells theFinder
that results should be created with the given context.-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface it.tidalwave.util.Finder
firstResult, iterator, optionalFirstResult, optionalResult, result, stream
-
-
-
-
Constructor Detail
-
HierarchicFinderSupport
protected HierarchicFinderSupport(@Nonnull java.lang.String name)
Creates an instance with the given name (that will be used for diagnostics).- Parameters:
name
- the name
-
HierarchicFinderSupport
protected HierarchicFinderSupport()
Default constructor.
-
HierarchicFinderSupport
protected HierarchicFinderSupport(@Nonnull HierarchicFinderSupport<TYPE,EXTENDED_FINDER> other, @Nonnull java.lang.Object holder)
Clone constructor for subclasses.- Parameters:
other
- the other instance to cloneholder
- the holder object
-
-
Method Detail
-
clone
@Nonnull public final HierarchicFinderSupport<TYPE,EXTENDED_FINDER> clone()
Deprecated.This method throws an exception since aFinder
extending this class must be cloned withclonedWith(Object)
.- Overrides:
clone
in classjava.lang.Object
- See Also:
clonedWith(Object)
-
clonedWith
@Nonnull protected EXTENDED_FINDER clonedWith(@Nonnull java.lang.Object override)
Create a clone of this object calling the special copy constructor by reflection.- Parameters:
override
- the override object- Returns:
- the clone
-
clone
@Nonnull @Deprecated protected EXTENDED_FINDER clone(@Nonnull java.lang.Object override)
Deprecated.UseclonedWith(Object)
instead.Create a clone of this object calling the special clone constructor by reflection.- Parameters:
override
- the override object- Returns:
- the clone
-
from
@Nonnull public EXTENDED_FINDER from(@Nonnegative int firstResult)
Tells theFinder
that only a subset of found items will be returned, starting from the given position.
-
max
@Nonnull public EXTENDED_FINDER max(@Nonnegative int maxResults)
Tells theFinder
that only a maximum number of found items will be returned.
-
withContext
@Nonnull public EXTENDED_FINDER withContext(@Nonnull java.lang.Object context)
Tells theFinder
that results should be created with the given context. This method can be called multiple times; contexts are accumulated.- Specified by:
withContext
in interfaceFinder<TYPE>
- Parameters:
context
- the context- Returns:
- the
Finder
-
ofType
@Nonnull public <ANOTHER_TYPE> Finder<ANOTHER_TYPE> ofType(@Nonnull java.lang.Class<ANOTHER_TYPE> type)
Tells theFinder
that the specified type of results is expected.
-
sort
@Nonnull public EXTENDED_FINDER sort(@Nonnull Finder.SortCriterion criterion, @Nonnull Finder.SortDirection direction)
Tells theFinder
that results will be sorted according to the given criterion and direction.
-
sort
@Nonnull public final EXTENDED_FINDER sort(@Nonnull Finder.SortCriterion criterion)
Tells theFinder
that results will be sorted according to the given criterion, in ascending direction.
-
results
@Nonnull public java.util.List<? extends TYPE> results()
Performs the search and returns the found items.
-
count
@Nonnegative public int count()
Performs the search and returns the count of found items.
-
computeResults
@Nonnull protected java.util.List<? extends TYPE> computeResults()
Subclasses can implement this method where *all* the raw results must be actually retrieved.- Returns:
- the unprocessed results
-
computeNeededResults
@Nonnull protected java.util.List<? extends TYPE> computeNeededResults()
Subclasses can implement this method where *only the requested* raw results must be retrieved.- Returns:
- the unprocessed results
-
getSource
@Nonnull protected static <T> T getSource(java.lang.Class<T> type, @Nonnull T other, @Nonnull java.lang.Object override)
A utility method used by the copy constructor (see general documentation). If the override object is strictly of the specified type, it is returned; otherwise the other object is returned.- Type Parameters:
T
- the static type of the source- Parameters:
type
- the dynamic type of the sourceother
- the other finderoverride
- the holder object- Returns:
- the override or other
-
-