com.mysql.jdbc
Class StringUtils

java.lang.Object
  extended by com.mysql.jdbc.StringUtils

public class StringUtils
extends java.lang.Object

Various utility methods for converting to/from byte arrays in the platform encoding


Field Summary
(package private) static int WILD_COMPARE_MATCH_NO_WILD
           
(package private) static int WILD_COMPARE_MATCH_WITH_WILD
           
(package private) static int WILD_COMPARE_NO_MATCH
           
 
Constructor Summary
StringUtils()
           
 
Method Summary
static java.lang.String consistentToString(java.math.BigDecimal decimal)
          Takes care of the fact that Sun changed the output of BigDecimal.toString() between JDK-1.4 and JDK 5
static java.lang.String dumpAsHex(byte[] byteBuffer, int length)
          Dumps the given bytes to STDOUT as a hex dump (up to length bytes).
static byte[] escapeEasternUnicodeByteStream(byte[] origBytes, java.lang.String origString, int offset, int length)
          Unfortunately, SJIS has 0x5c as a high byte in some of its double-byte characters, so we need to escape it.
static char firstAlphaCharUc(java.lang.String searchIn, int startAt)
           
static char firstNonWsCharUc(java.lang.String searchIn)
          Returns the first non whitespace char, converted to upper case
static char firstNonWsCharUc(java.lang.String searchIn, int startAt)
           
static java.lang.String fixDecimalExponent(java.lang.String dString)
          Adds '+' to decimal numbers that are positive (MySQL doesn't understand them otherwise
static byte[] getBytes(char[] c, SingleByteCharsetConverter converter, java.lang.String encoding, java.lang.String serverEncoding, boolean parserKnowsUnicode, ExceptionInterceptor exceptionInterceptor)
           
static byte[] getBytes(char[] c, SingleByteCharsetConverter converter, java.lang.String encoding, java.lang.String serverEncoding, int offset, int length, boolean parserKnowsUnicode, ExceptionInterceptor exceptionInterceptor)
           
static byte[] getBytes(char[] c, java.lang.String encoding, java.lang.String serverEncoding, boolean parserKnowsUnicode, ConnectionImpl conn, ExceptionInterceptor exceptionInterceptor)
           
static byte[] getBytes(java.lang.String s, SingleByteCharsetConverter converter, java.lang.String encoding, java.lang.String serverEncoding, boolean parserKnowsUnicode, ExceptionInterceptor exceptionInterceptor)
          Returns the byte[] representation of the given string (re)using the given charset converter, and the given encoding.
static byte[] getBytes(java.lang.String s, SingleByteCharsetConverter converter, java.lang.String encoding, java.lang.String serverEncoding, int offset, int length, boolean parserKnowsUnicode, ExceptionInterceptor exceptionInterceptor)
          DOCUMENT ME!
static byte[] getBytes(java.lang.String s, java.lang.String encoding, java.lang.String serverEncoding, boolean parserKnowsUnicode, ConnectionImpl conn, ExceptionInterceptor exceptionInterceptor)
          Returns the byte[] representation of the given string using given encoding.
static byte[] getBytesWrapped(java.lang.String s, char beginWrap, char endWrap, SingleByteCharsetConverter converter, java.lang.String encoding, java.lang.String serverEncoding, boolean parserKnowsUnicode, ExceptionInterceptor exceptionInterceptor)
           
static int getInt(byte[] buf)
           
static int getInt(byte[] buf, int offset, int endPos)
           
static long getLong(byte[] buf)
           
static long getLong(byte[] buf, int offset, int endpos)
           
static short getShort(byte[] buf)
           
static int indexOf(byte[] s, char c)
           
static int indexOfIgnoreCase(int startingPosition, java.lang.String searchIn, java.lang.String searchFor)
           
static int indexOfIgnoreCase(java.lang.String searchIn, java.lang.String searchFor)
          DOCUMENT ME!
static int indexOfIgnoreCaseRespectMarker(int startAt, java.lang.String src, java.lang.String target, java.lang.String marker, java.lang.String markerCloses, boolean allowBackslashEscapes)
           
static int indexOfIgnoreCaseRespectQuotes(int startAt, java.lang.String src, java.lang.String target, char quoteChar, boolean allowBackslashEscapes)
           
static boolean isEmptyOrWhitespaceOnly(java.lang.String str)
           
static boolean isNullOrEmpty(java.lang.String toTest)
           
static int lastIndexOf(byte[] s, char c)
           
(package private) static byte[] s2b(java.lang.String s, ConnectionImpl conn)
           
static java.util.List split(java.lang.String stringToSplit, java.lang.String delimitter, boolean trim)
          Splits stringToSplit into a list, using the given delimitter
static java.util.List split(java.lang.String stringToSplit, java.lang.String delimiter, java.lang.String markers, java.lang.String markerCloses, boolean trim)
          Splits stringToSplit into a list, using the given delimitter
static boolean startsWithIgnoreCase(java.lang.String searchIn, int startAt, java.lang.String searchFor)
          Determines whether or not the string 'searchIn' contains the string 'searchFor', dis-regarding case starting at 'startAt' Shorthand for a String.regionMatch(...)
static boolean startsWithIgnoreCase(java.lang.String searchIn, java.lang.String searchFor)
          Determines whether or not the string 'searchIn' contains the string 'searchFor', dis-regarding case.
static boolean startsWithIgnoreCaseAndNonAlphaNumeric(java.lang.String searchIn, java.lang.String searchFor)
          Determines whether or not the sting 'searchIn' contains the string 'searchFor', disregarding case,leading whitespace and non-alphanumeric characters.
static boolean startsWithIgnoreCaseAndWs(java.lang.String searchIn, java.lang.String searchFor)
          Determines whether or not the sting 'searchIn' contains the string 'searchFor', disregarding case and leading whitespace
static boolean startsWithIgnoreCaseAndWs(java.lang.String searchIn, java.lang.String searchFor, int beginPos)
          Determines whether or not the sting 'searchIn' contains the string 'searchFor', disregarding case and leading whitespace
static java.lang.String stripComments(java.lang.String src, java.lang.String stringOpens, java.lang.String stringCloses, boolean slashStarComments, boolean slashSlashComments, boolean hashComments, boolean dashDashComments)
          Returns the given string, with comments removed
static byte[] stripEnclosure(byte[] source, java.lang.String prefix, java.lang.String suffix)
           
static java.lang.String toAsciiString(byte[] buffer)
          Returns the bytes as an ASCII String.
static java.lang.String toAsciiString(byte[] buffer, int startPos, int length)
          Returns the bytes as an ASCII String.
static int wildCompare(java.lang.String searchIn, java.lang.String searchForWildcard)
          Compares searchIn against searchForWildcard with wildcards (heavily borrowed from strings/ctype-simple.c in the server sources)
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

WILD_COMPARE_MATCH_NO_WILD

static final int WILD_COMPARE_MATCH_NO_WILD
See Also:
Constant Field Values

WILD_COMPARE_MATCH_WITH_WILD

static final int WILD_COMPARE_MATCH_WITH_WILD
See Also:
Constant Field Values

WILD_COMPARE_NO_MATCH

static final int WILD_COMPARE_NO_MATCH
See Also:
Constant Field Values
Constructor Detail

StringUtils

public StringUtils()
Method Detail

consistentToString

public static java.lang.String consistentToString(java.math.BigDecimal decimal)
Takes care of the fact that Sun changed the output of BigDecimal.toString() between JDK-1.4 and JDK 5

Parameters:
decimal - the big decimal to stringify
Returns:
a string representation of 'decimal'

dumpAsHex

public static final java.lang.String dumpAsHex(byte[] byteBuffer,
                                               int length)
Dumps the given bytes to STDOUT as a hex dump (up to length bytes).

Parameters:
byteBuffer - the data to print as hex
length - the number of bytes to print
Returns:
...

escapeEasternUnicodeByteStream

public static byte[] escapeEasternUnicodeByteStream(byte[] origBytes,
                                                    java.lang.String origString,
                                                    int offset,
                                                    int length)
Unfortunately, SJIS has 0x5c as a high byte in some of its double-byte characters, so we need to escape it.

Parameters:
origBytes - the original bytes in SJIS format
origString - the string that had .getBytes() called on it
offset - where to start converting from
length - how many characters to convert.
Returns:
byte[] with 0x5c escaped

firstNonWsCharUc

public static char firstNonWsCharUc(java.lang.String searchIn)
Returns the first non whitespace char, converted to upper case

Parameters:
searchIn - the string to search in
Returns:
the first non-whitespace character, upper cased.

firstNonWsCharUc

public static char firstNonWsCharUc(java.lang.String searchIn,
                                    int startAt)

firstAlphaCharUc

public static char firstAlphaCharUc(java.lang.String searchIn,
                                    int startAt)

fixDecimalExponent

public static final java.lang.String fixDecimalExponent(java.lang.String dString)
Adds '+' to decimal numbers that are positive (MySQL doesn't understand them otherwise

Parameters:
dString - The value as a string
Returns:
String the string with a '+' added (if needed)

getBytes

public static final byte[] getBytes(char[] c,
                                    SingleByteCharsetConverter converter,
                                    java.lang.String encoding,
                                    java.lang.String serverEncoding,
                                    boolean parserKnowsUnicode,
                                    ExceptionInterceptor exceptionInterceptor)
                             throws java.sql.SQLException
Throws:
java.sql.SQLException

getBytes

public static final byte[] getBytes(char[] c,
                                    SingleByteCharsetConverter converter,
                                    java.lang.String encoding,
                                    java.lang.String serverEncoding,
                                    int offset,
                                    int length,
                                    boolean parserKnowsUnicode,
                                    ExceptionInterceptor exceptionInterceptor)
                             throws java.sql.SQLException
Throws:
java.sql.SQLException

getBytes

public static final byte[] getBytes(char[] c,
                                    java.lang.String encoding,
                                    java.lang.String serverEncoding,
                                    boolean parserKnowsUnicode,
                                    ConnectionImpl conn,
                                    ExceptionInterceptor exceptionInterceptor)
                             throws java.sql.SQLException
Throws:
java.sql.SQLException

getBytes

public static final byte[] getBytes(java.lang.String s,
                                    SingleByteCharsetConverter converter,
                                    java.lang.String encoding,
                                    java.lang.String serverEncoding,
                                    boolean parserKnowsUnicode,
                                    ExceptionInterceptor exceptionInterceptor)
                             throws java.sql.SQLException
Returns the byte[] representation of the given string (re)using the given charset converter, and the given encoding.

Parameters:
s - the string to convert
converter - the converter to reuse
encoding - the character encoding to use
serverEncoding - DOCUMENT ME!
parserKnowsUnicode - DOCUMENT ME!
Returns:
byte[] representation of the string
Throws:
java.sql.SQLException - if an encoding unsupported by the JVM is supplied.

getBytesWrapped

public static final byte[] getBytesWrapped(java.lang.String s,
                                           char beginWrap,
                                           char endWrap,
                                           SingleByteCharsetConverter converter,
                                           java.lang.String encoding,
                                           java.lang.String serverEncoding,
                                           boolean parserKnowsUnicode,
                                           ExceptionInterceptor exceptionInterceptor)
                                    throws java.sql.SQLException
Throws:
java.sql.SQLException

getBytes

public static final byte[] getBytes(java.lang.String s,
                                    SingleByteCharsetConverter converter,
                                    java.lang.String encoding,
                                    java.lang.String serverEncoding,
                                    int offset,
                                    int length,
                                    boolean parserKnowsUnicode,
                                    ExceptionInterceptor exceptionInterceptor)
                             throws java.sql.SQLException
DOCUMENT ME!

Parameters:
s - DOCUMENT ME!
converter - DOCUMENT ME!
encoding - DOCUMENT ME!
serverEncoding - DOCUMENT ME!
offset - DOCUMENT ME!
length - DOCUMENT ME!
parserKnowsUnicode - DOCUMENT ME!
Returns:
DOCUMENT ME!
Throws:
java.sql.SQLException - DOCUMENT ME!

getBytes

public static final byte[] getBytes(java.lang.String s,
                                    java.lang.String encoding,
                                    java.lang.String serverEncoding,
                                    boolean parserKnowsUnicode,
                                    ConnectionImpl conn,
                                    ExceptionInterceptor exceptionInterceptor)
                             throws java.sql.SQLException
Returns the byte[] representation of the given string using given encoding.

Parameters:
s - the string to convert
encoding - the character encoding to use
parserKnowsUnicode - DOCUMENT ME!
Returns:
byte[] representation of the string
Throws:
java.sql.SQLException - if an encoding unsupported by the JVM is supplied.

getInt

public static int getInt(byte[] buf,
                         int offset,
                         int endPos)
                  throws java.lang.NumberFormatException
Throws:
java.lang.NumberFormatException

getInt

public static int getInt(byte[] buf)
                  throws java.lang.NumberFormatException
Throws:
java.lang.NumberFormatException

getLong

public static long getLong(byte[] buf)
                    throws java.lang.NumberFormatException
Throws:
java.lang.NumberFormatException

getLong

public static long getLong(byte[] buf,
                           int offset,
                           int endpos)
                    throws java.lang.NumberFormatException
Throws:
java.lang.NumberFormatException

getShort

public static short getShort(byte[] buf)
                      throws java.lang.NumberFormatException
Throws:
java.lang.NumberFormatException

indexOfIgnoreCase

public static final int indexOfIgnoreCase(int startingPosition,
                                          java.lang.String searchIn,
                                          java.lang.String searchFor)

indexOfIgnoreCase

public static final int indexOfIgnoreCase(java.lang.String searchIn,
                                          java.lang.String searchFor)
DOCUMENT ME!

Parameters:
searchIn - DOCUMENT ME!
searchFor - DOCUMENT ME!
Returns:
DOCUMENT ME!

indexOfIgnoreCaseRespectMarker

public static int indexOfIgnoreCaseRespectMarker(int startAt,
                                                 java.lang.String src,
                                                 java.lang.String target,
                                                 java.lang.String marker,
                                                 java.lang.String markerCloses,
                                                 boolean allowBackslashEscapes)

indexOfIgnoreCaseRespectQuotes

public static int indexOfIgnoreCaseRespectQuotes(int startAt,
                                                 java.lang.String src,
                                                 java.lang.String target,
                                                 char quoteChar,
                                                 boolean allowBackslashEscapes)

split

public static final java.util.List split(java.lang.String stringToSplit,
                                         java.lang.String delimitter,
                                         boolean trim)
Splits stringToSplit into a list, using the given delimitter

Parameters:
stringToSplit - the string to split
delimitter - the string to split on
trim - should the split strings be whitespace trimmed?
Returns:
the list of strings, split by delimitter
Throws:
java.lang.IllegalArgumentException - DOCUMENT ME!

split

public static final java.util.List split(java.lang.String stringToSplit,
                                         java.lang.String delimiter,
                                         java.lang.String markers,
                                         java.lang.String markerCloses,
                                         boolean trim)
Splits stringToSplit into a list, using the given delimitter

Parameters:
stringToSplit - the string to split
delimitter - the string to split on
trim - should the split strings be whitespace trimmed?
Returns:
the list of strings, split by delimiter
Throws:
java.lang.IllegalArgumentException - DOCUMENT ME!

startsWithIgnoreCase

public static boolean startsWithIgnoreCase(java.lang.String searchIn,
                                           int startAt,
                                           java.lang.String searchFor)
Determines whether or not the string 'searchIn' contains the string 'searchFor', dis-regarding case starting at 'startAt' Shorthand for a String.regionMatch(...)

Parameters:
searchIn - the string to search in
startAt - the position to start at
searchFor - the string to search for
Returns:
whether searchIn starts with searchFor, ignoring case

startsWithIgnoreCase

public static boolean startsWithIgnoreCase(java.lang.String searchIn,
                                           java.lang.String searchFor)
Determines whether or not the string 'searchIn' contains the string 'searchFor', dis-regarding case. Shorthand for a String.regionMatch(...)

Parameters:
searchIn - the string to search in
searchFor - the string to search for
Returns:
whether searchIn starts with searchFor, ignoring case

startsWithIgnoreCaseAndNonAlphaNumeric

public static boolean startsWithIgnoreCaseAndNonAlphaNumeric(java.lang.String searchIn,
                                                             java.lang.String searchFor)
Determines whether or not the sting 'searchIn' contains the string 'searchFor', disregarding case,leading whitespace and non-alphanumeric characters.

Parameters:
searchIn - the string to search in
searchFor - the string to search for
Returns:
true if the string starts with 'searchFor' ignoring whitespace

startsWithIgnoreCaseAndWs

public static boolean startsWithIgnoreCaseAndWs(java.lang.String searchIn,
                                                java.lang.String searchFor)
Determines whether or not the sting 'searchIn' contains the string 'searchFor', disregarding case and leading whitespace

Parameters:
searchIn - the string to search in
searchFor - the string to search for
Returns:
true if the string starts with 'searchFor' ignoring whitespace

startsWithIgnoreCaseAndWs

public static boolean startsWithIgnoreCaseAndWs(java.lang.String searchIn,
                                                java.lang.String searchFor,
                                                int beginPos)
Determines whether or not the sting 'searchIn' contains the string 'searchFor', disregarding case and leading whitespace

Parameters:
searchIn - the string to search in
searchFor - the string to search for
beginPos - where to start searching
Returns:
true if the string starts with 'searchFor' ignoring whitespace

stripEnclosure

public static byte[] stripEnclosure(byte[] source,
                                    java.lang.String prefix,
                                    java.lang.String suffix)
Parameters:
bytesToStrip -
prefix -
suffix -
Returns:

toAsciiString

public static final java.lang.String toAsciiString(byte[] buffer)
Returns the bytes as an ASCII String.

Parameters:
buffer - the bytes representing the string
Returns:
The ASCII String.

toAsciiString

public static final java.lang.String toAsciiString(byte[] buffer,
                                                   int startPos,
                                                   int length)
Returns the bytes as an ASCII String.

Parameters:
buffer - the bytes to convert
startPos - the position to start converting
length - the length of the string to convert
Returns:
the ASCII string

wildCompare

public static int wildCompare(java.lang.String searchIn,
                              java.lang.String searchForWildcard)
Compares searchIn against searchForWildcard with wildcards (heavily borrowed from strings/ctype-simple.c in the server sources)

Parameters:
searchIn - the string to search in
searchForWildcard - the string to search for, using the 'standard' SQL wildcard chars of '%' and '_'
Returns:
WILD_COMPARE_MATCH_NO_WILD if matched, WILD_COMPARE_NO_MATCH if not matched with wildcard, WILD_COMPARE_MATCH_WITH_WILD if matched with wildcard

s2b

static byte[] s2b(java.lang.String s,
                  ConnectionImpl conn)
           throws java.sql.SQLException
Throws:
java.sql.SQLException

lastIndexOf

public static int lastIndexOf(byte[] s,
                              char c)

indexOf

public static int indexOf(byte[] s,
                          char c)

isNullOrEmpty

public static boolean isNullOrEmpty(java.lang.String toTest)

stripComments

public static java.lang.String stripComments(java.lang.String src,
                                             java.lang.String stringOpens,
                                             java.lang.String stringCloses,
                                             boolean slashStarComments,
                                             boolean slashSlashComments,
                                             boolean hashComments,
                                             boolean dashDashComments)
Returns the given string, with comments removed

Parameters:
src - the source string
stringOpens - characters which delimit the "open" of a string
stringCloses - characters which delimit the "close" of a string, in counterpart order to stringOpens
slashStarComments - strip slash-star type "C" style comments
slashSlashComments - strip slash-slash C++ style comments to end-of-line
hashComments - strip #-style comments to end-of-line
dashDashComments - strip "--" style comments to end-of-line
Returns:
the input string with all comment-delimited data removed

isEmptyOrWhitespaceOnly

public static final boolean isEmptyOrWhitespaceOnly(java.lang.String str)