Package org.apache.calcite.avatica
Class ConnectStringParser
- java.lang.Object
-
- org.apache.calcite.avatica.ConnectStringParser
-
public class ConnectStringParser extends java.lang.ObjectConnectStringParser is a utility class that parses or creates a JDBC connect string according to the OLE DB Connection String Syntax.This code was adapted from Mondrian's mondrian.olap.Util class. The primary differences between this and its Mondrian progenitor are:
- use of regular
Propertiesfor compatibility with the JDBC API (replaces Mondrian's use of its own order-preserving and case-insensitive PropertyList) - ability to pass to
parse(java.lang.String)a pre-existing Properties object into which properties are to be parsed, possibly overriding prior values - use of
SQLExceptions rather than uncheckedRuntimeExceptions - static members for parsing and creating connect strings
ConnectStringParser has a private constructor. Callers use the static members:
parse(String)- Parses the connect string into a new Properties object.
parse(String, Properties)- Parses the connect string into an existing Properties object.
getParamString(Properties)- Returns a param string, quoted and escaped as needed, to represent the supplied name-value pairs.
- use of regular
-
-
Constructor Summary
Constructors Modifier Constructor Description privateConnectStringParser(java.lang.String s)Creates a new connect string parser.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static java.lang.StringgetParamString(java.util.Properties props)Returns a param string, quoted and escaped as needed, to represent the supplied name-value pairs.static java.util.Propertiesparse(java.lang.String s)Parses the connect string into a new Properties object.static java.util.Propertiesparse(java.lang.String s, java.util.Properties props)Parses the connect string into an existing Properties object.(package private) java.util.PropertiesparseInternal(java.util.Properties props)Parses the connect string into a Properties object.(package private) java.lang.StringparseName()Reads "name=".(package private) voidparsePair(java.util.Properties props)Reads "name=value;" or "name=value<EOF>".(package private) java.lang.StringparseQuoted(char q)Reads a string quoted by a given character.(package private) java.lang.StringparseValue()Reads "value;" or "value<EOF>"static java.util.Map<java.lang.String,java.lang.String>toMap(java.util.Properties properties)Converts aPropertiesobject to a.Map<String, String>
-
-
-
Constructor Detail
-
ConnectStringParser
private ConnectStringParser(java.lang.String s)
Creates a new connect string parser.- Parameters:
s- connect string to parse- See Also:
parse(String),parse(String, Properties)
-
-
Method Detail
-
parse
public static java.util.Properties parse(java.lang.String s) throws java.sql.SQLExceptionParses the connect string into a new Properties object.- Parameters:
s- connect string to parse- Returns:
- properties object with parsed params
- Throws:
java.sql.SQLException- error parsing name-value pairs
-
parse
public static java.util.Properties parse(java.lang.String s, java.util.Properties props) throws java.sql.SQLExceptionParses the connect string into an existing Properties object.- Parameters:
s- connect string to parseprops- optional properties object, may benull- Returns:
- properties object with parsed params; if an input
propswas supplied, any duplicate properties will have been replaced by those from the connect string. - Throws:
java.sql.SQLException- error parsing name-value pairs
-
parseInternal
java.util.Properties parseInternal(java.util.Properties props) throws java.sql.SQLExceptionParses the connect string into a Properties object. Note that the string can only be parsed once. Subsequent calls return empty/unchanged Properties. The originalpropsargument is not altered.- Parameters:
props- optional properties object, may benull- Returns:
- properties object with parsed params; if an input
propswas supplied, any duplicate properties will have been replaced by those from the connect string. - Throws:
java.sql.SQLException- error parsing name-value pairs
-
parsePair
void parsePair(java.util.Properties props) throws java.sql.SQLExceptionReads "name=value;" or "name=value<EOF>".- Throws:
java.sql.SQLException- error parsing value
-
parseName
java.lang.String parseName()
Reads "name=". Name can contain equals sign if equals sign is doubled.
-
parseValue
java.lang.String parseValue() throws java.sql.SQLExceptionReads "value;" or "value<EOF>"- Throws:
java.sql.SQLException- if find an unterminated quoted value
-
parseQuoted
java.lang.String parseQuoted(char q) throws java.sql.SQLExceptionReads a string quoted by a given character. Occurrences of the quoting character must be doubled. For example,parseQuoted('"')reads"a ""new"" string"and returnsa "new" string.- Throws:
java.sql.SQLException- if find an unterminated quoted value
-
getParamString
public static java.lang.String getParamString(java.util.Properties props)
Returns a param string, quoted and escaped as needed, to represent the supplied name-value pairs.- Parameters:
props- name-value pairs- Returns:
- param string, never
null
-
toMap
public static java.util.Map<java.lang.String,java.lang.String> toMap(java.util.Properties properties)
Converts aPropertiesobject to a.Map<String, String>This is necessary because
Propertiesis a dinosaur class. It ought to extendMap<String,String>, but instead extends.Hashtable<Object,Object>Typical usage, to iterate over a
Properties:Properties properties;
for (Map.Entry<String, String> entry = Util.toMap(properties).entrySet()) {
println("key=" + entry.getKey() + ", value=" + entry.getValue());
}
-
-