Class CmsPublishList

java.lang.Object
org.opencms.db.CmsPublishList
All Implemented Interfaces:
Externalizable, Serializable

public class CmsPublishList extends Object implements 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:
  • Constructor Details

    • CmsPublishList

      public CmsPublishList()
      Empty constructor.

    • CmsPublishList

      public CmsPublishList(boolean all, 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(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(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 Details

    • getAllResources

      Returns a list of all resources in the publish list, including folders and files.

      Returns:
      a list of CmsResource objects
    • getDeletedFolderList

      Returns a list of folder resources with the deleted state.

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

      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

      Returns an unmodifiable list of the files in this publish list.

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

      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

      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

      Returns the publish history Id for this publish list.

      Returns:
      the publish history Id
    • getTopMovedFolders

      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(ObjectInput in) throws IOException
      Specified by:
      readExternal in interface Externalizable
      Throws:
      IOException
      See Also:
    • 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 String toString()
      Overrides:
      toString in class Object
      See Also:
    • writeExternal

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

      protected void add(CmsResource resource, boolean check) throws 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:
      IllegalArgumentException - if the specified resource is unchanged
    • addAll

      protected void addAll(Collection<CmsResource> resources, boolean check) throws 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:
      IllegalArgumentException - if one of the resources is unchanged
    • checkContainsSubResources

      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

      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

      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

      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: