Class Util


  • public class Util
    extends Object
    Class defines various utility functions used in Rrd4j.
    Author:
    Sasa Markovic
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  Util.Xml
      Various DOM utility functions.
    • Method Summary

      All Methods Static Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      static boolean equal​(double x, double y)
      Compares two doubles but treats all NaNs as equal.
      static boolean fileExists​(String filename)
      Checks if the file with the given file name exists
      static String formatDouble​(double x)
      Formats double as a string using exponential notation (RRDTool like).
      (package private) static String formatDouble​(double x, boolean forceExponents)  
      (package private) static String formatDouble​(double x, String nanString, boolean forceExponents)  
      static Calendar getCalendar​(long timestamp)
      Returns Calendar object for the given timestamp (in seconds, without milliseconds)
      static Calendar getCalendar​(String timeStr)
      Creates Calendar object from a string.
      static Calendar getCalendar​(Date date)
      Returns Calendar object for the given Date object
      static String getCanonicalPath​(String path)
      Returns canonical file path for the given file path
      static Date getDate​(long timestamp)
      Returns Date object for the given timestamp (in seconds, without milliseconds)
      static String getFileSeparator()
      Returns file system separator string.
      static String getLapTime()
      Function used for debugging purposes and performance bottlenecks detection.
      static long getLastModified​(String file)
      Deprecated.
      use #getLastModifiedTime, that can throws exceptions if needed
      static long getLastModifiedTime​(String file)
      Returns last modification time for the given file.
      (package private) static int getMatchingArchiveIndex​(RrdDb rrd1, int arcIndex, RrdDb rrd2)  
      (package private) static int getMatchingDatasourceIndex​(RrdDb rrd1, int dsIndex, RrdDb rrd2)  
      static String getRrd4jDemoDirectory()
      Returns path to directory used for placement of Rrd4j demo graphs and creates it if necessary.
      static String getRrd4jDemoPath​(String filename)
      Returns full path to the file stored in the demo directory of Rrd4j
      static String getRrd4jHomeDirectory()
      Returns the root directory of the Rrd4j distribution.
      static long getTime()
      Returns current timestamp in seconds (without milliseconds).
      static long getTimestamp()
      Just an alias for getTime() method.
      static long getTimestamp​(int year, int month, int day)
      Returns timestamp (unix epoch) for the given year, month and day.
      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.
      static long getTimestamp​(String atStyleTimeSpec)
      Parses at-style time specification and returns the corresponding timestamp.
      static long getTimestamp​(Calendar gc)
      Returns timestamp (unix epoch) for the given Calendar object
      static long getTimestamp​(Date date)
      Returns timestamp (unix epoch) for the given Date object
      static long[] getTimestamps​(String atStyleTimeSpec1, String atStyleTimeSpec2)
      Parses two related at-style time specifications and returns corresponding timestamps.
      (package private) static String getTmpFilename()  
      static String getUserHomeDirectory()
      Returns path to user's home directory.
      static boolean isDouble​(String s)
      Checks if a string can be parsed as double.
      static double max​(double[] values)
      Finds max value for an array of doubles (NaNs are ignored).
      static double max​(double x, double y)
      Returns the greater of two double values, but treats NaN as the smallest possible value.
      static double min​(double[] values)
      Finds min value for an array of doubles (NaNs are ignored).
      static double min​(double x, double y)
      Returns the smaller of two double values, but treats NaN as the greatest possible value.
      static long normalize​(long timestamp, long step)
      Rounds the given timestamp to the nearest whole "step".
      static boolean parseBoolean​(String valueStr)
      Parses input string as a boolean value.
      static Paint parseColor​(String valueStr)
      Parses input string as color.
      static double parseDouble​(String valueStr)
      Parses input string as a double value.
      (package private) static boolean sameFilePath​(String pathname1, String pathname2)  
      static String sprintf​(Locale l, String format, Object... args)
      Equivalent of the C-style sprintf function.
      static double sum​(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.
    • Method Detail

      • toDoubleArray

        public static double[] toDoubleArray​(long[] array)
        Converts an array of long primitives to an array of doubles.
        Parameters:
        array - input array of long values.
        Returns:
        Same array but with all values as double.
      • 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)
      • normalize

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

        timestamp - timestamp % step;

        Parameters:
        timestamp - Timestamp in seconds
        step - Step in seconds
        Returns:
        "Rounded" timestamp
      • 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
      • 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
      • 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;
      • formatDouble

        static String formatDouble​(double x,
                                   String nanString,
                                   boolean forceExponents)
      • formatDouble

        static String formatDouble​(double x,
                                   boolean forceExponents)
      • formatDouble

        public static String formatDouble​(double x)
        Formats double as a string using exponential notation (RRDTool like). Used for debugging through the project.
        Parameters:
        x - value to be formatted
        Returns:
        string like "+1.234567E+02"
      • 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.
      • 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.
      • 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.

        The date is resolved in the current time zone

        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.

        The date is resolved in the current time zone

        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.
      • 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.
      • 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
      • 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
      • 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:
        IllegalArgumentException - If the input string is not 6 or 8 characters long (without optional '#')
      • getFileSeparator

        public static String getFileSeparator()
        Returns file system separator string.
        Returns:
        File system separator ("/" on Unix, "\" on Windows)
      • getUserHomeDirectory

        public static String getUserHomeDirectory()
        Returns path to user's home directory.
        Returns:
        Path to users home directory, with file separator appended.
      • getRrd4jDemoDirectory

        public static String getRrd4jDemoDirectory()
        Returns path to directory used for placement of Rrd4j demo graphs and creates it if necessary.
        Returns:
        Path to demo directory (defaults to $HOME/rrd4j/) if directory exists or was successfully created. Null if such directory could not be created.
      • getRrd4jDemoPath

        public static String getRrd4jDemoPath​(String filename)
        Returns full path to the file stored in the demo directory of Rrd4j
        Parameters:
        filename - Partial path to the file stored in the demo directory of Rrd4j (just name and extension, without parent directories)
        Returns:
        Full path to the file
      • 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
      • getLapTime

        public static String getLapTime()
        Function used for debugging purposes and performance bottlenecks detection. Probably of no use for end users of Rrd4j.
        Returns:
        String representing time in seconds since last getLapTime() method call.
      • getRrd4jHomeDirectory

        public static String getRrd4jHomeDirectory()

        Returns the root directory of the Rrd4j distribution. Useful in some demo applications, probably of no use anywhere else.

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

        Returns:
        absolute path to Rrd4j's home directory
      • 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
      • getCanonicalPath

        public static String getCanonicalPath​(String path)
                                       throws IOException
        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
      • getLastModified

        @Deprecated
        public static long getLastModified​(String file)
        Deprecated.
        use #getLastModifiedTime, that can throws exceptions if needed
        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)
      • getLastModifiedTime

        public static long getLastModifiedTime​(String file)
                                        throws IOException
        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)
        Throws:
        IOException
      • 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
      • 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[] 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)
      • sprintf

        public static String sprintf​(Locale l,
                                     String format,
                                     Object... args)
        Equivalent of the C-style sprintf function.
        Parameters:
        format - Format string
        args - Arbitrary list of arguments
        l - a Locale object.
        Returns:
        Formatted string