Class DefaultWorkflowMapper

java.lang.Object
com.broadleafcommerce.data.tracking.core.mapping.DefaultWorkflowMapper
All Implemented Interfaces:
WorkflowMapper

public class DefaultWorkflowMapper extends Object implements WorkflowMapper
Author:
Jeff Fischer
  • Constructor Details

    • DefaultWorkflowMapper

      public DefaultWorkflowMapper(com.broadleafcommerce.common.extension.TypeFactory factory, TrackableBehaviorUtil behaviorUtil, List<ChangeTransformer> changeTransformers, org.modelmapper.ModelMapper cloneMapper)
  • Method Details

    • rebaseMap

      public Trackable rebaseMap(Trackable original, Trackable target, WorkflowRebaseRequest request)
      Description copied from interface: WorkflowMapper
      Update an original item with ChangeDetail state from a target that is missing in the original. Then, re-apply unpromoted changes from the original on top (possibly squashing the effect of one or more of the inherited changes from target). This is generally useful for bringing a user state up-to-date with changes in a target state. The missing changes were presumably introduced by another process (usually promotes from another user).
      Specified by:
      rebaseMap in interface WorkflowMapper
      Parameters:
      original - The less advanced item that is missing changes
      target - The more advanced item that contains changes not already in the original
      request - The specific rebase request
      Returns:
      The new state for the original with the changes applied. This state still needs to be persisted in order to overwrite the current original datastore state.
    • promoteMap

      public ForwardMapResponse promoteMap(Trackable original, Trackable target, WorkflowPromoteRequest request)
      Description copied from interface: WorkflowMapper
      Transfer state (via ChangeDetail between an original item and a target item. If the target is null (as is the case with OperationType.CREATE original items), a clone of the original is created whose target level status is set to the targetSandboxId, targetLevel and targetStage defined in the PromotionRequest param.
      Specified by:
      promoteMap in interface WorkflowMapper
      Parameters:
      original - The item containing the changes to transfer
      target - The item receiving the changes. Can be null, in which case a clone of the original is made
      request - Contains the target state information used to inform the target state
      Returns:
      A response object containing information about the result of the promotion operation.
    • deployMap

      public ForwardMapResponse deployMap(Trackable original, Trackable target, WorkflowDeployRequest request, String propagationId)
      Description copied from interface: WorkflowMapper
      Transfer state (via ChangeDetail between an original item and the target production state. If the target is null (as is the case with OperationType.CREATE original items), a clone of the original is created whose target level status is set to TrackingLevel.PRODUCTION.
      Specified by:
      deployMap in interface WorkflowMapper
      Parameters:
      original - The item containing the changes to transfer
      target - The production item receiving the changes. Can be null, in which case a clone of the original is made
      request - Contains the target state information used to inform the target state
      propagationId - Demarcates one or more specific ChangeDetail instances created during the deploy as viable for propagation.
      Returns:
      A response object containing information about the result of the deployment operation.
    • rejectMap

      public RejectMapResponse rejectMap(Trackable original, Trackable target, WorkflowRejectRequest request)
      Description copied from interface: WorkflowMapper
      Transfer state (via ChangeDetail between a promoted sandbox state item to a new user state item. This occurs when a promoted sandbox state item contains one or more change details related to a promotion that has been rejected, thus sending those specific changes backward. If the promoted state sandbox item contains changes from multiple promotions, then the changes for the rejected promotion are removed and the entity state is updated to reflect. Finally, those changes matching the rejected promotion are applied to a new user sandbox state entity for the change author's review.
      Specified by:
      rejectMap in interface WorkflowMapper
      Parameters:
      original - The current sandbox state of an entity that contains changes from one or more promotions
      target - The user-level item receiving the changes. Can be null, in which case a clone of the original is made
      request - The specific promotion rejection request
      Returns:
      A pair containing the promoted state and the user state. The promoted state may be null if it was entirely rejected.
    • revertMap

      public Trackable revertMap(Trackable original, WorkflowRevertRequest request)
      Description copied from interface: WorkflowMapper
      Update an original TrackingLevel.USER level record to represent a reverted state. This usually involves setting archive values to represent the item is no longer active.
      Specified by:
      revertMap in interface WorkflowMapper
      Parameters:
      original - The item that is being deactivated
      request - The specific revert request
      Returns:
      The resulting state of the archived instance
    • propagateMap

      public Trackable propagateMap(Trackable original, Trackable target, boolean delete, String propagationId)
      Description copied from interface: WorkflowMapper
      Transfer state (via ChangeDetail between an original item and a target item belonging to a parent Catalog and a child Catalog, respectively. Propagation should pay attention to FieldOverride in Tracking.getFieldOverrides() and ignore colliding ChangeDetails.
      Specified by:
      propagateMap in interface WorkflowMapper
      Parameters:
      original - The item containing the changes to transfer
      target - The item receiving the changes
      delete - Whether or not the propagation change is a OperationType.DELETE
      propagationId - Demarcates one or more specific ChangeDetail instances created during the deploy as viable for propagation. Should be the same value passed to WorkflowMapper.deployMap(Trackable, Trackable, WorkflowDeployRequest, String).
      Returns:
      The resulting target state of the repository domain
    • promoteChange

      protected void promoteChange(Trackable original, Trackable target, String promotionId)
      Handle the advancement of changes (non-delete) from a starting object to a target object based on matching promotion id. The advancement is to another sandbox state.
      Parameters:
      original - The starting object
      target - The destination object
      promotionId - The promotion id to match changes on
    • deployChange

      protected void deployChange(Trackable original, Trackable target, String propagationId, String version)
      Handle the advancement of changes (non-delete) from a starting object to a target object. Only changes equal to the version are advanced. The advancement is to the production state.
      Parameters:
      original - The starting object
      target - The destination object
      propagationId - Id used to track changes during a catalog propagation
      version - the change version to advance
    • promoteDelete

      protected void promoteDelete(Trackable original, Trackable target, String promotionId)
      Handle the advancement of a delete change from a starting object to a target object based on matching promotion id. The advancement is to another sandbox.
      Parameters:
      original - The starting object
      target - The destination object
      promotionId - The promotion id to match changes on
    • deployDelete

      protected void deployDelete(Trackable original, Trackable target)
      Handle the advancement of a delete change from a starting object to a target object. The advancement is to the production state.
      Parameters:
      original - The starting object
      target - The destination object
    • applyChanges

      protected void applyChanges(ChangeDetail detail, Trackable target, boolean reverse, boolean addDetail, boolean validateDetailVersion, String explicitVersion)
      Apply a ChangeDetail to a promotion target entity
      Parameters:
      detail - The change to apply
      target - The target entity receiving the field update
      reverse - Whether to reverse and apply the detail before value, or not reverse and apply the after value
      addDetail - Whether or not the detail should be added to the details collection on the target. If you were simply running through existing details to reset values, you would not want to add the details again as you did so, for example.
      validateDetailVersion - Whether or not to check the detail version against any already applied changes for the field. This is useful if you want to make sure that an older version cannot override an already applied newer version. Primarily used during deploy.
      explicitVersion - An indicator of change state for a sandbox entity (see ChangeDetail.getVersion())
    • setAuditUtility

      @Autowired public void setAuditUtility(@Nullable BasicAuditUtility auditUtility)
    • setPropagationHelperUtility

      @Autowired public void setPropagationHelperUtility(PropagationHelperUtility propagationHelperUtility)
    • getPropagationHelperUtility

      protected PropagationHelperUtility getPropagationHelperUtility()