Class CmsPublishList

  • All Implemented Interfaces:
    java.io.Externalizable, java.io.Serializable

    public class CmsPublishList
    extends java.lang.Object
    implements java.io.Externalizable
    A container for all new/changed/deteled Cms resources that are published together.

    Only classes inside the org.opencms.db package can add or remove elements to or from this list. This allows the OpenCms API to pass the list around between classes, but with restricted access to create this list.

    To create a publish list, one of the public constructors must be used in order to set the basic operation mode (project publish or direct publish). After this, use CmsDriverManager.fillPublishList(CmsDbContext, CmsPublishList) to fill the actual values of the publish list.

    Since:
    6.0.0
    See Also:
    CmsDriverManager.fillPublishList(CmsDbContext, CmsPublishList), Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      CmsPublishList()
      Empty constructor.
      CmsPublishList​(boolean all, java.util.List<CmsResource> directPublishResources, boolean directPublishSiblings)
      Constructs a publish list for a list of direct publish resources.
      CmsPublishList​(java.util.List<CmsResource> directPublishResources, boolean publishSiblings)
      Constructs a publish list for a list of direct publish resources.
      CmsPublishList​(java.util.List<CmsResource> directPublishResources, boolean publishSiblings, boolean publishSubResources)
      Constructs a publish list for a list of direct publish resources.
      CmsPublishList​(CmsProject project)
      Constructs a publish list for a given project.
      CmsPublishList​(CmsResource directPublishResource, boolean publishSiblings)
      Constructs a publish list for a single direct publish resource.
    • Constructor Detail

      • CmsPublishList

        public CmsPublishList​(boolean all,
                              java.util.List<CmsResource> directPublishResources,
                              boolean directPublishSiblings)
        Constructs a publish list for a list of direct publish resources.

        Parameters:
        all - no redundant resource are filtered out
        directPublishResources - a list of CmsResource instances to be published directly
        directPublishSiblings - indicates if all siblings of the selected resources should be published
      • CmsPublishList

        public CmsPublishList​(CmsProject project)
        Constructs a publish list for a given project.

        Parameters:
        project - the project to publish, this should always be the id of the current project
      • CmsPublishList

        public CmsPublishList​(CmsResource directPublishResource,
                              boolean publishSiblings)
        Constructs a publish list for a single direct publish resource.

        Parameters:
        directPublishResource - a VFS resource to be published directly
        publishSiblings - indicates if all siblings of the selected resources should be published
      • CmsPublishList

        public CmsPublishList​(java.util.List<CmsResource> directPublishResources,
                              boolean publishSiblings)
        Constructs a publish list for a list of direct publish resources.

        Parameters:
        directPublishResources - a list of CmsResource instances to be published directly
        publishSiblings - indicates if all siblings of the selected resources should be published
      • CmsPublishList

        public CmsPublishList​(java.util.List<CmsResource> directPublishResources,
                              boolean publishSiblings,
                              boolean publishSubResources)
        Constructs a publish list for a list of direct publish resources.

        Parameters:
        directPublishResources - a list of CmsResource instances to be published directly
        publishSiblings - indicates if all siblings of the selected resources should be published
        publishSubResources - indicates if sub-resources in folders should be published (for direct publish only)
    • Method Detail

      • getAllResources

        public java.util.List<CmsResourcegetAllResources()
        Returns a list of all resources in the publish list, including folders and files.

        Returns:
        a list of CmsResource objects
      • getDeletedFolderList

        public java.util.List<CmsResourcegetDeletedFolderList()
        Returns a list of folder resources with the deleted state.

        Returns:
        a list of folder resources with the deleted state
      • getDirectPublishResources

        public java.util.List<CmsResourcegetDirectPublishResources()
        Returns the list of resources that should be published for a "direct" publish operation.

        Will return null if this publish list was not initialized for a "direct publish" but for a project publish.

        Returns:
        the list of resources that should be published for a "direct" publish operation, or null
      • getFileList

        public java.util.List<CmsResourcegetFileList()
        Returns an unmodifiable list of the files in this publish list.

        Returns:
        the list with the files in this publish list
      • getFolderList

        public java.util.List<CmsResourcegetFolderList()
        Returns an unmodifiable list of the new/changed folders in this publish list.

        Returns:
        the list with the new/changed folders in this publish list
      • getProjectId

        public CmsUUID getProjectId()
        Returns the id of the project that should be published, or -1 if this publish list is initialized for a "direct publish" operation.

        Returns:
        the id of the project that should be published, or -1
      • getPublishHistoryId

        public CmsUUID getPublishHistoryId()
        Returns the publish history Id for this publish list.

        Returns:
        the publish history Id
      • getTopMovedFolders

        public java.util.List<CmsResourcegetTopMovedFolders​(CmsObject cms)
                                                       throws CmsException
        Gets the list of moved folders which are not subfolders of other moved folders in the publish list.

        Parameters:
        cms - the current cms context
        Returns:
        the moved folders which are not subfolders of other moved folders in the publish list
        Throws:
        CmsException - if something goes wrong
      • isDirectPublish

        public boolean isDirectPublish()
        Checks if this is a publish list is used for a "direct publish" operation.

        Returns:
        true if this is a publish list is used for a "direct publish" operation
      • isPublishSiblings

        public boolean isPublishSiblings()
        Returns true if all siblings of the project resources are to be published.

        Returns:
        true if all siblings of the project resources are to be publisheds
      • isPublishSubResources

        public boolean isPublishSubResources()
        Returns true if sub-resources in folders should be published (for direct publish only).

        Returns:
        true if sub-resources in folders should be published (for direct publish only)
      • isUserPublishList

        public boolean isUserPublishList()
        Returns true if this is a user publish list.

        Returns:
        true if this is a user publish list
      • readExternal

        public void readExternal​(java.io.ObjectInput in)
                          throws java.io.IOException
        Specified by:
        readExternal in interface java.io.Externalizable
        Throws:
        java.io.IOException
        See Also:
        Externalizable.readExternal(java.io.ObjectInput)
      • revive

        public void revive​(CmsObject cms)
        Revives the publish list by populating the internal resource lists with CmsResource instances.

        Parameters:
        cms - a cms object used to read the resource instances
      • setUserPublishList

        public void setUserPublishList​(boolean isUserPublishList)
        Sets the 'user publish list' flag on this publish list.

        Parameters:
        isUserPublishList - if true, the list is marked as a user publish list
      • size

        public int size()
        Returns the number of all resources to be published.

        Returns:
        the number of all resources to be published
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
        See Also:
        Object.toString()
      • writeExternal

        public void writeExternal​(java.io.ObjectOutput out)
                           throws java.io.IOException
        Specified by:
        writeExternal in interface java.io.Externalizable
        Throws:
        java.io.IOException
        See Also:
        Externalizable.writeExternal(java.io.ObjectOutput)
      • add

        protected void add​(CmsResource resource,
                           boolean check)
                    throws java.lang.IllegalArgumentException
        Adds a new/changed Cms folder resource to the publish list.

        Parameters:
        resource - a new/changed Cms folder resource
        check - if set an exception is thrown if the specified resource is unchanged, if not set the resource is ignored
        Throws:
        java.lang.IllegalArgumentException - if the specified resource is unchanged
      • addAll

        protected void addAll​(java.util.Collection<CmsResource> resources,
                              boolean check)
                       throws java.lang.IllegalArgumentException
        Appends all the given resources to this publish list.

        Parameters:
        resources - resources to be added to this publish list
        check - if set an exception is thrown if the a resource is unchanged, if not set the resource is ignored
        Throws:
        java.lang.IllegalArgumentException - if one of the resources is unchanged
      • checkContainsSubResources

        protected CmsResource checkContainsSubResources​(CmsObject cms,
                                                        java.util.List<CmsResource> folders)
                                                 throws CmsException
        Checks whether the publish list contains all sub-resources of a list of folders.

        Parameters:
        cms - the current CMS context
        folders - the folders which should be checked
        Returns:
        a folder from the list if one of its sub-resources is not contained in the publish list, otherwise null
        Throws:
        CmsException - if something goes wrong
      • containsResource

        protected boolean containsResource​(CmsResource res)
        Checks if the publish list contains a resource.

        Parameters:
        res - the resource
        Returns:
        true if the publish list contains a resource
      • containsSubResources

        protected boolean containsSubResources​(CmsObject cms,
                                               CmsResource folder)
                                        throws CmsException
        Checks if the publish list contains all sub-resources of a given folder.

        Parameters:
        cms - the current CMS context
        folder - the folder for which the check should be performed
        Returns:
        true if the publish list contains all sub-resources of a given folder
        Throws:
        CmsException - if something goes wrong
      • getMissingSubResources

        protected java.util.List<CmsResourcegetMissingSubResources​(CmsObject cms,
                                                                     java.util.List<CmsResource> folders)
                                                              throws CmsException
        Gets the sub-resources of a list of folders which are missing from the publish list.

        Parameters:
        cms - the current CMS context
        folders - the folders which should be checked
        Returns:
        a list of missing sub resources
        Throws:
        CmsException - if something goes wrong
      • getMovedFolders

        protected java.util.List<CmsResourcegetMovedFolders​(CmsObject cms)
                                                       throws CmsException
        Internal method to get the moved folders from the publish list.

        Parameters:
        cms - the current CMS context
        Returns:
        the list of moved folders from the publish list
        Throws:
        CmsException - if something goes wrong
      • getTopFolders

        protected java.util.List<CmsResourcegetTopFolders​(java.util.List<CmsResource> folders)
        Gives the "roots" of a list of folders, i.e. the list of folders which are not descendants of any other folders in the original list
        Parameters:
        folders - the original list of folders
        Returns:
        the root folders of the list
      • initialize

        protected void initialize()
        Initializes the publish list, ensuring all internal lists are in the right order.

      • remove

        protected boolean remove​(CmsResource resource)
        Removes a Cms resource from the publish list.

        Parameters:
        resource - a Cms resource
        Returns:
        true if this publish list contains the specified resource
        See Also:
        List.remove(java.lang.Object)