org.opencms.publish
Class CmsPublishEngine

java.lang.Object
  extended by org.opencms.publish.CmsPublishEngine
All Implemented Interfaces:
java.lang.Runnable

public final class CmsPublishEngine
extends java.lang.Object
implements java.lang.Runnable

This class is responsible for the publish process.

Since:
6.5.5
Version:
$Revision: 1.22 $
Author:
Michael Moossen

Constructor Summary
CmsPublishEngine(I_CmsDbContextFactory dbContextFactory)
          Default constructor.
 
Method Summary
protected  void abortPublishJob(CmsUUID userId, CmsPublishJobEnqueued publishJob, boolean removeJob)
          Aborts the given publish job.
protected  void addPublishListener(I_CmsPublishEventListener listener)
          Adds a publish listener to listen on publish events.
protected  void disableEngine()
          Disables the publish engine, i.e. publish jobs are not accepted.
protected  void enableEngine()
          Enables the publish engine, i.e. publish jobs are accepted.
 void enqueuePublishJob(CmsObject cms, CmsPublishList publishList, I_CmsReport report)
          Enqueues a new publish job with the given information in publish queue.
protected  org.opencms.publish.CmsPublishThread getCurrentPublishJob()
          Returns the current running publish job.
protected  I_CmsDbContextFactory getDbContextFactory()
          Returns the db context factory object.
protected  CmsDriverManager getDriverManager()
          Returns the driver manager instance.
 CmsPublishJobBase getJobByPublishHistoryId(CmsUUID publishHistoryId)
          Returns a publish job based on its publish history id.
protected  CmsPublishHistory getPublishHistory()
          Returns the publish history list with already publish job.
protected  CmsPublishQueue getPublishQueue()
          Returns the queue with still waiting publish job.
protected  byte[] getReportContents(CmsPublishJobFinished publishJob)
          Returns the content of the publish report assigned to the given publish job.
protected  CmsUser getUser(CmsUUID userId)
          Returns the user identified by the given id.
protected  void initialize(CmsObject adminCms, boolean publishQueuePersistance, int publishQueueShutdowntime)
          Initializes the publish engine.
protected  boolean isRunning()
          Returns the working state, that is if no publish job is waiting to be processed and there is no current running publish job.
protected  void lockPublishList(CmsPublishJobInfoBean publishJob)
          Sets publish locks of resources in a publish list.
protected  void publishJobFinished(CmsPublishJobInfoBean publishJob)
          Signalizes that the publish thread finishes.
protected  void publishJobRemoved(CmsPublishJobInfoBean publishJob)
          A publish job has been permanently removed from the history.
protected  void publishJobStarted(CmsPublishJobInfoBean publishJob)
          Signalizes that the publish thread starts.
protected  void removePublishListener(I_CmsPublishEventListener listener)
          Removes the given publish listener.
 void run()
          Controls the publish process.
protected  void sendMessage(CmsUUID toUserId, java.lang.String message, boolean hasErrors)
          Sends a message to the given user, if publish notification is enabled or an error is shown in the message.
 void setDriverManager(CmsDriverManager driverManager)
          Sets the driver manager instance.
 void shutDown()
          Shuts down all this static export manager.
protected  void startEngine()
          Starts the publish engine, i.e. publish jobs are accepted and processed.
protected  void stopEngine()
          Stops the publish engine, i.e. publish jobs are still accepted but not published.
protected  void unlockPublishList(CmsPublishJobInfoBean publishJob)
          Removes all publish locks of resources in a publish list of a publish job.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CmsPublishEngine

public CmsPublishEngine(I_CmsDbContextFactory dbContextFactory)
                 throws CmsInitException
Default constructor.

Parameters:
dbContextFactory - the initialized OpenCms runtime info factory
Throws:
CmsInitException - if the configured path to store the publish reports is not accessible
Method Detail

enqueuePublishJob

public void enqueuePublishJob(CmsObject cms,
                              CmsPublishList publishList,
                              I_CmsReport report)
                       throws CmsException
Enqueues a new publish job with the given information in publish queue.

All resources should already be locked.

If possible, the publish job starts immediately.

Parameters:
cms - the cms context to publish for
publishList - the resources to publish
report - the report to write to
Throws:
CmsException - if something goes wrong while cloning the cms context

getJobByPublishHistoryId

public CmsPublishJobBase getJobByPublishHistoryId(CmsUUID publishHistoryId)
Returns a publish job based on its publish history id.

The returned publish job may be an enqueued, running or finished publish job.

Parameters:
publishHistoryId - the publish history id to search for
Returns:
the publish job with the given publish history id, or null

run

public void run()
Controls the publish process.

Specified by:
run in interface java.lang.Runnable

setDriverManager

public void setDriverManager(CmsDriverManager driverManager)
Sets the driver manager instance.

Parameters:
driverManager - the driver manager instance

shutDown

public void shutDown()
Shuts down all this static export manager.

NOTE: this method may or may NOT be called (i.e. kill -9 in the stop script), if a system is stopped.

This is required since there may still be a thread running when the system is being shut down.


abortPublishJob

protected void abortPublishJob(CmsUUID userId,
                               CmsPublishJobEnqueued publishJob,
                               boolean removeJob)
                        throws CmsException,
                               CmsPublishException
Aborts the given publish job.

Parameters:
userId - the id of user that wants to abort the given publish job
publishJob - the publish job to abort
removeJob - indicates if the job will be removed or added to history
Throws:
CmsException - if there is some problem during unlocking the resources
CmsPublishException - if the publish job can not be aborted

addPublishListener

protected void addPublishListener(I_CmsPublishEventListener listener)
Adds a publish listener to listen on publish events.

Parameters:
listener - the publish listener to add

disableEngine

protected void disableEngine()
Disables the publish engine, i.e. publish jobs are not accepted.


enableEngine

protected void enableEngine()
Enables the publish engine, i.e. publish jobs are accepted.


getCurrentPublishJob

protected org.opencms.publish.CmsPublishThread getCurrentPublishJob()
Returns the current running publish job.

Returns:
the current running publish job

getDbContextFactory

protected I_CmsDbContextFactory getDbContextFactory()
Returns the db context factory object.

Returns:
the db context factory object

getDriverManager

protected CmsDriverManager getDriverManager()
Returns the driver manager instance.

Returns:
the driver manager instance

getPublishHistory

protected CmsPublishHistory getPublishHistory()
Returns the publish history list with already publish job.

Returns:
the publish history list with already publish job

getPublishQueue

protected CmsPublishQueue getPublishQueue()
Returns the queue with still waiting publish job.

Returns:
the queue with still waiting publish job

getReportContents

protected byte[] getReportContents(CmsPublishJobFinished publishJob)
                            throws CmsException
Returns the content of the publish report assigned to the given publish job.

Parameters:
publishJob - the published job
Returns:
the content of the assigned publish report
Throws:
CmsException - if something goes wrong

getUser

protected CmsUser getUser(CmsUUID userId)
Returns the user identified by the given id.

Parameters:
userId - the id of the user to retrieve
Returns:
the user identified by the given id

initialize

protected void initialize(CmsObject adminCms,
                          boolean publishQueuePersistance,
                          int publishQueueShutdowntime)
                   throws CmsException
Initializes the publish engine.

Parameters:
adminCms - the admin cms
publishQueuePersistance - flag if the queue is persisted
publishQueueShutdowntime - amount of time to wait for a publish job during shutdown
Throws:
CmsException - if something goes wrong

isRunning

protected boolean isRunning()
Returns the working state, that is if no publish job is waiting to be processed and there is no current running publish job.

Returns:
the working state

lockPublishList

protected void lockPublishList(CmsPublishJobInfoBean publishJob)
                        throws CmsException
Sets publish locks of resources in a publish list.

Parameters:
publishJob - the publish job
Throws:
CmsException - if something goes wrong

publishJobFinished

protected void publishJobFinished(CmsPublishJobInfoBean publishJob)
                           throws CmsException
Signalizes that the publish thread finishes.

Parameters:
publishJob - the finished publish job
Throws:
CmsException - if something goes wrong

publishJobRemoved

protected void publishJobRemoved(CmsPublishJobInfoBean publishJob)
A publish job has been permanently removed from the history.

Parameters:
publishJob - the removed publish job

publishJobStarted

protected void publishJobStarted(CmsPublishJobInfoBean publishJob)
Signalizes that the publish thread starts.

Parameters:
publishJob - the started publish job

removePublishListener

protected void removePublishListener(I_CmsPublishEventListener listener)
Removes the given publish listener.

Parameters:
listener - the publish listener to remove

sendMessage

protected void sendMessage(CmsUUID toUserId,
                           java.lang.String message,
                           boolean hasErrors)
Sends a message to the given user, if publish notification is enabled or an error is shown in the message.

Parameters:
toUserId - the id of the user to send the message to
message - the message to send
hasErrors - flag to determine if the message to send shows an error

startEngine

protected void startEngine()
Starts the publish engine, i.e. publish jobs are accepted and processed.


stopEngine

protected void stopEngine()
Stops the publish engine, i.e. publish jobs are still accepted but not published.


unlockPublishList

protected void unlockPublishList(CmsPublishJobInfoBean publishJob)
                          throws CmsException
Removes all publish locks of resources in a publish list of a publish job.

Parameters:
publishJob - the publish job
Throws:
CmsException - if something goes wrong