Class RsqlCrudEntityHelper


  • public class RsqlCrudEntityHelper
    extends Object
    Helper class responsible for providing additional support for RSQL filtering for business domain services. This service is intended to be used in support of 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;
        }
    
     }
     
    Author:
    Phillip Verheyden (phillipuniverse), Nathan Moore (nathandmoore)
    • Method Detail

      • readAll

        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)
        Retrieve all domain instances using a structured query string to drive the query criteria. The filters string is parsed by an internal implementation and the result is added to the query before executing the fetch against the persistence store. See 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.

        Parameters:
        filters - the RSQL Node used to restrict result, must not be null
        sort - The string containing the structured list of sorts to apply
        context - Request context information around sandbox and multitenant state
        repository - A repository that implements TrackableRepository and TrackableRsqlFilterExecutor to perform the persistence operation
        Returns:
        The list of narrowed, sorted entities
      • readAll

        public <P,​R extends TrackableRsqlFilterExecutor<Trackable> & TrackableRepository<Trackable>> List<P> readAll​(@NonNull
                                                                                                                           cz.jirutka.rsql.parser.ast.Node filters,
                                                                                                                           @Nullable
                                                                                                                           ContextInfo context,
                                                                                                                           @NonNull
                                                                                                                           R repository)
        Retrieve all domain instances using a structured query string to drive the query criteria. The filters string is parsed by an internal implementation and the result is added to the query before executing the fetch against the persistence store. See FilterParser for more information.
        Parameters:
        filters - the RSQL Node used to restrict result, must not be null
        context - Request context information around sandbox and multitenant state
        repository - A repository that implements TrackableRepository and TrackableRsqlFilterExecutor to perform the persistence operation
        Returns:
        The list of narrowed, sorted entities
      • readAll

        public <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)
        Retrieve all domain instances using a structured query string to drive the query criteria. The filters string is parsed by an internal implementation and the result is added to the query before executing the fetch against the persistence store. See FilterParser for more information.

        This version also accepts a Sort to apply to the result set

        Parameters:
        filters - the RSQL Node used to restrict result, must not be null
        sort - sort to apply to the query
        pageable - may be Pageable.unpaged(), must not be null.
        context - Request context information around sandbox and multitenant state
        repository - A repository that implements TrackableRepository and TrackableRsqlFilterExecutor to perform the persistence operation
        Returns:
        The subset (page) of narrowed entities
      • readAll

        public <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)
        Retrieve all domain instances using a structured query string to drive the query criteria. The filters string is parsed by an internal implementation and the result is added to the query before executing the fetch against the persistence store. See FilterParser for more information.
        Parameters:
        filters - the RSQL Node used to restrict result, must not be null
        pageable - may be Pageable.unpaged(), must not be null.
        context - Request context information around sandbox and multitenant state
        repository - A repository that implements TrackableRepository and TrackableRsqlFilterExecutor to perform the persistence operation
        Returns:
        The subset (page) of narrowed entities
      • transform

        @NonNull
        public cz.jirutka.rsql.parser.ast.Node transform​(@Nullable
                                                         cz.jirutka.rsql.parser.ast.Node filters,
                                                         @NonNull
                                                         TrackableRepository<Trackable> repository)
        Transforms filters from properties that target a projection into ones that apply to a backing repository provider domain object
        Parameters:
        filters - RSQL filters targeting a projection domain
        repository - A TrackableRepository form which to glean entity information for the transformation
        Returns:
        null if filters is null, otherwise an RSQL query suitable for targeting a repository domain object.
        See Also:
        RsqlQueryTransformer