public class MySQLTranslator extends JDBCTranslator
Important: The geometrical functions are translated exactly as in ADQL. You will probably need to extend this translator to correctly manage the geometrical functions.
Modifier and Type | Field and Description |
---|---|
protected byte |
caseSensitivity
Indicate the case sensitivity to apply to each SQL identifier
(only SCHEMA, TABLE and COLUMN).
|
static int |
DEFAULT_VARIABLE_LENGTH
MySQL requires a length for variable-length types such as CHAR, VARCHAR,
BINARY and VARBINARY.
|
Constructor and Description |
---|
MySQLTranslator()
Build a MySQLTranslator which always translates in SQL all identifiers
(schema, table and column) in a case sensitive manner ; in other words,
schema, table and column names will be surrounded by back-quotes in the
SQL translation.
|
MySQLTranslator(boolean allCaseSensitive)
Build a MySQLTranslator which always translates in SQL all identifiers
(schema, table and column) in the specified case sensitivity ; in other
words, schema, table and column names will all be surrounded or not by
back-quotes in the SQL translation.
|
MySQLTranslator(boolean catalog,
boolean schema,
boolean table,
boolean column)
Build a MySQLTranslator which will always translate in SQL identifiers
with the defined case sensitivity.
|
Modifier and Type | Method and Description |
---|---|
java.lang.StringBuffer |
appendIdentifier(java.lang.StringBuffer str,
java.lang.String id,
boolean caseSensitive)
Appends the given identifier to the given StringBuffer.
|
DBType |
convertTypeFromDB(int dbmsType,
java.lang.String rawDbmsTypeName,
java.lang.String dbmsTypeName,
java.lang.String[] params)
Convert any type provided by a JDBC driver into a type understandable by the ADQL/TAP library.
|
java.lang.String |
convertTypeToDB(DBType type)
Convert any type provided by the ADQL/TAP library into a type understandable by a JDBC driver.
|
boolean |
isCaseSensitive(IdentifierField field)
Tell whether the specified identifier MUST be translated so that being interpreted case sensitively or not.
|
java.lang.String |
translate(AreaFunction areaFunction) |
java.lang.String |
translate(BoxFunction box) |
java.lang.String |
translate(CentroidFunction centroidFunction) |
java.lang.String |
translate(CircleFunction circle) |
java.lang.String |
translate(Concatenation concat) |
java.lang.String |
translate(ContainsFunction fct) |
java.lang.String |
translate(DistanceFunction fct) |
java.lang.String |
translate(ExtractCoord extractCoord) |
java.lang.String |
translate(ExtractCoordSys extractCoordSys) |
java.lang.String |
translate(IntersectsFunction fct) |
java.lang.String |
translate(PointFunction point) |
java.lang.String |
translate(PolygonFunction polygon) |
java.lang.String |
translate(RegionFunction region) |
STCS.Region |
translateGeometryFromDB(java.lang.Object jdbcColValue)
Parse the given JDBC column value as a geometry object and convert it into a
STCS.Region . |
java.lang.Object |
translateGeometryToDB(STCS.Region region)
Convert the given STC region into a DB column value.
|
appendIdentifier, getColumnName, getDefaultADQLFunction, getDefaultADQLList, getDefaultADQLList, getDefaultColumnReference, getQualifiedSchemaName, getQualifiedTableName, getTableName, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate, translate
public static int DEFAULT_VARIABLE_LENGTH
protected byte caseSensitivity
Note: In this implementation, this field is set by the constructor and never modified elsewhere. It would be better to never modify it after the construction in order to keep a certain consistency.
public MySQLTranslator()
public MySQLTranslator(boolean allCaseSensitive)
allCaseSensitive
- true to translate all identifiers in a
case sensitive manner
(surrounded by back-quotes),
false for case insensitivity.public MySQLTranslator(boolean catalog, boolean schema, boolean table, boolean column)
catalog
- true to translate catalog names with back-quotes
(case sensitive in the DBMS), false otherwise.schema
- true to translate schema names with back-quotes
(case sensitive in the DBMS), false otherwise.table
- true to translate table names with back-quotes
(case sensitive in the DBMS), false otherwise.column
- true to translate column names with back-quotes
(case sensitive in the DBMS), false otherwise.public boolean isCaseSensitive(IdentifierField field)
JDBCTranslator
Tell whether the specified identifier MUST be translated so that being interpreted case sensitively or not. By default, an identifier that must be translated with case sensitivity will be surrounded by double quotes. But, if this function returns FALSE, the SQL name will be written just as given in the metadata, without double quotes.
WARNING:
An IdentifierField
object can be a SCHEMA, TABLE, COLUMN and ALIAS. However, in this translator,
aliases are translated like in ADQL (so, with the same case sensitivity specification as in ADQL).
So, this function will never be used to know the case sensitivity to apply to an alias. It is then
useless to write a special behavior for the ALIAS value.
isCaseSensitive
in class JDBCTranslator
field
- The identifier whose the case sensitive to apply is asked.public java.lang.StringBuffer appendIdentifier(java.lang.StringBuffer str, java.lang.String id, boolean caseSensitive)
JDBCTranslator
appendIdentifier
in class JDBCTranslator
str
- The string buffer.id
- The identifier to append.caseSensitive
- true to format the identifier so that preserving the case sensitivity, false otherwise.public java.lang.String translate(Concatenation concat) throws TranslationException
translate
in interface ADQLTranslator
translate
in class JDBCTranslator
TranslationException
public DBType convertTypeFromDB(int dbmsType, java.lang.String rawDbmsTypeName, java.lang.String dbmsTypeName, java.lang.String[] params)
JDBCTranslator
convertTypeFromDB
in class JDBCTranslator
dbmsType
- Type returned by a JDBC driver. Note: this value is returned by ResultSetMetadata.getColumnType(int) and correspond to a type of java.sql.TypesrawDbmsTypeName
- Full name of the type returned by a JDBC driver. Note: this name is returned by ResultSetMetadata.getColumnTypeName(int) ; this name may contain parametersdbmsTypeName
- Name of type, without the eventual parameters. Note: this name is extracted from rawDbmsTypeName.params
- The eventual type parameters (e.g. char string length). Note: these parameters are extracted from rawDbmsTypeName.public java.lang.String convertTypeToDB(DBType type)
JDBCTranslator
Convert any type provided by the ADQL/TAP library into a type understandable by a JDBC driver.
Note: The returned DBMS type may contain some parameters between brackets.
convertTypeToDB
in class JDBCTranslator
type
- The ADQL/TAP library's type to convert.public STCS.Region translateGeometryFromDB(java.lang.Object jdbcColValue) throws ParseException
JDBCTranslator
Parse the given JDBC column value as a geometry object and convert it into a STCS.Region
.
Note: Generally the returned object will be used to get its STC-S expression.
Note: If the given column value is NULL, NULL will be returned.
Important note:
This function is called ONLY for value of columns flagged as geometries by
JDBCTranslator.convertTypeFromDB(int, String, String, String[])
. So the value should always
be of the expected type and format. However, if it turns out that the type is wrong
and that the conversion is finally impossible, this function SHOULD throw a
ParseException
.
translateGeometryFromDB
in class JDBCTranslator
jdbcColValue
- A JDBC column value (returned by ResultSet.getObject(int)).STCS.Region
if the given value is a geometry.ParseException
- If the given object is not a geometrical object
or can not be transformed into a STCS.Region
object.public java.lang.Object translateGeometryToDB(STCS.Region region) throws ParseException
JDBCTranslator
Convert the given STC region into a DB column value.
Note: This function is used only by the UPLOAD feature, to import geometries provided as STC-S expression in a VOTable document inside a DB column.
Note: If the given region is NULL, NULL will be returned.
translateGeometryToDB
in class JDBCTranslator
region
- The region to store in the DB.ParseException
- If the given STC Region can not be converted into a DB object.public java.lang.String translate(ExtractCoord extractCoord) throws TranslationException
TranslationException
public java.lang.String translate(ExtractCoordSys extractCoordSys) throws TranslationException
TranslationException
public java.lang.String translate(AreaFunction areaFunction) throws TranslationException
TranslationException
public java.lang.String translate(CentroidFunction centroidFunction) throws TranslationException
TranslationException
public java.lang.String translate(DistanceFunction fct) throws TranslationException
TranslationException
public java.lang.String translate(ContainsFunction fct) throws TranslationException
TranslationException
public java.lang.String translate(IntersectsFunction fct) throws TranslationException
TranslationException
public java.lang.String translate(BoxFunction box) throws TranslationException
TranslationException
public java.lang.String translate(CircleFunction circle) throws TranslationException
TranslationException
public java.lang.String translate(PointFunction point) throws TranslationException
TranslationException
public java.lang.String translate(PolygonFunction polygon) throws TranslationException
TranslationException
public java.lang.String translate(RegionFunction region) throws TranslationException
TranslationException