/*******************************************************************************
* This file is part of OpenNMS(R).
*
* Copyright (C) 2007-2011 The OpenNMS Group, Inc.
* OpenNMS(R) is Copyright (C) 1999-2011 The OpenNMS Group, Inc.
*
* OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
*
* OpenNMS(R) is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License,
* or (at your option) any later version.
*
* OpenNMS(R) 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with OpenNMS(R). If not, see:
* http://www.gnu.org/licenses/
*
* For more information contact:
* OpenNMS(R) Licensing <license@opennms.org>
* http://www.opennms.org/
* http://www.opennms.com/
*******************************************************************************/
package org.opennms.netmgt.dao;
import java.io.File;
import java.io.InputStream;
import org.opennms.netmgt.model.OnmsAttribute;
import org.springframework.dao.DataAccessException;
/**
* <p>RrdDao interface.</p>
*
* @author <a href="mailto:dj@opennms.org">DJ Gregor</a>
* @version $Id: $
*/
public interface RrdDao {
/**
* Get the value for an attribute over a period of time.
*
* @param attribute the attribute
* @param cf consolidation function (usually "AVERAGE")
* @param start start time in milliseconds
* @param end end time in milliseconds
* @return value
*/
public double getPrintValue(OnmsAttribute attribute, String cf, long start, long end);
/**
* Get the value for an attribute over a period of time.
*
* @param attribute the attribute
* @param rraConsolidationFunction consolidation function (usually "AVERAGE")
* @param startTimeInMillis start time in milliseconds
* @param endTimeInMillis end time in milliseconds
* @return value
* @param printFunctions a {@link java.lang.String} object.
*/
public double[] getPrintValues(OnmsAttribute attribute,String rraConsolidationFunction,
long startTimeInMillis, long endTimeInMillis, String... printFunctions);
/**
* Create an RRD graph with the given command where RRD files are relative to the workDir.
*
* @param command RRD graph command
* @param workDir RRD files are relative to this directory
* @return PNG graph image
*/
public InputStream createGraph(String command, File workDir);
/**
* Gets the offset of the top of the graph box from the top of the image.
*
* @return offset in pixels
*/
public int getGraphTopOffsetWithText();
/**
* Gets the offset of the left side of the graph box from the left side of the image.
*
* @return offset in pixels
*/
public int getGraphLeftOffset();
/**
* Gets the offset of the right side of the graph box from the right side of the image.
*
* @return offset in pixels
*/
public int getGraphRightOffset();
/**
* This method issues an round robin fetch command to retrieve the last
* value of the data source stored in the specified RRD file.
* NOTE: This method assumes that each RRD file contains a single
* data source.
*
* @param attribute
* The attribute for which fetch the last value. Must be a
* RrdGraphAttribute.
* @param interval
* Fetch interval. This should equal RRD step size.
* @return Retrived value or null if some errors occur
* @throws org.springframework.dao.DataAccessException
* if an error occurs retrieving the last value
*/
public Double getLastFetchValue(OnmsAttribute attribute, int interval) throws DataAccessException;
/**
* This method issues an round robin fetch command to retrieve the last
* value of the data source stored in the specified RRD file.
* NOTE: This method assumes that each RRD file contains a single
* data source.
*
* @param attribute
* The attribute for which fetch the last value. Must be a
* RrdGraphAttribute.
* @param interval
* Fetch interval in milliseconds. This should equal the RRD
* step size.
* @param range
* Interval in milliseconds for how long we should look back
* in time for a non-NaN value. This should a multiple of
* the RRD step size.
* @return Retrived value or null if some errors occur
* @throws org.springframework.dao.DataAccessException
* if an error occurs retrieving the last value
*/
public Double getLastFetchValue(OnmsAttribute attribute, int interval, int range)throws DataAccessException;
}