/* * This library is part of OpenCms - * the Open Source Content Management System * * Copyright (c) Alkacon Software GmbH (http://www.alkacon.com) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * For further information about Alkacon Software GmbH, please see the * company website: http://www.alkacon.com * * For further information about OpenCms, please see the * project website: http://www.opencms.org * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package org.opencms.publish; import org.opencms.file.CmsResource; import org.opencms.main.OpenCms; import org.opencms.util.CmsUUID; /** * Test event listener implementation.<p> * * @since 6.5.5 */ public class TestPublishEventListener implements I_CmsPublishEventListener { private long m_aborted; private long m_enqueued; private long m_finished; private CmsPublishJobInfoBean m_publishJob; private long m_removed; private CmsResource m_resource; private long m_started; /** Number of jobs in Queue/History on Enqueue, Start, Finish, Abort, Remove. */ private int[] m_jobsInQueue = new int[5]; private int[] m_jobsInHistory = new int[5]; /** * Default constructor.<p> * * @param resource the resource to track */ public TestPublishEventListener(CmsResource resource) { m_resource = resource; } /** * Returns the aborted timestamp.<p> * * @return the aborted timestamp */ public long getAborted() { return m_aborted; } /** * Returns the enqueued timestamp.<p> * * @return the enqueued timestamp */ public long getEnqueued() { return m_enqueued; } /** * Returns the finished timestamp.<p> * * @return the finished timestamp */ public long getFinished() { return m_finished; } /** * Returns the jobs in history counters.<p> * * @return the jobs in history counters */ public int[] getJobsInHistoryCounter() { return m_jobsInHistory; } /** * Returns the jobs in queue counters.<p> * * @return the jobs in queue counters */ public int[] getJobsInQueueCounter() { return m_jobsInQueue; } /** * Returns the removed timestamp.<p> * * @return the removed timestamp */ public long getRemoved() { return m_removed; } /** * Returns the started timestamp.<p> * * @return the started timestamp */ public long getStarted() { return m_started; } /** * @see org.opencms.publish.I_CmsPublishEventListener#onAbort(CmsUUID, org.opencms.publish.CmsPublishJobEnqueued) */ public void onAbort(CmsUUID userId, CmsPublishJobEnqueued publishJob) { // track only events for the interesting publish job if (m_publishJob == publishJob.m_publishJob) { m_aborted = System.currentTimeMillis(); m_jobsInQueue[3] = OpenCms.getPublishManager().getPublishQueue().size(); m_jobsInHistory[3] = OpenCms.getPublishManager().getPublishHistory().size(); } } /** * @see org.opencms.publish.I_CmsPublishEventListener#onEnqueue(org.opencms.publish.CmsPublishJobBase) */ public void onEnqueue(CmsPublishJobBase publishJob) { if (m_publishJob != null) { // track only one job at the time return; } if (!publishJob.m_publishJob.getPublishList().getFileList().contains(m_resource)) { // track only the right publish job return; } // remember the job to track m_publishJob = publishJob.m_publishJob; // reset all events m_enqueued = System.currentTimeMillis(); m_aborted = 0; m_finished = 0; m_removed = 0; m_started = 0; // count jobs in queue and history m_jobsInQueue[0] = OpenCms.getPublishManager().getPublishQueue().size(); m_jobsInHistory[0] = OpenCms.getPublishManager().getPublishHistory().size(); } /** * @see org.opencms.publish.I_CmsPublishEventListener#onFinish(org.opencms.publish.CmsPublishJobRunning) */ public void onFinish(CmsPublishJobRunning publishJob) { // track only events for the interesting publish job if (m_publishJob == publishJob.m_publishJob) { m_finished = System.currentTimeMillis(); // count jobs in queue and history m_jobsInQueue[2] = OpenCms.getPublishManager().getPublishQueue().size(); m_jobsInHistory[2] = OpenCms.getPublishManager().getPublishHistory().size(); } } /** * @see org.opencms.publish.I_CmsPublishEventListener#onRemove(org.opencms.publish.CmsPublishJobFinished) */ public void onRemove(CmsPublishJobFinished publishJob) { // track only events for the interesting publish job if (m_publishJob == publishJob.m_publishJob) { m_removed = System.currentTimeMillis(); // count jobs in queue and history m_jobsInQueue[4] = OpenCms.getPublishManager().getPublishQueue().size(); m_jobsInHistory[4] = OpenCms.getPublishManager().getPublishHistory().size(); } } /** * @see org.opencms.publish.I_CmsPublishEventListener#onStart(org.opencms.publish.CmsPublishJobEnqueued) */ public void onStart(CmsPublishJobEnqueued publishJob) { // track only events for the interesting publish job if (m_publishJob == publishJob.m_publishJob) { m_started = System.currentTimeMillis(); // count jobs in queue and history m_jobsInQueue[1] = OpenCms.getPublishManager().getPublishQueue().size(); m_jobsInHistory[1] = OpenCms.getPublishManager().getPublishHistory().size(); } } }