Class MimeUtil


  • public class MimeUtil
    extends UrlUtil
    MIME utilities for reading and writing MIME/MULTIPART/RELATED streams
    • Constructor Detail

      • MimeUtil

        public MimeUtil()
    • Method Detail

      • setContentID

        public static void setContentID​(javax.mail.BodyPart bp,
                                        java.lang.String cid)
        Parameters:
        bp -
        cid -
      • setFileName

        public static void setFileName​(javax.mail.BodyPart bp,
                                       java.lang.String path)
        set the filename header of a bodypart to a string
        Parameters:
        bp - the bodypart
        path - the path to set
      • getFileName

        public static java.lang.String getFileName​(javax.mail.BodyPart bp)
        get the filename header of a bodypart a string if no file name is set, a unique filename is generated from cid and content type
        Parameters:
        bp - the bodypart
        Returns:
        the file name, null if bp is null
      • getContentID

        public static java.lang.String getContentID​(javax.mail.BodyPart bp)
        get the ContentID header of a bodypart a string
        Parameters:
        bp - the bodypart
        Returns:
        the cid, null if there was an error
      • extractMultipartMime

        public static javax.mail.BodyPart[] extractMultipartMime​(java.io.InputStream mimeStream)
        Extracts all the parts of a multipart MIME message and returns an array of InputStream for each of the separate MIME parts.
        Parameters:
        mimeStream -
        Returns:
      • getBodyParts

        public static javax.mail.BodyPart[] getBodyParts​(javax.mail.Multipart mp)
        get all the parts of of a multipart an
        Parameters:
        mp - the multiPart to extract
        Returns:
        the array of parts, null if snafu...
      • getPartByCID

        public static javax.mail.BodyPart getPartByCID​(javax.mail.Multipart mp,
                                                       java.lang.String cid)
        get the MIME BodyPart from a multiPart package with a given cid
        Parameters:
        mp - the multipart package to search in
        cid - the cid of the requested bodypart
        Returns:
        BodyPart the matching BodyPart, null if none is found
      • getPartByFileName

        public static BodyPartHelper getPartByFileName​(javax.mail.Multipart mp,
                                                       java.lang.String name)
        get the MIME BodyPart from a multiPart package with a given file name
        Parameters:
        mp - the multipart package to search in
        name - the cid of the requested bodypart
        Returns:
        BodyPart the matching BodyPart, null if none is found
      • getCreatePartByCID

        public static javax.mail.BodyPart getCreatePartByCID​(javax.mail.Multipart mp,
                                                             java.lang.String cid)
        get the MIME BodyPart from a multiPart package with a given cid create one if it does not exist;
        Parameters:
        mp - the multipart package to search in
        cid - the cid of the requested bodypart
        Returns:
        BodyPart the matching BodyPart, null if none is found
      • getJDFDoc

        public static JDFDoc getJDFDoc​(java.io.InputStream stream,
                                       int index)
        get the JDF Doc from a stream, also handle non mime streams gracefully
        Parameters:
        stream - the stream to search in
        index - the index of the body part to search
        Returns:
        JDFDoc the parsed xml JDFDoc, null if stream does not contain xml
      • getJDFDoc

        public static JDFDoc getJDFDoc​(javax.mail.BodyPart bp)
        get the JDF Doc from a given body part
        Parameters:
        bp - the BodyPart to search in
        Returns:
        JDFDoc the parsed xml JDFDoc, null if bp does not contain xml
      • matchesCID

        public static boolean matchesCID​(javax.mail.BodyPart bp,
                                         java.lang.String cid)
        check if a BodyPart matches a given cid
        Parameters:
        bp - the bodyPart to check
        cid - the cid string any '<' '>' or 'cid:' prefixes are removed if null, anything matches
        Returns:
        true if this bp matches the cid
      • getMultiPart

        public static javax.mail.Multipart getMultiPart​(java.lang.String fileName)
        helper to create a root multipart from a file
        Parameters:
        fileName - the name of the file used as input
        Returns:
        MultiPart the Multipart that represents the root mime, null if something went wrong
      • getMultiPart

        public static javax.mail.Multipart getMultiPart​(java.io.InputStream mimeStream)
        create a root multipart from an input stream
        Parameters:
        mimeStream - the input stream
        Returns:
        MultiPart the Multipart that represents the root mime, null if something went wrong
      • getMimeTypeFromExt

        @Deprecated
        public static java.lang.String getMimeTypeFromExt​(java.lang.String fileName)
        Deprecated.
        use UrlUtil.getMimeTypeFromURL(fileName);
        checkst whether the mime type corresponds to one of "application/vnd.cip4-jdf+xml"; "application/vnd.cip4-jmf+xml"; "text/xml";
        Parameters:
        fileName - the string to test
        Returns:
        the mime type
      • isJDFMimeType

        public static boolean isJDFMimeType​(java.lang.String mimeType)
        checks whether the mime type corresponds to one of "application/vnd.cip4-jdf+xml"; "application/vnd.cip4-jmf+xml"; "text/xml"; or the respective XJDF tapes
        Parameters:
        mimeType - the string to test
        Returns:
        true if matches
      • isPPFMimeType

        public static boolean isPPFMimeType​(java.lang.String mimeType)
        checks whether the mime type corresponds to ppf
        Parameters:
        mimeType - the string to test
        Returns:
        true if matches
      • isMimeType

        public static boolean isMimeType​(java.lang.String toCheck,
                                         java.lang.String mimeType)
        checks whether the mime type corresponds to mimetyoe
        Parameters:
        toCheck - the string to check against
        mimeType - the mime type
        Returns:
        true if matches
      • buildMimePackage

        @Deprecated
        public static javax.mail.Multipart buildMimePackage​(JDFDoc docJMF,
                                                            JDFDoc docJDF)
        Deprecated.
        use 3 parameter version
        Parameters:
        docJMF -
        docJDF -
        Returns:
      • buildMimePackage

        public static javax.mail.Multipart buildMimePackage​(JDFDoc docJMF,
                                                            XMLDoc docJDF,
                                                            boolean extendReferenced)
        build a MIME package that contains all references in all FileSpecs of a given JDFDoc the doc is modified so that all URLs are cids
        Parameters:
        docJMF - the JDFDoc representation of the JMF that references the jdf to package, if null only the jdf is packaged note that the URL of docJDF must already be specified as a CID
        docJDF - the JDFDoc representation of the JDF to package
        extendReferenced - if true, also package any further referenced files
        Returns:
        a Message representing the resulting MIME package, null if an error occurred
      • urlToCid

        public static java.lang.String urlToCid​(java.lang.String urlString)
        Parameters:
        urlString -
        Returns:
      • urlToCid

        public static java.lang.String urlToCid​(java.lang.String urlString,
                                                boolean raw)
        Parameters:
        normalized -
        Returns:
      • buildMimePackage

        public static javax.mail.Multipart buildMimePackage​(java.util.Vector<? extends XMLDoc> vXMLDocs)
        Builds a MIME package.
        Parameters:
        vXMLDocs - the Vector of XMLDoc representing the JMF and JDFs to be stored as the first part of the package t
        Returns:
        a Message representing the resulting MIME package, null if an error occured
      • updateXMLMultipart

        public static javax.mail.BodyPart updateXMLMultipart​(javax.mail.Multipart multipart,
                                                             XMLDoc xmlDoc,
                                                             java.lang.String cid)
        Parameters:
        multipart -
        xmlDoc -
        cid -
        Returns:
      • setContent

        public static void setContent​(javax.mail.BodyPart messageBodyPart,
                                      XMLDoc xmlDoc)
                               throws javax.mail.MessagingException,
                                      java.io.IOException
        sets the content of a bodypart to the xmlDoc - correctly handling non-ascii features and setting the correct content type
        Parameters:
        messageBodyPart - the BodyPart to fill
        xmlDoc - the xmlDoc to fill in
        Throws:
        javax.mail.MessagingException
        java.io.IOException
      • writeToURL

        public static java.net.HttpURLConnection writeToURL​(javax.mail.Multipart mp,
                                                            java.lang.String strUrl)
                                                     throws java.io.IOException,
                                                            javax.mail.MessagingException
        write a Multipart to an output URL File: and http: are currently supported Use HttpURLConnection.getInputStream() to retrieve the http response
        Parameters:
        mp - the mime MultiPart to write
        strUrl - the URL to write to
        Returns:
        HttpURLConnection the opened http connection, null in case of error or file
        Throws:
        java.io.IOException
        javax.mail.MessagingException
      • writeToURL

        public static java.net.HttpURLConnection writeToURL​(javax.mail.Multipart mp,
                                                            java.lang.String strUrl,
                                                            MimeUtil.MIMEDetails mimeDetails)
                                                     throws java.io.IOException,
                                                            javax.mail.MessagingException
        write a Multipart to an output URL File: and http: are currently supported Use HttpURLConnection.getInputStream() to retrieve the http response
        Parameters:
        mp - the mime MultiPart to write
        strUrl - the URL to write to
        mimeDetails -
        Returns:
        HttpURLConnection the opened http connection, null in case of error or file
        Throws:
        java.io.IOException
        javax.mail.MessagingException
      • writeToQueue

        public static JDFDoc writeToQueue​(JDFDoc docJMF,
                                          JDFDoc docJDF,
                                          java.lang.String strUrl,
                                          MimeUtil.MIMEDetails urlDet)
                                   throws java.io.IOException,
                                          javax.mail.MessagingException
        submit a multipart file to a queue
        Parameters:
        docJMF - the jmf document containing the submitqueueentry or resubmitqueueentry
        docJDF - the jdf to submit
        strUrl - the url to submit to
        urlDet - url details
        Returns:
        Throws:
        java.io.IOException
        javax.mail.MessagingException
      • writeToFile

        @Deprecated
        public static java.io.File writeToFile​(javax.mail.Multipart m,
                                               java.lang.String fileName)
        Deprecated.
        Parameters:
        m -
        fileName -
        Returns:
        the File that was written
      • writeToFile

        public static java.io.File writeToFile​(javax.mail.Multipart m,
                                               java.lang.String fileName,
                                               MimeUtil.MIMEDetails md)
        write a Multipart to an output file
        Parameters:
        m - the mime MultiPart to write
        fileName - the file name
        md -
        Returns:
      • writeToStream

        @Deprecated
        public static void writeToStream​(javax.mail.Multipart m,
                                         java.io.OutputStream outStream)
                                  throws java.io.IOException,
                                         javax.mail.MessagingException
        Deprecated.
        Parameters:
        m -
        outStream -
        Throws:
        java.io.IOException
        javax.mail.MessagingException
      • writeToStream

        public static void writeToStream​(javax.mail.Multipart m,
                                         java.io.OutputStream outStream,
                                         MimeUtil.MIMEDetails md)
                                  throws java.io.IOException,
                                         javax.mail.MessagingException
        write a Multipart to a Stream
        Parameters:
        m - the mime MultiPart to write
        outStream - the existing output stream, note that a buffered output stream is created in case outStream is unbuffered
        md - details for messaging
        Throws:
        java.io.IOException
        javax.mail.MessagingException
      • writeToDir

        public static void writeToDir​(javax.mail.Multipart mp,
                                      java.io.File directory)
                               throws javax.mail.MessagingException,
                                      java.io.IOException
        write a Message to a directory
        Parameters:
        mp - the mime Message to write
        directory - the directory to use as '.' for writing the mime parts
        Throws:
        javax.mail.MessagingException
        java.io.IOException
        javax.mail.MessagingException
      • writeBodyPartToFile

        public static void writeBodyPartToFile​(javax.mail.BodyPart bp,
                                               java.io.File directory)
                                        throws java.io.IOException,
                                               javax.mail.MessagingException
        Parameters:
        bp -
        directory -
        Throws:
        javax.mail.MessagingException
        java.io.IOException
      • getJMFSubmission

        public static JDFDoc[] getJMFSubmission​(javax.mail.Multipart mp)
        gets the JMF document of a submitqueueentry or returnqueuentry and the attached jdf document
        Parameters:
        mp - the Multipart to search
        Returns:
        one or two JDFDocs: bp[0] is the jmf, bp[1] is the jdf, if a JDF is referenced;
      • isMimeMultiPart

        public static boolean isMimeMultiPart​(java.lang.String contentType)
        Parameters:
        contentType -
        Returns: