org.opencms.db
Class CmsPublishList

java.lang.Object
  extended by org.opencms.db.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
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(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.
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.
 
Method Summary
protected  void add(CmsResource resource, boolean check)
          Adds a new/changed Cms folder resource to the publish list.
protected  void addAll(java.util.Collection<CmsResource> resources, boolean check)
          Appends all the given resources to this publish list.
protected  CmsResource checkContainsSubResources(CmsObject cms, java.util.List<CmsResource> folders)
          Checks whether the publish list contains all sub-resources of a list of folders.
protected  boolean containsResource(CmsResource res)
          Checks if the publish list contains a resource.
protected  boolean containsSubResources(CmsObject cms, CmsResource folder)
          Checks if the publish list contains all sub-resources of a given folder.
 java.util.List<CmsResource> getAllResources()
          Returns a list of all resources in the publish list, including folders and files.
 java.util.List<CmsResource> getDeletedFolderList()
          Returns a list of folder resources with the deleted state.
 java.util.List<CmsResource> getDirectPublishResources()
          Returns the list of resources that should be published for a "direct" publish operation.
 java.util.List<CmsResource> getFileList()
          Returns an unmodifiable list of the files in this publish list.
 java.util.List<CmsResource> getFolderList()
          Returns an unmodifiable list of the new/changed folders in this publish list.
protected  java.util.List<CmsResource> getMissingSubResources(CmsObject cms, java.util.List<CmsResource> folders)
          Gets the sub-resources of a list of folders which are missing from the publish list.
protected  java.util.List<CmsResource> getMovedFolders(CmsObject cms)
          Internal method to get the moved folders from the publish list.
 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.
 CmsUUID getPublishHistoryId()
          Returns the publish history Id for this publish list.
protected  java.util.List<CmsResource> getTopFolders(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
 java.util.List<CmsResource> getTopMovedFolders(CmsObject cms)
          Gets the list of moved folders which are not subfolders of other moved folders in the publish list.
protected  void initialize()
          Initializes the publish list, ensuring all internal lists are in the right order.
 boolean isDirectPublish()
          Checks if this is a publish list is used for a "direct publish" operation.
 boolean isPublishSiblings()
          Returns true if all siblings of the project resources are to be published.
 boolean isPublishSubResources()
          Returns true if sub-resources in folders should be published (for direct publish only).
 boolean isUserPublishList()
          Returns true if this is a user publish list.
 void readExternal(java.io.ObjectInput in)
           
protected  boolean remove(CmsResource resource)
          Removes a Cms resource from the publish list.
 void revive(CmsObject cms)
          Revives the publish list by populating the internal resource lists with CmsResource instances.
 void setUserPublishList(boolean isUserPublishList)
          Sets the 'user publish list' flag on this publish list.
 int size()
          Returns the number of all resources to be published.
 java.lang.String toString()
           
 void writeExternal(java.io.ObjectOutput out)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CmsPublishList

public CmsPublishList()
Empty constructor.


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<CmsResource> getAllResources()
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<CmsResource> getDeletedFolderList()
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<CmsResource> 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

public java.util.List<CmsResource> getFileList()
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<CmsResource> 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

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<CmsResource> getTopMovedFolders(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<CmsResource> getMissingSubResources(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<CmsResource> getMovedFolders(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<CmsResource> getTopFolders(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)