public class RsqlCrudEntityHelper extends Object
RsqlCrudEntityServices
and most methods require passing in those services'
TrackableRepository
dependency.
Typically, it is sufficient to extend BaseRsqlCrudEntityService
in order to gain access
to this helper; however, if a service implementation spans several repository types, it is
recommend to inject this class instead. In such a case, this helper also provides access to a
CrudEntityHelper
bean.
@Service
public class DefaultMyService<P extends MyPayload> implements MyService<P>
{private final RsqlCrudEntityService<MyPayload> helper;
private final MyTrackableRepository repository;
public DefaultMyService(MyTrackableRepository repository, DomainMapperManager mapper) { this.helper = new RsqlCrudEntityService(repository, mapper); this repository = repository; } }
Constructor and Description |
---|
RsqlCrudEntityHelper(CrudEntityHelper crudEntityHelper,
List<RsqlQueryTransformer> rsqlQueryTransformers) |
Modifier and Type | Method and Description |
---|---|
<R extends TrackableRepository<Trackable> & TrackableRsqlFilterExecutor<Trackable>> |
castToRsqlRepository(TrackableRepository<Trackable> repository)
Since most of the methods in the service require a repository that implements both
TrackableRepository and TrackableRsqlFilterExecutor , this method provides a
convenient way to handle that casting. |
CrudEntityHelper |
getCrudEntityHelper()
Provides access to the internal
CrudEntityHelper so as to avoid having to inject it
again. |
protected List<RsqlQueryTransformer> |
getRsqlQueryTransformers() |
<P,R extends TrackableRsqlFilterExecutor<Trackable> & TrackableRepository<Trackable>> |
readAll(cz.jirutka.rsql.parser.ast.Node filters,
ContextInfo context,
R repository)
Retrieve all domain instances using a structured query string to drive the query criteria.
|
<P,R extends TrackableRsqlFilterExecutor<Trackable> & TrackableRepository<Trackable>> |
readAll(cz.jirutka.rsql.parser.ast.Node filters,
org.springframework.data.domain.Pageable pageable,
ContextInfo context,
R repository)
Retrieve all domain instances using a structured query string to drive the query criteria.
|
<P,R extends TrackableRsqlFilterExecutor<Trackable> & TrackableRepository<Trackable>> |
readAll(cz.jirutka.rsql.parser.ast.Node filters,
org.springframework.data.domain.Sort sort,
ContextInfo context,
R repository)
Retrieve all domain instances using a structured query string to drive the query criteria.
|
<P,R extends TrackableRsqlFilterExecutor<Trackable> & TrackableRepository<Trackable>> |
readAll(cz.jirutka.rsql.parser.ast.Node filters,
org.springframework.data.domain.Sort sort,
org.springframework.data.domain.Pageable pageable,
ContextInfo context,
R repository)
Retrieve all domain instances using a structured query string to drive the query criteria.
|
cz.jirutka.rsql.parser.ast.Node |
transform(cz.jirutka.rsql.parser.ast.Node filters,
TrackableRepository<Trackable> repository)
Transforms
filters from properties that target a projection into ones that apply to a
backing repository provider domain object |
public RsqlCrudEntityHelper(CrudEntityHelper crudEntityHelper, List<RsqlQueryTransformer> rsqlQueryTransformers)
public <P,R extends TrackableRsqlFilterExecutor<Trackable> & TrackableRepository<Trackable>> List<P> readAll(@NonNull cz.jirutka.rsql.parser.ast.Node filters, @Nullable org.springframework.data.domain.Sort sort, @Nullable ContextInfo context, @NonNull R repository)
FilterParser
for
more information.
This version also accepts a formatted sort string that declares the sorting characteristics
for the query. See SortTransformer
for more information.
filters
- the RSQL Node
used to restrict result, must not be nullsort
- The string containing the structured list of sorts to applycontext
- Request context information around sandbox and multitenant staterepository
- A repository that implements TrackableRepository
and
TrackableRsqlFilterExecutor
to perform the persistence operationpublic <P,R extends TrackableRsqlFilterExecutor<Trackable> & TrackableRepository<Trackable>> List<P> readAll(@NonNull cz.jirutka.rsql.parser.ast.Node filters, @Nullable ContextInfo context, @NonNull R repository)
FilterParser
for
more information.filters
- the RSQL Node
used to restrict result, must not be nullcontext
- Request context information around sandbox and multitenant staterepository
- A repository that implements TrackableRepository
and
TrackableRsqlFilterExecutor
to perform the persistence operationpublic <P,R extends TrackableRsqlFilterExecutor<Trackable> & TrackableRepository<Trackable>> org.springframework.data.domain.Page<P> readAll(@NonNull cz.jirutka.rsql.parser.ast.Node filters, @Nullable org.springframework.data.domain.Sort sort, @NonNull org.springframework.data.domain.Pageable pageable, @Nullable ContextInfo context, @NonNull R repository)
FilterParser
for
more information.
This version also accepts a Sort to apply to the result set
filters
- the RSQL Node
used to restrict result, must not be nullsort
- sort to apply to the querypageable
- may be Pageable.unpaged()
, must not be null.context
- Request context information around sandbox and multitenant staterepository
- A repository that implements TrackableRepository
and
TrackableRsqlFilterExecutor
to perform the persistence operationpublic <P,R extends TrackableRsqlFilterExecutor<Trackable> & TrackableRepository<Trackable>> org.springframework.data.domain.Page<P> readAll(@NonNull cz.jirutka.rsql.parser.ast.Node filters, @NonNull org.springframework.data.domain.Pageable pageable, @Nullable ContextInfo context, @NonNull R repository)
FilterParser
for
more information.filters
- the RSQL Node
used to restrict result, must not be nullpageable
- may be Pageable.unpaged()
, must not be null.context
- Request context information around sandbox and multitenant staterepository
- A repository that implements TrackableRepository
and
TrackableRsqlFilterExecutor
to perform the persistence operation@NonNull public cz.jirutka.rsql.parser.ast.Node transform(@Nullable cz.jirutka.rsql.parser.ast.Node filters, @NonNull TrackableRepository<Trackable> repository)
filters
from properties that target a projection into ones that apply to a
backing repository provider domain objectfilters
- RSQL filters targeting a projection domainrepository
- A TrackableRepository
form which to glean entity information for
the transformationfilters
is null, otherwise an RSQL query
suitable for targeting a repository domain object.RsqlQueryTransformer
public <R extends TrackableRepository<Trackable> & TrackableRsqlFilterExecutor<Trackable>> R castToRsqlRepository(TrackableRepository<Trackable> repository)
TrackableRepository
and TrackableRsqlFilterExecutor
, this method provides a
convenient way to handle that casting.R
- used to do the multi-interface check.repository
- Since most services that use this helper will use
TrackableRepositories
, this method expects that as the
argument.TrackableRepository
that also implements
TrackableRsqlFilterExecutor
cast in such a way as to allow type checking for
both interfaces for use with this service's methods.@NonNull public CrudEntityHelper getCrudEntityHelper()
CrudEntityHelper
so as to avoid having to inject it
again.CrudEntityHelper
CrudEntityHelper
@NonNull protected List<RsqlQueryTransformer> getRsqlQueryTransformers()
Copyright © 2021. All rights reserved.