Package it.tidalwave.util.spi
Class HierarchicFinderSupport<T,F extends Finder<T>>
- java.lang.Object
-
- it.tidalwave.util.spi.HierarchicFinderSupport<T,F>
-
- All Implemented Interfaces:
Finder<T>,java.io.Serializable,java.lang.Cloneable
- Direct Known Subclasses:
FinderWithIdSupport,SimpleFinderSupport
public class HierarchicFinderSupport<T,F extends Finder<T>> extends java.lang.Object implements Finder<T>
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<U>, Finder.SortCriterion, Finder.SortDirection
-
-
Field Summary
Fields Modifier and Type Field Description protected intfirstResultprotected intmaxResults
-
Constructor Summary
Constructors Modifier Constructor Description protectedHierarchicFinderSupport()Default constructor.protectedHierarchicFinderSupport(HierarchicFinderSupport<T,F> 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<T,F>clone()Deprecated.protected Fclone(java.lang.Object override)Deprecated.UseclonedWith(Object)instead.protected FclonedWith(java.lang.Object override)Create a clone of this object calling the special copy constructor by reflection.protected java.util.List<T>computeNeededResults()Subclasses can implement this method where *only the requested* raw results must be retrieved.protected java.util.List<T>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.Ffrom(int firstResult)Tells theFinderthat only a subset of found items will be returned, starting from the given position.protected static <U> UgetSource(java.lang.Class<? extends U> type, U other, java.lang.Object override)A utility method used by the copy constructor (see general documentation).Fmax(int maxResults)Tells theFinderthat only a maximum number of found items will be returned.<U> Finder<U>ofType(java.lang.Class<U> type)Tells theFinderthat the specified type of results is expected.java.util.List<T>results()Performs the search and returns the found items.Fsort(Finder.SortCriterion criterion)Tells theFinderthat results will be sorted according to the given criterion, in ascending direction.Fsort(Finder.SortCriterion criterion, Finder.SortDirection direction)Tells theFinderthat results will be sorted according to the given criterion and direction.FwithContext(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<T,F> 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<T,F> 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 F 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 F 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 F from(@Nonnegative int firstResult)
Tells theFinderthat only a subset of found items will be returned, starting from the given position.
-
max
@Nonnull public F max(@Nonnegative int maxResults)
Tells theFinderthat only a maximum number of found items will be returned.
-
withContext
@Nonnull public F 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<T>- Parameters:
context- the context- Returns:
- the
Finder
-
ofType
@Nonnull public <U> Finder<U> ofType(@Nonnull java.lang.Class<U> type)
Tells theFinderthat the specified type of results is expected.
-
sort
@Nonnull public F 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 F 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<T> 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<T> 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<T> computeNeededResults()
Subclasses can implement this method where *only the requested* raw results must be retrieved.- Returns:
- the unprocessed results
-
getSource
@Nonnull protected static <U> U getSource(@Nonnull java.lang.Class<? extends U> type, @Nonnull U 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:
U- 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
-
-