Package it.tidalwave.util.spi
Class FinderSupport<TYPE,EXTENDED_FINDER extends Finder<TYPE>>
- java.lang.Object
-
- it.tidalwave.util.spi.FinderSupport<TYPE,EXTENDED_FINDER>
-
- All Implemented Interfaces:
Finder<TYPE>,java.io.Serializable,java.lang.Cloneable
- Direct Known Subclasses:
SimpleFinderSupport
public class FinderSupport<TYPE,EXTENDED_FINDER extends Finder<TYPE>> extends java.lang.Object implements Finder<TYPE>, java.lang.Cloneable
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.FilterSortCriterion<TYPE>, Finder.SortCriterion, Finder.SortDirection
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedFinderSupport()Default constructor.protectedFinderSupport(FinderSupport<TYPE,EXTENDED_FINDER> other, java.lang.Object override)Clone constructor for subclasses.protectedFinderSupport(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 FinderSupport<TYPE,EXTENDED_FINDER>clone()Deprecated.protected EXTENDED_FINDERclone(java.lang.Object override)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.TYPEfirstResult()Performs the search and returns only the first found item.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> clazz, T other, java.lang.Object override)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.TYPEresult()Performs the search assuming that it will return a single item and returns it.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
iterator, optionalFirstResult, optionalResult, stream
-
-
-
-
Constructor Detail
-
FinderSupport
protected FinderSupport(@Nonnull java.lang.String name)Creates an instance with the given name (that will be used for diagnostics).- Parameters:
name- the name
-
FinderSupport
protected FinderSupport()
Default constructor.
-
FinderSupport
protected FinderSupport(@Nonnull FinderSupport<TYPE,EXTENDED_FINDER> other, @Nonnull java.lang.Object override)Clone constructor for subclasses.
-
-
Method Detail
-
getSource
@Nonnull protected static <T> T getSource(java.lang.Class<T> clazz, @Nonnull T other, @Nonnull java.lang.Object override)
-
clone
@Nonnull public final FinderSupport<TYPE,EXTENDED_FINDER> clone()
Deprecated.- Overrides:
clonein classjava.lang.Object
-
clone
@Nonnull protected EXTENDED_FINDER clone(@Nonnull java.lang.Object override)
-
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.
-
result
@Nonnull public TYPE result() throws NotFoundException
Performs the search assuming that it will return a single item and returns it. This method fails if the search returns more than one single item.- Specified by:
resultin interfaceFinder<TYPE>- Returns:
- the found item
- Throws:
NotFoundException- if the search didn't find anything
-
firstResult
@Nonnull public TYPE firstResult() throws NotFoundException
Performs the search and returns only the first found item.- Specified by:
firstResultin interfaceFinder<TYPE>- Returns:
- the first found item
- Throws:
NotFoundException- if the search didn't find anything
-
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
-
-