org.mariadb.jdbc.internal.util

## Class Utils

- java.lang.Object
- - org.mariadb.jdbc.internal.util.Utils

    public class Utils
    extends Object

### Constructor Summary

Constructors
Constructor and Description
`Utils()`

### Method Summary

All Methods Static Methods Concrete Methods
`static byte[]` `copyRange(byte[] orig, int from, int to)` Copies from original byte array to a new byte array.
`static byte[]` `copyWithLength(byte[] orig, int length)` Copies the original byte array content to a new byte array.
`static Socket` `createSocket(UrlParser urlParser, String host)` Create socket accordingly to options.

`static byte[]`

`encryptPassword(String password, byte[] seed)`
encrypts a password protocol for authentication is like this: 1. mysql server sends a random array of bytes (the seed) 2. client makes a sha1 digest of the password 3. client hashes the output of 2 4. client digests the seed 5. client updates the digest with the output from 3 6. an xor of the output of 5 and 2 is sent to server 7. server does the same thing and verifies that the scrambled passwords match

`static String` `escapeString(String value, boolean noBackslashEscapes)` Escape String.
`static TimeZone` `getTimeZone(String id)` Get timezone from Id.
`static String` `nativeSql(String sql, boolean noBackslashEscapes)` Escape sql String
`static String` `replaceFunctionParameter(String functionString)` Helper function to replace function parameters in escaped string. 3 functions are handles : - CONVERT(value, type) , we replace SQL_XXX types with XXX, i.e SQL_INTEGER with INTEGER - TIMESTAMPDIFF(type, ...) or TIMESTAMPADD(type, ...) , we replace SQL_TSI_XXX in type with XXX, i.e SQL_TSI_HOUR with HOUR
`static Protocol` `retrieveProxy(UrlParser urlParser, ReentrantLock lock)` Retrieve protocol corresponding to the failover options.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### Utils

    public Utils()

### Method Detail

#### escapeString

    public static String escapeString(String value,
                                      boolean noBackslashEscapes)

Escape String.

Parameters:
  `value` - value to escape
  `noBackslashEscapes` - must backslash be escaped
Returns:
  escaped string.

#### encryptPassword

    public static byte[] encryptPassword(String password,
                                         byte[] seed)
                                  throws NoSuchAlgorithmException

encrypts a password

protocol for authentication is like this: 1. mysql server sends a random array of bytes (the seed) 2. client makes a sha1 digest of the password 3. client hashes the output of 2 4. client digests the seed 5. client updates the digest with the output from 3 6. an xor of the output of 5 and 2 is sent to server 7. server does the same thing and verifies that the scrambled passwords match

Parameters:
  `password` - the password to encrypt
  `seed` - the seed to use
Returns:
  a scrambled password
Throws:
  `NoSuchAlgorithmException` - if SHA1 is not available on the platform we are using

#### copyWithLength

    public static byte[] copyWithLength(byte[] orig,
                                        int length)

Copies the original byte array content to a new byte array. The resulting byte array is always "length" size. If length is smaller than the original byte array, the resulting byte array is truncated. If length is bigger than the original byte array, the resulting byte array is filled with zero bytes.

Parameters:
  `orig` - the original byte array
  `length` - how big the resulting byte array will be
Returns:
  the copied byte array

#### copyRange

    public static byte[] copyRange(byte[] orig,
                                   int from,
                                   int to)

Copies from original byte array to a new byte array. The resulting byte array is always "to-from" size.

Parameters:
  `orig` - the original byte array
  `from` - index of first byte in original byte array which will be copied
  `to` - index of last byte in original byte array which will be copied. This can be outside of the original byte array
Returns:
  resulting array

#### replaceFunctionParameter

    public static String replaceFunctionParameter(String functionString)

Helper function to replace function parameters in escaped string. 3 functions are handles : - CONVERT(value, type) , we replace SQL_XXX types with XXX, i.e SQL_INTEGER with INTEGER - TIMESTAMPDIFF(type, ...) or TIMESTAMPADD(type, ...) , we replace SQL_TSI_XXX in type with XXX, i.e SQL_TSI_HOUR with HOUR

Parameters:
  `functionString` - - input string
Returns:
  unescaped string

#### nativeSql

    public static String nativeSql(String sql,
                                   boolean noBackslashEscapes)
                            throws SQLException

Escape sql String

Parameters:
  `sql` - initial sql
  `noBackslashEscapes` - must backslash be escape
Returns:
  escaped sql string
Throws:
  `SQLException` - if escape sequence is incorrect.

#### retrieveProxy

    public static Protocol retrieveProxy(UrlParser urlParser,
                                         ReentrantLock lock)
                                  throws QueryException,
                                         SQLException

Retrieve protocol corresponding to the failover options. if no failover option, protocol will not be proxied. if a failover option is precised, protocol will be proxied so that any connection error will be handle directly.

Parameters:
  `urlParser` - urlParser corresponding to connection url string.
  `lock` - lock to handle thread synchronisation
Returns:
  protocol
Throws:
  `QueryException` - if any error occur during connection
  `SQLException` - if any error occur during connection

#### getTimeZone

    public static TimeZone getTimeZone(String id)
                                throws SQLException

Get timezone from Id. This differ from java implementation : by default, if timezone Id is unknown, java return GMT timezone. GMT will be return only if explicitly asked.

Parameters:
  `id` - timezone id
Returns:
  timezone.
Throws:
  `SQLException` - if no timezone is found for this Id

#### createSocket

    public static Socket createSocket(UrlParser urlParser,
                                      String host)
                               throws IOException

Create socket accordingly to options.

Parameters:
  `urlParser` - urlParser
  `host` - hostName ( mandatory only for named pipe)
Returns:
  a nex socket
Throws:
  `IOException` - if connection error occur