blob: 0b7d15b6124b7ed927cb7e0e1f500ae5e162593d [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (19) -->
<title>SQLTranslator (Apache SIS 1.3 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.sis.referencing.factory.sql, class: SQLTranslator">
<meta name="generator" content="javadoc/ClassWriterImpl">
<meta name="keywords" content="org.apache.sis.referencing.factory.sql.SQLTranslator class">
<meta name="keywords" content="getCatalog()">
<meta name="keywords" content="getSchema()">
<meta name="keywords" content="apply()">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../sis.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/SQLTranslator.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li>Field</li>
<li><a href="#constructor-summary">Constr</a></li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li>Field</li>
<li><a href="#constructor-detail">Constr</a></li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.sis.referencing.factory.sql</a></div>
<h1 title="Class SQLTranslator" class="title">Class SQLTranslator</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
<div class="inheritance">SQLTranslator</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SQLTranslator</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
implements <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
<div class="block">Converts the SQL statements from MS-Access dialect to standard SQL. The <a href="#apply(java.lang.String)"><code>apply(String)</code></a> method
is invoked when a new <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.sql/java/sql/PreparedStatement.html" title="class or interface in java.sql" class="external-link"><code>Prepared­Statement</code></a> is about to be created from a SQL string.
Since the <a href="https://epsg.org/">EPSG dataset</a> is available primarily in MS-Access format,
the original SQL statements are formatted using a dialect specific to that particular database software.
If the actual EPSG dataset to query is hosted on another database product, then the SQL query needs to be
adapted to the target database dialect before to be executed.
<div class="note"><b>Example</b>
SQL statements for an EPSG dataset hosted on the <cite>PostgreSQL</cite> database need to have their brackets
(<code>'['</code> and <code>']'</code>) replaced by the quote character (<code>'"'</code>) before to be sent to the database
driver. Furthermore, table names may be different. So the following MS-Access query:
<ul>
<li><code>SELECT * FROM [Coordinate Reference System]</code></li>
</ul>
needs to be converted to one of the following possibilities for a PostgreSQL database
(the reason for those multiple choices will be discussed later):
<ul>
<li><code>SELECT * FROM "Coordinate Reference System"</code></li>
<li><code>SELECT * FROM epsg_coordinatereferencesystem</code> (in the default schema)</li>
<li><code>SELECT * FROM epsg​.coordinatereferencesystem</code> (in the <code>"epsg"</code> schema)</li>
<li><code>SELECT * FROM epsg."Coordinate Reference System"</code></li>
</ul></div>
In addition to the file in MS-Access format, EPSG also provides the dataset as SQL files for PostgreSQL,
MySQL and Oracle databases. Those SQL files are used as both <cite>Data Description Language</cite> (DDL)
and <cite>Data Manipulation Language</cite> (DML).
But the table names and some column names in those scripts differ from the ones used in the MS-Access database.
The following table summarizes the name changes:
<table class="sis">
<caption>Table and column names</caption>
<tr><th>Element</th><th>Name in MS-Access database</th> <th>Name in SQL scripts</th></tr>
<tr><td>Table</td> <td><code>Alias</code></td> <td><code>epsg_alias</code></td></tr>
<tr><td>Table</td> <td><code>Area</code></td> <td><code>epsg_area</code></td></tr>
<tr><td>Table</td> <td><code>Coordinate Axis</code></td> <td><code>epsg_coordinateaxis</code></td></tr>
<tr><td>Table</td> <td><code>Coordinate Axis Name</code></td> <td><code>epsg_coordinateaxisname</code></td></tr>
<tr><td>Table</td> <td><code>Coordinate_Operation</code></td> <td><code>epsg_coordoperation</code></td></tr>
<tr><td>Table</td> <td><code>Coordinate_Operation Method</code></td> <td><code>epsg_coordoperationmethod</code></td></tr>
<tr><td>Table</td> <td><code>Coordinate_Operation Parameter</code></td> <td><code>epsg_coordoperationparam</code></td></tr>
<tr><td>Table</td> <td><code>Coordinate_Operation Parameter Usage</code></td> <td><code>epsg_coordoperationparamusage</code></td></tr>
<tr><td>Table</td> <td><code>Coordinate_Operation Parameter Value</code></td> <td><code>epsg_coordoperationparamvalue</code></td></tr>
<tr><td>Table</td> <td><code>Coordinate_Operation Path</code></td> <td><code>epsg_coordoperationpath</code></td></tr>
<tr><td>Table</td> <td><code>Coordinate Reference System</code></td> <td><code>epsg_coordinatereferencesystem</code></td></tr>
<tr><td>Table</td> <td><code>Coordinate System</code></td> <td><code>epsg_coordinatesystem</code></td></tr>
<tr><td>Table</td> <td><code>Datum</code></td> <td><code>epsg_datum</code></td></tr>
<tr><td>Table</td> <td><code>Ellipsoid</code></td> <td><code>epsg_ellipsoid</code></td></tr>
<tr><td>Table</td> <td><code>Naming System</code></td> <td><code>epsg_namingsystem</code></td></tr>
<tr><td>Table</td> <td><code>Prime Meridian</code></td> <td><code>epsg_primemeridian</code></td></tr>
<tr><td>Table</td> <td><code>Supersession</code></td> <td><code>epsg_supersession</code></td></tr>
<tr><td>Table</td> <td><code>Unit of Measure</code></td> <td><code>epsg_unitofmeasure</code></td></tr>
<tr><td>Column</td> <td><code>ORDER</code></td> <td><code>coord_axis_order</code></td></tr>
</table>
By default this class auto-detects the schema that contains the EPSG tables and whether the table names are
the ones used by EPSG in the MS-Access version or the PostgreSQL, MySQL or Oracle version of the database.
Consequently, it is legal to use the MS-Access table names, which are more readable, in a PostgreSQL database.
<h2>Thread safety</h2>
All <code>SQLTranslator</code> instances given to the <a href="EPSGFactory.html" title="class in org.apache.sis.referencing.factory.sql"><code>EPSGFactory</code></a> constructor
<strong>shall</strong> be immutable and thread-safe.</div>
<dl class="notes">
<dt>Since:</dt>
<dd>0.7</dd>
<p><font size="-1">Defined in the <code>sis-referencing</code> module</font></p>
</dl>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.sql.DatabaseMetaData,java.lang.String,java.lang.String)" class="member-name-link">SQLTranslator</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.sql/java/sql/DatabaseMetaData.html" title="class or interface in java.sql" class="external-link">Database­Meta­Data</a>&nbsp;md,
<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;catalog,
<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;schema)</code></div>
<div class="col-last even-row-color">
<div class="block">Creates a new SQL translator for the database described by the given metadata.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(java.lang.String)" class="member-name-link">apply</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;sql)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Adapts the given SQL statement from the original MS-Access dialect to the dialect of the target database.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getCatalog()" class="member-name-link">get­Catalog</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the catalog that contains the EPSG schema.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getSchema()" class="member-name-link">get­Schema</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the schema that contains the EPSG tables.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">get­Class</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hash­Code</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notify­All</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">to­String</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-Function">Methods inherited from interface&nbsp;<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/function/Function.html#andThen(java.util.function.Function)" title="class or interface in java.util.function" class="external-link">and­Then</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/function/Function.html#compose(java.util.function.Function)" title="class or interface in java.util.function" class="external-link">compose</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.sql.DatabaseMetaData,java.lang.String,java.lang.String)">
<h3>SQLTranslator</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SQLTranslator</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.sql/java/sql/DatabaseMetaData.html" title="class or interface in java.sql" class="external-link">DatabaseMetaData</a>&nbsp;md,
<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;catalog,
<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;schema)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.sql/java/sql/SQLException.html" title="class or interface in java.sql" class="external-link">SQLException</a></span></div>
<div class="block">Creates a new SQL translator for the database described by the given metadata.
This constructor detects automatically the dialect: the characters to use for quoting identifiers,
and whether the table names are the ones used in the MS-Access database or in the SQL scripts.
<p>If the given catalog or schema name is non-null, then the <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.sql/java/sql/DatabaseMetaData.html#getTables(java.lang.String,java.lang.String,java.lang.String,java.lang.String%5B%5D)" title="class or interface in java.sql" class="external-link">search for EPSG tables</a> will be restricted to the catalog or schema of that name.
An empty string (<code>""</code>) means to search for tables without catalog or schema.
A <code>null</code> value means that the catalog or schema should not be used to narrow the search.</p></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>md</code> - information about the database.</dd>
<dd><code>catalog</code> - the catalog where to look for EPSG schema, or <code>null</code> if any.</dd>
<dd><code>schema</code> - the schema where to look for EPSG tables, or <code>null</code> if any.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.sql/java/sql/SQLException.html" title="class or interface in java.sql" class="external-link">SQLException</a></code> - if an error occurred while querying the database metadata.</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="getCatalog()">
<h3>getCatalog</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getCatalog</span>()</div>
<div class="block">Returns the catalog that contains the EPSG schema. This is the catalog specified at construction time
if it was non-null, or the catalog discovered by the constructor otherwise.
Note that this method may still return <code>null</code> if the EPSG tables were not found or if the database
does not <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.sql/java/sql/DatabaseMetaData.html#supportsCatalogsInDataManipulation()" title="class or interface in java.sql" class="external-link">supports catalogs</a>.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the catalog that contains the EPSG schema, or <code>null</code>.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getSchema()">
<h3>getSchema</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getSchema</span>()</div>
<div class="block">Returns the schema that contains the EPSG tables. This is the schema specified at construction time
if it was non-null, or the schema discovered by the constructor otherwise.
Note that this method may still return <code>null</code> if the EPSG tables were not found or if the database
does not <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.sql/java/sql/DatabaseMetaData.html#supportsSchemasInDataManipulation()" title="class or interface in java.sql" class="external-link">supports schemas</a>.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the schema that contains the EPSG tables, or <code>null</code>.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="apply(java.lang.String)">
<h3>apply</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;sql)</span></div>
<div class="block">Adapts the given SQL statement from the original MS-Access dialect to the dialect of the target database.
Table and column names may also be replaced.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/function/Function.html#apply(T)" title="class or interface in java.util.function" class="external-link">apply</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
<dt>Parameters:</dt>
<dd><code>sql</code> - the statement in MS-Access dialect.</dd>
<dt>Returns:</dt>
<dd>the SQL statement adapted to the dialect of the target database.</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2010&#x2013;2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>