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:
PersonFinderImpl2a,PersonFinderImpl2b,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 theFinderwith 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 protectedHierarchicFinderSupport()Default constructor.protectedHierarchicFinderSupport(HierarchicFinderSupport<TYPE,EXTENDED_FINDER> other, java.lang.Object holder)Clone constructor for subclasses.protectedHierarchicFinderSupport(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_FINDERclone(java.lang.Object override)Deprecated.UseclonedWith(Object)instead.protected EXTENDED_FINDERclonedWith(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.intcount()Performs the search and returns the count of found items.EXTENDED_FINDERfrom(int firstResult)Tells theFinderthat only a subset of found items will be returned, starting from the given position.protected static <T> TgetSource(java.lang.Class<T> type, T other, java.lang.Object override)A utility method used by the copy constructor (see general documentation).EXTENDED_FINDERmax(int maxResults)Tells theFinderthat only a maximum number of found items will be returned.<ANOTHER_TYPE>
Finder<ANOTHER_TYPE>ofType(java.lang.Class<ANOTHER_TYPE> type)Tells theFinderthat the specified type of results is expected.java.util.List<? extends TYPE>results()Performs the search and returns the found items.EXTENDED_FINDERsort(Finder.SortCriterion criterion)Tells theFinderthat results will be sorted according to the given criterion, in ascending direction.EXTENDED_FINDERsort(Finder.SortCriterion criterion, Finder.SortDirection direction)Tells theFinderthat results will be sorted according to the given criterion and direction.EXTENDED_FINDERwithContext(java.lang.Object context)Tells theFinderthat 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 aFinderextending this class must be cloned withclonedWith(Object).- Overrides:
clonein 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 theFinderthat only a subset of found items will be returned, starting from the given position.
-
max
@Nonnull public EXTENDED_FINDER max(@Nonnegative int maxResults)
Tells theFinderthat only a maximum number of found items will be returned.
-
withContext
@Nonnull public EXTENDED_FINDER withContext(@Nonnull java.lang.Object context)
Tells theFinderthat results should be created with the given context. This method can be called multiple times; contexts are accumulated.- Specified by:
withContextin 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 theFinderthat the specified type of results is expected.
-
sort
@Nonnull public EXTENDED_FINDER sort(@Nonnull Finder.SortCriterion criterion, @Nonnull Finder.SortDirection direction)
Tells theFinderthat results will be sorted according to the given criterion and direction.
-
sort
@Nonnull public final EXTENDED_FINDER sort(@Nonnull Finder.SortCriterion criterion)
Tells theFinderthat 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
-
-