Class SnowflakeUtil


  • public class SnowflakeUtil
    extends Object
    • Constructor Detail

      • SnowflakeUtil

        public SnowflakeUtil()
    • Method Detail

      • mapJson

        public static String mapJson​(Object ob)
                              throws com.fasterxml.jackson.core.JsonProcessingException
        Throws:
        com.fasterxml.jackson.core.JsonProcessingException
      • checkErrorAndThrowExceptionIncludingReauth

        public static void checkErrorAndThrowExceptionIncludingReauth​(com.fasterxml.jackson.databind.JsonNode rootNode)
                                                               throws SnowflakeSQLException
        Throws:
        SnowflakeSQLException
      • getEpochTimeInMicroSeconds

        public static long getEpochTimeInMicroSeconds()
      • extractColumnMetadata

        @Deprecated
        public static SnowflakeColumnMetadata extractColumnMetadata​(com.fasterxml.jackson.databind.JsonNode colNode,
                                                                    boolean jdbcTreatDecimalAsInt,
                                                                    SFBaseSession session)
                                                             throws SnowflakeSQLException
        Deprecated.
        This method should only be used internally
        Parameters:
        colNode - JsonNode
        jdbcTreatDecimalAsInt - true if should treat Decimal as Int
        session - SFBaseSession
        Returns:
        SnowflakeColumnMetadata
        Throws:
        SnowflakeSQLException - if an error occurs
      • logResponseDetails

        public static void logResponseDetails​(org.apache.http.HttpResponse response,
                                              SFLogger logger)
        A utility to log response details.

        Used when there is an error in http response

        Parameters:
        response - http response get from server
        logger - logger object
      • createDefaultExecutorService

        public static ThreadPoolExecutor createDefaultExecutorService​(String threadNamePrefix,
                                                                      int parallel)
        Returns a new thread pool configured with the default settings.
        Parameters:
        threadNamePrefix - prefix of the thread name
        parallel - the number of concurrency
        Returns:
        A new thread pool configured with the default settings.
      • isBlank

        public static boolean isBlank​(String input)
      • randomAlphaNumeric

        public static String randomAlphaNumeric​(int count)
      • systemGetProperty

        public static String systemGetProperty​(String property)
        System.getProperty wrapper. If System.getProperty raises an SecurityException, it is ignored and returns null.
        Parameters:
        property - the property name
        Returns:
        the property value if set, otherwise null.
      • systemGetEnv

        public static String systemGetEnv​(String env)
        System.getenv wrapper. If System.getenv raises an SecurityException, it is ignored and returns null.
        Parameters:
        env - the environment variable name.
        Returns:
        the environment variable value if set, otherwise null.
      • systemSetEnv

        public static void systemSetEnv​(String key,
                                        String value)
        System.setEnv function. Can be used for unit tests.
        Parameters:
        key - key
        value - value
      • systemUnsetEnv

        public static void systemUnsetEnv​(String key)
        System.unsetEnv function to remove a system environment parameter in the map
        Parameters:
        key - key value
      • getSecondsFromMillis

        public static long getSecondsFromMillis​(long millis)
        Round the time value from milliseconds to seconds so the seconds can be used to create SimpleDateFormatter. Negative values have to be rounded to the next negative value, while positive values should be cut off with no rounding.
        Parameters:
        millis - milliseconds
        Returns:
        seconds as long value
      • getTimeInSessionTimezone

        public static Time getTimeInSessionTimezone​(Long time,
                                                    int nanos)
        Get the time value in session timezone instead of UTC calculation done by java.sql.Time.
        Parameters:
        time - time in seconds
        nanos - nanoseconds
        Returns:
        time in session timezone
      • convertSystemPropertyToBooleanValue

        @SnowflakeJdbcInternalApi
        public static boolean convertSystemPropertyToBooleanValue​(String systemProperty,
                                                                  boolean defaultValue)
        Helper function to convert system properties to boolean
        Parameters:
        systemProperty - name of the system property
        defaultValue - default value used
        Returns:
        the value of the system property as boolean, else the default value
      • convertSystemGetEnvToBooleanValue

        @SnowflakeJdbcInternalApi
        public static boolean convertSystemGetEnvToBooleanValue​(String envVariableKey,
                                                                boolean defaultValue)
        Helper function to convert environment variable to boolean
        Parameters:
        envVariableKey - property name of the environment variable
        defaultValue - default value used
        Returns:
        the value of the environment variable as boolean, else the default value
      • getJsonNodeStringValue

        public static String getJsonNodeStringValue​(com.fasterxml.jackson.databind.JsonNode node)
                                             throws SFException
        Throws:
        SFException
      • createCaseInsensitiveMap

        @SnowflakeJdbcInternalApi
        public static Map<String,​String> createCaseInsensitiveMap​(Map<String,​String> input)
        Method introduced to avoid inconsistencies in custom headers handling, since these are defined on drivers side e.g. some drivers might internally convert headers to canonical form.
        Parameters:
        input - map input
        Returns:
        case insensitive map
      • createCaseInsensitiveMap

        @SnowflakeJdbcInternalApi
        public static Map<String,​String> createCaseInsensitiveMap​(org.apache.http.Header[] headers)
        toCaseInsensitiveMap, but adjusted to Headers[] argument type
        Parameters:
        headers - array of headers
        Returns:
        case insensitive map
      • createOwnerOnlyPermissionDir

        @SnowflakeJdbcInternalApi
        public static boolean createOwnerOnlyPermissionDir​(String location)
        create a directory with Owner only permission (0600)
      • isNullOrEmpty

        public static boolean isNullOrEmpty​(String str)