org.jrobin.core

Class Util

public class Util extends Object

Class defines various utility functions used in JRobin.
Nested Class Summary
static classUtil.Xml
Various DOM utility functions
Field Summary
static doubleMAX_DOUBLE
static longMAX_LONG
static doubleMIN_DOUBLE
static longMIN_LONG
Method Summary
static booleanequal(double x, double y)
Compares two doubles but treats all NaNs as equal.
static booleanfileExists(String filename)
Checks if the file with the given file name exists
static StringformatDouble(double x)
Formats double as a string using exponential notation (RRDTool like).
static CalendargetCalendar(long timestamp)
Returns Calendar object for the given timestamp (in seconds, without milliseconds)
static CalendargetCalendar(Date date)
Returns Calendar object for the given Date object
static CalendargetCalendar(String timeStr)
Creates Calendar object from a string.
static StringgetCanonicalPath(String path)
Returns canonical file path for the given file path
static DategetDate(long timestamp)
Returns Date object for the given timestamp (in seconds, without milliseconds)
static StringgetFileSeparator()
Returns file system separator string.
static StringgetJRobinDemoDirectory()
Returns path to directory used for placement of JRobin demo graphs and creates it if necessary.
static StringgetJRobinDemoPath(String filename)
Returns full path to the file stored in the demo directory of JRobin
static StringgetJRobinHomeDirectory()
Returns the root directory of the JRobin distribution.
static StringgetLapTime()
Function used for debugging purposes and performance bottlenecks detection.
static longgetLastModified(String file)
Returns last modification time for the given file.
static longgetTime()
Returns current timestamp in seconds (without milliseconds).
static longgetTimestamp()
Just an alias for getTime method.
static longgetTimestamp(Date date)
Returns timestamp (unix epoch) for the given Date object
static longgetTimestamp(Calendar gc)
Returns timestamp (unix epoch) for the given Calendar object
static longgetTimestamp(int year, int month, int day, int hour, int min)
Returns timestamp (unix epoch) for the given year, month, day, hour and minute.
static longgetTimestamp(int year, int month, int day)
Returns timestamp (unix epoch) for the given year, month and day.
static longgetTimestamp(String atStyleTimeSpec)
Parses at-style time specification and returns the corresponding timestamp.
static long[]getTimestamps(String atStyleTimeSpec1, String atStyleTimeSpec2)
Parses two related at-style time specifications and returns corresponding timestamps.
static StringgetUserHomeDirectory()
Returns path to user's home directory.
static booleanisDouble(String s)
Checks if a string can be parsed as double.
static doublemax(double x, double y)
Returns the greater of two double values, but treats NaN as the smallest possible value.
static doublemax(double[] values)
Finds max value for an array of doubles (NaNs are ignored).
static doublemin(double x, double y)
Returns the smaller of two double values, but treats NaN as the greatest possible value.
static doublemin(double[] values)
Finds min value for an array of doubles (NaNs are ignored).
static longnormalize(long timestamp, long step)
Rounds the given timestamp to the nearest whole "e;step"e;.
static booleanparseBoolean(String valueStr)
Parses input string as a boolean value.
static PaintparseColor(String valueStr)
Parses input string as color.
static doubleparseDouble(String valueStr)
Parses input string as a double value.
static Stringsprintf(String format, Object... args)
Equivalent of the C-style sprintf function.
static doublesum(double x, double y)
Calculates sum of two doubles, but treats NaNs as zeros.
static double[]toDoubleArray(long[] array)
Converts an array of long primitives to an array of doubles.

Field Detail

MAX_DOUBLE

public static final double MAX_DOUBLE

MAX_LONG

public static final long MAX_LONG

MIN_DOUBLE

public static final double MIN_DOUBLE

MIN_LONG

public static final long MIN_LONG

Method Detail

equal

public static boolean equal(double x, double y)
Compares two doubles but treats all NaNs as equal. In Java (by default) Double.NaN == Double.NaN always returns false

Parameters: x the first value y the second value

Returns: true if x and y are both equal to Double.NaN, or if x == y. false otherwise

fileExists

public static boolean fileExists(String filename)
Checks if the file with the given file name exists

Parameters: filename File name

Returns: true if file exists, false otherwise

formatDouble

public static String formatDouble(double x)
Formats double as a string using exponential notation (RRDTool like). Used for debugging throught the project.

Parameters: x value to be formatted

Returns: string like "+1.234567E+02"

getCalendar

public static Calendar getCalendar(long timestamp)
Returns Calendar object for the given timestamp (in seconds, without milliseconds)

Parameters: timestamp Timestamp in seconds.

Returns: Corresponding Calendar object.

getCalendar

public static Calendar getCalendar(Date date)
Returns Calendar object for the given Date object

Parameters: date Date object

Returns: Corresponding Calendar object.

getCalendar

public static Calendar getCalendar(String timeStr)
Creates Calendar object from a string. The string should represent either a long integer (UNIX timestamp in seconds without milliseconds, like "1002354657") or a human readable date string in the format "yyyy-MM-dd HH:mm:ss" (like "2004-02-25 12:23:45").

Parameters: timeStr Input string

Returns: Calendar object

getCanonicalPath

public static String getCanonicalPath(String path)
Returns canonical file path for the given file path

Parameters: path Absolute or relative file path

Returns: Canonical file path

Throws: IOException Thrown if canonical file path could not be resolved

getDate

public static Date getDate(long timestamp)
Returns Date object for the given timestamp (in seconds, without milliseconds)

Parameters: timestamp Timestamp in seconds.

Returns: Corresponding Date object.

getFileSeparator

public static String getFileSeparator()
Returns file system separator string.

Returns: File system separator ("/" on Unix, "\" on Windows)

getJRobinDemoDirectory

public static String getJRobinDemoDirectory()
Returns path to directory used for placement of JRobin demo graphs and creates it if necessary.

Returns: Path to demo directory (defaults to $HOME/jrobin/) if directory exists or was successfully created. Null if such directory could not be created.

getJRobinDemoPath

public static String getJRobinDemoPath(String filename)
Returns full path to the file stored in the demo directory of JRobin

Parameters: filename Partial path to the file stored in the demo directory of JRobin (just name and extension, without parent directories)

Returns: Full path to the file

getJRobinHomeDirectory

public static String getJRobinHomeDirectory()
Returns the root directory of the JRobin distribution. Useful in some demo applications, probably of no use anywhere else.

The function assumes that all JRobin .class files are placed under the <root>/classes subdirectory and that all jars (libraries) are placed in the <root>/lib subdirectory (the original JRobin directory structure).

Returns: absolute path to JRobin's home directory

getLapTime

public static String getLapTime()
Function used for debugging purposes and performance bottlenecks detection. Probably of no use for end users of JRobin.

Returns: String representing time in seconds since last getLapTime() method call.

getLastModified

public static long getLastModified(String file)
Returns last modification time for the given file.

Parameters: file File object representing file on the disk

Returns: Last modification time in seconds (without milliseconds)

getTime

public static long getTime()
Returns current timestamp in seconds (without milliseconds). Returned timestamp is obtained with the following expression:

(System.currentTimeMillis() + 500L) / 1000L

Returns: Current timestamp

getTimestamp

public static long getTimestamp()
Just an alias for getTime method.

Returns: Current timestamp (without milliseconds)

getTimestamp

public static long getTimestamp(Date date)
Returns timestamp (unix epoch) for the given Date object

Parameters: date Date object

Returns: Corresponding timestamp (without milliseconds)

getTimestamp

public static long getTimestamp(Calendar gc)
Returns timestamp (unix epoch) for the given Calendar object

Parameters: gc Calendar object

Returns: Corresponding timestamp (without milliseconds)

getTimestamp

public static long getTimestamp(int year, int month, int day, int hour, int min)
Returns timestamp (unix epoch) for the given year, month, day, hour and minute.

Parameters: year Year month Month (zero-based) day Day in month hour Hour min Minute

Returns: Corresponding timestamp

getTimestamp

public static long getTimestamp(int year, int month, int day)
Returns timestamp (unix epoch) for the given year, month and day.

Parameters: year Year month Month (zero-based) day Day in month

Returns: Corresponding timestamp

getTimestamp

public static long getTimestamp(String atStyleTimeSpec)
Parses at-style time specification and returns the corresponding timestamp. For example:

 long t = Util.getTimestamp("now-1d");
 

Parameters: atStyleTimeSpec at-style time specification. For the complete explanation of the syntax allowed see RRDTool's rrdfetch man page.

Returns: timestamp in seconds since epoch.

Throws: RrdException Thrown if invalid time specification is supplied.

getTimestamps

public static long[] getTimestamps(String atStyleTimeSpec1, String atStyleTimeSpec2)
Parses two related at-style time specifications and returns corresponding timestamps. For example:

 long[] t = Util.getTimestamps("end-1d","now");
 

Parameters: atStyleTimeSpec1 Starting at-style time specification. For the complete explanation of the syntax allowed see RRDTool's rrdfetch man page.

atStyleTimeSpec2 Ending at-style time specification. For the complete explanation of the syntax allowed see RRDTool's rrdfetch man page.

Returns: An array of two longs representing starting and ending timestamp in seconds since epoch.

Throws: RrdException Thrown if any input time specification is invalid.

getUserHomeDirectory

public static String getUserHomeDirectory()
Returns path to user's home directory.

Returns: Path to users home directory, with file separator appended.

isDouble

public static boolean isDouble(String s)
Checks if a string can be parsed as double.

Parameters: s Input string

Returns: true if the string can be parsed as double, false otherwise

max

public static double max(double x, double y)
Returns the greater of two double values, but treats NaN as the smallest possible value. Note that Math.max() behaves differently for NaN arguments.

Parameters: x an argument y another argument

Returns: the lager of arguments

max

public static double max(double[] values)
Finds max value for an array of doubles (NaNs are ignored). If all values in the array are NaNs, NaN is returned.

Parameters: values Array of double values

Returns: max value in the array (NaNs are ignored)

min

public static double min(double x, double y)
Returns the smaller of two double values, but treats NaN as the greatest possible value. Note that Math.min() behaves differently for NaN arguments.

Parameters: x an argument y another argument

Returns: the smaller of arguments

min

public static double min(double[] values)
Finds min value for an array of doubles (NaNs are ignored). If all values in the array are NaNs, NaN is returned.

Parameters: values Array of double values

Returns: min value in the array (NaNs are ignored)

normalize

public static long normalize(long timestamp, long step)
Rounds the given timestamp to the nearest whole "e;step"e;. Rounded value is obtained from the following expression:

timestamp - timestamp % step;

Parameters: timestamp Timestamp in seconds step Step in seconds

Returns: "Rounded" timestamp

parseBoolean

public static boolean parseBoolean(String valueStr)
Parses input string as a boolean value. The parser is case insensitive.

Parameters: valueStr String representing boolean value

Returns: true, if valueStr equals to 'true', 'on', 'yes', 'y' or '1'; false in all other cases.

parseColor

public static Paint parseColor(String valueStr)
Parses input string as color. The color string should be of the form #RRGGBB (no alpha specified, opaque color) or #RRGGBBAA (alpa specified, transparent colors). Leading character '#' is optional.

Parameters: valueStr Input string, for example #FFAA24, #AABBCC33, 010203 or ABC13E4F

Returns: Paint object

Throws: RrdException If the input string is not 6 or 8 characters long (without optional '#')

parseDouble

public static double parseDouble(String valueStr)
Parses input string as a double value. If the value cannot be parsed, Double.NaN is returned (NumberFormatException is never thrown).

Parameters: valueStr String representing double value

Returns: a double corresponding to the input string

sprintf

public static String sprintf(String format, Object... args)
Equivalent of the C-style sprintf function. Sorry, it works only in Java5.

Parameters: format Format string args Arbitrary list of arguments

Returns: Formatted string

sum

public static double sum(double x, double y)
Calculates sum of two doubles, but treats NaNs as zeros.

Parameters: x First double y Second double

Returns: Sum(x,y) calculated as Double.isNaN(x)? y: Double.isNaN(y)? x: x + y;

toDoubleArray

public static double[] toDoubleArray(long[] array)
Converts an array of long primitives to an array of doubles.

Returns: Same array but with all values as double.