public interface RepositoryMonitor {
/**
* Get the ValueMetric enumerations that are available for use by the caller
* with {{getHistory(ValueMetric, Window)}}.
*
* @return the immutable set of ValueMetric instances; never null but possibly
* empty if the caller has no permissions to see any value metrics
*/
Set<ValueMetric> getAvailableValueMetrics();
/**
* Get the DurationMetric enumerations that are available for use by the caller
* with {{getHistory(DurationMetric, Window)}}.
*
* @return the immutable set of DurationMetric instances; never null but possibly
* empty if the caller has no permissions to see any value metrics
*/
Set<DurationMetric> getAvailableDurationMetrics();
/**
* Get the Window enumerations that are available for use by the caller with
* {{getHistory(DurationMetric, Window)}} and {{getHistory(ValueMetric, Window)}}.
*
* @return the immutable set of DurationMetric instances; never null but possibly
* empty if the caller has no permissions to see any value metrics
*/
Set<Window> getAvailableWindows();
/**
* Get the statics for the specified value metric during the given window in time.
* The oldest statistics will be first, while the newest statistics will be last.
*
* @param metric the value metric; may not be null
* @param windowInTime the window specifying which statistics are to be returned;
* may not be null
* @return the history of the metrics; never null but possibly empty if there are
* no statistics being captures for this repository
* @throws AccessDeniedException if the session does not have privileges to monitor the repository
* @throws RepositoryException if there is an error obtaining the history
*/
public History getHistory( ValueMetric metric,
Window windowInTime )
throws AccessDeniedException, RepositoryException;
/**
* Get the statics for the specified duration metric during the given window in time.
* The oldest statistics will be first, while the newest statistics will be last.
*
* @param metric the duration metric; may not be null
* @param windowInTime the window specifying which statistics are to be returned;
* may not be null
* @return the history of the metrics; never null but possibly empty if there are
* no statistics being captures for this repository
* @throws AccessDeniedException if the session does not have privileges to monitor the repository
* @throws RepositoryException if there is an error obtaining the history
*/
public History getHistory( DurationMetric metric,
Window windowInTime )
throws AccessDeniedException, RepositoryException;
/**
* Get the longest-running activities recorded for the specified metric.
* The results contain the duration records in order of increasing duration,
* with the activity with the longest duration appearing last in the array.
*
* @param metric the duration metric; may not be null
* @return the activities with the longest durations; never null but possibly
* empty if no such activities were performed
* @throws AccessDeniedException if the session does not have privileges to monitor the repository
* @throws RepositoryException if there is an error obtaining the history
*/
public DurationActivity[] getLongestRunning( DurationMetric metric )
throws AccessDeniedException, RepositoryException;