Class DefaultAttachmentManager
- All Implemented Interfaces:
AttachmentManagerInternal,AttachmentManager
AttachmentManager. The storage location of attachments
is not defined, and is handled by the AttachmentDao.-
Constructor Summary
ConstructorsConstructorDescriptionDeprecated.since 5.2, use invalid input: '{@link #DefaultAttachmentManager(AttachmentDaoInternal, ContentEntityObjectDaoInternal<>, EventPublisher, UserPreferencesAccessor, NotificationManager, RelationManager, RetentionFeatureChecker, ContentReconciliationManager, ContentPermissionManager)'}DefaultAttachmentManager(AttachmentDaoInternal attachmentDao, ContentEntityObjectDaoInternal contentEntityObjectDao, com.atlassian.event.api.EventPublisher eventPublisher, UserPreferencesAccessor userPreferencesAccessor, NotificationManager notificationManager, RelationManager relationManager, RetentionFeatureChecker retentionFeatureChecker, ContentReconciliationManager reconciliationManager, ContentPermissionManager contentPermissionManager, PermissionManager permissionManager) -
Method Summary
Modifier and TypeMethodDescriptionvoidcopyAttachment(Attachment attachment, ContentEntityObject destinationContent) Copy specified attachment to specified destination content.voidcopyAttachments(ContentEntityObject sourceContent, ContentEntityObject destinationContent) Copy the latest version of all the attachments on the sourceContent to the destinationContent.voidcopyAttachments(ContentEntityObject sourceContent, ContentEntityObject destinationContent, SaveContext saveContext) Copy the latest version of all the attachments on the sourceContent to the destinationContent.longcountAttachmentsBySpaceAndStatuses(Space space, List<ContentStatus> statuses) This method only count the latest versions of attachments by statuses in a spacelongcountAttachmentsByStatuses(List<ContentStatus> statuses) This method only count the latest versions of attachments by statusesintReturns a count of the number of latest versions of attachmentsintcountLatestVersionsOfAttachmentsOnPageSince(ContentEntityObject content, Date since) Fetches number of attachments changed on a page since a specific timestampintReturns a count of the number of latest versions of attachments (including trashed)voiddeepAttachmentDelete(AttachmentDeleteOptions attachmentDeleteOptions) Support delete multiple attachments in batchfindAttachmentForDownloadPath(String downloadPath) Find anAttachmentfor the givendownloadPath.getAllVersions(Attachment attachment) Get all versions of an attachment, starting with the current versionReturns a list of all attachments, old and new.getAttachment(long id) getAttachment(ContentEntityObject content, String attachmentFileName) Get the most recent version of an attachment with a given name for a particular page.getAttachment(ContentEntityObject content, String attachmentFileName, int version) Retrieve a named attachment from a page.Provides a back door to the underlyingAttachmentDao.getAttachmentData(Attachment attachment) Retrieve the data for attachmentgetAttachmentData(Attachment attachment, Optional<RangeRequest> range) Retrieve the specified range of data for attachmentgetAttachmentDownloadPath(ContentEntityObject content, String attachmentFileName) Get the download path for the most recent version of an attachment with the given name for some contentgetAttachments(List<Long> ids) Returns a list of attachments matching the given list of IDs.Fetches statistics about attachmentsReturns the currently active storage type.getCopier(AttachmentManagerInternal destination) Retrieves a AttachmentDao.AttachmentCopier that will allow the attachments from one data store to be copied across to another.getFilteredAttachments(ContentEntityObject content, LimitedRequest pageRequest, Predicate<? super Attachment> filterPredicate) Returns the current attachments under the CEO.getLastAddedVersionsOf(Attachment attachment) Retrieves all the last added versions for each user who has added a version of the attachment That is, if a user has added multiple versions, only the latest added version will be added to the list returned.Returns a list of only latest versions of attachments.getLatestVersionsOfAttachmentsForMultipleCeos(Iterable<? extends ContentEntityObject> contentEntityObjects) Returns a list of all the latest versions of attachments for all the CEOs providedReturns a list of only latest versions of attachments (including trashed).getLatestVersionsOfAttachmentsWithAnyStatusForContainers(Iterable<? extends ContentEntityObject> contentEntityObjects) Returns a list of all the latest versions of attachments for all the CEOs provided (including trashed)getPreviousVersions(Attachment attachment) Get all non-current versions of an attachment, not including the current version.Gets a list of remapped attachment IDs.voidmoveAttachment(Attachment attachment, ContentEntityObject newContainer) Moves an attachment to a differentContentEntityObjectcontainer.voidmoveAttachment(Attachment latestVersion, String newFileName, ContentEntityObject newContent) voidremoveAttachmentFromServer(Attachment latestVersion) Removes the attachment and all previous versionsvoidremoveAttachments(List<? extends Attachment> attachments) Removes the contents of attachments from the servervoidremoveAttachmentVersionFromServer(Attachment attachment) Removes the given version of the Attachment and its data from the server and data store.voidRemoves the given version of the Attachment and its data from the server and data store while suppressing notifications.voidremoveAttachmentWithoutNotifications(Attachment latestVersion) Removes an Attachment and its data from the server while suppressing notifications.voidrestore(Attachment attachment) Restores an attachment from trash.voidsaveAttachment(Attachment attachment, Attachment previousVersion, InputStream attachmentData) Saves an Attachment and its datavoidsaveAttachment(Attachment attachment, Attachment previousVersion, InputStream attachmentData, SaveContext saveContext) Saves an Attachment and its data, taking aSaveContextto allow more useful event handling.voidsaveAttachments(List<SavableAttachment> savableAttachments) Saves multiple attachment and their datavoidsaveAttachments(List<SavableAttachment> savableAttachments, SaveContext saveContext) Saves multiple attachment and their dataprotected final voidsaveNewAttachment(Attachment attachment, InputStream attachmentData, SaveContext saveContext) protected final voidsaveNewAttachmentVersion(Attachment attachment, Attachment previousVersion, InputStream attachmentData, SaveContext saveContext) @NonNull PageResponse<Attachment> scanFilteredAttachments(Space space, List<ContentStatus> statuses, LimitedRequest pageRequest, Predicate<? super Attachment>... filter) Retrieves all the existing attachments associated with the instance of Confluence, while applying the specified pagination parameters to limit the number of results returned in each request.@NonNull PageResponse<Attachment> scanFilteredAttachments(List<ContentStatus> statuses, LimitedRequest pageRequest, Predicate<? super Attachment>... filter) Retrieves all the current attachments within the specified space, with the results limited according to the provided pagination parameters.voidsetAttachmentDao(AttachmentDaoInternal attachmentDao) voidsetAttachmentData(Attachment attachment, InputStream attachmentData) Set the data belonging to attachmentvoidtrash(Attachment attachment) Moves an attachment to the trash.
-
Constructor Details
-
DefaultAttachmentManager
public DefaultAttachmentManager(AttachmentDaoInternal attachmentDao, ContentEntityObjectDaoInternal contentEntityObjectDao, com.atlassian.event.api.EventPublisher eventPublisher, UserPreferencesAccessor userPreferencesAccessor, NotificationManager notificationManager, RelationManager relationManager, RetentionFeatureChecker retentionFeatureChecker, ContentReconciliationManager reconciliationManager, ContentPermissionManager contentPermissionManager, PermissionManager permissionManager) - Since:
- 7.16
-
DefaultAttachmentManager
Deprecated.since 5.2, use invalid input: '{@link #DefaultAttachmentManager(AttachmentDaoInternal, ContentEntityObjectDaoInternal<>, EventPublisher, UserPreferencesAccessor, NotificationManager, RelationManager, RetentionFeatureChecker, ContentReconciliationManager, ContentPermissionManager)'}
-
-
Method Details
-
getAttachment
Get the most recent version of an attachment with a given name for a particular page. If the supplied content parameter is not a type which contains attachments (e.g. Comment) then attempt to find the nearest owner that does have attachments.- Specified by:
getAttachmentin interfaceAttachmentManager- Parameters:
content- the page the attachment is attached toattachmentFileName- the filename of the attachment to be retrieved- Returns:
- the appropriate attachment, or null if no such attachment exists
-
getAttachmentDownloadPath
Description copied from interface:AttachmentManagerGet the download path for the most recent version of an attachment with the given name for some content- Specified by:
getAttachmentDownloadPathin interfaceAttachmentManager- Parameters:
content- the content the attachment is attached toattachmentFileName- the filename of the attachment to be retrieved- Returns:
- the appropriate attachment download path, or null if no such attachment exists
-
getAttachment
public Attachment getAttachment(ContentEntityObject content, String attachmentFileName, int version) Retrieve a named attachment from a page. If the supplied content parameter is not a type which contains attachments (e.g. Comment) then attempt to find the nearest owner that does have attachments.- Specified by:
getAttachmentin interfaceAttachmentManager- Parameters:
content- the page the attachment is attached toattachmentFileName- the filename of the attachment to retrieveversion- the version of the attachment to retrieve. If you provide a version of 0 or less, you'll get the most recent version, but you should probably use #getAttachment(AbstractPage, String) instead for that purpose instead- Returns:
- the requested attachment, or null if the requested attachment does not exist.
-
saveAttachment
public void saveAttachment(Attachment attachment, Attachment previousVersion, InputStream attachmentData) throws IOException Description copied from interface:AttachmentManagerSaves an Attachment and its data- Specified by:
saveAttachmentin interfaceAttachmentManager- Parameters:
attachment- the modified version of the AttachmentpreviousVersion- the original version of the Attachment (null if new)attachmentData- an InputStream representing the data of the Attachment- Throws:
IOException
-
saveAttachment
public void saveAttachment(Attachment attachment, Attachment previousVersion, InputStream attachmentData, SaveContext saveContext) throws IOException Description copied from interface:AttachmentManagerSaves an Attachment and its data, taking aSaveContextto allow more useful event handling.- Specified by:
saveAttachmentin interfaceAttachmentManager- Parameters:
attachment- the modified version of the AttachmentpreviousVersion- the original version of the Attachment (null if new)attachmentData- an InputStream representing the data of the AttachmentsaveContext- provides more information about the circumstances of the save- Throws:
IOException
-
saveAttachments
Description copied from interface:AttachmentManagerSaves multiple attachment and their data- Specified by:
saveAttachmentsin interfaceAttachmentManager- Parameters:
savableAttachments- the modified version of the Attachment- Throws:
IOException
-
saveAttachments
public void saveAttachments(List<SavableAttachment> savableAttachments, SaveContext saveContext) throws IOException Description copied from interface:AttachmentManagerSaves multiple attachment and their data- Specified by:
saveAttachmentsin interfaceAttachmentManager- Parameters:
savableAttachments- the modified version of the AttachmentsaveContext- provides more details about saving. If in doubt passDefaultSaveContext.DEFAULT.- Throws:
IOException
-
saveNewAttachment
protected final void saveNewAttachment(Attachment attachment, InputStream attachmentData, SaveContext saveContext) -
saveNewAttachmentVersion
protected final void saveNewAttachmentVersion(Attachment attachment, Attachment previousVersion, InputStream attachmentData, SaveContext saveContext) throws IOException - Throws:
IOException
-
getPreviousVersions
Description copied from interface:AttachmentManagerGet all non-current versions of an attachment, not including the current version. (ordered from most recent)- Specified by:
getPreviousVersionsin interfaceAttachmentManager- Parameters:
attachment- the attachment to get all non-current versions for.
-
getLastAddedVersionsOf
Description copied from interface:AttachmentManagerRetrieves all the last added versions for each user who has added a version of the attachment That is, if a user has added multiple versions, only the latest added version will be added to the list returned. Result will be sorted with the earliest version coming first.- Specified by:
getLastAddedVersionsOfin interfaceAttachmentManager- Parameters:
attachment- attachment (must be the latest version)- Returns:
- the last added versions for each user who has added a version of the attachment
-
getAttachmentData
Description copied from interface:AttachmentManagerRetrieve the data for attachment- Specified by:
getAttachmentDatain interfaceAttachmentManager- Parameters:
attachment- the Attachment the data belongs to- Returns:
- InputStream representing the data
-
getAttachmentData
Description copied from interface:AttachmentManagerRetrieve the specified range of data for attachment- Specified by:
getAttachmentDatain interfaceAttachmentManager- Parameters:
attachment- the Attachment the data belongs torange- the range of data to retrieve. Seeinvalid reference
com.atlassian.filestore.client.api.entity.ByteRanges- Returns:
- InputStream representing the data
-
getLatestVersionsOfAttachments
Description copied from interface:AttachmentManagerReturns a list of only latest versions of attachments.- Specified by:
getLatestVersionsOfAttachmentsin interfaceAttachmentManager
-
getLatestVersionsOfAttachmentsForMultipleCeos
public List<Attachment> getLatestVersionsOfAttachmentsForMultipleCeos(Iterable<? extends ContentEntityObject> contentEntityObjects) Description copied from interface:AttachmentManagerReturns a list of all the latest versions of attachments for all the CEOs provided- Specified by:
getLatestVersionsOfAttachmentsForMultipleCeosin interfaceAttachmentManager- Parameters:
contentEntityObjects-
-
getLatestVersionsOfAttachmentsWithAnyStatusForContainers
public List<Attachment> getLatestVersionsOfAttachmentsWithAnyStatusForContainers(Iterable<? extends ContentEntityObject> contentEntityObjects) Description copied from interface:AttachmentManagerInternalReturns a list of all the latest versions of attachments for all the CEOs provided (including trashed)- Specified by:
getLatestVersionsOfAttachmentsWithAnyStatusForContainersin interfaceAttachmentManagerInternal- Parameters:
contentEntityObjects-
-
getLatestVersionsOfAttachmentsWithAnyStatus
Description copied from interface:AttachmentManagerReturns a list of only latest versions of attachments (including trashed).- Specified by:
getLatestVersionsOfAttachmentsWithAnyStatusin interfaceAttachmentManager
-
getFilteredAttachments
public PageResponse<Attachment> getFilteredAttachments(ContentEntityObject content, LimitedRequest pageRequest, Predicate<? super Attachment> filterPredicate) Description copied from interface:AttachmentManagerInternalReturns the current attachments under the CEO.- Specified by:
getFilteredAttachmentsin interfaceAttachmentManagerInternal- Parameters:
content- the content to return attachments forpageRequest- the pagination requestedfilterPredicate- the predicate for filtering found attachments- Returns:
- the paginated response of Page entities
-
countLatestVersionsOfAttachments
Description copied from interface:AttachmentManagerReturns a count of the number of latest versions of attachments- Specified by:
countLatestVersionsOfAttachmentsin interfaceAttachmentManager
-
countLatestVersionsOfAttachmentsWithAnyStatus
Description copied from interface:AttachmentManagerReturns a count of the number of latest versions of attachments (including trashed)- Specified by:
countLatestVersionsOfAttachmentsWithAnyStatusin interfaceAttachmentManager
-
countLatestVersionsOfAttachmentsOnPageSince
Description copied from interface:AttachmentManagerFetches number of attachments changed on a page since a specific timestamp- Specified by:
countLatestVersionsOfAttachmentsOnPageSincein interfaceAttachmentManager- Parameters:
content- the content objectsince- the date of earliest change- Returns:
- the number of attachments on a content object (including trashed) changed since
-
getAttachmentStatistics
Description copied from interface:AttachmentManagerFetches statistics about attachments- Specified by:
getAttachmentStatisticsin interfaceAttachmentManager- Returns:
- an AttachmentStatisticsDTO object with statistics about attachments such as total and current count
-
deepAttachmentDelete
Description copied from interface:AttachmentManagerSupport delete multiple attachments in batch- Specified by:
deepAttachmentDeletein interfaceAttachmentManager- Parameters:
attachmentDeleteOptions-
-
getAttachment
- Specified by:
getAttachmentin interfaceAttachmentManager- Parameters:
id-- Returns:
- attachment with id
-
getAttachments
Description copied from interface:AttachmentManagerReturns a list of attachments matching the given list of IDs. Returns an empty list if no such attachments exist. In the case where some IDs exist and some don't, only the existing Attachments will be returned.- Specified by:
getAttachmentsin interfaceAttachmentManager- Parameters:
ids- list of IDs to retrieve.- Returns:
- attachments matching ids in the list
-
getAllVersionsOfAttachments
Description copied from interface:AttachmentManagerReturns a list of all attachments, old and new.- Specified by:
getAllVersionsOfAttachmentsin interfaceAttachmentManager
-
getAllVersions
Description copied from interface:AttachmentManagerGet all versions of an attachment, starting with the current version- Specified by:
getAllVersionsin interfaceAttachmentManager
-
removeAttachments
Description copied from interface:AttachmentManagerRemoves the contents of attachments from the server- Specified by:
removeAttachmentsin interfaceAttachmentManager- Parameters:
attachments- a List of Attachments- See Also:
-
removeAttachmentFromServer
Removes the attachment and all previous versions- Specified by:
removeAttachmentFromServerin interfaceAttachmentManager- Parameters:
latestVersion- latest version of the attachment to remove
-
removeAttachmentWithoutNotifications
Description copied from interface:AttachmentManagerRemoves an Attachment and its data from the server while suppressing notifications. This is useful when you don't want to send notifications when removing the file.- Specified by:
removeAttachmentWithoutNotificationsin interfaceAttachmentManager
-
removeAttachmentVersionFromServer
Description copied from interface:AttachmentManagerRemoves the given version of the Attachment and its data from the server and data store.In case of the given attachment being the latest version, the previous version (if any) gets removed and the given object impersonates the previous version as the latest version.
- Specified by:
removeAttachmentVersionFromServerin interfaceAttachmentManager- Parameters:
attachment- the Attachment to remove
-
removeAttachmentVersionFromServerWithoutNotifications
Description copied from interface:AttachmentManagerRemoves the given version of the Attachment and its data from the server and data store while suppressing notifications. This is useful when you don't want to send notifications when removing the file.In case of the given attachment being the latest version, the previous version (if any) gets removed and the given object impersonates the previous version as the latest version.
- Specified by:
removeAttachmentVersionFromServerWithoutNotificationsin interfaceAttachmentManager- Parameters:
attachment- the Attachment to remove
-
moveAttachment
public void moveAttachment(Attachment latestVersion, String newFileName, ContentEntityObject newContent) - Specified by:
moveAttachmentin interfaceAttachmentManager- Parameters:
latestVersion- The attachment to be movednewFileName- New name of the filenewContent- The new contentEntiityObject which will be parent to the attachment
-
moveAttachment
Description copied from interface:AttachmentManagerInternalMoves an attachment to a differentContentEntityObjectcontainer.- Specified by:
moveAttachmentin interfaceAttachmentManagerInternal- Parameters:
attachment- The attachment to be movednewContainer- The new ContentEntiityObject which will be parent to the attachment
-
copyAttachments
public void copyAttachments(ContentEntityObject sourceContent, ContentEntityObject destinationContent, SaveContext saveContext) throws IOException Description copied from interface:AttachmentManagerCopy the latest version of all the attachments on the sourceContent to the destinationContent.- Specified by:
copyAttachmentsin interfaceAttachmentManager- Parameters:
sourceContent- the content with attachments to be copied.destinationContent- the content to copy the attachments to.saveContext- details the circumstances under which the attachments are being copied.- Throws:
IOException- if there are problems reading or writing attachment data during the copy.
-
copyAttachments
public void copyAttachments(ContentEntityObject sourceContent, ContentEntityObject destinationContent) throws IOException Description copied from interface:AttachmentManagerCopy the latest version of all the attachments on the sourceContent to the destinationContent.- Specified by:
copyAttachmentsin interfaceAttachmentManager- Parameters:
sourceContent- the content with attachments to be copied.destinationContent- the content to copy the attachments to.- Throws:
IOException- if there are problems reading or writing attachment data during the copy.
-
copyAttachment
public void copyAttachment(Attachment attachment, ContentEntityObject destinationContent) throws IOException Description copied from interface:AttachmentManagerCopy specified attachment to specified destination content.- Specified by:
copyAttachmentin interfaceAttachmentManager- Parameters:
attachment- the attachmentdestinationContent- the destination- Throws:
IOException
-
setAttachmentData
public void setAttachmentData(Attachment attachment, InputStream attachmentData) throws AttachmentDataExistsException Description copied from interface:AttachmentManagerSet the data belonging to attachmentThis method can be used when there is missing data for an Attachment (e.g. during imports) and the data needs to be set manually.
- Specified by:
setAttachmentDatain interfaceAttachmentManager- Parameters:
attachment- Attachment the data belongs toattachmentData- the data to be saved- Throws:
AttachmentDataExistsException- if data for attachment already exists
-
getCopier
Description copied from interface:AttachmentManagerInternalRetrieves a AttachmentDao.AttachmentCopier that will allow the attachments from one data store to be copied across to another.- Specified by:
getCopierin interfaceAttachmentManagerInternal- Parameters:
destination- the AttachmentManager the data is being copied to- Returns:
- an AttachmentCopier object
-
countAttachmentsByStatuses
Description copied from interface:AttachmentManagerInternalThis method only count the latest versions of attachments by statuses- Specified by:
countAttachmentsByStatusesin interfaceAttachmentManagerInternal- Parameters:
statuses- list ofContentStatus- Returns:
- since 9.2.5
-
countAttachmentsBySpaceAndStatuses
Description copied from interface:AttachmentManagerInternalThis method only count the latest versions of attachments by statuses in a space- Specified by:
countAttachmentsBySpaceAndStatusesin interfaceAttachmentManagerInternal- Parameters:
space- the space which the attachments belong tostatuses- list ofContentStatus- Returns:
- since 9.2.5
-
scanFilteredAttachments
public @NonNull PageResponse<Attachment> scanFilteredAttachments(Space space, List<ContentStatus> statuses, LimitedRequest pageRequest, Predicate<? super Attachment>... filter) Description copied from interface:AttachmentManagerInternalRetrieves all the existing attachments associated with the instance of Confluence, while applying the specified pagination parameters to limit the number of results returned in each request.- Specified by:
scanFilteredAttachmentsin interfaceAttachmentManagerInternal- Parameters:
space- the space to locate attachments instatuses- list of content status which we are interested to fetchpageRequest- the pagination requestedfilter- a Predicate to apply to the results before returning- Returns:
- the paginated response of Attachment entities in the given space
-
scanFilteredAttachments
public @NonNull PageResponse<Attachment> scanFilteredAttachments(List<ContentStatus> statuses, LimitedRequest pageRequest, Predicate<? super Attachment>... filter) Description copied from interface:AttachmentManagerInternalRetrieves all the current attachments within the specified space, with the results limited according to the provided pagination parameters.- Specified by:
scanFilteredAttachmentsin interfaceAttachmentManagerInternal- Parameters:
statuses- list of content status which we are interested to fetchpageRequest- the pagination requestedfilter- a Predicate to apply to the results before returning- Returns:
- the paginated response of Attachment entities in any space
-
getAttachmentDao
Description copied from interface:AttachmentManagerInternalProvides a back door to the underlyingAttachmentDao. Obviously it's better access the DAO directly, so this is deprecated.- Specified by:
getAttachmentDaoin interfaceAttachmentManagerInternal
-
setAttachmentDao
-
getBackingStorageType
Description copied from interface:AttachmentManagerReturns the currently active storage type.- Specified by:
getBackingStorageTypein interfaceAttachmentManager- See Also:
-
findAttachmentForDownloadPath
Description copied from interface:AttachmentManagerFind anAttachmentfor the givendownloadPath.The path must at least contain the segment produced by
Attachment.getDownloadPath(), that is /download/attachments/<contentId>/<fileName> where <contentId> identifies a validContentEntityObjectand <fileName> identifies a validAttachmentattached to thatContentEntityObject.- Specified by:
findAttachmentForDownloadPathin interfaceAttachmentManager- Parameters:
downloadPath- the download path identifying anAttachment.This value is expected to be url encoded, with spaces converted to %20 instead of a '+'- Returns:
- maybe the attachment if the given download path matches the criteria as described above and the referenced objects are known to the system
- See Also:
-
getRemappedAttachmentIds
Description copied from interface:AttachmentManagerGets a list of remapped attachment IDs. The key is the old ID and the value is the new ID.- Specified by:
getRemappedAttachmentIdsin interfaceAttachmentManager- Returns:
- A map where the key is the original ID and the value is the new ID.
-
trash
Description copied from interface:AttachmentManagerMoves an attachment to the trash.- Specified by:
trashin interfaceAttachmentManager- Parameters:
attachment- the attachment to be trashed
-
restore
Description copied from interface:AttachmentManagerRestores an attachment from trash.- Specified by:
restorein interfaceAttachmentManager- Parameters:
attachment- the attachment to restore
-