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.


Method Summary
 boolean attachmentsEnabled()
          Determine if attachments have been enabled in JIRA and if the attachments directory exists.
 List<ChangeItemBean> convertTemporaryAttachments(com.atlassian.crowd.embedded.api.User user, Issue issue, List<Long> selectedAttachments, TemporaryAttachmentsMonitor temporaryAttachmentsMonitor)
          Converts a set of provided temporary attachments to real attachments attached to an issue.
 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)
          Same as the createAttachment(File, String, String, User, Issue, Map, Date) method, except it submits no attachmentProperties and uses now() for the created time.
 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)
          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, Issue issue, Map<String,Object> attachmentProperties, Date createdTime)
          Create an attachment both on disk, and in the database.
 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)
          Create an attachment both on disk, and in the database by copying the provided file instead of moving it.
 void deleteAttachment(Attachment attachment)
          Delete an attachment from the database and from disk.
 void deleteAttachmentDirectory(Issue issue)
          Delete the attachment directory from disk if the directory is empty.
 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.
 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
 

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
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
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
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
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

deleteAttachment

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

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

deleteAttachmentDirectory

void deleteAttachmentDirectory(Issue issue)
                               throws RemoveException
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
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


Copyright © 2002-2013 Atlassian. All Rights Reserved.