sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1722676 - in /sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql: AuthorityCodes.java EPSGDataAccess.java EPSGFactory.java SQLAdapter.java SQLTranslator.java TableInfo.java
Date Sat, 02 Jan 2016 22:40:21 GMT
Author: desruisseaux
Date: Sat Jan  2 22:40:21 2016
New Revision: 1722676

URL: http://svn.apache.org/viewvc?rev=1722676&view=rev
Log:
Renamed SQLAdapter as SQLTranslator, taking inspiration from existing projects on the web.

Added:
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/SQLTranslator.java
      - copied, changed from r1722675, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/SQLAdapter.java
Removed:
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/SQLAdapter.java
Modified:
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/AuthorityCodes.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGFactory.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/TableInfo.java

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/AuthorityCodes.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/AuthorityCodes.java?rev=1722676&r1=1722675&r2=1722676&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/AuthorityCodes.java
[UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/AuthorityCodes.java
[UTF-8] Sat Jan  2 22:40:21 2016
@@ -160,7 +160,7 @@ final class AuthorityCodes extends Abstr
         }
         final int conditionStart = buffer.length();
         buffer.append(" ORDER BY ").append(table.codeColumn);
-        sql[ALL] = factory.adapter.adaptSQL(buffer.toString());
+        sql[ALL] = factory.translator.apply(buffer.toString());
         /*
          * Build the SQL query for fetching the name of a single object for a given code.
          * This query will also be used for testing object existence. It is of the form:
@@ -172,7 +172,7 @@ final class AuthorityCodes extends Abstr
             buffer.replace(columnNameStart, columnNameEnd, table.nameColumn);
         }
         buffer.append(hasWhere ? " AND " : " WHERE ").append(table.codeColumn).append(" =
?");
-        sql[ONE] = factory.adapter.adaptSQL(buffer.toString());
+        sql[ONE] = factory.translator.apply(buffer.toString());
         /*
          * Other information opportunistically computed from above search.
          */

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java?rev=1722676&r1=1722675&r2=1722676&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
[UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
[UTF-8] Sat Jan  2 22:40:21 2016
@@ -130,11 +130,6 @@ import org.apache.sis.measure.Measuremen
  * in the common case where only a few EPSG codes are used by an application.
  * {@code EPSGDataAccess.createFoo(String)} methods do not cache by themselves and query
the database on every invocation.
  *
- * <div class="section">SQL dialects</div>
- * Because the primary distribution format for the EPSG database is MS-Access, this class
uses
- * SQL statements formatted for the MS-Access syntax. For usage with an other database software,
- * a dialect-specific subclass must be used.
- *
  * @author  Yann C├ęzard (IRD)
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @author  Rueben Schulz (UBC)
@@ -275,10 +270,10 @@ public class EPSGDataAccess extends Geod
     protected final Connection connection;
 
     /**
-     * The adapter from the SQL statements using MS-Access syntax
-     * to SQL statements using the syntax of the actual database.
+     * The translator from the SQL statements using MS-Access dialect
+     * to SQL statements using the dialect of the actual database.
      */
-    protected final SQLAdapter adapter;
+    protected final SQLTranslator translator;
 
     /**
      * Creates a factory using the given connection. The connection will be {@linkplain Connection#close()
closed}
@@ -291,16 +286,16 @@ public class EPSGDataAccess extends Geod
      *
      * @param parent      The {@code EPSGFactory} which is creating this Data Access Object
(DAO).
      * @param connection  The connection to the underlying EPSG database.
-     * @param adapter     The adapter from the SQL statements using MS-Access syntax
-     *                    to SQL statements using the syntax of the actual database.
+     * @param translator  The translator from the SQL statements using MS-Access dialect
+     *                    to SQL statements using the dialect of the actual database.
      */
-    protected EPSGDataAccess(final EPSGFactory parent, final Connection connection, final
SQLAdapter adapter) {
+    protected EPSGDataAccess(final EPSGFactory parent, final Connection connection, final
SQLTranslator translator) {
         super(parent);
         ArgumentChecks.ensureNonNull("connection", connection);
-        ArgumentChecks.ensureNonNull("adapter", adapter);
+        ArgumentChecks.ensureNonNull("translator", translator);
         this.parent     = parent;
         this.connection = connection;
-        this.adapter    = adapter;
+        this.translator = translator;
         this.namespace  = nameFactory.createNameSpace(nameFactory.createLocalName(null, Constants.EPSG),
null);
     }
 
@@ -346,8 +341,8 @@ public class EPSGDataAccess extends Geod
              * instead then UTC because the date is for information purpose only, and the
local timezone is
              * more likely to be shown nicely (without artificial hours) to the user.
              */
-            final String query = adapter.adaptSQL("SELECT VERSION_NUMBER, VERSION_DATE FROM
[Version History]" +
-                                                 " ORDER BY VERSION_DATE DESC, VERSION_HISTORY_CODE
DESC");
+            final String query = translator.apply("SELECT VERSION_NUMBER, VERSION_DATE FROM
[Version History]" +
+                                                  " ORDER BY VERSION_DATE DESC, VERSION_HISTORY_CODE
DESC");
             String version = null;
             try (Statement statement = connection.createStatement();
                  ResultSet result = statement.executeQuery(query))
@@ -525,24 +520,6 @@ addURIs:    for (int i=0; ; i++) {
     }
 
     /**
-     * Removes the {@code "EPSG::"} prefix from the given string, if present.
-     * This method is preferred to the more generic implementation provided by the parent
class for efficiency reason.
-     * In particular, this method avoid to call the potentially costly {@link #getAuthority()}
method.
-     *
-     * @param  code The code to trim.
-     * @return The code without the {@code "EPSG::"} prefix.
-     */
-    private String trimAuthority(String code) {
-        int s = code.indexOf(DefaultNameSpace.DEFAULT_SEPARATOR);
-        if (s >= 0 && Constants.EPSG.equalsIgnoreCase(code.substring(0, s).trim()))
{
-            final int next = code.indexOf(':', ++s);
-            if (next >= 0) s = next;
-            code = code.substring(s).trim();
-        }
-        return code;
-    }
-
-    /**
      * Returns {@code true} if the specified code may be a primary key in some table.
      * This method does not need to check any entry in the database.
      * It should just check from the syntax if the code looks like a valid EPSG identifier.
@@ -615,7 +592,7 @@ addURIs:    for (int i=0; ; i++) {
                 if (statement == null) {
                     final String query = "SELECT " + codeColumn + " FROM " + table +
                                          " WHERE " + nameColumn + " = ?";
-                    statement = connection.prepareStatement(adapter.adaptSQL(query));
+                    statement = connection.prepareStatement(translator.apply(query));
                     statements.put(KEY, statement);
                 }
                 statement.setString(1, code);
@@ -686,7 +663,7 @@ addURIs:    for (int i=0; ; i++) {
         assert Thread.holdsLock(this);
         PreparedStatement stmt = statements.get(table);
         if (stmt == null) {
-            stmt = connection.prepareStatement(adapter.adaptSQL(sql));
+            stmt = connection.prepareStatement(translator.apply(sql));
             statements.put(table, stmt);
         }
         // Partial check that the statement is for the right SQL query.
@@ -904,8 +881,8 @@ addURIs:    for (int i=0; ; i++) {
         if (name == null) {
             return false;
         }
-        if (name.startsWith(SQLAdapter.TABLE_PREFIX)) {
-            name = name.substring(SQLAdapter.TABLE_PREFIX.length());
+        if (name.startsWith(SQLTranslator.TABLE_PREFIX)) {
+            name = name.substring(SQLTranslator.TABLE_PREFIX.length());
         }
         return CharSequences.isAcronymForWords(name, expected);
     }
@@ -1097,7 +1074,7 @@ addURIs:    for (int i=0; ; i++) {
                 query.setLength(queryStart);
                 query.append(table.codeColumn).append(" FROM ").append(table.table)
                         .append(" WHERE ").append(column).append(" = ?");
-                try (PreparedStatement stmt = connection.prepareStatement(adapter.adaptSQL(query.toString())))
{
+                try (PreparedStatement stmt = connection.prepareStatement(translator.apply(query.toString())))
{
                     /*
                      * Check if at least one record is found for the code or the name.
                      * Ensure that there is not two values for the same code or name.
@@ -2896,7 +2873,7 @@ addURIs:    for (int i=0; ; i++) {
             }
             final Set<String> result = new LinkedHashSet<>();
             try {
-                final String sql = adapter.adaptSQL(buffer.toString());
+                final String sql = translator.apply(buffer.toString());
                 try (Statement s = connection.createStatement();
                      ResultSet r = s.executeQuery(sql))
                 {

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGFactory.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGFactory.java?rev=1722676&r1=1722675&r2=1722676&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGFactory.java
[UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGFactory.java
[UTF-8] Sat Jan  2 22:40:21 2016
@@ -94,10 +94,10 @@ public class EPSGFactory extends Concurr
     protected final MathTransformFactory mtFactory;
 
     /**
-     * The adapter from the SQL statements using MS-Access syntax to SQL statements using
the syntax
+     * The translator from the SQL statements using MS-Access dialect to SQL statements using
the dialect
      * of the actual database. If null, will be created when first needed.
      */
-    private volatile SQLAdapter adapter;
+    private volatile SQLTranslator translator;
 
     /**
      * The locale for producing error messages. This is usually the default locale.
@@ -107,27 +107,21 @@ public class EPSGFactory extends Concurr
     private volatile Locale locale;
 
     /**
-     * Creates a factory using the default data source.
+     * Creates a factory using the default data source and object factories.
+     * Invoking this constructor is equivalent to invoking the constructor below with a all
arguments set to null.
      *
      * @throws FactoryException if the data source can not be obtained.
      */
     public EPSGFactory() throws FactoryException {
-        super(DefaultFactories.forBuildin(NameFactory.class));
-        try {
-            dataSource = Initializer.getDataSource();
-        } catch (Exception e) {
-            throw new FactoryException(e.getLocalizedMessage(), e);
-        }
-        datumFactory = DefaultFactories.forBuildin(DatumFactory.class);
-        csFactory    = DefaultFactories.forBuildin(CSFactory.class);
-        crsFactory   = DefaultFactories.forBuildin(CRSFactory.class);
-        copFactory   = DefaultFactories.forBuildin(CoordinateOperationFactory.class);
-        mtFactory    = DefaultFactories.forBuildin(MathTransformFactory.class);
-        locale       = Locale.getDefault(Locale.Category.DISPLAY);
+        this(null, null, null, null, null, null, null, null);
     }
 
     /**
-     * Creates a factory using the given data source.
+     * Creates a factory using the given data source and object factories.
+     *
+     * <div class="section">Default argument values</div>
+     * Any or all arguments given to this constructor can be {@code null}, in which case
default values are used.
+     * Those default values are implementation-specific and may change in any future SIS
version.
      *
      * @param dataSource    The factory to use for creating {@link Connection}s to the EPSG
database.
      * @param nameFactory   The factory to use for creating authority codes as {@link GenericName}
instances.
@@ -136,8 +130,9 @@ public class EPSGFactory extends Concurr
      * @param crsFactory    The factory to use for creating {@link CoordinateReferenceSystem}
instances.
      * @param copFactory    The factory to use for creating {@link CoordinateOperation} instances.
      * @param mtFactory     The factory to use for creating {@link MathTransform} instances.
-     * @param adapter       The adapter from the SQL statements using MS-Access syntax to
SQL statements
-     *                      using the syntax of the actual database, or {@code null} for
the default adapter.
+     * @param translator    The adapter from the SQL statements using MS-Access dialect to
SQL statements
+     *                      using the dialect of the actual database.
+     * @throws FactoryException if an error occurred while creating the EPSG factory.
      */
     public EPSGFactory(final DataSource                 dataSource,
                        final NameFactory                nameFactory,
@@ -146,26 +141,37 @@ public class EPSGFactory extends Concurr
                        final CRSFactory                 crsFactory,
                        final CoordinateOperationFactory copFactory,
                        final MathTransformFactory       mtFactory,
-                       final SQLAdapter                 adapter)
+                       final SQLTranslator              translator)
+            throws FactoryException
     {
-        super(nameFactory);
-        ArgumentChecks.ensureNonNull("dataSource",   dataSource);
-        ArgumentChecks.ensureNonNull("datumFactory", datumFactory);
-        ArgumentChecks.ensureNonNull("csFactory",    csFactory);
-        ArgumentChecks.ensureNonNull("crsFactory",   crsFactory);
-        ArgumentChecks.ensureNonNull("copFactory",   copFactory);
-        ArgumentChecks.ensureNonNull("mtFactory",    mtFactory);
-        this.dataSource   = dataSource;
-        this.datumFactory = datumFactory;
-        this.csFactory    = csFactory;
-        this.crsFactory   = crsFactory;
-        this.copFactory   = copFactory;
-        this.mtFactory    = mtFactory;
-        this.adapter      = adapter;
+        super(factory(NameFactory.class, nameFactory));
+        if (dataSource != null) {
+            this.dataSource = dataSource;
+        } else try {
+            this.dataSource = Initializer.getDataSource();
+        } catch (Exception e) {
+            throw new UnavailableFactoryException(e.getLocalizedMessage(), e);
+        }
+        this.datumFactory = factory(DatumFactory.class, datumFactory);
+        this.csFactory    = factory(CSFactory.class, csFactory);
+        this.crsFactory   = factory(CRSFactory.class, crsFactory);
+        this.copFactory   = factory(CoordinateOperationFactory.class, copFactory);
+        this.mtFactory    = factory(MathTransformFactory.class, mtFactory);
+        this.translator   = translator;
         this.locale       = Locale.getDefault(Locale.Category.DISPLAY);
     }
 
     /**
+     * Returns the given factory if non-null, or the default factory instance otherwise.
+     */
+    private static <F> F factory(final Class<F> type, F factory) {
+        if (factory == null) {
+            factory = DefaultFactories.forBuildin(type);
+        }
+        return factory;
+    }
+
+    /**
      * Returns the locale used by this factory for producing error messages.
      * This locale does not change the way data are read from the EPSG database.
      *
@@ -203,22 +209,22 @@ public class EPSGFactory extends Concurr
      */
     @Override
     protected GeodeticAuthorityFactory createBackingStore() throws FactoryException {
-        Connection c = null;
+        Connection connection = null;
         try {
-            c = dataSource.getConnection();
-            SQLAdapter a = adapter;
-            if (a == null) {
+            connection = dataSource.getConnection();
+            SQLTranslator tr = translator;
+            if (tr == null) {
                 synchronized (this) {
-                    a = adapter;
-                    if (a == null) {
-                        adapter = a = new SQLAdapter(c.getMetaData());
+                    tr = translator;
+                    if (tr == null) {
+                        translator = tr = new SQLTranslator(connection.getMetaData());
                     }
                 }
             }
-            return new EPSGDataAccess(this, c, a);
+            return new EPSGDataAccess(this, connection, tr);
         } catch (Exception e) {
-            if (c != null) try {
-                c.close();
+            if (connection != null) try {
+                connection.close();
             } catch (SQLException e2) {
                 e.addSuppressed(e2);
             }

Copied: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/SQLTranslator.java
(from r1722675, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/SQLAdapter.java)
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/SQLTranslator.java?p2=sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/SQLTranslator.java&p1=sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/SQLAdapter.java&r1=1722675&r2=1722676&rev=1722676&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/SQLAdapter.java
[UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/SQLTranslator.java
[UTF-8] Sat Jan  2 22:40:21 2016
@@ -29,14 +29,17 @@ import org.apache.sis.util.ArgumentCheck
 import org.apache.sis.util.resources.Errors;
 import org.apache.sis.internal.util.Constants;
 
+// Branch-dependent imports
+import java.util.function.Function;
+
 
 /**
- * Converts the SQL statements from MS-Access dialect to standard SQL. The {@link #adaptSQL(String)}
method
+ * Converts the SQL statements from MS-Access dialect to standard SQL. The {@link #apply(String)}
method
  * is invoked when a new {@link java.sql.PreparedStatement} is about to be created from a
SQL string.
  * Since the <a href="http://www.epsg.org">EPSG dataset</a> is available primarily
in MS-Access format,
- * the original SQL statements are formatted using a syntax specific to that particular database
software.
+ * 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 syntax before to be executed.
+ * 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
@@ -90,7 +93,7 @@ import org.apache.sis.internal.util.Cons
  * Consequently it is legal to use the MS-Access table names, which are more readable, in
a PostgreSQL database.
  *
  * <div class="section">Thread safety</div>
- * All {@code SQLAdapter} instances given to the {@link EPSGFactory} constructor
+ * All {@code SQLTranslator} instances given to the {@link EPSGFactory} constructor
  * <strong>shall</strong> be immutable and thread-safe.
  *
  * @author  Rueben Schulz (UBC)
@@ -100,23 +103,21 @@ import org.apache.sis.internal.util.Cons
  * @since   0.7
  * @version 0.7
  * @module
- *
- * @see EPSGDataAccess#adaptSQL(String)
  */
-public class SQLAdapter {
+public class SQLTranslator implements Function<String,String> {
     /**
      * Table names used as "sentinel value" for detecting the presence of an EPSG database.
      * This array lists different possible names for the same table. The first entry must
be
      * the MS-Access name. Other names may be in any order. They will be tried in reverse
order.
      */
-    private static final String[] SENTINAL = {
+    private static final String[] SENTINEL = {
         "Coordinate Reference System",
         "coordinatereferencesystem",
         "epsg_coordinatereferencesystem"
     };
 
     /**
-     * Index of the {@link #SENTINAL} element which is in mixed case. No other element should
be in mixed case.
+     * Index of the {@link #SENTINEL} element which is in mixed case. No other element should
be in mixed case.
      */
     private static final int MIXED_CASE = 0;
 
@@ -168,13 +169,13 @@ public class SQLAdapter {
      * </ul>
      *
      * <div class="note"><b>API design note:</b>
-     * this constructor is for sub-classing only. Otherwise, instances of {@code SQLAdapter}
should not need to be
+     * this constructor is for sub-classing only. Otherwise, instances of {@code SQLTranslator}
should not need to be
      * created explicitely since instantiations are performed automatically by {@link EPSGFactory}
when first needed.</div>
      *
      * @param  md Information about the database.
      * @throws SQLException if an error occurred while querying the database metadata.
      */
-    protected SQLAdapter(final DatabaseMetaData md) throws SQLException {
+    protected SQLTranslator(final DatabaseMetaData md) throws SQLException {
         ArgumentChecks.ensureNonNull("md", md);
         quote = md.getIdentifierQuoteString();
         schema = findSchema(md);
@@ -204,8 +205,8 @@ public class SQLAdapter {
      */
     private String findSchema(final DatabaseMetaData md) throws SQLException {
         final boolean toUpperCase = md.storesUpperCaseIdentifiers();
-        for (int i = SENTINAL.length; --i >= 0;) {
-            String table = SENTINAL[i];
+        for (int i = SENTINEL.length; --i >= 0;) {
+            String table = SENTINEL[i];
             if (toUpperCase && i != MIXED_CASE) {
                 table = table.toUpperCase(Locale.US);
             }
@@ -224,18 +225,18 @@ public class SQLAdapter {
                 }
             }
         }
-        throw new SQLDataException(Errors.format(Errors.Keys.TableNotFound_1, SENTINAL[MIXED_CASE]));
+        throw new SQLDataException(Errors.format(Errors.Keys.TableNotFound_1, SENTINEL[MIXED_CASE]));
     }
 
     /**
-     * Adapts the given SQL statement from the original MS-Access syntax to the syntax of
the target database.
+     * 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.
      *
-     * @param  sql The statement in MS-Access syntax.
-     * @return The SQL statement adapted to the syntax of the target database.
-     * @throws SQLException if an error occurred while adapting the SQL statement.
+     * @param  sql The statement in MS-Access dialect.
+     * @return The SQL statement adapted to the dialect of the target database.
      */
-    public String adaptSQL(final String sql) throws SQLException {
+    @Override
+    public String apply(final String sql) {
         if (schema == null && accessToAnsi.isEmpty() && quote.trim().isEmpty())
{
             return sql;
         }

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/TableInfo.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/TableInfo.java?rev=1722676&r1=1722675&r2=1722676&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/TableInfo.java
[UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/TableInfo.java
[UTF-8] Sat Jan  2 22:40:21 2016
@@ -26,7 +26,7 @@ import org.opengis.parameter.ParameterDe
 
 /**
  * Information about a specific table. The MS-Access dialect of SQL is assumed;
- * it will be translated into ANSI SQL later by {@link EPSGDataAccess#adaptSQL(String)} if
needed.
+ * it will be translated into ANSI SQL later by {@link SQLTranslator#apply(String)} if needed.
  *
  * @author  Martin Desruisseaux (IRD)
  * @since   0.7



Mime
View raw message