public class CollectionLoaderImpl<E> extends java.lang.Object implements CollectionLoader<E>
CollectionLoader.PostLoadEvent<T>, CollectionLoader.PreLoadEvent<T>
Modifier and Type | Field and Description |
---|---|
protected boolean |
cacheable |
protected io.jmix.core.querycondition.Condition |
condition |
protected CollectionContainer<E> |
container |
protected DataContext |
dataContext |
protected io.jmix.core.DataManager |
dataManager |
protected java.util.function.Function<io.jmix.core.LoadContext<E>,java.util.List<E>> |
delegate |
protected io.jmix.core.common.event.EventHub |
events |
protected io.jmix.core.FetchPlan |
fetchPlan |
protected java.lang.String |
fetchPlanName |
protected io.jmix.core.FetchPlanRepository |
fetchPlanRepository |
protected int |
firstResult |
protected java.util.Map<java.lang.String,java.io.Serializable> |
hints |
protected int |
maxResults |
protected java.util.Map<java.lang.String,java.lang.Object> |
parameters |
protected java.lang.String |
query |
protected java.util.List<io.jmix.core.QueryStringProcessor> |
queryStringProcessors |
protected io.jmix.core.Sort |
sort |
protected SorterFactory |
sorterFactory |
Constructor and Description |
---|
CollectionLoaderImpl() |
Modifier and Type | Method and Description |
---|---|
protected boolean |
_load() |
io.jmix.core.common.event.Subscription |
addPostLoadListener(java.util.function.Consumer<CollectionLoader.PostLoadEvent<E>> listener)
Adds a listener to
CollectionLoader.PostLoadEvent . |
io.jmix.core.common.event.Subscription |
addPreLoadListener(java.util.function.Consumer<CollectionLoader.PreLoadEvent<E>> listener)
Adds a listener to
CollectionLoader.PreLoadEvent . |
io.jmix.core.LoadContext<E> |
createLoadContext()
Returns
LoadContext which is created by the parameters of this loader. |
io.jmix.core.querycondition.Condition |
getCondition()
Returns the root condition which is used together with the query when loading entities.
|
CollectionContainer<E> |
getContainer()
Returns the container which accepts loaded entities.
|
DataContext |
getDataContext()
Returns data context.
|
io.jmix.core.FetchPlan |
getFetchPlan()
Returns the fetch plan used for loading entities.
|
int |
getFirstResult()
The position of the first instance to load, numbered from 0.
|
java.util.Map<java.lang.String,java.io.Serializable> |
getHints() |
java.util.function.Function<io.jmix.core.LoadContext<E>,java.util.List<E>> |
getLoadDelegate()
Returns a function which will be used to load data instead of standard implementation.
|
int |
getMaxResults()
The maximum number of instances to load.
|
java.lang.Object |
getParameter(java.lang.String name)
Returns a query parameter by its name.
|
java.util.Map<java.lang.String,java.lang.Object> |
getParameters()
Returns the map of query parameters.
|
java.lang.String |
getQuery()
Returns the query which is used for loading entities.
|
io.jmix.core.Sort |
getSort()
Returns the sort object which is used when loading.
|
boolean |
isCacheable()
Returns true if the query for loading data is cacheable.
|
void |
load()
Loads data to the connected container.
|
void |
removeParameter(java.lang.String name)
Removes a query parameter.
|
protected io.jmix.core.FetchPlan |
resolveFetchPlan() |
protected void |
sendPostLoadEvent(java.util.List<E> entities) |
protected boolean |
sendPreLoadEvent(io.jmix.core.LoadContext<E> loadContext) |
void |
setCacheable(boolean cacheable)
Sets the query for loading data cacheable.
|
void |
setCondition(io.jmix.core.querycondition.Condition condition)
Sets the root condition which will be used together with the query when loading entities.
|
void |
setContainer(CollectionContainer<E> container)
Sets the container which accepts loaded entities.
|
void |
setDataContext(DataContext dataContext)
Sets the data context for the loader.
|
void |
setFetchPlan(io.jmix.core.FetchPlan fetchPlan)
Sets the fetch plan to use for loading entities.
|
void |
setFetchPlan(java.lang.String fetchPlanName)
Sets the name of the fetch plan to use for loading entities.
|
void |
setFirstResult(int firstResult)
Sets the position of the first instance to load, numbered from 0.
|
void |
setHint(java.lang.String hintName,
java.io.Serializable value)
Sets custom hint that should be used by the query for loading data.
|
void |
setLoadDelegate(java.util.function.Function<io.jmix.core.LoadContext<E>,java.util.List<E>> delegate)
Sets a function which will be used to load data instead of standard implementation.
|
void |
setMaxResults(int maxResults)
Sets the maximum number of instances to load.
|
void |
setParameter(java.lang.String name,
java.lang.Object value)
Sets a query parameter.
|
void |
setParameters(java.util.Map<java.lang.String,java.lang.Object> parameters)
Sets the map of query parameters.
|
void |
setQuery(java.lang.String query)
Sets a query which will be used for loading entities.
|
void |
setSort(io.jmix.core.Sort sort)
Sets the sort object which is used when loading.
|
@Autowired protected io.jmix.core.DataManager dataManager
@Autowired protected io.jmix.core.FetchPlanRepository fetchPlanRepository
@Autowired protected SorterFactory sorterFactory
@Autowired protected java.util.List<io.jmix.core.QueryStringProcessor> queryStringProcessors
protected DataContext dataContext
protected CollectionContainer<E> container
protected java.lang.String query
protected io.jmix.core.querycondition.Condition condition
protected java.util.Map<java.lang.String,java.lang.Object> parameters
protected int firstResult
protected int maxResults
protected boolean cacheable
protected io.jmix.core.FetchPlan fetchPlan
protected java.lang.String fetchPlanName
protected io.jmix.core.Sort sort
protected java.util.Map<java.lang.String,java.io.Serializable> hints
protected java.util.function.Function<io.jmix.core.LoadContext<E>,java.util.List<E>> delegate
protected io.jmix.core.common.event.EventHub events
@Nullable public DataContext getDataContext()
DataLoader
getDataContext
in interface DataLoader
public void setDataContext(@Nullable DataContext dataContext)
DataLoader
setDataContext
in interface DataLoader
public void load()
DataLoader
load
in interface DataLoader
protected boolean _load()
public io.jmix.core.LoadContext<E> createLoadContext()
CollectionLoader
LoadContext
which is created by the parameters of this loader. The LoadContext
can be used with DataManager
to load data by the same conditions.createLoadContext
in interface CollectionLoader<E>
protected io.jmix.core.FetchPlan resolveFetchPlan()
protected boolean sendPreLoadEvent(io.jmix.core.LoadContext<E> loadContext)
protected void sendPostLoadEvent(java.util.List<E> entities)
public CollectionContainer<E> getContainer()
CollectionLoader
getContainer
in interface BaseCollectionLoader
getContainer
in interface CollectionLoader<E>
getContainer
in interface DataLoader
public void setContainer(CollectionContainer<E> container)
CollectionLoader
setContainer
in interface CollectionLoader<E>
public java.lang.String getQuery()
DataLoader
getQuery
in interface DataLoader
public void setQuery(java.lang.String query)
DataLoader
setQuery
in interface DataLoader
@Nullable public io.jmix.core.querycondition.Condition getCondition()
DataLoader
getCondition
in interface DataLoader
public void setCondition(io.jmix.core.querycondition.Condition condition)
DataLoader
setCondition
in interface DataLoader
public java.util.Map<java.lang.String,java.lang.Object> getParameters()
DataLoader
getParameters
in interface DataLoader
public void setParameters(java.util.Map<java.lang.String,java.lang.Object> parameters)
DataLoader
setParameters
in interface DataLoader
public java.lang.Object getParameter(java.lang.String name)
DataLoader
getParameter
in interface DataLoader
public void setParameter(java.lang.String name, @Nullable java.lang.Object value)
DataLoader
setParameter
in interface DataLoader
public void removeParameter(java.lang.String name)
DataLoader
removeParameter
in interface DataLoader
public int getFirstResult()
BaseCollectionLoader
BaseCollectionLoader.setFirstResult(int)
was not called.getFirstResult
in interface BaseCollectionLoader
public void setFirstResult(int firstResult)
BaseCollectionLoader
setFirstResult
in interface BaseCollectionLoader
public int getMaxResults()
BaseCollectionLoader
Integer.MAX_VALUE
if BaseCollectionLoader.setMaxResults(int)
was not called.getMaxResults
in interface BaseCollectionLoader
public void setMaxResults(int maxResults)
BaseCollectionLoader
setMaxResults
in interface BaseCollectionLoader
public void setHint(java.lang.String hintName, java.io.Serializable value)
DataLoader
setHint
in interface DataLoader
public java.util.Map<java.lang.String,java.io.Serializable> getHints()
getHints
in interface DataLoader
public boolean isCacheable()
CollectionLoader
isCacheable
in interface CollectionLoader<E>
public void setCacheable(boolean cacheable)
CollectionLoader
setCacheable
in interface CollectionLoader<E>
public io.jmix.core.FetchPlan getFetchPlan()
CollectionLoader
getFetchPlan
in interface CollectionLoader<E>
public void setFetchPlan(io.jmix.core.FetchPlan fetchPlan)
CollectionLoader
setFetchPlan
in interface CollectionLoader<E>
public void setFetchPlan(java.lang.String fetchPlanName)
CollectionLoader
setFetchPlan
in interface CollectionLoader<E>
@Nullable public io.jmix.core.Sort getSort()
BaseCollectionLoader
getSort
in interface BaseCollectionLoader
public void setSort(@Nullable io.jmix.core.Sort sort)
BaseCollectionLoader
setSort
in interface BaseCollectionLoader
public java.util.function.Function<io.jmix.core.LoadContext<E>,java.util.List<E>> getLoadDelegate()
CollectionLoader
getLoadDelegate
in interface CollectionLoader<E>
public void setLoadDelegate(java.util.function.Function<io.jmix.core.LoadContext<E>,java.util.List<E>> delegate)
CollectionLoader
setLoadDelegate
in interface CollectionLoader<E>
public io.jmix.core.common.event.Subscription addPreLoadListener(java.util.function.Consumer<CollectionLoader.PreLoadEvent<E>> listener)
CollectionLoader
CollectionLoader.PreLoadEvent
.
You can also add an event listener declaratively using a controller method annotated with Subscribe
:
@Subscribe(id = "fooDl", target = Target.DATA_LOADER) private void onFooDlPreLoad(CollectionLoader.PreLoadEvent event) { // handle event here }
addPreLoadListener
in interface CollectionLoader<E>
listener
- listenerpublic io.jmix.core.common.event.Subscription addPostLoadListener(java.util.function.Consumer<CollectionLoader.PostLoadEvent<E>> listener)
CollectionLoader
CollectionLoader.PostLoadEvent
.
You can also add an event listener declaratively using a controller method annotated with Subscribe
:
@Subscribe(id = "fooDl", target = Target.DATA_LOADER) private void onFooDlPostLoad(CollectionLoader.PostLoadEvent event) { // handle event here }
addPostLoadListener
in interface CollectionLoader<E>
listener
- listener