Class EntityVersioningManagerWithStats

java.lang.Object
com.atlassian.jira.versioning.EntityVersioningManagerWithStats
All Implemented Interfaces:
EntityVersioningManager

public class EntityVersioningManagerWithStats extends Object implements EntityVersioningManager
  • Constructor Details

    • EntityVersioningManagerWithStats

      public EntityVersioningManagerWithStats(VersioningDaoFactory factory, TransactionSupport transactionSupport, com.atlassian.event.api.EventPublisher eventPublisher)
  • Method Details

    • onPluginFrameworkStarted

      @EventListener public void onPluginFrameworkStarted(com.atlassian.plugin.event.events.PluginFrameworkStartedEvent event)
    • onPluginFrameworkShutdown

      @EventListener public void onPluginFrameworkShutdown(com.atlassian.plugin.event.events.PluginFrameworkShutdownEvent event)
    • incrementIssueVersion

      public void incrementIssueVersion(long issueId) throws IncrementDeletedEntityVersionException
      Description copied from interface: EntityVersioningManager
      Increments the version number for the specified issue. If a version number doesn't exist, one is created.
      Specified by:
      incrementIssueVersion in interface EntityVersioningManager
      Parameters:
      issueId - identifier for the issue whose version should be bumped
      Throws:
      IncrementDeletedEntityVersionException - if issueId is related to an issue version which is marked as deleted
    • incrementCommentVersion

      public void incrementCommentVersion(long commentId, long parentIssueId) throws IncrementDeletedEntityVersionException
      Description copied from interface: EntityVersioningManager
      Increments the version number for the specified comment. If a version number doesn't exist, one is created.
      Specified by:
      incrementCommentVersion in interface EntityVersioningManager
      Parameters:
      commentId - identifier for the comment whose version should be bumped
      parentIssueId - identifier for the Issue that the comment belongs to
      Throws:
      IncrementDeletedEntityVersionException - if commentId is related to a deleted comment version which is marked as deleted
    • incrementWorklogVersion

      public void incrementWorklogVersion(long worklogId, long parentIssueId) throws IncrementDeletedEntityVersionException
      Description copied from interface: EntityVersioningManager
      Increments the version number for the specified worklog. If a version number doesn't exist, one is created.
      Specified by:
      incrementWorklogVersion in interface EntityVersioningManager
      Parameters:
      worklogId - identifier for the worklog whose version should be bumped
      parentIssueId - identifier for the Issue that the worklog belongs to
      Throws:
      IncrementDeletedEntityVersionException - if worklogId is related to a deleted worklog version which is marked as deleted
    • incrementRelatedCommentVersions

      public void incrementRelatedCommentVersions(long parentIssueId)
      Description copied from interface: EntityVersioningManager
      Bumps the versions for all comments associated with the specified parentIssueId. If there isn't a version record associated with a given comment, it will be added.
      Specified by:
      incrementRelatedCommentVersions in interface EntityVersioningManager
      Parameters:
      parentIssueId - identifier for the Issue whose comments will be bumped.
    • incrementRelatedWorklogVersions

      public void incrementRelatedWorklogVersions(long parentIssueId)
      Description copied from interface: EntityVersioningManager
      Bumps the versions for all worklogs associated with the specified parentIssueId. If there isn't a version record associated with a given worklog, it will be added.
      Specified by:
      incrementRelatedWorklogVersions in interface EntityVersioningManager
      Parameters:
      parentIssueId - identifier for the Issue whose worklogs will be bumped.
    • markIssueDeletedAndIncrementVersion

      public void markIssueDeletedAndIncrementVersion(long issueId)
      Description copied from interface: EntityVersioningManager
      Marks the specified issue and all its related comments and worklogs as deleted bumps their versions by 1.
      Specified by:
      markIssueDeletedAndIncrementVersion in interface EntityVersioningManager
      Parameters:
      issueId - identifier for issue and all its related comments and worklogs to mark as deleted & whose version number to bump
    • markCommentDeletedAndIncrementVersion

      public void markCommentDeletedAndIncrementVersion(long commentId)
      Description copied from interface: EntityVersioningManager
      Marks the specified comment as deleted and bumps its version by 1.
      Specified by:
      markCommentDeletedAndIncrementVersion in interface EntityVersioningManager
      Parameters:
      commentId - identifier for comment to mark as deleted & whose version number to bump
    • markWorklogDeletedAndIncrementVersion

      public void markWorklogDeletedAndIncrementVersion(long worklogId)
      Description copied from interface: EntityVersioningManager
      Marks the specified worklog as deleted and bumps its version by 1.
      Specified by:
      markWorklogDeletedAndIncrementVersion in interface EntityVersioningManager
      Parameters:
      worklogId - identifier for worklog to mark as deleted & whose version number to bump
    • getIssueVersion

      public Optional<Long> getIssueVersion(long issueId)
      Description copied from interface: EntityVersioningManager
      Return the issue version for the issue identified by issueId or Optional.empty() if there is no version.
      Specified by:
      getIssueVersion in interface EntityVersioningManager
      Parameters:
      issueId - identifies the issue whose current version will be retrieved
      Returns:
      An optional containing the current version for the specified issue; an empty optional if no version is found.
    • getIssueEntityVersion

      public Optional<EntityVersion> getIssueEntityVersion(long issueId)
      Description copied from interface: EntityVersioningManager
      Return the issue version for the issue identified by issueId, Optional.empty() if there is no version or EntityVersioningManager.NO_OP_ENTITY_VERSION an implementation not using a real data source is used.
      Specified by:
      getIssueEntityVersion in interface EntityVersioningManager
      Parameters:
      issueId - identifies the issue whose current version will be retrieved
      Returns:
      An optional containing the current version for the specified issue; an empty optional if no version is found; EntityVersioningManager.NO_OP_ENTITY_VERSION if an implementation not using a real data source is used.
    • getCommentVersion

      public Optional<Long> getCommentVersion(long commentId)
      Description copied from interface: EntityVersioningManager
      Return the comment version for the comment identified by commentId or Optional.empty() if there is no version.
      Specified by:
      getCommentVersion in interface EntityVersioningManager
      Parameters:
      commentId - identifies the comment whose current version will be retrieved
      Returns:
      An optional containing the current version for the specified comment; an empty optional if no version is found.
    • getCommentEntityVersion

      public Optional<EntityVersion> getCommentEntityVersion(long commentId)
      Description copied from interface: EntityVersioningManager
      Return the comment version for the comment identified by issueId, Optional.empty() if there is no version or EntityVersioningManager.NO_OP_ENTITY_VERSION an implementation not using a real data source is used.
      Specified by:
      getCommentEntityVersion in interface EntityVersioningManager
      Parameters:
      commentId - identifies the comment whose current version will be retrieved
      Returns:
      An optional containing the current version for the specified comment; an empty optional if no version is found; EntityVersioningManager.NO_OP_ENTITY_VERSION if an implementation not using a real data source is used.
    • getWorklogVersion

      public Optional<Long> getWorklogVersion(long worklogId)
      Description copied from interface: EntityVersioningManager
      Return the worklog version for the worklog identified by worklogId or Optional.empty() if there is no version.
      Specified by:
      getWorklogVersion in interface EntityVersioningManager
      Parameters:
      worklogId - identifies the worklog whose current version will be retrieved
      Returns:
      An optional containing the current version for the specified worklog; an empty optional if no version is found.
    • getWorklogEntityVersion

      public Optional<EntityVersion> getWorklogEntityVersion(long worklogId)
      Description copied from interface: EntityVersioningManager
      Return the worklog version for the worklog identified by issueId, Optional.empty() if there is no version or EntityVersioningManager.NO_OP_ENTITY_VERSION an implementation not using a real data source is used.
      Specified by:
      getWorklogEntityVersion in interface EntityVersioningManager
      Parameters:
      worklogId - identifies the worklog whose current version will be retrieved
      Returns:
      An optional containing the current version for the specified worklog; an empty optional if no version is found; EntityVersioningManager.NO_OP_ENTITY_VERSION if an implementation not using a real data source is used.
    • getRelatedCommentVersions

      public Map<Long,Long> getRelatedCommentVersions(long parentIssueId)
      Description copied from interface: EntityVersioningManager
      Return the comment versions for for all comments associated with the specified parentIssueId.
      Specified by:
      getRelatedCommentVersions in interface EntityVersioningManager
      Parameters:
      parentIssueId - identifier for the Issue whose comments will be retrieved
      Returns:
      A map from commentId to comment version; an empty map if no version is found (because no version exists/no comment exists/issue doesn't exist).
    • getRelatedWorklogVersions

      public Map<Long,Long> getRelatedWorklogVersions(long parentIssueId)
      Description copied from interface: EntityVersioningManager
      Return the worklog versions for for all worklogs associated with the specified parentIssueId.
      Specified by:
      getRelatedWorklogVersions in interface EntityVersioningManager
      Parameters:
      parentIssueId - identifier for the Issue whose worklogs will be retrieved
      Returns:
      A map from worklogId to worklog version; an empty map if no version is found (because no version exists/no worklog exists/issue doesn't exist).
    • getLocalVersions

      public Map<Long,Optional<Long>> getLocalVersions(Set<Long> entityIds, IndexDirectoryFactory.Name indexName) throws IOException
      Description copied from interface: EntityVersioningManager
      Returns the corresponding entity version from the specified local lucene index for each of the ids passed in with entityIds in the form of a map of ids to versions. Which local index to retrieve the versions from is determined by indexName.
      Specified by:
      getLocalVersions in interface EntityVersioningManager
      Parameters:
      entityIds - Set of entity ids whose versions we want to look up in the local index referred to by indexName
      indexName - Specifies which local Lucene index the versions should be retrieved from
      Returns:
      A mapping of entity ids to their corresponding versions. The version-values are wrapped in Optionals, with empty values for versions that were not found.
      Throws:
      IOException - if an I/O problem arises when searching the target lucene index
    • cleanAllDeletedEntityVersionsOlderThan

      public long cleanAllDeletedEntityVersionsOlderThan(Duration duration)
      Description copied from interface: EntityVersioningManager
      Removes all entity version records (issues, comments, & worklogs) for entites marked as deleted and older than duration.
      Specified by:
      cleanAllDeletedEntityVersionsOlderThan in interface EntityVersioningManager
      Parameters:
      duration - threshold for deletion; entries marked as deleted and older than this will be removed.
      Returns:
      the number of entity version entries that were removed
    • findEntityVersionsUpdatedInTheLast

      public List<EntityVersion> findEntityVersionsUpdatedInTheLast(IndexDirectoryFactory.Name indexName, Duration duration)
      Description copied from interface: EntityVersioningManager
      Looks up all the entities whose version changed during the last duration amount of time. A data object containing the entity's id, version, whether or not it was deleted, etc. is returned for every entity-version modified since the duration.
      Specified by:
      findEntityVersionsUpdatedInTheLast in interface EntityVersioningManager
      Parameters:
      indexName - which type of entity to get the updated versions for
      duration - how far back in time to look for entity versions that have been updated
      Returns:
      data objects that bundle id, version, delete status, etc.
    • getLatestEntityUpdate

      public Optional<EntityVersion> getLatestEntityUpdate(IndexDirectoryFactory.Name indexName)
      Description copied from interface: EntityVersioningManager
      Looks up the Version & related info for the most recently modified entity version. Deleted entity versions are also considered as part of this calculation.
      Specified by:
      getLatestEntityUpdate in interface EntityVersioningManager
      Parameters:
      indexName - which type of entity to get the latest update for
      Returns:
      An Optional wrapping the most recent update for any entity version or an empty Optional if no versions are present.