Class AttachmentService

    • Constructor Detail

      • AttachmentService

        public AttachmentService()
    • Method Detail

      • addAttachment

        public Attachment addAttachment​(Submission submission,
                                        String attachmentName,
                                        String fileName,
                                        byte[] fileData,
                                        String fileType,
                                        String userDesciption)
        Add the specified file attachment to the submission.
        Parameters:
        submission - the submission record (required)
        attachmentName - the required attachment name (required)
        fileName - the file name (required)
        fileData - the file data (required)
        fileType - the file type (required)
        userDesciption - the user description
        Returns:
        the new attachment
        Since:
        5.1.7
      • addAttachment

        public Attachment addAttachment​(Submission submission,
                                        String attachmentName,
                                        String fileName,
                                        byte[] fileData,
                                        String userDesciption)
        Add the specified file attachment to the submission.
        Parameters:
        submission - the submission record (required)
        attachmentName - the required attachment name (required)
        fileName - the file name (required)
        fileData - the file data (required)
        userDesciption - the user description
        Returns:
        the new attachment
        Since:
        5.0.0
      • addInFormAttachment

        public Attachment addInFormAttachment​(Submission submission,
                                              byte[] fileData,
                                              String fileName,
                                              String contentType,
                                              RequiredAttachmentMetadata attachmentMetadata,
                                              String attachmentKey,
                                              boolean isTFieldAttachment)
        Add the specified fileData to the submission with the associated required attachment metadata.

        If isTFieldAttachment this method will NOT set the submission attachment status to "Completed", otherwise if will.

        Parameters:
        submission - the submission to add the attachment to (required)
        fileData - the file data (required)
        fileName - the file name (required)
        contentType - the content type
        attachmentMetadata - the attachment metadata (required)
        attachmentKey - the attachment key (if not specified, a key will be generated)
        isTFieldAttachment - specifies if attachment comes from T-Field (attachmentKey is generated and completeAttachments flag must not be set)
        Returns:
        the created submission attachment record
        Since:
        4.2.0
      • addInFormAttachment

        public Attachment addInFormAttachment​(Submission submission,
                                              org.apache.commons.fileupload.FileItem fileItem,
                                              RequiredAttachmentMetadata attachmentMetadata,
                                              String attachmentKey)
        Add the specified FileItem to the submission with the associated required attachment metadata.

        This method is intended to be called by the FormDynamicDataService for use with in-form attachments. This method will set the submission attachment status as "Completed", so that the attachments page is not displayed and the submission can be completed at submission time.

        Parameters:
        submission - the submission to add the attachment to (required)
        fileItem - the file upload (required)
        attachmentMetadata - the attachment metadata (required)
        attachmentKey - the attachment key (optional; if not specified, a key will be generated)
        Returns:
        the created submission attachment record
        Since:
        4.1.0
      • addInFormAttachment

        public Attachment addInFormAttachment​(Submission submission,
                                              String baseXPath,
                                              String filename,
                                              byte[] fileData)
        Adds an arbitrary file to as an in form attachment to the submission provided. Returns the in form attachment added.
        Parameters:
        submission - the submission to add the receipt as and in form attachment (required)
        baseXPath - the String xPath for the widget (required)
        filename - the String filename of the in form attachment (required)
        fileData - the byte[] file contents (required)
        Returns:
        the created in form attachment
        Since:
        4.1.0
      • addInFormSubmitManuallyAttachment

        public Attachment addInFormSubmitManuallyAttachment​(Submission submission,
                                                            String attachmentKey,
                                                            String attachmentName,
                                                            String mandatoryStatus,
                                                            boolean isTFieldAttachment)
        Add the specified manually submitted required attachment.

        This method is intended to be called by the SyncRestService from T-Field for use with in-form attachments. This method will NOT set the submission attachment status as "Completed"

        Parameters:
        submission - the submission to add the attachment to (required)
        attachmentKey - the attachment key (optional)
        attachmentName - the attachment name (required)
        mandatoryStatus - the attachment mandatory status (optional)
        isTFieldAttachment - specifies if attachment comes from T-Field (attachmentKey is generated and completeAttachments flag must not be set)
        Returns:
        the created submission attachment record
        Since:
        4.2.0
      • addInFormSubmitManuallyAttachment

        public Attachment addInFormSubmitManuallyAttachment​(Submission submission,
                                                            String attachmentKey,
                                                            String attachmentName,
                                                            String mandatoryStatus)
        Add the specified manually submitted required attachment.

        This method is intended to be called by the FormDynamicDataService for use with in-form attachments. This method will set the submission attachment status as "Completed", so that the attachments page is not displayed and the submission can be completed at submission time.

        Parameters:
        submission - the submission to add the attachment to (required)
        attachmentKey - the attachment key (optional)
        attachmentName - the attachment name (required)
        mandatoryStatus - the attachment mandatory status (optional)
        Returns:
        the created submission attachment record
        Since:
        4.1.0
      • removeAttachment

        public boolean removeAttachment​(Object attachmentId)
        Remove this attachment and break link between a required attachment, Submission and File upload. Note that this method contains database transactions.
        Parameters:
        attachmentId - the attachment id
        Returns:
        true if the attachment was deleted or false otherwise
      • removeAttachmentByKey

        public boolean removeAttachmentByKey​(String attachmentKey)
        Remove this attachment and break link between a required attachment, Submission and File upload. Note that this method contains database transactions.
        Parameters:
        attachmentKey - the attachment id
        Returns:
        true if the attachment was deleted or false otherwise
      • removeAttachmentForDynamicData

        public void removeAttachmentForDynamicData​(Attachment attachment)
        Remove the submission attachment, file upload and file upload data, and the associated required attachment if only one defined.

        This method will not change the submission attachment status, if there are required attachments after this removal operation. However if there are no required attachments after this removal, then the submission attachment status will be set to null.

        For web inform attachments the submission cannot be Submitted or Completed. However for T.Field syncing this will be will be allowed.

        This method will purge remove attachment elements from the XML with web submissions, but not T.Field submissions.

        Parameters:
        attachment - the submission attachment (required)
        Since:
        4.1.0
      • deleteFileUpload

        public boolean deleteFileUpload​(FileUpload fileUpload)
        Delete the file upload object. Note that this method contains database transactions.
        Parameters:
        fileUpload - the upload file (required)
        Returns:
        true if the file is deleted.
      • submitManually

        public void submitManually​(Object requiredAttachmentId)
        Submit the given attachment manually. Note that this method contains database transactions.
        Parameters:
        requiredAttachmentId - the attachment id
      • resetAttachmentStatus

        public void resetAttachmentStatus​(Object requiredAttachmentId)
        Reset the submission status to before submitManually was called. This is to cater for when user clicked on manual delivery and then changed their mind. Note that this method contains database transactions.
        Parameters:
        requiredAttachmentId - the attachment id
      • saveArbitaryAttachmentForSubmission

        public Attachment saveArbitaryAttachmentForSubmission​(Submission submission,
                                                              String type,
                                                              String fileName,
                                                              byte[] fileData,
                                                              String mimeType,
                                                              String description)
        Save an optional file attachment for a submission. This method can be used adding arbitrary attachments to a submission.
        Parameters:
        submission - the form submission (required)
        type - the type of attachment (required)
        fileName - the file name (required)
        fileData - the file data (required)
        mimeType - the file MIME type (optional)
        description - the file description (optional)
        Returns:
        attachment the newly created attachment
        Since:
        3.6.0
      • saveEmbeddedAttachmentForSubmission

        public void saveEmbeddedAttachmentForSubmission​(EmbeddedAttachment embeddedAttachment,
                                                        Submission submission)
        Save the embedded attachment for the given submission.
        Parameters:
        embeddedAttachment - the embedded attachment
        submission - the form submission
      • saveFileForRequiredAttachment

        public void saveFileForRequiredAttachment​(org.apache.commons.fileupload.FileItem fileItem,
                                                  String description,
                                                  RequiredAttachment requiredAttachment)
                                           throws ApplicationException,
                                                  IOException
        Save the uploaded fileItem for form submission requiredAttachmet. Note that this method contains database transactions.
        Parameters:
        fileItem - the uploaded file item
        description - the description of the file
        requiredAttachment - the associated required attachment
        Throws:
        ApplicationException - if the document directory could not be determined
        IOException - if an I/O error occurs
      • saveFileForRequiredAttachment

        public void saveFileForRequiredAttachment​(String fileName,
                                                  byte[] fileData,
                                                  String contentType,
                                                  String description,
                                                  RequiredAttachment requiredAttachment,
                                                  String attachmentKey)
                                           throws ApplicationException
        Save the uploaded fileItem for form submission requiredAttachmet. Note that this method contains database transactions.
        Parameters:
        fileName - the file name (required)
        fileData - the file data (required)
        contentType - the content type (required)
        description - the description of the file
        requiredAttachment - the associated required attachment (required)
        attachmentKey - the attachment key
        Throws:
        ApplicationException - if the document directory could not be determined
      • setAttachmentsComplete

        public void setAttachmentsComplete​(Submission submission)
        Set attachment status of a given submission to be complete. Note that this method contains database transactions.
        Parameters:
        submission - a submission
      • getMaxSizeForString

        public int getMaxSizeForString​(String maxSizeString)
        Return the max size for a given string constants.
        Parameters:
        maxSizeString - a string
        Returns:
        the max size for a given string
        See Also:
        DocumentType.MAX_SIZES
      • getStringForMaxSize

        public String getStringForMaxSize​(int maxSize)
        Return a string representation with a given max size number
        Parameters:
        maxSize - a max size number
        Returns:
        a string representation with a given max size number
        See Also:
        DocumentType.MAX_SIZES
      • addReceiptAsInFormAttachment

        public Attachment addReceiptAsInFormAttachment​(Submission submission,
                                                       Submission receiptSubmission,
                                                       String baseXPath)
        Adds the receipt from a submission as an in form attachment to another submission. Returns the InForm attachment added.
        Parameters:
        submission - the submission to add the receipt as and in form attachment (required)
        receiptSubmission - the submission that contains the receipt PDF (required)
        baseXPath - the String xPath for the widget (required)
        Returns:
        the in form attachment created (required)
        Since:
        4.1.0
      • isValidMediaType

        public static boolean isValidMediaType​(String fileName,
                                               byte[] fileData,
                                               String mediaType)
        Checks attachment if it is of a given media type.
        Parameters:
        fileName - file name
        fileData - first few bytes of the attachment
        mediaType - the attachment media type
        Returns:
        true if attachment if it is of a given media type.
        Since:
        20.11.0
      • isValidFileName

        public static boolean isValidFileName​(String fileName)
        Return true if the specified attachment filename is valid.
        Parameters:
        fileName - the attachment file name to test
        Returns:
        true if the attachment file name is valid
        Since:
        5.0.1