001/******************************************************************************* 002 * Copyright (c) 2006-2013 Nuxeo SA (http://nuxeo.com/) and others. 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the Eclipse Public License v1.0 006 * which accompanies this distribution, and is available at 007 * http://www.eclipse.org/legal/epl-v10.html 008 *******************************************************************************/ 009package org.nuxeo.ecm.core.management.works; 010 011import java.util.ArrayList; 012import java.util.List; 013 014import org.nuxeo.ecm.core.work.api.Work; 015import org.nuxeo.ecm.core.work.api.Work.State; 016import org.nuxeo.ecm.core.work.api.WorkManager; 017import org.nuxeo.runtime.api.Framework; 018 019public class WorksQueueMonitoring implements WorksQueueMonitoringMBean { 020 021 protected final String queueId; 022 023 public WorksQueueMonitoring(String id) { 024 queueId = id; 025 } 026 027 protected WorkManager manager() { 028 return Framework.getLocalService(WorkManager.class); 029 } 030 031 @Override 032 public int getScheduledCount() { 033 return manager().getQueueSize(queueId, State.SCHEDULED); 034 } 035 036 @Override 037 public int getRunningCount() { 038 return manager().getQueueSize(queueId, State.RUNNING); 039 } 040 041 @Override 042 public int getCompletedCount() { 043 return manager().getQueueSize(queueId, State.COMPLETED); 044 } 045 046 @Override 047 public String[] getScheduledWorks() { 048 return listWorks(State.SCHEDULED); 049 } 050 051 @Override 052 public String[] getRunningWorks() { 053 return listWorks(State.RUNNING); 054 } 055 056 protected String[] listWorks(State state) { 057 List<String> works = new ArrayList<String>(); 058 for (Work work : manager().listWork(queueId, state)) { 059 works.add(work.toString()); 060 } 061 return works.toArray(new String[works.size()]); 062 } 063}