Interface CustomizedChangeSummaryRepository<D>

All Superinterfaces:
com.broadleafcommerce.common.extension.DomainTypeAware
All Known Subinterfaces:
ChangeSummaryRepository<D>, JpaChangeSummaryRepository<D>
All Known Implementing Classes:
JpaCustomizedChangeSummaryRepository

public interface CustomizedChangeSummaryRepository<D> extends com.broadleafcommerce.common.extension.DomainTypeAware
Additional persistence operations to perform on ChangeSummary repository domain.
Author:
Chad Harchar (charchar), Jeff Fischer
  • Method Details

    • readByIdAndArchivedNot

      @Policy(operationTypes=READ) Optional<D> readByIdAndArchivedNot(String id, boolean archived, boolean vendorNarrowing, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Takes ChangeSummary.getArchived() into account when retrieving a group with the given ID.
      Parameters:
      id - ID of the group to retrieve
      archived - ChangeSummary.getArchived() value to not match
      vendorNarrowing - whether or not to filter results based on the current authentication's vendor restrictions if vendor processing is enabled
      contextInfo - context information about sandboxing and multitenant state
      Returns:
      A ChangeSummary matching the given ID and not matching the given archived status.
    • findChangeSummary

      @Policy(operationTypes=READ) Optional<D> findChangeSummary(ChangeSummaryRequest changeSummaryRequest)
      Find an existing record with the corresponding matching values that determine uniqueness.
      Parameters:
      changeSummaryRequest - Request DTO to find a matching change summary
      Returns:
      an optional matching record
    • findChangeSummaryId

      @Policy(operationTypes=READ) Optional<String> findChangeSummaryId(ChangeSummaryRequest changeSummaryRequest)
      Find an existing record id with the corresponding matching values that determine uniqueness.
      Parameters:
      changeSummaryRequest - Request DTO to find a matching change summary
      Returns:
      an optional matching record id
    • findIdsByTransitionMarker

      @Policy(operationTypes=READ) List<String> findIdsByTransitionMarker(String transitionMarker)
      Find all the ids for change summaries whose transition marker field matches
      Parameters:
      transitionMarker - A marker id representing a transition
      Returns:
      All the ids for change summaries whose transition marker field matches
    • findChangeSummariesByAuthor

      @Deprecated @Policy(operationTypes=READ) Stream<D> findChangeSummariesByAuthor(String author, String sandbox, String state, @Nullable List<String> status, @Nullable List<String> ids)
      Find all records belonging to the current author, sandbox and ChangeState
      Parameters:
      author - ChangeSummary.getAuthor()
      sandbox - ChangeSummary.getSandbox()
      state - ChangeSummary.getState()
      status - Optional ChangeSummary.getStatus()
      ids - Optional list of ids to filter by
      Returns:
      A Stream that can be iterated, possibly containing a large number or records or an empty stream if none found.
    • findChangeSummariesByAuthor

      @Policy(operationTypes=READ) Stream<D> findChangeSummariesByAuthor(String author, String sandbox, String state, @Nullable List<String> status, @Nullable List<String> ids, boolean vendorNarrowing, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Find all records belonging to the current author, sandbox and ChangeState
      Parameters:
      author - ChangeSummary.getAuthor()
      sandbox - ChangeSummary.getSandbox()
      state - ChangeSummary.getState()
      status - Optional ChangeSummary.getStatus()
      ids - Optional list of ids to filter by
      vendorNarrowing - whether or not to filter results based on the current authentication's vendor restrictions if vendor processing is enabled
      contextInfo - context information about sandboxing and multitenant state
      Returns:
      A Stream that can be iterated, possibly containing a large number or records or an empty stream if none found.
    • findChangeSummaryIdsByAuthor

      @Policy(operationTypes=READ) List<String> findChangeSummaryIdsByAuthor(@NonNull @NonNull String author, @NonNull @NonNull String sandbox, @NonNull @NonNull String state, @Nullable List<String> status, @Nullable List<String> ids)
      Find all record ids belonging to the current author, sandbox and ChangeState
      Parameters:
      author - ChangeSummary.getAuthor()
      sandbox - ChangeSummary.getSandbox()
      state - ChangeSummary.getState()
      status - Optional ChangeSummary.getStatus()
      ids - Optional list of ids to filter by
      Returns:
      list of ids
    • findChangeSummariesByIds

      @Deprecated @Policy(operationTypes=READ) Stream<D> findChangeSummariesByIds(List<String> changeSummaryIds, List<String> states, @Nullable List<String> statuses, String sandbox)
      Find all records in the list of ids that also have the requested state.
      Parameters:
      changeSummaryIds - The requested list of ChangeSummary.getId(), cannot be empty
      states - the required matching state ChangeSummary.getState(), cannot be empty
      statuses - optional ChangeSummary.getStatus() to filter by
      sandbox - sandbox to filter records by, cannot be null
      Returns:
      A Stream that can be iterated, possibly containing a large number or records or an empty stream if none found
      Throws:
      IllegalArgumentException - if changeSummaryIds or states is empty
    • findChangeSummariesByIds

      @Policy(operationTypes=READ) Stream<D> findChangeSummariesByIds(List<String> changeSummaryIds, List<String> states, @Nullable List<String> statuses, String sandbox, boolean vendorNarrowing, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Find all records in the list of ids that also have the requested state.
      Parameters:
      changeSummaryIds - The requested list of ChangeSummary.getId(), cannot be empty
      states - the required matching state ChangeSummary.getState(), cannot be empty
      statuses - optional ChangeSummary.getStatus() to filter by
      sandbox - sandbox to filter records by, cannot be null
      vendorNarrowing - whether or not to filter results based on the current authentication's vendor restrictions if vendor processing is enabled
      contextInfo - context information about sandboxing and multitenant state
      Returns:
      A Stream that can be iterated, possibly containing a large number or records or an empty stream if none found
      Throws:
      IllegalArgumentException - if changeSummaryIds or states is empty
    • findChangeSummariesByIds

      @Deprecated @Policy(operationTypes=READ) Stream<D> findChangeSummariesByIds(List<String> changeSummaryIds)
      Deprecated.
      Find all records in the list of ids
      Parameters:
      changeSummaryIds - The requested list of ChangeSummary.getId(), cannot be empty
      Returns:
      A Stream that can be iterated, possibly containing a large number or records or an empty stream if none found
      Throws:
      IllegalArgumentException - if changeSummaryIds is empty
    • findChangeSummariesByIds

      @Policy(operationTypes=READ) Stream<D> findChangeSummariesByIds(List<String> changeSummaryIds, boolean vendorNarrowing, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Find all records in the list of ids
      Parameters:
      changeSummaryIds - The requested list of ChangeSummary.getId(), cannot be empty
      vendorNarrowing - whether to filter results based on the current authentication's vendor restrictions if vendor processing is enabled
      contextInfo - context information about sandboxing and multitenant state
      Returns:
      A Stream that can be iterated, possibly containing a large number or records or an empty stream if none found
      Throws:
      IllegalArgumentException - if changeSummaryIds is empty
    • findChangeSummariesByIdsCount

      @Policy(operationTypes=READ) Long findChangeSummariesByIdsCount(List<String> changeSummaryIds, List<String> states, @Nullable List<String> statuses, @NonNull @NonNull String sandbox)
      Find the count of all records in the list of ids that also have the requested state.
      Parameters:
      changeSummaryIds - The requested list of ChangeSummary.getId(), cannot be empty
      states - the required matching state ChangeSummary.getState(), cannot be empty
      statuses - optional ChangeSummary.getStatus() to filter by
      sandbox - sandbox to filter records by, cannot be null
      Returns:
      A Stream that can be iterated, possibly containing a large number or records or an empty stream if none found
      Throws:
      IllegalArgumentException - if changeSummaryIds or states is empty
    • findIndexableChangeSummariesByIds

      @Policy(operationTypes=READ) List<BatchIndexable> findIndexableChangeSummariesByIds(List<String> changeSummaryIds, List<String> states, @Nullable List<String> status, int limit)
      Find all records in the list of ids that also have the requested state and have not been acknowledged as indexed. Must be related to an Indexable entity to qualify.
      Parameters:
      changeSummaryIds - The requested list of ChangeSummary.getId(), cannot be empty
      states - the required matching state ChangeSummary.getState(), cannot be empty
      status - optional ChangeSummary.getStatus() to filter by
      limit - the max amount of records to return
      Returns:
      The list of records
    • findIndexableChangeSummariesByIdsCount

      @Policy(operationTypes=READ) long findIndexableChangeSummariesByIdsCount(List<String> changeSummaryIds, List<String> states, @Nullable List<String> status)
      Find the count of all records in the list of ids that also have the requested state and have not been acknowledged as indexed. Must be related to an Indexable entity to qualify.
      Parameters:
      changeSummaryIds - The requested list of ChangeSummary.getId(), cannot be empty
      states - the required matching state ChangeSummary.getState(), cannot be empty
      status - optional ChangeSummary.getStatus() to filter by
      Returns:
      The count of matching records
    • findDivergentChangeSummariesByIds

      @Policy(operationTypes=READ) List<String> findDivergentChangeSummariesByIds(List<String> changeSummaryIds, String sandbox)
      Find all identified records belonging to the current sandbox containing one or more ChangeDetail values for which there is an unknown change already promoted by another user.
      Parameters:
      changeSummaryIds - The requested list of ChangeSummary.getId(), cannot be empty
      sandbox - The sandbox for which change summaries should be filtered
      Returns:
      The list of divergent ChangeSummary.getId() values, or an empty stream if none found
    • findDeployFailedChangeSummaries

      @Policy(operationTypes=READ) Stream<D> findDeployFailedChangeSummaries(String deployId, boolean vendorNarrowing, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Find all records marked with status ERROR_DEPLOY for the requested deployId.
      Parameters:
      deployId - The deployment to which the records are associated
      vendorNarrowing - Whether to filter results based on the current authentication's vendor restrictions if vendor processing is enabled
      contextInfo - Context information about sandboxing and multitenant state
      Returns:
      All records marked with status ERROR_DEPLOY for the requested deployId as a stream
    • save

      @Policy(operationTypes=UPDATE) <S extends D> S save(S entity)
    • updateVals

      @Policy(operationTypes=UPDATE) boolean updateVals(String changeSummaryId, @Nullable List<String> whereState, @Nullable List<String> whereStatus, @Nullable String messageType, Map<String,Object> vals)

      Update the fields for a record matching the id.

      Calling this method is the same as calling updateVals(String, List, List, String, Map, boolean), but with the insertNotificationStateIfMissing parameter set to false.

      Parameters:
      changeSummaryId - The id requested to mutate
      whereState - The current state of the ChangeSummary to match. Can be empty
      whereStatus - list of status values that a ChangeSummary should match one or more of. Can be empty
      messageType - if some of the vals target a notification state of a certain message type, this value should be supplied to filter to that state. Optional.
      vals - Map of field to value changes to make to the ChangeSummary instance
      Returns:
      Whether or not an update was performed. If no record found matching the id and state, will return false.
    • updateVals

      @Policy(operationTypes=UPDATE) boolean updateVals(String changeSummaryId, @Nullable List<String> whereState, @Nullable List<String> whereStatus, @Nullable String messageType, Map<String,Object> vals, boolean insertNotificationStateIfMissing)
      Update the fields for a record matching the id
      Parameters:
      changeSummaryId - The id requested to mutate
      whereState - The current state of the ChangeSummary to match. Can be empty
      whereStatus - list of status values that a ChangeSummary should match one or more of. Can be empty
      messageType - if some of the vals target a notification state of a certain message type, this value should be supplied to filter to that state. Optional.
      vals - Map of field to value changes to make to the ChangeSummary instance
      insertNotificationStateIfMissing - if vals target a notification state and messageType is provided, this flag determines whether the flow will newly insert the notification state if it does not already exist in the datastore. In other words, when this flag is false, the flow will only try to update an existing notification state with the provided details in vals. When this flag is true, if the update attempt is unsuccessful because the notification state is missing, the flow will attempt to newly insert that state into the datastore.
      Returns:
      Whether or not an update was performed. If no record found matching the id and state, will return false.
      Since:
      Sandbox Service 2.0.6, Sandbox Service 2.1.3, Release Train 2.1.4, Release Train 2.2.0
      See Also:
    • updateVals

      @Policy(operationTypes=UPDATE) void updateVals(@NonNull @NonNull List<String> changeSummaryIds, @Nullable String whereState, @Nullable List<String> whereStatus, @NonNull @NonNull Map<String,Object> vals)
      Update the fields for all non-archived records matching the ids
      Parameters:
      changeSummaryIds - The ids requested to mutate
      whereState - The current state of the ChangeSummary to match. Optional.
      whereStatus - list of status values that a ChangeSummary should match one or more of. Optional.
      vals - Map of field to value changes to make to the ChangeSummary instance
    • updateVals

      @Policy(operationTypes=UPDATE) void updateVals(@NonNull @NonNull List<String> changeSummaryIds, @Nullable List<String> whereState, @Nullable List<String> whereStatus, @NonNull @NonNull Map<String,Object> vals)
      Update the fields for multiple records matching the ids
      Parameters:
      changeSummaryIds - The ids requested to mutate
      whereState - The valid ChangeState value for which ChangeSummary.getState() should match
      whereStatus - The list of ChangeStatusType values for which ChangeSummary.getStatus() should match one or more of. Can be empty to indicate no filtration
      vals - Map of field to value changes to make to the ChangeSummary instance
      Throws:
      IllegalArgumentException - if vals is empty
    • batchTransition

      @Policy(operationTypes=UPDATE) void batchTransition(SummaryBasedFlushContext flushContext)
      Given a PromoteBatchFlushContext containing ChangeSummary transition information, update the state of all change summaries in a batch transaction.
      Parameters:
      flushContext - Context object containing all change summary transition to batch commit
    • batchTransition

      @Policy(operationTypes=UPDATE) void batchTransition(StateChangeOnlyBatchFlushContext flushContext)
      Given a StateChangeOnlyBatchFlushContext containing ChangeSummaryGroup and ChangeSummary state change information, perform a batch update of the prescribed state. This does not involved changes to notification states and does not result in state related to sending messages.
      Parameters:
      flushContext - Context containing ChangeSummaryGroup and ChangeSummary state change information
    • changesOwnedByAuthor

      @Policy(operationTypes=READ) boolean changesOwnedByAuthor(String author, List<String> changeSummaryIds)
      Whether all the ChangeSummary instances identified by the changeSummaryIds are owned by the requesting author.
      Parameters:
      author - The author making the request. ContextInfo.getAuthor()
      changeSummaryIds - The ids requested to mutate
      Returns:
      Whether all the requested ids belong to ChangeSummary instances owned by the author
    • findSandboxChangeSummaries

      @Deprecated @Policy(operationTypes=READ) List<D> findSandboxChangeSummaries(String changeContainerName, @Nullable String changeContainerId, String sandbox, @Nullable String catalog)
      Find all records with the corresponding matching values in the ChangeState.PROMOTED, ChangeState.APPROVED, or ChangeState.SCHEDULED state.
      Parameters:
      changeContainerName - SandboxChangeContainer.getName()
      changeContainerId - SandboxChangeContainer.getId()
      sandbox - ChangeSummary.getSandbox(). Optional.
      catalog - ChangeCatalogInfo.getContextId(). Optional.
      Returns:
      Find all records with the corresponding matching values in the ChangeState.PROMOTED, ChangeState.APPROVED, or ChangeState.SCHEDULED state
    • findSandboxChangeSummaries

      @Policy(operationTypes=READ) List<D> findSandboxChangeSummaries(String changeContainerName, @Nullable String changeContainerId, String sandbox, @Nullable String catalog, boolean vendorNarrowing, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Find all records with the corresponding matching values in the ChangeState.PROMOTED, ChangeState.APPROVED, or ChangeState.SCHEDULED state.
      Parameters:
      changeContainerName - SandboxChangeContainer.getName()
      changeContainerId - SandboxChangeContainer.getId()
      sandbox - ChangeSummary.getSandbox(). Optional.
      catalog - ChangeCatalogInfo.getContextId(). Optional.
      vendorNarrowing - whether or not to filter results based on the current authentication's vendor restrictions if vendor processing is enabled
      contextInfo - context information about sandboxing and multitenant state
      Returns:
      Find all records with the corresponding matching values in the ChangeState.PROMOTED, ChangeState.APPROVED, or ChangeState.SCHEDULED state
    • findUserChangeSummaries

      @Deprecated @Policy(operationTypes=READ) List<D> findUserChangeSummaries(String changeContainerName, @Nullable String changeContainerId, String author, String sandbox, @Nullable String catalog, boolean scheduled)
      Find all user records with the corresponding matching values.
      Parameters:
      changeContainerName - SandboxChangeContainer.getName()
      changeContainerId - SandboxChangeContainer.getId(). Optional.
      author - ChangeSummary.getAuthor()
      sandbox - ChangeSummary.getSandbox()
      catalog - ChangeCatalogInfo.getContextId(). Optional.
      scheduled - Applies to a user change summary that is in a scheduled for deploy state ChangeState.SCHEDULED. This state can occur during a TransitionRequestManager.promoteDeploy(PromoteSummaries, ContextInfo, String) flow (especially when there was an error during the deployment).
      Returns:
      Find all user records with the corresponding matching values
    • findUserChangeSummaries

      @Policy(operationTypes=READ) List<D> findUserChangeSummaries(String changeContainerName, @Nullable String changeContainerId, String author, String sandbox, @Nullable String catalog, boolean scheduled, boolean vendorNarrowing, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Find all user records with the corresponding matching values.
      Parameters:
      changeContainerName - SandboxChangeContainer.getName()
      changeContainerId - SandboxChangeContainer.getId(). Optional.
      author - ChangeSummary.getAuthor()
      sandbox - ChangeSummary.getSandbox()
      catalog - ChangeCatalogInfo.getContextId(). Optional.
      scheduled - Applies to a user change summary that is in a scheduled for deploy state ChangeState.SCHEDULED. This state can occur during a TransitionRequestManager.promoteDeploy(PromoteSummaries, ContextInfo, String) flow (especially when there was an error during the deployment).
      vendorNarrowing - whether to filter results based on the current authentication's vendor restrictions if vendor processing is enabled
      contextInfo - context information about sandboxing and multitenant state
      Returns:
      Find all user records with the corresponding matching values
    • findDivergentChanges

      @Policy(operationTypes=READ) Map<String,Set<DivergedChange>> findDivergentChanges(@Nullable List<D> summariesToFindDivergencesFor)
      Finds all diverged changes for each of the given summariesToFindDivergencesFor.

      Diverged changes are defined as being the list of changes that have been promoted in advance of a change summary. The base from which the change summary is derived has diverged as a result of these changes detected.

      Parameters:
      summariesToFindDivergencesFor - All the summaries for which diverged changes need to be found. All of these summaries must have the same ChangeSummary.getAuthor() and the same ChangeSummary.getSandbox(). They must also all have an ChangeSummary.getEntityType().
      Returns:
      a map where the key is the ID of a requested summary and the value is the set of diverged changes that were found for it. If there were no diverged changes for a summary, the value for its key will be an empty set. If the input map is empty, the output map will also be empty.
      Throws:
      IllegalArgumentException - if all of the summariesToFindDivergencesFor don't have the same ChangeSummary.getAuthor() and the same ChangeSummary.getSandbox(), or if all of them don't have an ChangeSummary.getEntityType(). (May get translated to InvalidDataAccessApiUsageException.)
    • findAllByAuthorAndSandbox

      @Deprecated @Policy(operationTypes=READ) org.springframework.data.domain.Page<D> findAllByAuthorAndSandbox(String author, String sandbox, @Nullable String[] statuses, org.springframework.data.domain.Pageable page, @Nullable cz.jirutka.rsql.parser.ast.Node filters)
      Find all Change Summaries for the provided author and sandbox.
      Parameters:
      author - the author of the change summaries to return
      sandbox - the sandbox associated to the change summaries to return
      statuses - the list of ChangeStatusType values for which a ChangeSummary.getStatus() should match one of. Optional.
      page - pagination information
      filters - the RSQL Node used to restrict result
      Returns:
      all Change Summaries for the provided author and sandbox and not matching the given archived status
    • findAllByAuthorAndSandbox

      @Policy(operationTypes=READ) org.springframework.data.domain.Page<D> findAllByAuthorAndSandbox(String author, String sandbox, @Nullable String[] statuses, org.springframework.data.domain.Pageable page, @Nullable cz.jirutka.rsql.parser.ast.Node filters, boolean vendorNarrowing, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Find all Change Summaries for the provided author and sandbox.
      Parameters:
      author - the author of the change summaries to return
      sandbox - the sandbox associated to the change summaries to return
      statuses - the list of ChangeStatusType values for which a ChangeSummary.getStatus() should match one of. Optional.
      page - pagination information
      filters - the RSQL Node used to restrict result
      vendorNarrowing - whether or not to filter results based on the current authentication's vendor restrictions if vendor processing is enabled
      contextInfo - context information about sandboxing and multitenant state
      Returns:
      all Change Summaries for the provided author and sandbox and not matching the given archived status
    • findCompletedTempSandboxByExample

      @Policy(operationTypes=READ) @Nullable String findCompletedTempSandboxByExample(String changeSummaryId)
      Based on the example change summary id, check if the change summary refers to a temporary sandbox. Return null if not. If so, find the count of remaining active ChangeSummary instances that also refer to that sandbox. A returned sandbox id indicates all ChangeSummary instances have completed their lifecycle and the sandbox can be archived. If there are still active ChangeSummary instances for the sandbox, null is returned.
      Parameters:
      changeSummaryId - The id of the ChangeSummary to check for temporary sandbox status.
      Returns:
      null if not associated with a temporary sandbox, or some ChangeSummaries are still active against the sandbox. Otherwise, the sandbox id of the Sandbox that can be archived.
    • archiveNotActiveChangeSummariesForSandbox

      @Policy(operationTypes=UPDATE) void archiveNotActiveChangeSummariesForSandbox(String sandboxId)
      Archives the ChangeSummary for the specified sandbox id.
      Parameters:
      sandboxId - the sandbox id associated to the change summaries
      Throws:
      ArchiveChangeSummaryException - if there are ChangeSummary in active state.
      See Also:
    • findArchivedBySandbox

      @Policy(operationTypes=READ) List<D> findArchivedBySandbox(String sandboxId)
      Find all archived ChangeSummary for the provided sandbox id.
      Parameters:
      sandboxId - he sandbox id associated to the change summaries
      Returns:
      the list of archived ChangeSummary
    • hasLastGroupingReference

      @Policy(operationTypes=READ) @Deprecated(forRemoval=true, since="2.0.1") boolean hasLastGroupingReference(String changeSummaryId)
      Deprecated, for removal: This API element is subject to removal in a future version.
      This is a compatibility measure during the transition to DefaultDeployCleanupServices (and friends). See CompletionCleanupProperties.isEnabled().
      Determine if the JpaChangeSummary instance has a lastGroupRelation value.
      Parameters:
      changeSummaryId - The primary key value
      Returns:
      Whether the lastGroupRelation is available