public class DataProcessor extends Object implements DataHolder
Plottable for more information.
Typical class usage:
final long t1 = ...
final long t2 = ...
DataProcessor dp = new DataProcessor(t1, t2);
// DEF datasource
dp.addDatasource("x", "demo.rrd", "some_source", "AVERAGE");
// DEF datasource
dp.addDatasource("y", "demo.rrd", "some_other_source", "AVERAGE");
// CDEF datasource, z = (x + y) / 2
dp.addDatasource("z", "x,y,+,2,/");
// ACTION!
dp.processData();
// Dump calculated values
System.out.println(dp.dump());
| Modifier and Type | Field and Description |
|---|---|
static double |
DEFAULT_PERCENTILE
Constant
DEFAULT_PERCENTILE=95.0 |
static int |
DEFAULT_PIXEL_COUNT
Deprecated.
|
DEFAULT_POOL_USAGE_POLICY| Constructor and Description |
|---|
DataProcessor(Calendar gc1,
Calendar gc2)
Creates new DataProcessor object for the given time span.
|
DataProcessor(Date d1,
Date d2)
Creates new DataProcessor object for the given time span.
|
DataProcessor(long t1,
long t2)
Creates new DataProcessor object for the given time span.
|
DataProcessor(java.time.temporal.TemporalAmount d)
Creates new DataProcessor object for the given time duration.
|
| Modifier and Type | Method and Description |
|---|---|
void |
datasource(String name,
FetchData fetchData)
Adds DEF datasource with datasource values already available in the FetchData object.
|
void |
datasource(String name,
IPlottable plottable)
Adds a custom,
plottable datasource (PDEF). |
void |
datasource(String name,
String rpnExpression)
Adds complex source (CDEF).
|
void |
datasource(String name,
String dsName,
FetchData fetchData)
Adds DEF datasource with datasource values already available in the FetchData object.
|
void |
datasource(String name,
String file,
String dsName,
ConsolFun consolFunc)
Adds simple datasource (DEF).
|
void |
datasource(String name,
String file,
String dsName,
ConsolFun consolFunc,
RrdBackendFactory backend)
Adds simple source (DEF).
|
void |
datasource(String name,
String defName,
Variable var)
Creates a datasource that performs a variable calculation on an another named datasource to
yield a single combined timestamp/value.
|
void |
datasource(String name,
URI rrdUri,
String dsName,
ConsolFun consolFunc)
Adds simple datasource (DEF).
|
void |
datasource(String name,
URI uri,
String dsName,
ConsolFun consolFunc,
RrdBackendFactory backend)
Adds simple source (DEF).
|
String |
dump()
Dumps timestamps and values of all datasources in a tabular form.
|
long |
getEndTime()
Returns ending timestamp.
|
long |
getFetchRequestResolution()
Returns desired RRD archive step (resolution) in seconds to be used while fetching data from
RRD files.
|
long |
getLastRrdArchiveUpdateTime()
Returns time when last RRD archive was updated (all RRD files are considered).
|
int |
getPixelCount()
Returns the number of pixels (target graph width).
|
RrdDbPool |
getPool() |
(package private) Source |
getSource(String sourceName) |
String[] |
getSourceNames()
Returns array of datasource names defined in this DataProcessor.
|
long |
getStartTime()
Returns starting timestamp.
|
long |
getStep()
Returns the time step used for data processing.
|
long[] |
getTimestamps()
Returns consolidated timestamps created with the
processData() method. |
long[] |
getTimestampsPerPixel()
Calculates timestamps which correspond to individual pixels on the graph based on the graph
width set with a
setPixelCount(int) method call. |
long[] |
getTimestampsPerPixel(int pixelCount)
Calculates timestamps which correspond to individual pixels on the graph.
|
TimeZone |
getTimeZone() |
double[][] |
getValues()
Returns an array of all datasource values for all datasources.
|
double[] |
getValues(String sourceName)
Returns calculated values for a single datasource.
|
double[] |
getValuesPerPixel(String sourceName)
Method used to calculate datasource values which should be presented on the graph based on
the graph width set with a
setPixelCount(int) method call. |
double[] |
getValuesPerPixel(String sourceName,
int pixelCount)
Method used to calculate datasource values which should be presented on the graph based on
the desired graph width.
|
Variable.Value |
getVariable(String sourceName)
Extract the variable value from an already define Variable datasource (a VDEF)
|
Variable.Value |
getVariable(String sourceName,
Variable var)
Returns single aggregated value for a single datasource.
|
boolean |
isPoolUsed()
Returns boolean value representing
RrdDbPool usage policy. |
void |
processData()
Method that should be called once all datasources are defined.
|
void |
setEndTime(long time)
Sets the time when the graph should end.
|
void |
setFetchRequestResolution(long fetchRequestResolution)
Sets desired RRD archive step in seconds to be used internally while fetching data from RRD
files.
|
void |
setPixelCount(int pixelCount)
Sets the number of pixels (target graph width).
|
void |
setPool(RrdDbPool pool)
Defines the
RrdDbPool to use. |
void |
setPoolUsed(boolean poolUsed)
Sets the
RrdDbPool usage policy. |
void |
setStartTime(long time)
Sets the time when the graph should start.
|
void |
setStep(long step)
Once data are fetched, the step value will be used to generate values.
|
void |
setTimeSpan(long startTime,
long endTime)
Sets starting and ending time for the for the graph.
|
void |
setTimeZone(TimeZone tz)
Set the time zone used for the legend.
|
public static final double DEFAULT_PERCENTILE
DEFAULT_PERCENTILE=95.0@Deprecated public static final int DEFAULT_PIXEL_COUNT
public DataProcessor(Calendar gc1, Calendar gc2)
processData() method.
It use the time zone for starting calendar date.
gc1 - Starting Calendar dategc2 - Ending Calendar datepublic DataProcessor(Date d1, Date d2)
processData() method.d1 - Starting dated2 - Ending datepublic DataProcessor(long t1,
long t2)
processData() method.t1 - Starting timestamp in seconds without millisecondst2 - Ending timestamp in seconds without millisecondspublic DataProcessor(java.time.temporal.TemporalAmount d)
d - duration to substract.public void datasource(String name, FetchData fetchData)
datasource in interface DataHoldername - Source name.fetchData - Fetched data containing values for the given source name.public void datasource(String name, IPlottable plottable)
plottable datasource (PDEF). The
datapoints should be made available by a class extending Plottable class.datasource in interface DataHoldername - source name.plottable - class that extends Plottable class and is suited for graphing.public void datasource(String name, String rpnExpression)
RPN
expression. Complex source name can be used:
Rrd4j does not force you to specify at least one simple source name as RRDTool.
For more details on RPN see RRDTool's rrdgraph man page.
datasource in interface DataHoldername - source name.rpnExpression - RPN expression containing comma delimited simple and complex source
names, RPN constants, functions and operators.public void datasource(String name, String dsName, FetchData fetchData)
datasource in interface DataHoldername - Source name.dsName - Source name in the fetch data.fetchData - Fetched data containing values for the given source name.public void datasource(String name, String file, String dsName, ConsolFun consolFunc)
name can be used:
datasource in interface DataHoldername - source name.file - Path to RRD file.dsName - Datasource name defined in the RRD file.consolFunc - Consolidation function that will be used to extract data from the RRDpublic void datasource(String name, String file, String dsName, ConsolFun consolFunc, RrdBackendFactory backend)
name can be used:
datasource in interface DataHoldername - Source name.file - Path to RRD file.dsName - Data source name defined in the RRD file.consolFunc - Consolidation function that will be used to extract data from the RRD file
("AVERAGE", "MIN", "MAX" or "LAST" - these string constants are conveniently defined in
the ConsolFun class).backend - Name of the RrdBackendFactory that should be used for this RrdDb.public void datasource(String name, String defName, Variable var)
Requires that the other datasource has already been defined; otherwise, it'll end up with no data
datasource in interface DataHoldername - - the new virtual datasource namedefName - - the datasource from which to extract the percentile. Must be a previously
defined virtual datasourcevar - - a new instance of a Variable used to do the calculationpublic void datasource(String name, URI rrdUri, String dsName, ConsolFun consolFunc)
name can be used:
datasource in interface DataHoldername - source name.rrdUri - URI to RRD file.dsName - Datasource name defined in the RRD file.consolFunc - Consolidation function that will be used to extract data from the RRDpublic void datasource(String name, URI uri, String dsName, ConsolFun consolFunc, RrdBackendFactory backend)
name can be used:
datasource in interface DataHoldername - Source name.uri - URI to RRD file.dsName - Data source name defined in the RRD file.consolFunc - Consolidation function that will be used to extract data from the RRD file
("AVERAGE", "MIN", "MAX" or "LAST" - these string constants are conveniently defined in
the ConsolFun class).backend - Name of the RrdBackendFactory that should be used for this RrdDb.public String dump()
public long getEndTime()
DataHoldergetEndTime in interface DataHolderpublic long getFetchRequestResolution()
RrdDb.createFetchRequest() method when this method is called internally by this
DataProcessor.public long getLastRrdArchiveUpdateTime()
public int getPixelCount()
setPixelCount(int) for more
information.public RrdDbPool getPool()
getPool in interface DataHolderpublic String[] getSourceNames()
public long getStartTime()
DataHoldergetStartTime in interface DataHolderpublic long getStep()
processData() is finished, the method will return the time stamp interval.getStep in interface DataHolderpublic long[] getTimestamps()
processData() method.public long[] getTimestampsPerPixel()
setPixelCount(int) method call.public long[] getTimestampsPerPixel(int pixelCount)
pixelCount - Graph widthpublic TimeZone getTimeZone()
getTimeZone in interface DataHolderpublic double[][] getValues()
getTimestamps() method.IllegalArgumentException - Thrown if invalid datasource name is specified, or
if datasource values are not yet calculated (method processData() was not
called)public double[] getValues(String sourceName)
getTimestamps() method.sourceName - Datasource nameIllegalArgumentException - Thrown if invalid datasource name is specified, or
if datasource values are not yet calculated (method processData() was not
called)public double[] getValuesPerPixel(String sourceName)
setPixelCount(int) method call. Each value returned
represents a single pixel on the graph. Corresponding timestamp can be found in the array
returned from getTimestampsPerPixel() method.sourceName - Datasource nameIllegalArgumentException - Thrown if datasource values are not yet calculated
(method processData() was not called)public double[] getValuesPerPixel(String sourceName, int pixelCount)
getTimestampsPerPixel() method.sourceName - Datasource namepixelCount - Graph widthIllegalArgumentException - Thrown if datasource values are not yet calculated
(method processData() was not called)public Variable.Value getVariable(String sourceName)
sourceName - Datasource namepublic Variable.Value getVariable(String sourceName, Variable var)
sourceName - Datasource namevar - variable that will generate valuepublic boolean isPoolUsed()
RrdDbPool usage policy.isPoolUsed in interface DataHolderpublic void processData()
throws IOException
IOException - Thrown in case of I/O error (while fetching data from RRD files)public void setEndTime(long time)
DataHoldersetEndTime in interface DataHoldertime - Ending time for the graph in seconds since epochpublic void setFetchRequestResolution(long fetchRequestResolution)
RrdDb.createFetchRequest() method when this method is called internally by this
DataProcessor. If this method is never called, fetch request resolution defaults to 1
(smallest possible archive step will be chosen automatically).fetchRequestResolution - Desired archive step (fetch resolution) in seconds.public void setPixelCount(int pixelCount)
getValuesPerPixel(String) and getTimestampsPerPixel()), but has influence neither on datasource values calculated with
the processData() method nor on aggregated values returned from getAggregates(String) and similar methods. In other words, aggregated values will not
change once you decide to change the dimension of your graph.pixelCount - The number of pixels. If you process RRD data in order to display it on the
graph, this should be the width of your graph.public void setPool(RrdDbPool pool)
RrdDbPool to use. If not defined, but {setPoolUsed(boolean) set to true, the default RrdDbPool.getInstance() will be used.setPool in interface DataHolderpool - an optional pool to use.public void setPoolUsed(boolean poolUsed)
RrdDbPool usage policy.setPoolUsed in interface DataHolderpoolUsed - true, if the pool should be used to fetch data from RRD files, false
otherwise.public void setStartTime(long time)
DataHoldersetStartTime in interface DataHoldertime - Starting time for the graph in seconds since epochpublic void setStep(long step)
setStep in interface DataHolderstep - Default to 0.public void setTimeSpan(long startTime,
long endTime)
DataHoldersetTimeSpan in interface DataHolderstartTime - Starting time in seconds since epochendTime - Ending time in seconds since epochpublic void setTimeZone(TimeZone tz)
DataHoldersetTimeZone in interface DataHoldertz - the time zone to set