com.atlassian.jira.issue
Interface AttachmentManager

All Known Implementing Classes:
DefaultAttachmentManager

@PublicApi
public interface AttachmentManager

Manages all attachment related tasks in JIRA, which involves retrieving an attachment, creating an attachment and deleting an attachment.


Field Summary
static String THUMBS_SUBDIR
          The name of the issue-specific sub-directory in which its attachment thumbnails are stored.
 
Method Summary
 boolean attachmentsEnabled()
          Determine if attachments have been enabled in JIRA and if the attachments directory exists.
 List<ChangeItemBean> convertTemporaryAttachments(ApplicationUser user, Issue issue, List<Long> selectedAttachments, TemporaryAttachmentsMonitor temporaryAttachmentsMonitor)
          Converts a set of provided temporary attachments to real attachments attached to an issue.
 List<ChangeItemBean> convertTemporaryAttachments(com.atlassian.crowd.embedded.api.User user, Issue issue, List<Long> selectedAttachments, TemporaryAttachmentsMonitor temporaryAttachmentsMonitor)
          Deprecated. Use convertTemporaryAttachments(com.atlassian.jira.user.ApplicationUser, Issue, java.util.List, com.atlassian.jira.web.action.issue.TemporaryAttachmentsMonitor) instead. Since v6.0.
 ChangeItemBean createAttachment(CreateAttachmentParamsBean createAttachmentParamsBean)
          Create an attachment both on disk, and in the database.
 ChangeItemBean createAttachment(File file, String filename, String contentType, com.atlassian.crowd.embedded.api.User author, org.ofbiz.core.entity.GenericValue issue)
          Deprecated. Use createAttachment(File, String, String, User, Issue) instead. Since v5.0.
 ChangeItemBean createAttachment(File file, String filename, String contentType, com.atlassian.crowd.embedded.api.User author, org.ofbiz.core.entity.GenericValue issue, Boolean zip, Boolean thumbnailable, Map<String,Object> attachmentProperties, Date createdTime)
          Deprecated. Use createAttachment(File, String, String, User, Issue, Map, Date) instead. Since v5.0.
 ChangeItemBean createAttachment(File file, String filename, String contentType, com.atlassian.crowd.embedded.api.User author, org.ofbiz.core.entity.GenericValue issue, Map<String,Object> attachmentProperties, Date createdTime)
          Deprecated. Use createAttachment(File, String, String, User, Issue, Map, Date) instead. Since v5.0.
 ChangeItemBean createAttachment(File file, String filename, String contentType, com.atlassian.crowd.embedded.api.User author, Issue issue)
          Deprecated. Use createAttachment(com.atlassian.jira.issue.attachment.CreateAttachmentParamsBean) instead. Since v6.0.
 ChangeItemBean createAttachment(File file, String filename, String contentType, com.atlassian.crowd.embedded.api.User author, Issue issue, Boolean zip, Boolean thumbnailable, Map<String,Object> attachmentProperties, Date createdTime)
          Deprecated. Use createAttachment(com.atlassian.jira.issue.attachment.CreateAttachmentParamsBean) instead. Since v6.0.
 ChangeItemBean createAttachment(File file, String filename, String contentType, com.atlassian.crowd.embedded.api.User author, Issue issue, Map<String,Object> attachmentProperties, Date createdTime)
          Deprecated. Use createAttachment(com.atlassian.jira.issue.attachment.CreateAttachmentParamsBean) instead. Since v6.0.
 Attachment createAttachment(org.ofbiz.core.entity.GenericValue issue, com.atlassian.crowd.embedded.api.User author, String mimetype, String filename, Long filesize, Map<String,Object> attachmentProperties, Date createdTime)
          Deprecated. Use createAttachment(File, String, String, User, Issue, Map, Date) instead. Since v5.0.
 Attachment createAttachmentCopySourceFile(File file, String filename, String contentType, String attachmentAuthor, Issue issue, Map<String,Object> attachmentProperties, Date createdTime)
          Deprecated. Use createAttachment(com.atlassian.jira.issue.attachment.CreateAttachmentParamsBean) instead. Since v6.0.
 void deleteAttachment(Attachment attachment)
          Delete an attachment from the database and from the attachment store.
 void deleteAttachmentDirectory(Issue issue)
          Deprecated. This will no longer be exposed by AttachmentManager.
 Attachment getAttachment(Long id)
          Get a single attachment by its ID.
 List<Attachment> getAttachments(Issue issue)
          Get a list of all attachments for a certain issue.
 List<Attachment> getAttachments(Issue issue, Comparator<? super Attachment> comparator)
          Get a list of all attachments for a certain issue, sorted according to the specified comparator.
 boolean isScreenshotAppletEnabled()
          Determine if screenshot applet has been enabled in JIRA.
 boolean isScreenshotAppletSupportedByOS()
          Determine if the screenshot applet is supported by the user's operating system.
 void moveAttachments(Issue oldIssue, String newIssueKey)
          Move Issue attachments to a new directory.
 Attachment setThumbnailable(Attachment attachment, boolean thumbnailable)
          Stores the thumbnailble flag for this attachment
 Attachment setZip(Attachment attachment, boolean zip)
          Stores the zip flag for this attachment
<T> T
streamAttachmentContent(Attachment attachment, InputStreamConsumer<T> consumer)
          Get binary content of the attachment
 

Field Detail

THUMBS_SUBDIR

static final String THUMBS_SUBDIR
The name of the issue-specific sub-directory in which its attachment thumbnails are stored.

Since:
6.3 moved from AttachmentUtils
See Also:
Constant Field Values
Method Detail

getAttachment

Attachment getAttachment(Long id)
                         throws DataAccessException,
                                AttachmentNotFoundException
Get a single attachment by its ID.

Parameters:
id - the Attachment ID
Returns:
the Attachment can never be null as an exception is thrown if an attachment with the passed id does not exist.
Throws:
DataAccessException - if there is a problem accessing the database.
AttachmentNotFoundException - thrown if an attachment with the passed id does not exist.

getAttachments

List<Attachment> getAttachments(Issue issue)
                                throws DataAccessException
Get a list of all attachments for a certain issue.

Parameters:
issue - the Issue
Returns:
a list of Attachment objects
Throws:
DataAccessException - if there is a problem accessing the database.

getAttachments

List<Attachment> getAttachments(Issue issue,
                                Comparator<? super Attachment> comparator)
                                throws DataAccessException
Get a list of all attachments for a certain issue, sorted according to the specified comparator.

Parameters:
issue - the Issue
comparator - used for sorting
Returns:
a list of Attachment objects
Throws:
DataAccessException - if there is a problem accessing the database.

createAttachmentCopySourceFile

Attachment createAttachmentCopySourceFile(File file,
                                          String filename,
                                          String contentType,
                                          String attachmentAuthor,
                                          Issue issue,
                                          Map<String,Object> attachmentProperties,
                                          Date createdTime)
                                          throws AttachmentException
Deprecated. Use createAttachment(com.atlassian.jira.issue.attachment.CreateAttachmentParamsBean) instead. Since v6.0.

Create an attachment both on disk, and in the database by copying the provided file instead of moving it.

Parameters:
file - A file on a locally accessible filesystem, this will be copied, not moved.
filename - The desired filename for this attachment. This may be different to the filename on disk (for example with temp files used in file uploads)
contentType - The desired contentType. Implementations of this interface can choose to override this value as appropriate
attachmentAuthor - The username of the user who created this attachment, this is not validated so it must be a valid username
issue - The id of the issue that this attachment is attached to
attachmentProperties - Attachment properties (a Map of String -> Object properties). These are optional, and are used to populate a PropertySet on the Attachment (Attachment.getProperties(). Pass null to set no properties
createdTime - when the attachment was created
Returns:
the Attachment
Throws:
AttachmentException - if any errors occur.

createAttachment

ChangeItemBean createAttachment(File file,
                                String filename,
                                String contentType,
                                com.atlassian.crowd.embedded.api.User author,
                                Issue issue,
                                Map<String,Object> attachmentProperties,
                                Date createdTime)
                                throws AttachmentException
Deprecated. Use createAttachment(com.atlassian.jira.issue.attachment.CreateAttachmentParamsBean) instead. Since v6.0.

Create an attachment both on disk, and in the database.

Parameters:
file - A file on a locally accessible filesystem
filename - The desired filename for this attachment. This may be different to the filename on disk (for example with temp files used in file uploads)
contentType - The desired contentType. Implementations of this interface can choose to override this value as appropriate
author - The user who created this attachment
issue - The issue that this file is to be attached to
attachmentProperties - Attachment properties (a Map of String -> Object properties). These are optional, and are used to populate a PropertySet on the Attachment (Attachment.getProperties(). Pass null to set no properties
createdTime - the created time
Returns:
A ChangeItemBean with all the changes to the issue.
Throws:
AttachmentException - if an IO error occurs while attempting to copy the file
See Also:
createAttachment(java.io.File, String, String, com.atlassian.crowd.embedded.api.User, Issue)

createAttachment

ChangeItemBean createAttachment(File file,
                                String filename,
                                String contentType,
                                com.atlassian.crowd.embedded.api.User author,
                                Issue issue,
                                @Nullable
                                Boolean zip,
                                @Nullable
                                Boolean thumbnailable,
                                Map<String,Object> attachmentProperties,
                                Date createdTime)
                                throws AttachmentException
Deprecated. Use createAttachment(com.atlassian.jira.issue.attachment.CreateAttachmentParamsBean) instead. Since v6.0.

Create an attachment both on disk, and in the database.

Parameters:
file - A file on a locally accessible filesystem
filename - The desired filename for this attachment. This may be different to the filename on disk (for example with temp files used in file uploads)
contentType - The desired contentType. Implementations of this interface can choose to override this value as appropriate
author - The user who created this attachment
issue - The issue that this file is to be attached to
zip - This file is a zip file. Null indicates that it is not know if this attachment is a zip file or not
thumbnailable - This file is thumbnailable (e.g. a png image). Null indicates that it is not know if this attachment is thumbnailable or not
attachmentProperties - Attachment properties (a Map of String -> Object properties). These are optional, and are used to populate a PropertySet on the Attachment (Attachment.getProperties(). Pass null to set no properties
createdTime - the created time
Returns:
A ChangeItemBean with all the changes to the issue.
Throws:
AttachmentException - if an IO error occurs while attempting to copy the file
See Also:
createAttachment(java.io.File, String, String, com.atlassian.crowd.embedded.api.User, Issue)

createAttachment

ChangeItemBean createAttachment(File file,
                                String filename,
                                String contentType,
                                com.atlassian.crowd.embedded.api.User author,
                                org.ofbiz.core.entity.GenericValue issue,
                                Map<String,Object> attachmentProperties,
                                Date createdTime)
                                throws AttachmentException
Deprecated. Use createAttachment(File, String, String, User, Issue, Map, Date) instead. Since v5.0.

Create an attachment both on disk, and in the database.

Parameters:
file - A file on a locally accessible filesystem
filename - The desired filename for this attachment. This may be different to the filename on disk (for example with temp files used in file uploads)
contentType - The desired contentType. Implementations of this interface can choose to override this value as appropriate
author - The user who created this attachment
issue - The issue that this attachment is attached to
attachmentProperties - Attachment properties (a Map of String -> Object properties). These are optional, and are used to populate a PropertySet on the Attachment (Attachment.getProperties(). Pass null to set no properties
createdTime - the created time
Returns:
A ChangeItemBean with all the changes to the issue.
Throws:
AttachmentException - if an error occurs while attempting to copy the file

createAttachment

ChangeItemBean createAttachment(File file,
                                String filename,
                                String contentType,
                                com.atlassian.crowd.embedded.api.User author,
                                org.ofbiz.core.entity.GenericValue issue,
                                Boolean zip,
                                Boolean thumbnailable,
                                Map<String,Object> attachmentProperties,
                                Date createdTime)
                                throws AttachmentException
Deprecated. Use createAttachment(File, String, String, User, Issue, Map, Date) instead. Since v5.0.

Create an attachment both on disk, and in the database.

Parameters:
file - A file on a locally accessible filesystem
filename - The desired filename for this attachment. This may be different to the filename on disk (for example with temp files used in file uploads)
contentType - The desired contentType. Implementations of this interface can choose to override this value as appropriate
author - The user who created this attachment
issue - The issue that this attachment is attached to
zip - This file is a zip file. Null indicates that it is not know if this attachment is a zip file or not
thumbnailable - This file is thumbnailable (e.g. a png image). Null indicates that it is not know if this attachment is thumbnailable or not
attachmentProperties - Attachment properties (a Map of String -> Object properties). These are optional, and are used to populate a PropertySet on the Attachment (Attachment.getProperties(). Pass null to set no properties
createdTime - the created time
Returns:
A ChangeItemBean with all the changes to the issue.
Throws:
AttachmentException - if an error occurs while attempting to copy the file

createAttachment

ChangeItemBean createAttachment(File file,
                                String filename,
                                String contentType,
                                com.atlassian.crowd.embedded.api.User author,
                                Issue issue)
                                throws AttachmentException
Deprecated. Use createAttachment(com.atlassian.jira.issue.attachment.CreateAttachmentParamsBean) instead. Since v6.0.

Same as the createAttachment(File, String, String, User, Issue, Map, Date) method, except it submits no attachmentProperties and uses now() for the created time.

Parameters:
file - A file on a locally accessible filesystem
filename - The desired filename for this attachment. This may be different to the filename on disk (for example with temp files used in file uploads)
contentType - The desired contentType. Implementations of this interface can choose to override this value as appropriate
author - The user who created this attachment
issue - The issue that this attachment is attached to
Returns:
A ChangeItemBean with all the changes to the issue.
Throws:
AttachmentException - if an IO error occurs while attempting to copy the file
See Also:
createAttachment(java.io.File, String, String, com.atlassian.crowd.embedded.api.User, Issue, java.util.Map, java.util.Date)

createAttachment

ChangeItemBean createAttachment(File file,
                                String filename,
                                String contentType,
                                com.atlassian.crowd.embedded.api.User author,
                                org.ofbiz.core.entity.GenericValue issue)
                                throws AttachmentException
Deprecated. Use createAttachment(File, String, String, User, Issue) instead. Since v5.0.

Same as the createAttachment(java.io.File, String, String, User, org.ofbiz.core.entity.GenericValue, java.util.Map, java.util.Date) method, except it submits no attachmentProperties and uses now() for the created time.

Parameters:
file - A file on a locally accessible filesystem
filename - The desired filename for this attachment. This may be different to the filename on disk (for example with temp files used in file uploads)
contentType - The desired contentType. Implementations of this interface can choose to override this value as appropriate
author - The user who created this attachment
issue - The issue that this attachment is attached to
Returns:
A ChangeItemBean with all the changes to the issue.
Throws:
AttachmentException - if an error occurs while attempting to copy the file

createAttachment

Attachment createAttachment(org.ofbiz.core.entity.GenericValue issue,
                            com.atlassian.crowd.embedded.api.User author,
                            String mimetype,
                            String filename,
                            Long filesize,
                            Map<String,Object> attachmentProperties,
                            Date createdTime)
Deprecated. Use createAttachment(File, String, String, User, Issue, Map, Date) instead. Since v5.0.

Create an attachment in the database. Note that this does not create it on disk, nor does it create a change item.

Parameters:
issue - the issue that this attachment is attached to
author - The user who created this attachment
mimetype - mimetype
filename - The desired filename for this attachment.
filesize - filesize
attachmentProperties - Attachment properties (a Map of String -> Object properties).
createdTime - when the attachment was created
Returns:
the Attachment

createAttachment

ChangeItemBean createAttachment(CreateAttachmentParamsBean createAttachmentParamsBean)
                                throws AttachmentException
Create an attachment both on disk, and in the database.

Parameters:
createAttachmentParamsBean - Parameters which describe created attachment
Returns:
A ChangeItemBean with all the changes to the issue.
Throws:
AttachmentException - if an IO error occurs while attempting to copy the file
See Also:
for creating beans

deleteAttachment

void deleteAttachment(Attachment attachment)
                      throws RemoveException
Delete an attachment from the database and from the attachment store.

Parameters:
attachment - the Attachment
Throws:
RemoveException - if the attachment cannot be removed from the attachment store

deleteAttachmentDirectory

@Internal
void deleteAttachmentDirectory(Issue issue)
                               throws RemoveException
Deprecated. This will no longer be exposed by AttachmentManager.

Delete the attachment directory from disk if the directory is empty.

Parameters:
issue - the issue whose attachment directory we wish to delete.
Throws:
RemoveException - if the directory can not be removed or is not empty.

attachmentsEnabled

boolean attachmentsEnabled()
Determine if attachments have been enabled in JIRA and if the attachments directory exists.

Returns:
true if enabled, false otherwise

isScreenshotAppletEnabled

boolean isScreenshotAppletEnabled()
Determine if screenshot applet has been enabled in JIRA.

Returns:
true if enabled, false otherwise

isScreenshotAppletSupportedByOS

boolean isScreenshotAppletSupportedByOS()
Determine if the screenshot applet is supported by the user's operating system. Note. This always returns true now as we support screenshots on all our supported platforms

Returns:
true if applet is supported by the user's OS, false otherwise

convertTemporaryAttachments

List<ChangeItemBean> convertTemporaryAttachments(com.atlassian.crowd.embedded.api.User user,
                                                 Issue issue,
                                                 List<Long> selectedAttachments,
                                                 TemporaryAttachmentsMonitor temporaryAttachmentsMonitor)
                                                 throws AttachmentException
Deprecated. Use convertTemporaryAttachments(com.atlassian.jira.user.ApplicationUser, Issue, java.util.List, com.atlassian.jira.web.action.issue.TemporaryAttachmentsMonitor) instead. Since v6.0.

Converts a set of provided temporary attachments to real attachments attached to an issue. This method will also clean up any temporary attachments still linked to the issue via the TemporaryAttachmentsMonitor.

Parameters:
user - The user performing the action
issue - The issue attachments should be linked to
selectedAttachments - The temporary attachment ids to convert as selected by the user
temporaryAttachmentsMonitor - TemporaryAttachmentsMonitor containing information about all temporary attachments
Returns:
A list of ChangeItemBeans for any attachments that got created
Throws:
AttachmentException - If there were problems with the Attachment itself

convertTemporaryAttachments

List<ChangeItemBean> convertTemporaryAttachments(ApplicationUser user,
                                                 Issue issue,
                                                 List<Long> selectedAttachments,
                                                 TemporaryAttachmentsMonitor temporaryAttachmentsMonitor)
                                                 throws AttachmentException
Converts a set of provided temporary attachments to real attachments attached to an issue. This method will also clean up any temporary attachments still linked to the issue via the TemporaryAttachmentsMonitor.

Parameters:
user - The user performing the action
issue - The issue attachments should be linked to
selectedAttachments - The temporary attachment ids to convert as selected by the user
temporaryAttachmentsMonitor - TemporaryAttachmentsMonitor containing information about all temporary attachments
Returns:
A list of ChangeItemBeans for any attachments that got created
Throws:
AttachmentException - If there were problems with the Attachment itself

setThumbnailable

Attachment setThumbnailable(Attachment attachment,
                            boolean thumbnailable)
Stores the thumbnailble flag for this attachment

Parameters:
attachment - The attachment
thumbnailable - True if this attachment is thumnailable

setZip

Attachment setZip(Attachment attachment,
                  boolean zip)
Stores the zip flag for this attachment

Parameters:
attachment - The attachment
zip - True if this attachment is a zip file

streamAttachmentContent

<T> T streamAttachmentContent(@Nonnull
                              Attachment attachment,
                              InputStreamConsumer<T> consumer)
                          throws IOException
Get binary content of the attachment

Parameters:
attachment - the attachment whose content to stream (required)
consumer - the consumer of the stream (required)
Throws:
IOException

moveAttachments

void moveAttachments(Issue oldIssue,
                     String newIssueKey)
Move Issue attachments to a new directory. This method is intended for Move/Bulk Move only.

Parameters:
oldIssue - the issue attachments will be moved from
newIssueKey - the new issue key


Copyright © 2002-2014 Atlassian. All Rights Reserved.