/******************************************************************************* * Copyright (c) 2006-2013 Nuxeo SA (http://nuxeo.com/) and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ package org.nuxeo.ecm.core.management.works; import java.util.ArrayList; import java.util.List; import org.nuxeo.ecm.core.work.api.Work; import org.nuxeo.ecm.core.work.api.Work.State; import org.nuxeo.ecm.core.work.api.WorkManager; import org.nuxeo.runtime.api.Framework; public class WorksQueueMonitoring implements WorksQueueMonitoringMBean { protected final String queueId; public WorksQueueMonitoring(String id) { queueId = id; } protected WorkManager manager() { return Framework.getLocalService(WorkManager.class); } @Override public int getScheduledCount() { return manager().getQueueSize(queueId, State.SCHEDULED); } @Override public int getRunningCount() { return manager().getQueueSize(queueId, State.RUNNING); } @Override public int getCompletedCount() { return manager().getQueueSize(queueId, State.COMPLETED); } @Override public String[] getScheduledWorks() { return listWorks(State.SCHEDULED); } @Override public String[] getRunningWorks() { return listWorks(State.RUNNING); } protected String[] listWorks(State state) { List<String> works = new ArrayList<String>(); for (Work work:manager().listWork(queueId, state)) { works.add(work.toString()); } return works.toArray(new String[works.size()]); } }