Package com.mysql.cj.util
Class StringUtils
java.lang.Object
com.mysql.cj.util.StringUtils
public class StringUtils
extends java.lang.Object
Various utility methods for converting to/from byte arrays in the platform encoding
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
StringUtils.SearchMode
-
Field Summary
Fields Modifier and Type Field Description static java.util.Set<StringUtils.SearchMode>
SEARCH_MODE__ALL
Full search mode: allow backslash escape, skip between markers, skip block comments, skip line comments and skip white space.static java.util.Set<StringUtils.SearchMode>
SEARCH_MODE__BSESC_COM_WS
Search mode: allow backslash escape, skip block comments, skip line comments and skip white space.static java.util.Set<StringUtils.SearchMode>
SEARCH_MODE__BSESC_MRK_WS
Search mode: allow backslash escape, skip between markers and skip white space.static java.util.Set<StringUtils.SearchMode>
SEARCH_MODE__COM_WS
Search mode: skip block comments, skip line comments and skip white space.static java.util.Set<StringUtils.SearchMode>
SEARCH_MODE__MRK_COM_WS
Search mode: skip between markers, skip block comments, skip line comments and skip white space.static java.util.Set<StringUtils.SearchMode>
SEARCH_MODE__MRK_WS
Search mode: skip between markers and skip white space.static java.util.Set<StringUtils.SearchMode>
SEARCH_MODE__NONE
Empty search mode. -
Constructor Summary
Constructors Constructor Description StringUtils()
-
Method Summary
Modifier and Type Method Description static void
appendAsHex(java.lang.StringBuilder builder, byte[] bytes)
static void
appendAsHex(java.lang.StringBuilder builder, int value)
static boolean
canHandleAsServerPreparedStatementNoCache(java.lang.String sql, ServerVersion serverVersion, boolean allowMultiQueries, boolean noBackslashEscapes, boolean useAnsiQuotes)
static java.lang.String
dumpAsHex(byte[] byteBuffer, int length)
Returns the given bytes as a hex and ascii dump (up to length bytes).static boolean
endsWithIgnoreCase(java.lang.String searchIn, java.lang.String searchFor)
Determines whether or not the string 'searchIn' ends with the string 'searchFor', dis-regarding case starting at 'startAt' Shorthand for a String.regionMatch(...)static java.lang.String
escapeQuote(java.lang.String src, java.lang.String quotChar)
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 casestatic 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 otherwisestatic byte[]
getBytes(char[] value)
Returns the byte[] representation of subset of the given char[] using the default/platform encoding.static byte[]
getBytes(char[] value, int offset, int length)
static byte[]
getBytes(char[] value, int offset, int length, java.lang.String encoding)
Returns the byte[] representation of subset of the given char[] using the given encoding.static byte[]
getBytes(char[] c, java.lang.String encoding)
Returns the byte[] representation of subset of the given char[] using the given encoding.static byte[]
getBytes(java.lang.String value)
static byte[]
getBytes(java.lang.String value, int offset, int length)
static byte[]
getBytes(java.lang.String value, int offset, int length, java.lang.String encoding)
static byte[]
getBytes(java.lang.String s, java.lang.String encoding)
Returns the byte[] representation of the given string using the given encoding.static byte[]
getBytesNullTerminated(java.lang.String value, java.lang.String encoding)
static byte[]
getBytesWrapped(java.lang.String s, char beginWrap, char endWrap, java.lang.String encoding)
Returns the byte[] representation of the given string properly wrapped between the given char delimiters using the given encoding.static java.lang.String
getFullyQualifiedName(java.lang.String db, java.lang.String entity, java.lang.String quoteId, boolean isPedantic)
Builds and returns a fully qualified name, quoted if necessary, for the given database entity.static java.lang.String
getUniqueSavepointId()
static boolean
hasWildcards(java.lang.String src)
Does the string contain wildcard symbols ('%' or '_').static int
indexOf(byte[] s, char c)
static int
indexOfIgnoreCase(int startingPosition, java.lang.String searchIn, java.lang.String searchFor)
Finds the position of a substring within a string ignoring case.static int
indexOfIgnoreCase(int startingPosition, java.lang.String searchIn, java.lang.String[] searchForSequence, java.lang.String openingMarkers, java.lang.String closingMarkers, java.util.Set<StringUtils.SearchMode> searchMode)
Finds the position of the first of a consecutive sequence of strings within a string, ignoring case, with the option to skip text delimited by given markers or within comments.static int
indexOfIgnoreCase(int startingPosition, java.lang.String searchIn, java.lang.String searchFor, java.lang.String openingMarkers, java.lang.String closingMarkers, java.lang.String overridingMarkers, java.util.Set<StringUtils.SearchMode> searchMode)
Finds the position of a substring within a string, ignoring case, with the option to skip text delimited by given markers or within comments.static int
indexOfIgnoreCase(int startingPosition, java.lang.String searchIn, java.lang.String searchFor, java.lang.String openingMarkers, java.lang.String closingMarkers, java.util.Set<StringUtils.SearchMode> searchMode)
Finds the position of a substring within a string, ignoring case, with the option to skip text delimited by given markers or within comments.static int
indexOfIgnoreCase(java.lang.String searchIn, java.lang.String searchFor)
Finds the position of a substring within a string ignoring case.static int
indexOfQuoteDoubleAware(java.lang.String searchIn, java.lang.String quoteChar, int startFrom)
static boolean
isEmptyOrWhitespaceOnly(java.lang.String str)
static boolean
isNullOrEmpty(java.lang.String toTest)
static boolean
isStrictlyNumeric(java.lang.CharSequence cs)
Checks is the CharSequence contains digits only.static boolean
isValidIdChar(char c)
static java.lang.String
joinWithSerialComma(java.util.List<?> elements)
Joins all elements of the given list using serial comma (Oxford comma) rules.static int
lastIndexOf(byte[] s, char c)
static java.lang.String
padString(java.lang.String stringVal, int requiredLength)
static byte[]
quoteBytes(byte[] bytes)
static java.lang.String
quoteIdentifier(java.lang.String identifier, boolean isPedantic)
Surrounds identifier with "`" and duplicates these symbols inside the identifier.static java.lang.String
quoteIdentifier(java.lang.String identifier, java.lang.String quoteChar, boolean isPedantic)
Surrounds identifier with quoteChar and duplicates these symbols inside the identifier.static int
safeIntParse(java.lang.String intAsString)
static java.lang.String
safeTrim(java.lang.String toTrim)
static java.lang.String
sanitizeProcOrFuncName(java.lang.String src)
Next two functions are to help DBMD check if the given string is in form of database.name and return it as "database";"name" with comments removed.static java.util.List<java.lang.String>
split(java.lang.String stringToSplit, java.lang.String delimiter, boolean trim)
Splits stringToSplit into a list, using the given delimiterstatic java.util.List<java.lang.String>
split(java.lang.String stringToSplit, java.lang.String delimiter, java.lang.String openingMarkers, java.lang.String closingMarkers, boolean trim)
Splits stringToSplit into a list, using the given delimiter and skipping all between the given markers.static java.util.List<java.lang.String>
split(java.lang.String stringToSplit, java.lang.String delimiter, java.lang.String openingMarkers, java.lang.String closingMarkers, boolean trim, java.util.Set<StringUtils.SearchMode> searchMode)
Splits stringToSplit into a list, using the given delimiter and skipping all between the given markers.static java.util.List<java.lang.String>
split(java.lang.String stringToSplit, java.lang.String delimiter, java.lang.String openingMarkers, java.lang.String closingMarkers, java.lang.String overridingMarkers, boolean trim)
Splits stringToSplit into a list, using the given delimiter and skipping all between the given markers.static java.util.List<java.lang.String>
split(java.lang.String stringToSplit, java.lang.String delimiter, java.lang.String openingMarkers, java.lang.String closingMarkers, java.lang.String overridingMarkers, boolean trim, java.util.Set<StringUtils.SearchMode> searchMode)
Splits stringToSplit into a list, using the given delimiter and skipping all between the given markers.static java.util.List<java.lang.String>
splitDBdotName(java.lang.String source, java.lang.String db, java.lang.String quoteId, boolean isNoBslashEscSet)
Splits an entity identifier into its parts (database and entity name) and returns a list containing the two elements.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' starts with the string 'searchFor', dis-regarding case.static boolean
startsWithIgnoreCaseAndNonAlphaNumeric(java.lang.String searchIn, java.lang.String searchFor)
Determines whether or not the string 'searchIn' starts with 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 string 'searchIn' starts with the string 'searchFor', disregarding case and leading whitespacestatic int
startsWithIgnoreCaseAndWs(java.lang.String searchIn, java.lang.String[] searchFor)
Determines whether or not the string 'searchIn' starts with one of the strings in 'searchFor', disregarding case and leading whitespacestatic boolean
startsWithIgnoreCaseAndWs(java.lang.String searchIn, java.lang.String searchFor, int beginPos)
Determines whether or not the string 'searchIn' contains the string 'searchFor', disregarding case and leading whitespacestatic java.lang.String
stringArrayToString(java.lang.String[] elems, java.lang.String prefix, java.lang.String midDelimiter, java.lang.String lastDelimiter, java.lang.String suffix)
Constructs a String containing all the elements in the String array bounded and joined by the provided concatenation elements.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 removedstatic 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 java.lang.String
toHexString(byte[] byteBuffer, int length)
Converts the given byte array into Hex String, stopping at given length.static java.lang.String
toString(byte[] value)
static java.lang.String
toString(byte[] value, int offset, int length)
static java.lang.String
toString(byte[] value, int offset, int length, java.lang.String encoding)
static java.lang.String
toString(byte[] value, java.lang.String encoding)
static byte[]
unquoteBytes(byte[] bytes)
static java.lang.String
unQuoteIdentifier(java.lang.String identifier, java.lang.String quoteChar)
Trims identifier, removes quote chars from first and last positions and replaces double occurrences of quote char from entire identifier, i.e converts quoted identifier into form as it is stored in database.static boolean
wildCompareIgnoreCase(java.lang.String searchIn, java.lang.String searchFor)
Compares searchIn against searchForWildcard with wildcards, in a case insensitive manner.
-
Field Details
-
SEARCH_MODE__ALL
Full search mode: allow backslash escape, skip between markers, skip block comments, skip line comments and skip white space. -
SEARCH_MODE__MRK_COM_WS
Search mode: skip between markers, skip block comments, skip line comments and skip white space. -
SEARCH_MODE__BSESC_COM_WS
Search mode: allow backslash escape, skip block comments, skip line comments and skip white space. -
SEARCH_MODE__BSESC_MRK_WS
Search mode: allow backslash escape, skip between markers and skip white space. -
SEARCH_MODE__COM_WS
Search mode: skip block comments, skip line comments and skip white space. -
SEARCH_MODE__MRK_WS
Search mode: skip between markers and skip white space. -
SEARCH_MODE__NONE
Empty search mode.
-
-
Constructor Details
-
StringUtils
public StringUtils()
-
-
Method Details
-
dumpAsHex
public static java.lang.String dumpAsHex(byte[] byteBuffer, int length)Returns the given bytes as a hex and ascii dump (up to length bytes).- Parameters:
byteBuffer
- the data to dump as hexlength
- the number of bytes to print- Returns:
- a hex and ascii dump
-
toHexString
public static java.lang.String toHexString(byte[] byteBuffer, int length)Converts the given byte array into Hex String, stopping at given length.- Parameters:
byteBuffer
- the byte array to convertlength
- the number of bytes from the given array to convert- Returns:
- a String containing the Hex representation of the given bytes
-
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 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 byte[] getBytes(java.lang.String s, java.lang.String encoding)Returns the byte[] representation of the given string using the given encoding.- Parameters:
s
- source stringencoding
- java encoding- Returns:
- bytes
-
getBytesWrapped
public static byte[] getBytesWrapped(java.lang.String s, char beginWrap, char endWrap, java.lang.String encoding)Returns the byte[] representation of the given string properly wrapped between the given char delimiters using the given encoding.- Parameters:
s
- source stringbeginWrap
- opening char delimiterendWrap
- closing char delimiterencoding
- java encoding- Returns:
- bytes
-
indexOfIgnoreCase
public static int indexOfIgnoreCase(java.lang.String searchIn, java.lang.String searchFor)Finds the position of a substring within a string ignoring case.- Parameters:
searchIn
- the string to search insearchFor
- the array of strings to search for- Returns:
- the position where
searchFor
is found withinsearchIn
starting fromstartingPosition
.
-
indexOfIgnoreCase
public static int indexOfIgnoreCase(int startingPosition, java.lang.String searchIn, java.lang.String searchFor)Finds the position of a substring within a string ignoring case.- Parameters:
startingPosition
- the position to start the search fromsearchIn
- the string to search insearchFor
- the array of strings to search for- Returns:
- the position where
searchFor
is found withinsearchIn
starting fromstartingPosition
.
-
indexOfIgnoreCase
public static int indexOfIgnoreCase(int startingPosition, java.lang.String searchIn, java.lang.String[] searchForSequence, java.lang.String openingMarkers, java.lang.String closingMarkers, java.util.Set<StringUtils.SearchMode> searchMode)Finds the position of the first of a consecutive sequence of strings within a string, ignoring case, with the option to skip text delimited by given markers or within comments.Independently of the
searchMode
provided, when searching for the second and following stringsSearchMode.SKIP_WHITE_SPACE
will be added andSearchMode.SKIP_BETWEEN_MARKERS
removed.- Parameters:
startingPosition
- the position to start the search fromsearchIn
- the string to search insearchForSequence
- searchForSequenceopeningMarkers
- characters which delimit the beginning of a text block to skipclosingMarkers
- characters which delimit the end of a text block to skipsearchMode
- aSet
, ideally anEnumSet
, containing the flags from the enumStringUtils.SearchMode
that determine the behavior of the search- Returns:
- the position where
searchFor
is found withinsearchIn
starting fromstartingPosition
.
-
indexOfIgnoreCase
public static int indexOfIgnoreCase(int startingPosition, java.lang.String searchIn, java.lang.String searchFor, java.lang.String openingMarkers, java.lang.String closingMarkers, java.util.Set<StringUtils.SearchMode> searchMode)Finds the position of a substring within a string, ignoring case, with the option to skip text delimited by given markers or within comments.- Parameters:
startingPosition
- the position to start the search fromsearchIn
- the string to search insearchFor
- the string to search foropeningMarkers
- characters which delimit the beginning of a text block to skipclosingMarkers
- characters which delimit the end of a text block to skipsearchMode
- aSet
, ideally anEnumSet
, containing the flags from the enumStringUtils.SearchMode
that determine the behavior of the search- Returns:
- the position where
searchFor
is found withinsearchIn
starting fromstartingPosition
.
-
indexOfIgnoreCase
public static int indexOfIgnoreCase(int startingPosition, java.lang.String searchIn, java.lang.String searchFor, java.lang.String openingMarkers, java.lang.String closingMarkers, java.lang.String overridingMarkers, java.util.Set<StringUtils.SearchMode> searchMode)Finds the position of a substring within a string, ignoring case, with the option to skip text delimited by given markers or within comments.- Parameters:
startingPosition
- the position to start the search fromsearchIn
- the string to search insearchFor
- the string to search foropeningMarkers
- characters which delimit the beginning of a text block to skipclosingMarkers
- characters which delimit the end of a text block to skipoverridingMarkers
- the subset ofopeningMarkers
that override the remaining markers, e.g., ifopeningMarkers = "'("
andoverridingMarkers = "'"
then the block between the outer parenthesis in"start ('max('); end"
is strictly consumed, otherwise the suffix" end"
would end up being consumed too in the process of handling the nested parenthesis.searchMode
- aSet
, ideally anEnumSet
, containing the flags from the enumStringUtils.SearchMode
that determine the behavior of the search- Returns:
- the position where
searchFor
is found withinsearchIn
starting fromstartingPosition
.
-
split
public static java.util.List<java.lang.String> split(java.lang.String stringToSplit, java.lang.String delimiter, boolean trim)Splits stringToSplit into a list, using the given delimiter- Parameters:
stringToSplit
- the string to splitdelimiter
- the string to split ontrim
- should the split strings be whitespace trimmed?- Returns:
- the list of strings, split by delimiter
- Throws:
java.lang.IllegalArgumentException
- if an error occurs
-
split
public static java.util.List<java.lang.String> split(java.lang.String stringToSplit, java.lang.String delimiter, java.lang.String openingMarkers, java.lang.String closingMarkers, boolean trim)Splits stringToSplit into a list, using the given delimiter and skipping all between the given markers.- Parameters:
stringToSplit
- the string to splitdelimiter
- the string to split onopeningMarkers
- characters which delimit the beginning of a text block to skipclosingMarkers
- characters which delimit the end of a text block to skiptrim
- should the split strings be whitespace trimmed?- Returns:
- the list of strings, split by delimiter
- Throws:
java.lang.IllegalArgumentException
- if an error occurs
-
split
public static java.util.List<java.lang.String> split(java.lang.String stringToSplit, java.lang.String delimiter, java.lang.String openingMarkers, java.lang.String closingMarkers, boolean trim, java.util.Set<StringUtils.SearchMode> searchMode)Splits stringToSplit into a list, using the given delimiter and skipping all between the given markers.- Parameters:
stringToSplit
- the string to splitdelimiter
- the string to split onopeningMarkers
- characters which delimit the beginning of a text block to skipclosingMarkers
- characters which delimit the end of a text block to skiptrim
- should the split strings be whitespace trimmed?searchMode
- aSet
, ideally anEnumSet
, containing the flags from the enumStringUtils.SearchMode
that determine the behaviour of the search- Returns:
- the list of strings, split by delimiter
- Throws:
java.lang.IllegalArgumentException
- if an error occurs
-
split
public static java.util.List<java.lang.String> split(java.lang.String stringToSplit, java.lang.String delimiter, java.lang.String openingMarkers, java.lang.String closingMarkers, java.lang.String overridingMarkers, boolean trim)Splits stringToSplit into a list, using the given delimiter and skipping all between the given markers.- Parameters:
stringToSplit
- the string to splitdelimiter
- the string to split onopeningMarkers
- characters which delimit the beginning of a text block to skipclosingMarkers
- characters which delimit the end of a text block to skipoverridingMarkers
- the subset ofopeningMarkers
that override the remaining markers, e.g., ifopeningMarkers = "'("
andoverridingMarkers = "'"
then the block between the outer parenthesis in"start ('max('); end"
is strictly consumed, otherwise the suffix" end"
would end up being consumed too in the process of handling the nested parenthesis.trim
- should the split strings be whitespace trimmed?- Returns:
- the list of strings, split by delimiter
- Throws:
java.lang.IllegalArgumentException
- if an error occurs
-
split
public static java.util.List<java.lang.String> split(java.lang.String stringToSplit, java.lang.String delimiter, java.lang.String openingMarkers, java.lang.String closingMarkers, java.lang.String overridingMarkers, boolean trim, java.util.Set<StringUtils.SearchMode> searchMode)Splits stringToSplit into a list, using the given delimiter and skipping all between the given markers.- Parameters:
stringToSplit
- the string to splitdelimiter
- the string to split onopeningMarkers
- characters which delimit the beginning of a text block to skipclosingMarkers
- characters which delimit the end of a text block to skipoverridingMarkers
- the subset ofopeningMarkers
that override the remaining markers, e.g., ifopeningMarkers = "'("
andoverridingMarkers = "'"
then the block between the outer parenthesis in"start ('max('); end"
is strictly consumed, otherwise the suffix" end"
would end up being consumed too in the process of handling the nested parenthesis.trim
- should the split strings be whitespace trimmed?searchMode
- aSet
, ideally anEnumSet
, containing the flags from the enumStringUtils.SearchMode
that determine the behaviour of the search- Returns:
- the list of strings, split by delimiter
- Throws:
java.lang.IllegalArgumentException
- if an error occurs
-
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 instartAt
- the position to start atsearchFor
- 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' starts with the string 'searchFor', dis-regarding case. Shorthand for a String.regionMatch(...)- Parameters:
searchIn
- the string to search insearchFor
- 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 string 'searchIn' starts with the string 'searchFor', disregarding case,leading whitespace and non-alphanumeric characters.- Parameters:
searchIn
- the string to search insearchFor
- 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 string 'searchIn' starts with the string 'searchFor', disregarding case and leading whitespace- Parameters:
searchIn
- the string to search insearchFor
- 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 string 'searchIn' contains the string 'searchFor', disregarding case and leading whitespace- Parameters:
searchIn
- the string to search insearchFor
- the string to search forbeginPos
- where to start searching- Returns:
- true if the string starts with 'searchFor' ignoring whitespace
-
startsWithIgnoreCaseAndWs
public static int startsWithIgnoreCaseAndWs(java.lang.String searchIn, java.lang.String[] searchFor)Determines whether or not the string 'searchIn' starts with one of the strings in 'searchFor', disregarding case and leading whitespace- Parameters:
searchIn
- the string to search insearchFor
- the string array to search for- Returns:
- the 'searchFor' array index that matched or -1 if none matches
-
endsWithIgnoreCase
public static boolean endsWithIgnoreCase(java.lang.String searchIn, java.lang.String searchFor)Determines whether or not the string 'searchIn' ends with the string 'searchFor', dis-regarding case starting at 'startAt' Shorthand for a String.regionMatch(...)- Parameters:
searchIn
- the string to search instartAt
- the position to start atsearchFor
- the string to search for- Returns:
- whether searchIn ends with searchFor, ignoring case
-
stripEnclosure
public static byte[] stripEnclosure(byte[] source, java.lang.String prefix, java.lang.String suffix)- Parameters:
source
- bytes to stripprefix
- prefixsuffix
- suffix- Returns:
- result bytes
-
toAsciiString
public static 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 java.lang.String toAsciiString(byte[] buffer, int startPos, int length)Returns the bytes as an ASCII String.- Parameters:
buffer
- the bytes to convertstartPos
- the position to start convertinglength
- the length of the string to convert- Returns:
- the ASCII string
-
wildCompareIgnoreCase
public static boolean wildCompareIgnoreCase(java.lang.String searchIn, java.lang.String searchFor)Compares searchIn against searchForWildcard with wildcards, in a case insensitive manner.- Parameters:
searchIn
- the string to search insearchFor
- the string to search for, using the 'standard' SQL wildcard chars of '%' and '_'- Returns:
- true if matches
-
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 stringstringOpens
- characters which delimit the "open" of a stringstringCloses
- characters which delimit the "close" of a string, in counterpart order tostringOpens
slashStarComments
- strip slash-star type "C" style commentsslashSlashComments
- strip slash-slash C++ style comments to end-of-linehashComments
- strip #-style comments to end-of-linedashDashComments
- strip "--" style comments to end-of-line- Returns:
- the input string with all comment-delimited data removed
-
sanitizeProcOrFuncName
public static java.lang.String sanitizeProcOrFuncName(java.lang.String src)Next two functions are to help DBMD check if the given string is in form of database.name and return it as "database";"name" with comments removed. If string is NULL or wildcard (%), returns null and exits. First, we sanitize...- Parameters:
src
- the source string- Returns:
- the input string with all comment-delimited data removed
-
splitDBdotName
public static java.util.List<java.lang.String> splitDBdotName(java.lang.String source, java.lang.String db, java.lang.String quoteId, boolean isNoBslashEscSet)Splits an entity identifier into its parts (database and entity name) and returns a list containing the two elements. If the identifier doesn't contain the database part then the argumentdb
is used in its place andsource
corresponds to the full entity name. If argumentsource
is NULL or wildcard (%), returns an empty list.- Parameters:
source
- the source stringdb
- database, if availablequoteId
- quote character as defined on serverisNoBslashEscSet
- is our connection in no BackSlashEscape mode- Returns:
- the input string with all comment-delimited data removed
-
getFullyQualifiedName
public static java.lang.String getFullyQualifiedName(java.lang.String db, java.lang.String entity, java.lang.String quoteId, boolean isPedantic)Builds and returns a fully qualified name, quoted if necessary, for the given database entity.- Parameters:
db
- database nameentity
- identifierquoteId
- quote character as defined on serverisPedantic
- are we in pedantic mode- Returns:
- fully qualified name
-
isEmptyOrWhitespaceOnly
public static boolean isEmptyOrWhitespaceOnly(java.lang.String str) -
escapeQuote
public static java.lang.String escapeQuote(java.lang.String src, java.lang.String quotChar) -
quoteIdentifier
public static java.lang.String quoteIdentifier(java.lang.String identifier, java.lang.String quoteChar, boolean isPedantic)Surrounds identifier with quoteChar and duplicates these symbols inside the identifier.- Parameters:
quoteChar
- ` or "identifier
- in pedantic mode (connection property pedantic=true) identifier is treated as unquoted (as it is stored in the database) even if it starts and ends with quoteChar; in non-pedantic mode if identifier starts and ends with quoteChar method treats it as already quoted and doesn't modify.isPedantic
- are we in pedantic mode- Returns:
- With quoteChar="`":
- null
->
null - abc
->
`abc` - ab`c
->
`ab``c` - ab"c
->
`ab"c` - `ab``c`
->
`ab``c` in non-pedantic mode or ```ab````c``` in pedantic mode
- null
->
null - abc
->
"abc" - ab`c
->
"ab`c" - ab"c
->
"ab""c" - "ab""c"
->
"ab""c" in non-pedantic mode or """ab""""c""" in pedantic mode
- null
-
quoteIdentifier
public static java.lang.String quoteIdentifier(java.lang.String identifier, boolean isPedantic)Surrounds identifier with "`" and duplicates these symbols inside the identifier.- Parameters:
identifier
- in pedantic mode (connection property pedantic=true) identifier is treated as unquoted (as it is stored in the database) even if it starts and ends with "`"; in non-pedantic mode if identifier starts and ends with "`" method treats it as already quoted and doesn't modify.isPedantic
- are we in pedantic mode- Returns:
- null
->
null - abc
->
`abc` - ab`c
->
`ab``c` - ab"c
->
`ab"c` - `ab``c`
->
`ab``c` in non-pedantic mode or ```ab````c``` in pedantic mode
- null
-
unQuoteIdentifier
public static java.lang.String unQuoteIdentifier(java.lang.String identifier, java.lang.String quoteChar)Trims identifier, removes quote chars from first and last positions and replaces double occurrences of quote char from entire identifier, i.e converts quoted identifier into form as it is stored in database.- Parameters:
identifier
- identifierquoteChar
- ` or "- Returns:
- null
->
null - abc
->
abc - `abc`
->
abc - `ab``c`
->
ab`c - `"ab`c"`
->
"ab`c" - `ab"c`
->
ab"c - "abc"
->
abc - "`ab""c`"
->
`ab"c` - "ab`c"
->
ab`c
- null
-
indexOfQuoteDoubleAware
public static int indexOfQuoteDoubleAware(java.lang.String searchIn, java.lang.String quoteChar, int startFrom) -
toString
public static java.lang.String toString(byte[] value, int offset, int length, java.lang.String encoding) -
toString
public static java.lang.String toString(byte[] value, java.lang.String encoding) -
toString
public static java.lang.String toString(byte[] value, int offset, int length) -
toString
public static java.lang.String toString(byte[] value) -
getBytes
public static byte[] getBytes(char[] value)Returns the byte[] representation of subset of the given char[] using the default/platform encoding.- Parameters:
value
- chars- Returns:
- bytes
-
getBytes
public static byte[] getBytes(char[] c, java.lang.String encoding)Returns the byte[] representation of subset of the given char[] using the given encoding.- Parameters:
c
- charsencoding
- java encoding- Returns:
- bytes
-
getBytes
public static byte[] getBytes(char[] value, int offset, int length) -
getBytes
public static byte[] getBytes(char[] value, int offset, int length, java.lang.String encoding)Returns the byte[] representation of subset of the given char[] using the given encoding.- Parameters:
value
- charsoffset
- offsetlength
- lengthencoding
- java encoding- Returns:
- bytes
-
getBytes
public static byte[] getBytes(java.lang.String value) -
getBytes
public static byte[] getBytes(java.lang.String value, int offset, int length) -
getBytes
public static byte[] getBytes(java.lang.String value, int offset, int length, java.lang.String encoding) -
isValidIdChar
public static final boolean isValidIdChar(char c) -
appendAsHex
public static void appendAsHex(java.lang.StringBuilder builder, byte[] bytes) -
appendAsHex
public static void appendAsHex(java.lang.StringBuilder builder, int value) -
getBytesNullTerminated
public static byte[] getBytesNullTerminated(java.lang.String value, java.lang.String encoding) -
canHandleAsServerPreparedStatementNoCache
public static boolean canHandleAsServerPreparedStatementNoCache(java.lang.String sql, ServerVersion serverVersion, boolean allowMultiQueries, boolean noBackslashEscapes, boolean useAnsiQuotes) -
padString
public static java.lang.String padString(java.lang.String stringVal, int requiredLength) -
safeIntParse
public static int safeIntParse(java.lang.String intAsString) -
isStrictlyNumeric
public static boolean isStrictlyNumeric(java.lang.CharSequence cs)Checks is the CharSequence contains digits only. No leading sign and thousands or decimal separators are allowed.- Parameters:
cs
- The CharSequence to check.- Returns:
true
if the CharSequence not empty and contains only digits,false
otherwise.
-
safeTrim
public static java.lang.String safeTrim(java.lang.String toTrim) -
stringArrayToString
public static java.lang.String stringArrayToString(java.lang.String[] elems, java.lang.String prefix, java.lang.String midDelimiter, java.lang.String lastDelimiter, java.lang.String suffix)Constructs a String containing all the elements in the String array bounded and joined by the provided concatenation elements. The last element uses a different delimiter.- Parameters:
elems
- the String array from where to take the elements.prefix
- the prefix of the resulting String.midDelimiter
- the delimiter to be used between the N-1 elementslastDelimiter
- the delimiter to be used before the last element.suffix
- the suffix of the resulting String.- Returns:
- a String built from the provided String array and concatenation elements.
-
hasWildcards
public static boolean hasWildcards(java.lang.String src)Does the string contain wildcard symbols ('%' or '_'). Used in DatabaseMetaData.- Parameters:
src
- string- Returns:
- true if src contains wildcard symbols
-
getUniqueSavepointId
public static java.lang.String getUniqueSavepointId() -
joinWithSerialComma
public static java.lang.String joinWithSerialComma(java.util.List<?> elements)Joins all elements of the given list using serial comma (Oxford comma) rules. E.g.: - "A" - "A and B" - "A, B, and C"- Parameters:
elements
- the elements to join- Returns:
- the String with all elements, joined by commas and "and".
-
unquoteBytes
public static byte[] unquoteBytes(byte[] bytes) -
quoteBytes
public static byte[] quoteBytes(byte[] bytes)
-