Class FileDocument

    • Field Detail

      • THUMBNAIL_PREFIX

        public static final java.lang.String THUMBNAIL_PREFIX
        See Also:
        Constant Field Values
      • THUMBNAIL_REGEXP

        public static final java.lang.String THUMBNAIL_REGEXP
        See Also:
        Constant Field Values
      • OPENXML_PRESENTATION_MIMETYPE

        public static final java.lang.String OPENXML_PRESENTATION_MIMETYPE
        See Also:
        Constant Field Values
      • OPENOFFICE_MIMETYPE

        public static final java.lang.String OPENOFFICE_MIMETYPE
        See Also:
        Constant Field Values
      • DEFAULT_DETAIL_VIEW_PROP

        public static final java.lang.String DEFAULT_DETAIL_VIEW_PROP
        See Also:
        Constant Field Values
      • CTXT_CHECK_FILE_REFERRER

        public static final java.lang.String CTXT_CHECK_FILE_REFERRER
        See Also:
        Constant Field Values
      • DO_NOT_REMOVE_FILE

        public static final java.lang.String DO_NOT_REMOVE_FILE
        See Also:
        Constant Field Values
      • REMOVE_FILE_PROP

        public static final java.lang.String REMOVE_FILE_PROP
        See Also:
        Constant Field Values
      • REMOVE_ALL_FILES_ON_DELETE_PROP

        public static final java.lang.String REMOVE_ALL_FILES_ON_DELETE_PROP
        See Also:
        Constant Field Values
      • isDefaultDetailView

        public static final boolean isDefaultDetailView
      • defaultUploadClass

        public static java.lang.Class<? extends FileDocument> defaultUploadClass
      • description

        protected java.lang.String description
      • descriptionML

        protected java.util.HashMap<java.lang.String,​java.lang.String> descriptionML
      • filename

        protected java.lang.String filename
      • originalFilename

        protected java.lang.String originalFilename
      • remoteUri

        protected java.lang.String remoteUri
      • contentType

        protected java.lang.String contentType
      • uploadDate

        protected java.util.Date uploadDate
      • pdfUploadDate

        protected java.util.Date pdfUploadDate
    • Constructor Detail

      • FileDocument

        public FileDocument()
      • FileDocument

        public FileDocument​(Publication other)
    • Method Detail

      • getInstance

        public static FileDocument getInstance​(java.lang.String filename)
        Constructs a FileDocument from an existing file. The FileDocument is not created in the store.
        Parameters:
        filename - the filename. It must be relative to the context path
        Returns:
        a FileDocument wrapped to the given file or null if this file does not exist
        Since:
        jcms-4.0
      • getInstance

        public static FileDocument getInstance​(java.lang.String filename,
                                               Member author,
                                               Workspace ws)
        Constructs a FileDocument from an existing file. The FileDocument is not created in the store.
        Parameters:
        filename - the filename. It must be relative to the context path
        author - the author of the document or null
        ws - the workspace of the publication
        Returns:
        a FileDocument wrapped to the given file or null if this file does not exist
        Since:
        jcms-5.6.0
      • getInstance

        public static FileDocument getInstance​(java.lang.String filename,
                                               java.lang.String title,
                                               java.lang.String description,
                                               Category[] categories)
        Constructs a FileDocument from an existing file. The FileDocument is not created in the store.
        Parameters:
        filename - the filename. It must be relative to the context path
        title - a proposed title (if null, use the name without its extension as title)
        description - the description (may be null)
        categories - the categories (may be null)
        Returns:
        a FileDocument wrapped to the given file or null if this file does not exist
        Since:
        jcms-4.0
      • getInstance

        public static FileDocument getInstance​(java.lang.String filename,
                                               java.lang.String title,
                                               java.lang.String description,
                                               Category[] categories,
                                               Member author,
                                               Workspace ws)
        Constructs a FileDocument from an existing file. The FileDocument is not created in the store.
        Parameters:
        filename - the filename. It must be relative to the context path
        title - a proposed title (if null, use the name without its extension as title)
        description - the description (may be null)
        categories - the categories (may be null)
        author - the author of the document or null
        ws - the workspace of the publication
        Returns:
        a FileDocument wrapped to the given file or null if this file does not exist
        Since:
        jcms-5.6.0
      • getInstance

        public static FileDocument getInstance​(java.lang.Class<? extends FileDocument> clazz,
                                               java.lang.String filename,
                                               java.lang.String title,
                                               java.lang.String description,
                                               Category[] categories,
                                               Member author,
                                               Workspace ws)
        Constructs a FileDocument from an existing file for the given class. The FileDocument is not created in the store.
        Parameters:
        clazz - the FileDocument class to instanciate
        filename - the filename. It must be relative to the context path
        title - a proposed title (if null, use the name without its extension as title)
        description - the description (may be null)
        categories - the categories (may be null)
        author - the author of the document or null
        ws - the workspace of the publication
        Returns:
        a FileDocument wrapped to the given file or null if this file does not exist
        Since:
        jcms-6.2.0
      • getUploadClass

        public static java.lang.Class<? extends FileDocument> getUploadClass​(java.lang.String contentType)
        Returns the FileDocument class to be used for the given contentType or null if no mapping is declared for this content-type. Mapping is declared with properties such as : file-document.upload.class.image: generated.Media
        Parameters:
        contentType - the contentType (eg. image/jpeg, video/mp4, ...)
        Returns:
        Return the FileDocument class to be used for the given contentType.
        Since:
        jcms-10.0.0
      • getDefaultUploadClass

        public static java.lang.Class<? extends FileDocument> getDefaultUploadClass()
        Returns the default document class to use for upload.
        Returns:
        the default document class to use for upload.
        Since:
        jcms-10.0.0
      • getFirstDocumentClassAuthorized

        public static java.lang.Class<? extends FileDocument> getFirstDocumentClassAuthorized​(Member member,
                                                                                              Workspace workspace)
        Retrieve the first document class authorized for publication by the specified member.
        Parameters:
        member - the member for which to perform the verification
        workspace - the workspace in which to perform the verification
        Returns:
        a FileDocument type class (or null if no class has been found)
        Since:
        jcms-10.0.0
      • getFirstDocumentClassAuthorized

        public static java.lang.Class<? extends FileDocument> getFirstDocumentClassAuthorized​(Member member,
                                                                                              Workspace workspace,
                                                                                              java.lang.String contentType)
        Retrieve the first document class authorized for publication by the specified member and workspace, and the most relevant regarding specified contentType.
        Parameters:
        member - the member for which to perform the verification
        workspace - the workspace in which to perform the verification
        contentType - the contentType of the document to create
        Returns:
        a FileDocument type class (or null if no class has been found)
        Since:
        jcms-10.0.0
      • getFirstDocumentClassAuthorized

        public static java.lang.Class<? extends FileDocument> getFirstDocumentClassAuthorized​(Member member,
                                                                                              Workspace workspace,
                                                                                              java.lang.String contentType,
                                                                                              java.util.Map<java.lang.String,​?> contextMap)
        Retrieve the first document class authorized for publication by the specified member and workspace, and the most relevant regarding specified contentType.
        Parameters:
        member - the member for which to perform the verification
        workspace - the workspace in which to perform the verification
        contentType - the contentType of the document to create
        contextMap - an optional context map providing information on publish request context
        Returns:
        a FileDocument type class (or null if no class has been found)
        Since:
        jcms-10.0.6 / JCMS-8882
      • getFieldValue

        public java.lang.Object getFieldValue​(java.lang.String fieldName,
                                              java.lang.String lang,
                                              boolean useDefault)
                                       throws java.lang.NoSuchFieldException
        Gets the Object value of the given field name for this FileDocument.
        Overrides:
        getFieldValue in class Publication
        Parameters:
        fieldName - the field name from which to retrieve the field value.
        lang - the language (ISO-639 code) in which to retrieve the field value (used only for multilingual fields).
        useDefault - whether to use the publication main language if the field value is not available in the requested language (used only for multilingual fields).
        Returns:
        the Object field value
        Throws:
        java.lang.NoSuchFieldException - if the field was not found in the given Publication.
      • setFieldValue

        public void setFieldValue​(java.lang.String fieldName,
                                  java.lang.Object value,
                                  java.lang.String lang)
                           throws java.lang.NoSuchFieldException
        Sets the value of the given Object field name for the current Data.
        If the field is multilingual, the given language will be used.
        Do not retrieve Category fields, see #getCategoryFieldValue(String, Member).
        Overrides:
        setFieldValue in class Publication
        Parameters:
        fieldName - the field name from which to retrieve the field value.
        value - whether to use the publication main language if the field value is not available in the requested language (used only for multilingual fields).
        lang - the language (ISO-639 code) in which to retrieve the field value (used only for multilingual fields).
        Throws:
        java.lang.NoSuchFieldException - if the field was not found in the given Data.
        Since:
        jcms-7.0.0
      • getAbstract

        public java.lang.String getAbstract()
        Description copied from class: Publication
        Returns the abstract of this publication in the channel's main language.
        Overrides:
        getAbstract in class Publication
        Returns:
        the abstract of this publication in the channel's main language.
      • getAbstract

        public java.lang.String getAbstract​(java.lang.String lang,
                                            boolean useDefault)
        Retrieve the value of this FileDocument's abstract field (description) in the specified language.
        Overrides:
        getAbstract in class Publication
        Parameters:
        lang - the language (ISO 639: 2-letter codes) in which to retrieve the field value.
        useDefault - whether to use the publication main language if the field value is not available in the requested language.
        Returns:
        the abstract of this publication.
      • getDataImage

        public java.lang.String getDataImage()
        Description copied from class: Publication
        Returns a data image of this publication based on the image contains in its wiki or wysiwyg fields.
        Overrides:
        getDataImage in class Publication
        Returns:
        a data image of this publication based on the image contains in its wiki or wysiwyg fields.
        See Also:
        Data.getDataImage()
      • getDataImage

        public java.lang.String getDataImage​(java.lang.String lang,
                                             boolean useDefault)
        Description copied from class: Data
        Retrieves the image path of this data.

        This method can (should) be implemented by subclasses to provide an image/illustration of this Data.
        Default behaviour is to return empty string.

        Overrides:
        getDataImage in class Data
        Parameters:
        lang - the user language (ISO-639 language code)
        useDefault - should the default language be used if no value is found for the specified language
        Returns:
        a path relative to the webapp root.
      • getAllWikiText

        public java.lang.String getAllWikiText()
        Retrieve a String containing all the wiki text available for this FileDocument.
        Current implementation is to retrieve descrition values (with wiki text) in all languages available.
        Overrides:
        getAllWikiText in class Publication
        Returns:
        a String which contains the concatenation of all the wiki fields.
      • getAllWysiwygText

        public java.lang.String getAllWysiwygText()
        Retrieve a String containing all the wiki text available for this FileDocument.
        Current implementation is to retrieve descrition values (with JHTML) in all languages available.
        Overrides:
        getAllWysiwygText in class Publication
        Returns:
        a String which contains the concatenation of all the wysiwyg fields.
        Since:
        jcms-5.5.0
      • importXml

        public void importXml​(org.jdom.Element elt,
                              ImportOptions options)
        Description copied from class: Data
        Fill this data with the values contains in the JDOM element.
        Overrides:
        importXml in class Publication
        Parameters:
        elt - the JDOM element
        options - the ImportOptions
      • getExportXmlDataValue

        public java.lang.String getExportXmlDataValue()
        Returns a string representation of this data used by exportXml().
        Overrides:
        getExportXmlDataValue in class Data
        Returns:
        a string representation of this data used by exportXml().
        Since:
        jcms-5.7.2
      • exportXmlField

        public void exportXmlField​(java.lang.StringBuffer sb,
                                   int indentLevel)
        Description copied from class: Data
        Fills the given StringBuffer with Xml export of fields of this data.
        Overrides:
        exportXmlField in class Publication
        Parameters:
        sb - the StringBuffer
        indentLevel - the indent level
      • getSearchStrings

        public java.lang.String[] getSearchStrings()
        Retrieve an array of String containing all the text that may be searched.
        Current implementation is to retrieve descrition values in all languages available.
        Specified by:
        getSearchStrings in interface Searchable
        Overrides:
        getSearchStrings in class Publication
        Returns:
        an array of Strings which contains only one string which is the concatenation of all the searchable string of this publication.
        See Also:
        Searchable.getSearchStrings()
      • clearInternalCache

        public void clearInternalCache()
        Clear internal cache of this FileDocument.

        You might need to invoke this method after modification to the file without update of the FileDocument (this is not recommended though).

        Since:
        jcms-5.7.5
      • isDefaultDetailView

        public boolean isDefaultDetailView()
        Returns true if this FileDocument must be viewed in detail by default.
        Returns:
        true if this FileDocument must be viewed in detail by default.
        Since:
        jcms-7.0.0
      • getFile

        public java.io.File getFile()
        Returns the File object for the corresponding the filename
        Returns:
        a File object, may return null for remote document or if invalid filename was specified
        Since:
        jcms-4.1
      • getSize

        public long getSize()
        Returns the size of the file encapsulated by this FileDocument.
        Returns:
        the size of the file
        Since:
        jcms-5.0.0
      • getLastModified

        public long getLastModified()
        Returns the time that this filedocument was last modified.
        Returns:
        the time that this filedocument was last modified.
        Since:
        jcms-5.7.2
      • getIcon

        public java.lang.String getIcon()
        Returns:
        the icon src for this FileDocument
      • getDataIcon

        public java.lang.String getDataIcon()
        Description copied from class: Data
        Returns source information for the icon associated to this Data, either a relative path or sprite classes name.

        If this method behavior has not been overriden by subclass, the default icon can be declared using property types.{Type}.icon, where {Type} is the short class name of the type concerned.

        • Either by specifying a relative image path :
          types.Article.icon: images/jalios/icon/abstract.gif 
        • or else by using a sprite icon :
          types.Article.icon: ss_sprite ss_date
        Overrides:
        getDataIcon in class Publication
        Returns:
        a relative path (eg images/jalios/icon/abstract.gif) or sprite classes name (eg ss_sprite ss_date).
        See Also:
        Data.getDataIconHtml(String)
      • getDataIconTitle

        public java.lang.String getDataIconTitle​(java.lang.String lang)
        Description copied from class: Data
        Returns the icon's tooltip.

        If this method behavior has not been overriden by subclass, the default alternative text can be declared using language property types.{Type}.title, where {Type} is the short class name of the type concerned.

        Overrides:
        getDataIconTitle in class Publication
        Parameters:
        lang - the user language.
        Returns:
        the title Html attribute for the IMG Html tag
        See Also:
        Data.getDataIconHtml(String)
      • getGenericContentType

        public java.lang.String getGenericContentType()
        Returns the generic content-type of this FileDocument (eg "video" if content-type contains "video/mpeg"). One exception, for all content-type starting with "application", we return the second part.
        Returns:
        the generic content-type.
        Since:
        jcms-5.5.0
      • getWidth

        public long getWidth()
        Retrieve the width of the image represented by this filedoc.
        Reserved to images files.
        Returns:
        the width of the image or zero if it is not available.
      • getHeight

        public long getHeight()
        Retrieve the height of the image represented by this filedoc.
        Reserved to images files.
        Returns:
        the height of the image or zero if it is not available.
      • getDimensions

        public java.lang.String getDimensions()
        Returns the dimensions of the image in the following form: "{width}×{height}" (withouth quotes).
        Reserved to images files.
        Returns:
        the string with the dimensions of the image.
        Since:
        jcms-5.5.0
      • getDuration

        public long getDuration()
        Returns the duration of the audio (reserved for audio files)
        Returns:
        the duration of this audio file in millisecond (return -1 if this FileDocument is not an audio file).
        Since:
        jcms-5.5.0
        See Also:
        AudioUtil.getDuration(File)
      • hasDuration

        public boolean hasDuration()
        Returns true if this document has a duration (only for audio/video).
        Returns:
        true if this document has a duration (only for audio/video).
        Since:
        jcms-10.0.0
      • isWebImage

        public boolean isWebImage()
        Returns true if this FileDocument contains an image displayable in a Web browser (i.e. GIF, JPEG or PNG)
        Returns:
        true if it is a Web image
        Since:
        jcms-4.0
      • isImage

        public boolean isImage()
        Returns true if this FileDocument is an image.
        Returns:
        true if it is a image
        Since:
        jcms-5.5.0
      • isAudio

        public boolean isAudio()
        Returns true if this FileDocument is an audio file.
        Returns:
        true if it is an audio file
        Since:
        jcms-5.5.0
      • isVideo

        public boolean isVideo()
        Returns true if this FileDocument is a video file.
        Returns:
        true if it is a video file
        Since:
        jcms-5.5.0
      • isText

        public boolean isText()
        Returns true if this FileDocument is a text file.
        Returns:
        true if it is a text file
        Since:
        jcms-5.5.0
      • isFlash

        public boolean isFlash()
        Returns true if this FileDocument is a flash file.
        Returns:
        true if it is a shockwave flash file
        Since:
        jcms-5.5.0
      • isMedia

        public boolean isMedia()
        Check if this FileDocument is a media file (ie : an image, audio, video or flash file)
        Returns:
        true if it is a media, false otherwise
        Since:
        jcms-6.1
      • getMediaType

        public java.lang.String getMediaType()
        Retrieves the media type of this FileDocument as a String.

        Depending on the media type, returns :

        Returns:
        the media type as a string
      • hasTracks

        public boolean hasTracks()
        Check if this document has track attached to it.
        Returns:
        true if there are some tracks, false otherwise
        Since:
        10.0.6 / JCMS-8731
      • canUploadTracks

        public static boolean canUploadTracks​(FileDocument doc,
                                              Member member)
        Check if this document should allow member to add tracks to it.

        Document must be local, member must be able to work on it, and media tracks must be authorized.

        Parameters:
        doc - document to test if it allows media tracks
        member - member to test if he has rights to work on document
        Returns:
        true if there are some tracks, false otherwise
        Since:
        10.0.6 / JCMS-8730
        See Also:
        MediaTracksHandler.isMediaTrackAuthorized(FileDocument)
      • getTracksMap

        public java.util.Map<java.lang.String,​java.util.Map<java.lang.String,​java.lang.String>> getTracksMap()
        Return a map containg all media tracks grouped by track kind.

        Key of first level map is the kind of track (e.g. "subtitles", "captions", "descriptions, "chapters", "metatada") For the second level map : key is the language of the corresponding track, value is its (relative to the webapp root).

        Returns:
        a Map instance (never return null)
        Since:
        10.0.6 / JCMS-8731
      • performBeforeWrite

        protected void performBeforeWrite​(int op,
                                          Member mbr,
                                          java.util.Map context)
        Description copied from class: Data
        Called to perform some action before the write.
        Overrides:
        performBeforeWrite in class Publication
        Parameters:
        op - the operation (OP_CREATE, OP_UPDATE, ...)
        mbr - the member which requests the write operation
        context - a map which contains context parameters (may be null)
      • isIndexed

        public boolean isIndexed()
        Returns:
        true if this FileDocument has been indexed with Lucene
        Since:
        jcms-4.0.1
      • getIndexedDate

        @Deprecated
        public java.util.Date getIndexedDate()
        Deprecated.
        Returns:
        the date this file has been indexed
        Since:
        jcms-4.0.1
      • getFileIndexingDate

        public java.util.Date getFileIndexingDate()
        Returns:
        the date the file has been indexed
        Since:
        jcms-6.0.1
      • getTypeInfo

        public java.lang.String getTypeInfo​(java.lang.String lang)
        Returns the information bound to the type this FileDocument
        Parameters:
        lang - the user language
        Returns:
        an information String
        Since:
        jcms-4.0
      • getFileReferrerSet

        public <T extends Data> java.util.Set<T> getFileReferrerSet​(java.lang.Class<T> clazz)
        Returns all the data referring the file of this FileDocument (except this FileDocument itself).
        Type Parameters:
        T - A data class
        Parameters:
        clazz - the class for filter with. Returns all the data referring the file of this FileDocument (except this FileDocument itself).
        Returns:
        all the data referring the file of this FileDocument (except this FileDocument itself).
        Since:
        jcms-7.1.0
      • getMetaData

        public java.lang.String getMetaData​(java.lang.String tag)
        Returns the value bound to the given metadata
        Parameters:
        tag - the name of the metadata to get
        Returns:
        the value of the metadata (may be null)
        Since:
        jcms-4.0
      • getMetaDataMap

        public java.util.Map<java.lang.String,​java.lang.String> getMetaDataMap()
        Returns the map of metadata
        Returns:
        the map of metadata (may be null)
        Since:
        jcms-4.0
      • canCreateCopy

        public boolean canCreateCopy​(Member mbr,
                                     boolean isWorkCopy)
        This method override canCreateCopy() and returns true for workCopy and false otherwise (2 FileDocuments cannot target the same file)
        Overrides:
        canCreateCopy in class Publication
        Parameters:
        mbr - the member to be checked
        isWorkCopy - true if this is a workCopy
        Returns:
        true if a given member can create a copy of this publication
        Since:
        jcms-5.6.0
        See Also:
        Publication.canCreateCopy(com.jalios.jcms.Member,boolean)
      • initCopy

        public void initCopy​(Member newAuthor)
        Description copied from class: Publication
        Initialize this publication once it has been cloned for a copy (eg by duplicate.jsp)
        Overrides:
        initCopy in class Publication
        Parameters:
        newAuthor - the author of this publication
      • discardCopy

        public void discardCopy​(Publication copy)
        Description copied from class: Publication
        This method is called when the creation of copy or a work copy of this publication has failed. It is intended to perform cleaning operations.
        Overrides:
        discardCopy in class Publication
        Parameters:
        copy - the copy which has been discarded.
      • canBeUploadedBy

        public boolean canBeUploadedBy​(Member mbr)
        Returns true a new version of the file can be uploaded for this document by the given member.
        Parameters:
        mbr - the member
        Returns:
        true a new version of the file can be uploaded for this document by the given member.
        Since:
        jcms-9.0.0
      • setAbstract

        public void setAbstract​(java.lang.String lang,
                                java.lang.String value)
        Description copied from class: Publication
        Convenient method to set the value of the Abstract field in any language (default site language or any other).
        depending on the specified language.
        Overrides:
        setAbstract in class Publication
        Parameters:
        lang - the language (ISO 639 code) in which to set the value
        value - the value to set.
      • getDescription

        public java.lang.String getDescription​(java.lang.String lang)
      • getDescription

        public java.lang.String getDescription​(java.lang.String lang,
                                               boolean useDefault)
      • getDescription

        public java.lang.String getDescription()
      • setDescription

        public void setDescription​(java.lang.String v)
      • getDescriptionML

        public java.util.HashMap<java.lang.String,​java.lang.String> getDescriptionML()
      • setDescriptionML

        public void setDescriptionML​(java.util.HashMap<java.lang.String,​java.lang.String> v)
      • setDescription

        public void setDescription​(java.lang.String lang,
                                   java.lang.String value)
        Convenient method to set the value of the Description field in any language (default site language or any other).
        This method will set the proper field value (setDescription(String) or setDescriptionML(HashMap)) depending on the specified language.
        Parameters:
        lang - the language (ISO 639 code) in which to set the value
        value - the value to set.
        Since:
        jcms-7.0.0
      • getFilename

        public java.lang.String getFilename()
        Retrieve the path relative to the webapp of the file pointed by this FileDocument.
        Example: upload/docs/image/jpg/welcome.gif It should not start with a slash ("/").
        Returns:
        a relative file path.
      • setFilename

        public void setFilename​(java.lang.String v)
      • getOriginalFilename

        public java.lang.String getOriginalFilename()
      • setOriginalFilename

        public void setOriginalFilename​(java.lang.String v)
      • getRemoteUri

        public java.lang.String getRemoteUri()
      • setRemoteUri

        public void setRemoteUri​(java.lang.String v)
      • isRemote

        public boolean isRemote()
        Returns true if this document is a Remote Document.
        Returns:
        true if this document is a Remote Document.
        Since:
        jcms-10.0.0
      • isLocalFile

        public boolean isLocalFile()
        Returns true if this document is a local (on this site) Document.
        Returns:
        true if this document is a local (on this site) Document.
        Since:
        jcms-10.0.0
      • getDownloadName

        public java.lang.String getDownloadName​(java.lang.String lang)
        Returns the (file) name to use to download this document.
        Parameters:
        lang - the language to be used to download this document.
        Returns:
        the (file) name to use to download this document.
        Since:
        jcms-10.0.0
      • getDownloadName

        public java.lang.String getDownloadName​(java.lang.String lang,
                                                boolean addVersion)
        Returns the (file) name to use to download this document.
        Parameters:
        lang - the language to be used to download this document.
        addVersion - if true, append the version number in the name.
        Returns:
        the (file) name to use to download this document.
        Since:
        jcms-10.0.0
      • getDownloadUrl

        public java.lang.String getDownloadUrl()
        Returns the download URL for this document.
        Returns:
        the download URL for this document.
        Since:
        jcms-10.0.0
      • getAbsDownloadUrl

        public java.lang.String getAbsDownloadUrl()
        Returns the absolute download URL for this document.
        Returns:
        the absolute download URL for this document.
        Since:
        jcms-10.0.0
      • getDownloadUrl

        public java.lang.String getDownloadUrl​(boolean relative)
        Returns the download URL for this document.
        Parameters:
        relative - if true returns a relative URL otherwise return an absolute URL.
        Returns:
        the download URL for this document.
        Since:
        jcms-10.0.0
      • getDownloadUrl

        public java.lang.String getDownloadUrl​(boolean relative,
                                               boolean encodeForHTMLAttribute)
        Returns the download URL for this document.
        Parameters:
        relative - if true returns a relative URL otherwise return an absolute URL.
        encodeForHTMLAttribute - if true returns a value encoded for use in HTML attribute, otherwise return a raw value.
        Returns:
        the download URL for this document.
        Since:
        jcms-10.0.2 - JCMS-7057
      • getRemotePreviewUrl

        public java.lang.String getRemotePreviewUrl()
        Returns the preview URL for Remote Document.
        Returns:
        the preview URL for Remote Document.
        Since:
        jcms-10.0.0
      • getRemoteThumbnailUrl

        public java.lang.String getRemoteThumbnailUrl()
        Returns the thumbnail URL for Remote Document.
        Returns:
        the thumbnail URL for Remote Document.
        Since:
        jcms-10.0.0
      • previewRemoteWithMedia

        public boolean previewRemoteWithMedia()
        Returns true if this RemoteDocument can be previewed as a media.
        Returns:
        true if this RemoteDocument can be previewed as a media.
        Since:
        jcms-10.0.0
      • previewRemoteWithIFrame

        public boolean previewRemoteWithIFrame()
        Returns true if this RemoteDocument can ben previewed with an iFrame.
        Returns:
        true if this RemoteDocument can ben previewed with an iFrame.
        Since:
        jcms-10.0.0
      • getContentType

        public java.lang.String getContentType()
      • setContentType

        public void setContentType​(java.lang.String v)
      • getUploadDate

        public java.util.Date getUploadDate()
        Returns the date of the last upload.
        Returns:
        the date of the last upload.
        Since:
        jcms-5.7.0
      • setUploadDate

        public void setUploadDate​(java.util.Date date)
        Set the date of the last upload.
        Parameters:
        date - the date.
        Since:
        jcms-5.7.0
      • getPdfUploadDate

        public java.util.Date getPdfUploadDate()
        Returns the date at which the Associated PDF file was uploaded (if uploaded by user).
        Returns:
        the date of the Associated PDF file upload, return null if associated PDF file was never uploaded by user.
        Since:
        jcms-8.0.0
      • setPdfUploadDate

        public void setPdfUploadDate​(java.util.Date date)
        Set the date at which the Associated PDF file was uploaded (if uploaded by user).
        Parameters:
        date - the Date of the Associated PDF file upload (null to indicated PDF was not uploaded by user)
        Since:
        jcms-8.0.0
      • hasStrongLock

        @Deprecated
        public boolean hasStrongLock()
        Deprecated.
        Returns true if this FileDocument has a strong lock.
        Returns:
        true if this FileDocument has a strong lock.
        Since:
        jcms-5.7.0
      • getLockedDocumentSet

        public static java.util.Set<FileDocument> getLockedDocumentSet​(Workspace ws,
                                                                       Member mbr)
        Returns the set of FileDocument which have a strong lock. This set is filtered according the given workspace and the given member
        Parameters:
        ws - the workspace
        mbr - the member who performs this request (to check read rights)
        Returns:
        the set of FileDocument which have a strong lock
        Since:
        jcms-5.7.0
      • getAssociatedPDF

        public java.io.File getAssociatedPDF()
        Returns the pdf associated with a FileDocument. Itself, if it is a PDF. null if filename is null.
        Returns:
        the associated PDF
        Since:
        jcms-5.7.3
      • deleteAssociatedPDF

        public boolean deleteAssociatedPDF()
        Delete the associated PDF to the current file.
        Returns:
        true if a file as been deleted.
        Since:
        JCMS-5.7.3
      • isGeneratedPDF

        public static boolean isGeneratedPDF​(java.lang.String filename)
        Returns true if the given filename is a PDF file generated with JCMS Universal.
        Parameters:
        filename - the filename to be checked
        Returns:
        true if the given filename is a PDF file generated with JCMS Universal.
        Since:
        jcms-5.7.0
      • getOriginalDocumentFromPDF

        public static java.lang.String getOriginalDocumentFromPDF​(java.lang.String pdfFilename)
        Returns the filename of the original document bound to the given PDF filename otherwise returns null.
        Parameters:
        pdfFilename - the filename of a PDF file generated with JCMS Universal
        Returns:
        the filename of the original document bound to the given PDF filename otherwise returns null.
        Since:
        jcms-5.7.0
      • getAssociatedFileSet

        public java.util.Set<java.io.File> getAssociatedFileSet()
        Retrieve a Set of File associated to this FileDocument.

        Implementation note : In order to always return a Set of file up to date, the file system is read and files are filtered each time the method is invoked.
        Use this method wisely if you need high performance.

        Returns:
        a new Set of File, never return null
        Since:
        jcms-7.0.0
        See Also:
        FileDocument.AssociatedFileFilter
      • deleteAssociatedFiles

        public java.util.Set<java.io.File> deleteAssociatedFiles()
        Delete all the File associated to this FileDocument.

        It includes thumbnails, generated pdf or any other associated file as defined by properties file-document.associated-files.*.

        The File referenced by this FileDocument is NOT deleted.

        Returns:
        a new Set containing all the File that were deleted, never return null
        Since:
        jcms-7.0.0
        See Also:
        FileDocument.AssociatedFileFilter
      • getGenericThumbnail

        public java.lang.String getGenericThumbnail()
        Returns a generic thumbnail for this FileDocument. As defined by properties file-document.thumb.{generic-content-type}.

        If no property was defined for the content type of this FileDocument, the thumbnail specified in property file-document.thumb.unknown is used.

        Overrides:
        getGenericThumbnail in class Publication
        Returns:
        a thumbnail path relative to the webapp root, eg images/jalios/icons/media/word.gif
        Since:
        jcms-5.5.0
      • deleteThumbnails

        public boolean deleteThumbnails()
        Delete every thumbnail of this FileDocument if there are any.
        Returns:
        true if some thumbnail were deleted, false if there was no thumbnail to delete.
        See Also:
        deleteThumbnails(File)
      • deleteThumbnails

        public static boolean deleteThumbnails​(java.io.File originalFile)
        Delete every thumbnail associated to this FileDocument if there are any. Uses the pattern
        Parameters:
        originalFile - the original file used to produce thumbnails
        Returns:
        true if some thumbnail were deleted, false if there was no thumbnail to delete.
      • getThumbnailFilename

        public static java.lang.String getThumbnailFilename​(java.lang.String originalFilename,
                                                            int maxWidth,
                                                            int maxHeight)
        Returns the file name of the thumbnail to create given an original filename
        Uses the following format for the new filename:
        th-{maxWidth}x{maxHeight}-{originalFilename}.{ext} where {ext} is the file extension of the default thumbnail image format as specified with property tag.thumbnail.format
        Parameters:
        originalFilename - the filename to convert, must not be null or empty
        maxWidth - the maximum width of the thumbnail, a positive integer.
        maxHeight - the maximum height of the thumbnail, a positive integer.
        Returns:
        a String representing the thumbnail filename.
      • getThumbnailFilename

        public static java.lang.String getThumbnailFilename​(java.lang.String originalFilename,
                                                            int maxWidth,
                                                            int maxHeight,
                                                            boolean square)
        Returns the file name of the thumbnail to create given an original filename
        Uses the following format for the new filename:
        th-{maxWidth}x{maxHeight}-{originalFilename}.{ext} where {ext} is the file extension of the default thumbnail image format as specified with property tag.thumbnail.format
        Parameters:
        originalFilename - the filename to convert, must not be null or empty
        maxWidth - the maximum width of the thumbnail, a positive integer.
        maxHeight - the maximum height of the thumbnail, a positive integer.
        square - set to true to indicate image is cropped into a square
        Returns:
        a String representing the thumbnail filename.
        Since:
        jcms-9.0
      • getThumbnailFilename

        public static java.lang.String getThumbnailFilename​(java.lang.String originalFilename,
                                                            int maxWidth,
                                                            int maxHeight,
                                                            boolean square,
                                                            java.lang.String extension)
        Returns the file name of the thumbnail to create given an original filename
        Uses the following format for the new filename:
        th-{maxWidth}x{maxHeight}-{originalFilename}.{ext} where {ext} is the file extension of the default thumbnail image format as specified with property tag.thumbnail.format
        Parameters:
        originalFilename - the filename to convert, must not be null or empty
        maxWidth - the maximum width of the thumbnail, a positive integer.
        maxHeight - the maximum height of the thumbnail, a positive integer.
        square - set to true to indicate image is cropped into a square
        extension - the extension of the thumbnail format being create/generated/manipulated. eg "jpg"
        Returns:
        a String representing the thumbnail filename.
        Since:
        jcms-10.0.1 JCMS-4762
      • getThumbnailFile

        public static java.io.File getThumbnailFile​(java.io.File file,
                                                    int maxWidth,
                                                    int maxHeight)
        Gets the File to use for a thumbnail of the given image file, using given dimensions.
        The new File is created in the same directory as the given File.
        Parameters:
        file - the file from which to get and create the associated thumbnail File, cannot be null.
        maxWidth - the maximum width of the thumbnail, a positive integer.
        maxHeight - the maximum height of the thumbnail, a positive integer.
        Returns:
        a File representing the thumbnail filename.
        See Also:
        getThumbnailFilename(String, int, int)
      • getThumbnailFile

        public static java.io.File getThumbnailFile​(java.io.File file,
                                                    int maxWidth,
                                                    int maxHeight,
                                                    boolean square)
        Gets the File to use for a thumbnail of the given image file, using given dimensions.
        The new File is created in the same directory as the given File.
        Parameters:
        file - the file from which to get and create the associated thumbnail File, cannot be null.
        maxWidth - the maximum width of the thumbnail, a positive integer.
        maxHeight - the maximum height of the thumbnail, a positive integer.
        square - set to true to indicate image is cropped into a square
        Returns:
        a File representing the thumbnail filename.
        Since:
        jcms-9.0
        See Also:
        getThumbnailFilename(String, int, int, boolean)
      • getThumbnailFile

        public static java.io.File getThumbnailFile​(java.io.File file,
                                                    int maxWidth,
                                                    int maxHeight,
                                                    boolean square,
                                                    java.lang.String extension)
        Gets the File to use for a thumbnail of the given image file, using given dimensions.
        The new File is created in the same directory as the given File.
        Parameters:
        file - the file from which to get and create the associated thumbnail File, cannot be null.
        maxWidth - the maximum width of the thumbnail, a positive integer.
        maxHeight - the maximum height of the thumbnail, a positive integer.
        square - set to true to indicate image is cropped into a square
        extension - the extension of the thumbnail format being create/generated/manipulated. eg "jpg"
        Returns:
        a File representing the thumbnail filename.
        Since:
        jcms-10.0.1 JCMS-4762
        See Also:
        getThumbnailFilename(String, int, int, boolean)
      • getFileFromThumbnail

        public static java.io.File getFileFromThumbnail​(java.io.File thumbnailFile)
        Retrieve the original File associated with the given thumbnail File. Match the format specified in getThumbnailFile(File, int, int).
        Parameters:
        thumbnailFile - a File representing the thumbnail.
        Returns:
        the original File of the given thumbnail or null if the original File does not exist.
      • getThumbnail

        public java.lang.String getThumbnail​(int width,
                                             int height)
        Returns the thumbnail of this document with the given width and height. If this thumbnail does not exist, it is created.
        Parameters:
        width - the thumbnail's width
        height - the thumbnail's height
        Returns:
        the thumbnail of this document with the given width and height. If this thumbnail does not exist, it is created.
        Since:
        jcms-9.0.0
      • isThumbnail

        public static boolean isThumbnail​(java.io.File file)
        Returns true if the given file is a thumbnail.
        Parameters:
        file - the file to be checked
        Returns:
        true if the given file is a thumbnail.
        Since:
        jcms-5.7.0
      • getDefaultWorkflow

        public static Workflow getDefaultWorkflow()
        Returns the Default Workflow associated with FileDocument
        Returns:
        Workflow the default workflow for FileDocuments
      • getFileDocumentFromFile

        public static FileDocument getFileDocumentFromFile​(java.io.File file)
        Retrieves the first FileDocument bound to the given File.
        Parameters:
        file - the File of the FileDocument to be retrieved.
        Returns:
        an existing FileDocument or null if was not found.
        See Also:
        getFileDocumentFromFilename(String)
      • getFileDocumentFromFilename

        public static FileDocument getFileDocumentFromFilename​(java.lang.String filename)
        Retrieves the first FileDocument bound to the given filename.
        Parameters:
        filename - the filename (relative path such as "upload/docs/image/gif/welcome.gif") of the FileDocument to be retrieved.
        Returns:
        an existing FileDocument or null if was not found.
        Since:
        jcms-5.5.0
        See Also:
        getFileDocumentFromFile(File)
      • isGenericContentType

        public static boolean isGenericContentType​(java.lang.String contentType)
      • getDefaultContentType

        public static java.lang.String getDefaultContentType()
      • getRealContentType

        public static java.lang.String getRealContentType​(java.lang.String contentType,
                                                          java.lang.String extension)
        This method retrieve the real content type from a given one. If the content type is a generic content type then try to use extension.
        Parameters:
        contentType - the file content type
        extension - the file extension
        Returns:
        String the computed content type
        Since:
        jcms-5.5.0
      • getAccessibilityInformation

        public java.lang.String getAccessibilityInformation​(java.util.Locale locale,
                                                            boolean htmlDisplay)
        Returns a formatted string displaying accessibility information.
        • on the format of the current file;
        • on the size of the current file;
        • on the language of the current file.
        May be used to generate accessible link to file : <a href="document.pdf">télécharger le rapport statistique (format <abbr title="Portable Document Format" lang="en">PDF</abbr>, 400<abbr title="kilo octets">ko</abbr>)</a>
        Parameters:
        locale - the current Locale
        htmlDisplay - if true, uses an html format, with detailed abbreviation, otherwise, use only plain text
        Returns:
        a formatted String of informations on the file
      • getNewDocumentFilename

        public static java.lang.String getNewDocumentFilename​(java.lang.String fileName)
        Retrieves the relative path (==filename) to use for creation of a new FileDocument for the given file's name.

        E.g : given file name "Présentation finale.ps", can return a path such as "upload/docs/application/postscript/2006/06/presentation-finale.ps"
        Parameters:
        fileName - the original name of the file to be added.
        Returns:
        the path of the new file to create, relative to the webapp.
        Throws:
        java.lang.IllegalArgumentException - if the fileName argument is null.
        Since:
        jcms-5.7.0
      • getNewDocumentDirectoryAndName

        public static java.lang.String[] getNewDocumentDirectoryAndName​(java.lang.String fileName,
                                                                        java.lang.String contentType)
        Retrieves the file's name and the relative path of the directory to use for creation of a new FileDocument for the given file's name.

        E.g : given file name "Présentation finale.ps", can return a path such as "upload/docs/application/postscript/2006/06/presentation-finale.ps"
        Parameters:
        fileName - the original name of the file to be added. Must not be null.
        contentType - the content type of the file or null if not available.
        Returns:
        a array of two strings, the first cell containing the relative directory path, the second one the new filename
        Throws:
        java.lang.IllegalArgumentException - if the fileName argument is null.
        Since:
        jcms-5.7.0
      • getNewDocumentDirectoryAndName

        public static java.lang.String[] getNewDocumentDirectoryAndName​(java.lang.String fileName,
                                                                        java.lang.String contentType,
                                                                        java.util.Set<java.lang.String> authorizedExtensions)
        Retrieves the file's name and the relative path of the directory to use for creation of a new FileDocument for the given file's name.

        E.g : given file name "Présentation finale.ps", can return a path such as "upload/docs/application/postscript/2006/06/presentation-finale.ps"
        Parameters:
        fileName - the original name of the file to be added. Must not be null.
        contentType - the content type of the file or null if not available.
        authorizedExtensions - a Set of lower case extension explicitely authorized, bypassing the default sanitization process. set to null or empty to apply default sanitization.
        Returns:
        a array of two strings, the first cell containing the relative directory path, the second one the new filename
        Throws:
        java.lang.IllegalArgumentException - if the fileName argument is null.
        Since:
        jcms-10.0.6 / JCMS-8317
      • getExtension

        public static java.lang.String getExtension​(java.lang.String filename)
        This method return the lowercase extension of a given file name it return string after last '.' of the filename.
        ie. FileName.Ext -> ext

        The following sanitization process is applied : if the extension computed by IOUtil.getExtension(String) is declared in a property file-document.invalid-extension.{ext}: {value}, {value} is returned. For example "txt" is returned when uploading "jsp".
        Parameters:
        filename - the file name
        Returns:
        String the file extension
        See Also:
        IOUtil.getExtension(String)
      • getExtension

        public static java.lang.String getExtension​(java.lang.String filename,
                                                    java.util.Set<java.lang.String> authorizedExtensions)
        This method return the lowercase extension of a given file name it return string after last '.' of the filename.
        ie. FileName.Ext -> ext

        The following sanitization process is applied unless the computed extension is declared in the authorizedExtension argument : if the extension computed by IOUtil.getExtension(String) is declared in a property file-document.invalid-extension.{ext}: {value}, {value} is returned. For example "txt" is returned when uploading "jsp".
        Parameters:
        filename - the file name
        authorizedExtensions - a Set of lower case extension explicitely authorized, bypassing the default sanitization process. set to null or empty to apply default sanitization.
        Returns:
        String the file extension
        Since:
        jcms-10.0.6 / JCMS-8317
      • getQualifiedName

        public static java.lang.String getQualifiedName​(java.lang.String filename)
        This method return the name of a given file without the extension.

        It return string before last '.' of the filename (without the '.').
        For example :

         assertEquals("file", FileDocument.getQualifiedName("file.ext"));
         assertEquals("file.", FileDocument.getQualifiedName("file."));
         assertEquals("file", FileDocument.getQualifiedName("file"));
         assertEquals(".ext", FileDocument.getQualifiedName(".ext"));
         

        Since JCMS-6190, the returned value is escaped using JcmsUtil.escapeHtml(String) for proper HTML output.
        For example : File<Name.Ext returns File&lt;Name

        Parameters:
        filename - the file name
        Returns:
        String the file name
      • getContentTypeComparator

        public static <T extends FileDocument> java.util.Comparator<T> getContentTypeComparator()
        Type Parameters:
        T - subclass of FileDocument
        Returns:
        a ContentType comparator
        Since:
        jcms-4.1
      • getSizeComparator

        public static <T extends FileDocument> java.util.Comparator<T> getSizeComparator()
        Type Parameters:
        T - subclass of FileDocument
        Returns:
        a Size comparator
        Since:
        jcms-4.1
      • getDimensionsComparator

        public static <T extends FileDocument> java.util.Comparator<T> getDimensionsComparator()
        Type Parameters:
        T - subclass of FileDocument
        Returns:
        a Dimensions comparator
        Since:
        jcms-5.5.0
      • getDurationComparator

        public static <T extends FileDocument> java.util.Comparator<T> getDurationComparator()
        Type Parameters:
        T - subclass of FileDocument
        Returns:
        a Duration comparator
        Since:
        jcms-5.5.0
      • unzipToFileDocuments

        public long unzipToFileDocuments​(java.io.FileFilter filter,
                                         Member opAuthor)
        Unzip this FileDocument to n FileDocument.

        Newly created FileDocument will have same field value, as copied using Publication.assignCommonPublicationFields(Publication)

        As of current implementation, the unzip operation is performed only if the following conditions match :

        • This FileDocument is a zip (content type is "application/zip"
        • File of this FileDocument exists.

        Warning: it can be a time consumming operation, depending on the zip's size.

        Parameters:
        filter - an optional FileFilter to filter the files to be extracted and converted to FileDocument. This filter is also used on extracted directory.
        opAuthor - the Member to used to perform the create operation
        Returns:
        the number of FileDocument created, or if an error occured, a status code (value < 0) indicating the problem.
        Since:
        jcms-5.7.3
      • unzipToFileDocuments

        public static long unzipToFileDocuments​(java.io.File zipFile,
                                                java.io.FileFilter filter,
                                                FileDocument refFileDoc,
                                                Member opAuthor)
        Unzip the specified File to n new FileDocument.

        Warning: it can be a time consumming operation, depending on the zip's size.

        Parameters:
        zipFile - the File to unzip
        filter - an optional FileFilter to filter the files to be extracted and converted to FileDocument. This filter is also used on extracted directory.
        refFileDoc - optional FileDocument from which to retrieve fields value to be assigned to the newly created FileDocuments. See Publication.assignCommonPublicationFields(Publication).
        opAuthor - optional (but recommended) Member to used to perform the create operation
        Returns:
        the number of FileDocument created, or if an error occured, a status code (value < 0) indicating the problem.
        Since:
        jcms-5.7.3
      • directoryToFileDocuments

        public static long directoryToFileDocuments​(java.io.File dir,
                                                    java.io.FileFilter filter,
                                                    FileDocument refFileDoc,
                                                    Member opAuthor,
                                                    java.util.Map<java.lang.String,​? extends java.lang.Object> contextMap)
        Create FileDocumens from all files in the specified directory (and its sub directory).

        Warning: it can be a time consumming operation.

        Parameters:
        dir - the Directory from which to retrieve Files
        filter - an optional FileFilter to filter the files to be converted to FileDocument.
        refFileDoc - optional FileDocument from which to retrieve fields value to be assigned to the newly created FileDocuments. See Publication.assignCommonPublicationFields(Publication).
        opAuthor - optional (but recommended) Member to used to perform the create operation
        contextMap - optional Map to be used during performCreate operation (may be null)
        Returns:
        the number of FileDocument created, or if an error occured, a status code (value < 0) indicating the problem.
        Since:
        jcms-5.7.3
      • checkIntegrity

        public ControllerStatus checkIntegrity​(java.util.Map context)
        Description copied from class: Data
        Checks whether or not data integrity constraints are respected.
        Overrides:
        checkIntegrity in class Data
        Parameters:
        context - a map which contains context parameters (may be null)
        Returns:
        a ControllerStatus
      • performUpdate

        public void performUpdate​(Member mbr,
                                  java.util.Map context)
        Description copied from class: Publication
        Performs data update
        Overrides:
        performUpdate in class Publication
        Parameters:
        mbr - the member which requests the write operation
        context - a map which contains context parameters (may be null)
      • performDelete

        public void performDelete​(Member mbr,
                                  java.util.Map context)
        Description copied from class: Publication
        Performs data deletion
        Overrides:
        performDelete in class Publication
        Parameters:
        mbr - the member which requests the write operation
        context - a map which contains context parameters (may be null)
      • performAfterWrite

        protected void performAfterWrite​(int op,
                                         Member mbr,
                                         java.util.Map context)
        Description copied from class: Data
        Called to perform some action after the write.
        Overrides:
        performAfterWrite in class Publication
        Parameters:
        op - the operation (OP_CREATE, OP_UPDATE, ...)
        mbr - the member which requests the write operation
        context - a map which contains context parameters (may be null)
      • generateUploadDate

        public java.util.Date generateUploadDate()
        Generates an upload date consistent with the environment (ie the RDBMS)
        Returns:
        a consistent upload date.
        Since:
        jcms-10.0.0
      • getAllFilePath

        public java.util.Set<java.lang.String> getAllFilePath()
        Description copied from class: Publication
        Gives the set of all relatives path to all kind (image, media) of files linked from the given publication.
        Overrides:
        getAllFilePath in class Publication
        Returns:
        a not null set of all relative path to linked files.
      • computeSignature

        public java.lang.String computeSignature​(boolean includePublicationFields,
                                                 boolean hash)
        Description copied from class: Publication
        Compute the signature of this publication.
        Overrides:
        computeSignature in class Publication
        Parameters:
        includePublicationFields - if true add the common publication fields (author, pdate, categories, ...). Computed fields (cdate, mdate, udate, minorVersion) are skipped.
        hash - if true hash (MD5) the signature otherwise return the complete string of the signature.
        Returns:
        the signature of this publication.
      • mergeWith

        public ControllerStatus mergeWith​(FileDocument tgtDoc,
                                          Member loggedMember)
        Merges this document with the given the document. The loggedMember must have the right to update the target document and to delete this document.
        Parameters:
        tgtDoc - the document to merge with
        loggedMember - the member.
        Returns:
        the ControllerStatus of the first operation that has failed or the last that has succeed.
        Since:
        jcms-10.0.0
      • getDownloadTicket

        public java.lang.String getDownloadTicket()