Class BaseCrudEntityService<P>

java.lang.Object
com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P>
Type Parameters:
P - The business domain type
All Implemented Interfaces:
CrudEntityService<P>
Direct Known Subclasses:
BaseRsqlCrudEntityService, DefaultCommonApplicationService, DefaultCommonCatalogService

public class BaseCrudEntityService<P> extends Object implements CrudEntityService<P>
Real-world service implementations of CrudEntityService can extend from this class as a convenience to inherit CRUD behavior for a particular business domain type. By default, this class in turn defers to CrudEntityHelper in order to allow easier refactoring of core functionality.

If a service implementation spans several repository types, then it is recommended to inject the CrudEntityHelper rather than extend this class.

Author:
Nathan Moore (nathandmoore)
  • Constructor Details

  • Method Details

    • setSortPositionStrategy

      @Autowired public void setSortPositionStrategy(@Nullable SortPositionStrategy<P> sortPositionStrategy)
    • readByContextId

      public P readByContextId(@NonNull String id, @Nullable ContextInfo context)
      Description copied from interface: CrudEntityService
      Read a single instance of an entity in the form of a business domain.
      Specified by:
      readByContextId in interface CrudEntityService<P>
      Parameters:
      id - The context id for the entity. This is the id by which the business recognizes the item.
      context - Context information used to discriminate the correct version of an entity by context id when multiple verions may be available across sandboxes, catalogs and applications.
      Returns:
      The narrowed entity instance in the form of a business instance
    • readAllByContextId

      public Iterable<P> readAllByContextId(@NonNull Iterable<String> ids, @Nullable ContextInfo context)
      Description copied from interface: CrudEntityService
      Retrieve all business instances based on a list of context ids.
      Specified by:
      readAllByContextId in interface CrudEntityService<P>
      Parameters:
      ids - A list of context ids for the entitys. This is the id by which the business recognizes the item.
      context - Context information used to discriminate the correct version of an entity by context id when multiple verions may be available across sandboxes, catalogs and applications.
      Returns:
      The narrowed iterable collection of data in the form of business instances
    • readAll

      public org.springframework.data.domain.Page<P> readAll(@NonNull org.springframework.data.domain.Pageable pageable, @Nullable ContextInfo context)
      Description copied from interface: CrudEntityService
      Read a page of narrowed instances in the form of the business instance.
      Specified by:
      readAll in interface CrudEntityService<P>
      Parameters:
      pageable - The current page information
      context - Context information used to discriminate the correct version of an entity by context id when multiple verions may be available across sandboxes, catalogs and applications.
      Returns:
      The narrowed page of data in the form of business instances
    • readAll

      public List<P> readAll(@Nullable ContextInfo context)
      Description copied from interface: CrudEntityService
      Read a list of narrowed instances in the form of the business instance.
      Specified by:
      readAll in interface CrudEntityService<P>
      Parameters:
      context - Context information used to discriminate the correct version of an entity by context id when multiple verions may be available across sandboxes, catalogs and applications.
      Returns:
      The narrowed list of data in the form of business instances
    • readAll

      public List<P> readAll(@NonNull org.springframework.data.domain.Sort sort, @Nullable ContextInfo context)
      Description copied from interface: CrudEntityService
      Read a list of narrowed instances in the form of the business instance. Also apply the given sort.
      Specified by:
      readAll in interface CrudEntityService<P>
      Parameters:
      sort - The sort to be performed on the results
      context - Context information used to discriminate the correct version of an entity by context id when multiple verions may be available across sandboxes, catalogs and applications.
      Returns:
      The narrowed list of sorted data in the form of business instances
    • update

      public P update(@NonNull String id, @NonNull P businessInstance, @Nullable ContextInfo context)
      Description copied from interface: CrudEntityService
      Update a single, narrowed instance of an entity based on a business instance containing relevant property values. See TrackableRepository for more information on entity persistence behavior in light of sandboxing and multitenant concerns.
      Specified by:
      update in interface CrudEntityService<P>
      Parameters:
      id - The context id for the entity. This is the id by which the business recognizes the item.
      businessInstance - The payload type that domain class should be converted to. In general, the payload is what the rest API responds with.
      context - Context information used to discriminate the correct version of an entity by context id when multiple verions may be available across sandboxes, catalogs and applications.
      Returns:
      The updated, narrowed entity instance in the form of a payload instance, or EntityMissingException if not available.
      See Also:
    • updateAll

      public List<P> updateAll(@NonNull List<Update<P>> updates, @Nullable ContextInfo context)
      Description copied from interface: CrudEntityService
      A bulk operation that updates all of the items managed by the backing repository in the form of the business entity containing property values.

      All items contained within updates must exist in the backing repository and pass validation, else the entire batch will fail

      For an alternative that allows partial success, see CrudEntityService.updateAllAllowingPartialSuccess(List, ContextInfo).

      Specified by:
      updateAll in interface CrudEntityService<P>
      Parameters:
      updates - each update to the repository domain
      context - Context information used to discriminate the correct version of an entity by context id when multiple verions may be available across sandboxes, catalogs and applications.
      Returns:
      all of the updated, narrowed entity instance in the form of a payload instance, or EntityMissingException if not available.
      See Also:
    • updateAllAllowingPartialSuccess

      public BulkPersistenceResponse<P> updateAllAllowingPartialSuccess(List<Update<P>> updates, ContextInfo context)
      Description copied from interface: CrudEntityService
      Updates all of the items managed by the backing repository in the form of the business instances containing property values.

      Each item contained within updates must exist in the backing repository and pass validation, or it will be added to the failed list in the response and not persisted. All successfully found and validated items will be persisted.

      For an alternative that does not allow partial success, see CrudEntityService.updateAll(List, ContextInfo).

      Specified by:
      updateAllAllowingPartialSuccess in interface CrudEntityService<P>
      Parameters:
      updates - each update to the repository domain
      context - Context information used to discriminate the correct version of an entity by context id when multiple verions may be available across sandboxes, catalogs and applications.
      Returns:
      a response containing a list of any entities which failed, and a list of the successfully updated, narrowed entity instances in the form of a payload instance
      See Also:
    • updateSort

      public P updateSort(@NonNull SortPositionRequest sortPositionRequest, @Nullable ContextInfo context)
      Description copied from interface: CrudEntityService
      Apply a sort field value change
      Specified by:
      updateSort in interface CrudEntityService<P>
      Parameters:
      sortPositionRequest - Information about the item being moved and the position to which it's moving
      context - ontext information used to discriminate the correct version of an entity by context id when multiple verions may be available across sandboxes, catalogs and applications.
      Returns:
      The updated business domain
    • replace

      public P replace(@NonNull String id, @NonNull P businessInstance, @Nullable ContextInfo context)
      Description copied from interface: CrudEntityService
      Replace a single, narrowed instance of an entity based on a business instance containing relevant property values.
      Specified by:
      replace in interface CrudEntityService<P>
      Parameters:
      id - The context id for the entity. This is the id by which the business recognizes the item.
      businessInstance - The payload type that domain class should be converted to. In general, the payload is what the rest API responds with.
      context - Context information used to discriminate the correct version of an entity by context id when multiple verions may be available across sandboxes, catalogs and applications.
      Returns:
      The replaced, narrowed entity instance in the form of a payload instance, or EntityMissingException if not available.
      See Also:
    • replaceAll

      public List<P> replaceAll(List<Update<P>> replacements, ContextInfo context)
      Description copied from interface: CrudEntityService
      Replace multiple narrowed instances of an entity at once based on the business instance containing relevant property values.

      All items contained within replacements must exist in the backing repository and pass validation, else the entire batch will fail

      See CrudEntityService.replaceAllAllowingPartialSuccess(List, ContextInfo) for an alternative that allows partial success.

      Specified by:
      replaceAll in interface CrudEntityService<P>
      Parameters:
      replacements - all replacements to the repository domain
      context - Context information used to discriminate the correct version of an entity by context id when multiple verions may be available across sandboxes, catalogs and applications.
      Returns:
      all of the replaced, narrowed entity instances in the form of a payload instance, or EntityMissingException if any of the items were not found
      See Also:
    • replaceAllAllowingPartialSuccess

      public BulkPersistenceResponse<P> replaceAllAllowingPartialSuccess(List<Update<P>> replacements, ContextInfo context)
      Description copied from interface: CrudEntityService
      Replace multiple narrowed instances of an entity at once based on the business instances containing relevant property values.

      Each item contained within replacements must exist in the backing repository and pass validation, or it will be added to the failed list in the response and not persisted. All successfully found and validated items will be persisted.

      See CrudEntityService.replaceAll(List, ContextInfo) for an alternative that does not allow partial success.

      Specified by:
      replaceAllAllowingPartialSuccess in interface CrudEntityService<P>
      Parameters:
      replacements - all replacements to the repository domain
      context - Context information used to discriminate the correct version of an entity by context id when multiple verions may be available across sandboxes, catalogs and applications.
      Returns:
      a response containing a list of any entities which failed, and a list of the successfully replaced, narrowed entity instances in the form of a payload instance
      See Also:
    • create

      public P create(@NonNull P businessInstance, @Nullable ContextInfo context)
      Description copied from interface: CrudEntityService
      Create an instance of an entity based on a business instance containing relavant property values.
      Specified by:
      create in interface CrudEntityService<P>
      Parameters:
      businessInstance - The business domain instance. In general, the DomainMapperManager is responsible for converting to a repository platform type for persistence.
      context - Context information used to discriminate the correct version of an entity by context id when multiple verions may be available across sandboxes, catalogs and applications.
      Returns:
      The new entity instance in the form of a business type instance.
      See Also:
    • createAll

      public List<P> createAll(@NonNull List<P> businessInstances, @Nullable ContextInfo context)
      Description copied from interface: CrudEntityService
      Create multiple narrowed instances of an entity at once based on the business instances containing relevant property values.

      All items contained within businessInstances must pass validation, else the entire batch will fail.

      See CrudEntityService.createAllAllowingPartialSuccess(List, ContextInfo) for an alternative where partial success is allowed.

      Specified by:
      createAll in interface CrudEntityService<P>
      Parameters:
      businessInstances - all instances to create in the data store
      context - Context information used to discriminate the correct version of an entity by context id when multiple versions may be available across sandboxes, catalogs and applications.
      Returns:
      all of the created, narrowed entity instances in the form of a payload instance
      See Also:
    • createAllAllowingPartialSuccess

      public BulkPersistenceResponse<P> createAllAllowingPartialSuccess(List<P> businessInstances, ContextInfo context)
      Description copied from interface: CrudEntityService
      Creates multiple narrowed instances of an entity at once based on the business instances containing relevant property values.

      Each item contained within businessInstances will be validated, and if it fails validation, it will be added to the failed list in the response and not persisted. All successfully validated items will be persisted.

      See CrudEntityService.createAll(List, ContextInfo) for an alternative that does not allow partial success.

      Specified by:
      createAllAllowingPartialSuccess in interface CrudEntityService<P>
      Parameters:
      businessInstances - all instances to create in the data store
      context - Context information used to discriminate the correct version of an entity by context id when multiple versions may be available across sandboxes, catalogs and applications.
      Returns:
      a response containing a list of any entities which failed, and a list of the successfully created, narrowed entity instances in the form of a payload instance
      See Also:
    • delete

      public void delete(@NonNull String id, @Nullable ContextInfo context)
      Description copied from interface: CrudEntityService
      Perform a delete operation on the entity identified by the context id. This could result in an archival, or a raw delete, depending on the result of processing through DomainMapper.deleteMap(Object, ContextInfo).
      Specified by:
      delete in interface CrudEntityService<P>
      Parameters:
      id - The context id for the entity. This is the id by which the business recognizes the item.
      context - Context information used to discriminate the correct version of an entity by context id when multiple verions may be available across sandboxes, catalogs and applications.
    • convertFromPersistentDomain

      protected P convertFromPersistentDomain(Trackable domain, ContextInfo contextInfo)
    • convertToPersistentDomain

      protected Trackable convertToPersistentDomain(P businessInstance, Class<Trackable> persistentType, ContextInfo contextInfo)
    • getRepository

      @NonNull protected TrackableRepository<Trackable> getRepository()
    • getHelper

      @NonNull protected CrudEntityHelper getHelper()
    • getSortPositionStrategy

      @NonNull protected SortPositionStrategy<P> getSortPositionStrategy()