/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.management; import java.util.List; import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import net.sf.ehcache.CacheException; import com.opengamma.engine.exec.stats.TotallingGraphStatisticsGathererProvider; import com.opengamma.engine.exec.stats.TotallingGraphStatisticsGathererProvider.Statistics; import com.opengamma.engine.view.ViewProcess; import com.opengamma.id.UniqueId; import com.opengamma.util.ArgumentChecker; /** * An MBean implementation for those attributes and operations we wish to expose on a {@link com.opengamma.engine.exec.stats.GraphExecutionStatistics}. */ public class GraphExecutionStatisticsMBeanImpl implements GraphExecutionStatisticsMBean { private final TotallingGraphStatisticsGathererProvider _statisticsProvider; private final UniqueId _viewProcessId; private final UniqueId _viewDefinitionId; private final String _calcConfigName; private final ObjectName _objectName; /** * Create a management GraphExecutionStatistics * * @param viewProcess the view process * @param statisticsProvider the statistics provider * @param viewProcessorName the view processor name * @param calcConfigName the calculation configuration name */ public GraphExecutionStatisticsMBeanImpl(ViewProcess viewProcess, TotallingGraphStatisticsGathererProvider statisticsProvider, String viewProcessorName, String calcConfigName) { ArgumentChecker.notNull(statisticsProvider, "TotallingGraphStatisticsGathererProvider"); ArgumentChecker.notNull(viewProcessorName, "viewProcessorName"); ArgumentChecker.notNull(viewProcess, "View Process"); ArgumentChecker.notNull(calcConfigName, "calcConfig Name"); _viewProcessId = viewProcess.getUniqueId(); _viewDefinitionId = viewProcess.getDefinitionId(); _objectName = createObjectName(viewProcessorName, _viewProcessId, calcConfigName); _calcConfigName = calcConfigName; _statisticsProvider = statisticsProvider; } /** * Creates an object name using the scheme "com.opengamma:type=GraphExecutionStatistics,ViewProcessor=<viewProcessorName>,View=<viewName>,name=<calcConfigName>" */ static ObjectName createObjectName(String viewProcessorName, UniqueId viewProcessId, String calcConfigName) { ObjectName objectName; try { objectName = new ObjectName("com.opengamma:type=GraphExecutionStatistics,ViewProcessor=ViewProcessor " + viewProcessorName + ",ViewProcess=ViewProcess " + viewProcessId.getValue() + ",name=" + calcConfigName); } catch (MalformedObjectNameException e) { throw new CacheException(e); } return objectName; } @Override public UniqueId getViewProcessId() { return _viewProcessId; } @Override public UniqueId getViewDefinitionId() { return _viewDefinitionId; } @Override public String getCalcConfigName() { return _calcConfigName; } @Override public Long getProcessedGraphs() { com.opengamma.engine.exec.stats.GraphExecutionStatistics graphExecutionStatistics = getGraphExecutionStatistics(); return graphExecutionStatistics != null ? graphExecutionStatistics.getProcessedGraphs() : 0; } private com.opengamma.engine.exec.stats.GraphExecutionStatistics getGraphExecutionStatistics() { Statistics statisticsGatherer = _statisticsProvider.getStatisticsGatherer(_viewProcessId); List<com.opengamma.engine.exec.stats.GraphExecutionStatistics> executionStatistics = statisticsGatherer.getExecutionStatistics(); for (com.opengamma.engine.exec.stats.GraphExecutionStatistics graphExecutionStatistics : executionStatistics) { if (graphExecutionStatistics.getCalcConfigName().equals(_calcConfigName) && graphExecutionStatistics.getViewProcessId().equals(_viewProcessId)) { return graphExecutionStatistics; } } return null; } @Override public Long getExecutedGraphs() { com.opengamma.engine.exec.stats.GraphExecutionStatistics graphExecutionStatistics = getGraphExecutionStatistics(); return graphExecutionStatistics != null ? graphExecutionStatistics.getExecutedGraphs() : null; } @Override public Long getExecutedNodes() { com.opengamma.engine.exec.stats.GraphExecutionStatistics graphExecutionStatistics = getGraphExecutionStatistics(); return graphExecutionStatistics != null ? graphExecutionStatistics.getExecutedNodes() : null; } @Override public Long getExecutionTime() { com.opengamma.engine.exec.stats.GraphExecutionStatistics graphExecutionStatistics = getGraphExecutionStatistics(); return graphExecutionStatistics != null ? graphExecutionStatistics.getExecutionTime() : null; } @Override public Long getActualTime() { com.opengamma.engine.exec.stats.GraphExecutionStatistics graphExecutionStatistics = getGraphExecutionStatistics(); return graphExecutionStatistics != null ? graphExecutionStatistics.getActualTime() : 0; } @Override public Long getProcessedJobs() { com.opengamma.engine.exec.stats.GraphExecutionStatistics graphExecutionStatistics = getGraphExecutionStatistics(); return graphExecutionStatistics != null ? graphExecutionStatistics.getProcessedJobs() : null; } @Override public Long getProcessedJobSize() { com.opengamma.engine.exec.stats.GraphExecutionStatistics graphExecutionStatistics = getGraphExecutionStatistics(); return graphExecutionStatistics != null ? graphExecutionStatistics.getProcessedJobSize() : null; } @Override public Long getProcessedJobCycleCost() { com.opengamma.engine.exec.stats.GraphExecutionStatistics graphExecutionStatistics = getGraphExecutionStatistics(); return graphExecutionStatistics != null ? graphExecutionStatistics.getProcessedJobCycleCost() : null; } @Override public Long getProcessedJobDataCost() { com.opengamma.engine.exec.stats.GraphExecutionStatistics graphExecutionStatistics = getGraphExecutionStatistics(); return graphExecutionStatistics != null ? graphExecutionStatistics.getProcessedJobDataCost() : null; } @Override public String getLastProcessedTime() { com.opengamma.engine.exec.stats.GraphExecutionStatistics graphExecutionStatistics = getGraphExecutionStatistics(); return graphExecutionStatistics != null ? graphExecutionStatistics.getLastProcessedTime().toString() : null; } @Override public String getLastExecutedTime() { com.opengamma.engine.exec.stats.GraphExecutionStatistics graphExecutionStatistics = getGraphExecutionStatistics(); return graphExecutionStatistics != null ? graphExecutionStatistics.getLastExecutedTime().toString() : null; } @Override public void reset() { com.opengamma.engine.exec.stats.GraphExecutionStatistics graphExecutionStatistics = getGraphExecutionStatistics(); if (graphExecutionStatistics != null) { graphExecutionStatistics.reset(); } } /** * Gets the objectName field. * * @return the object name for this MBean */ public ObjectName getObjectName() { return _objectName; } }