This is an automated email from the ASF dual-hosted git repository. desruisseaux pushed a commit to branch geoapi-4.0 in repository https://gitbox.apache.org/repos/asf/sis.git
commit 6e7b9ad37ee2ff02d122d04b05bb49187feabf34 Author: Martin Desruisseaux <[email protected]> AuthorDate: Wed Jun 25 11:21:37 2025 +0200 Add enumeration values for new tables and new types introduced in EPSG 10. Update the documentation about the new tables. --- .../sis/referencing/factory/sql/EPSGInstaller.java | 12 ++++++++++-- .../sis/referencing/factory/sql/EPSG_Prepare.sql | 18 +++++++++++++----- .../sis/referencing/factory/sql/SQLTranslator.java | 8 ++++++++ .../test/org/apache/sis/util/CharSequencesTest.java | 8 ++++++++ .../apache/sis/referencing/factory/sql/epsg/README.md | 2 +- 5 files changed, 40 insertions(+), 8 deletions(-) diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/EPSGInstaller.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/EPSGInstaller.java index 7f9e451649..124eb96682 100644 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/EPSGInstaller.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/EPSGInstaller.java @@ -122,8 +122,9 @@ final class EPSGInstaller extends ScriptRunner { * TODO: move to org.apache.sis.referencing.factory.sql.epsg.DataScriptFormatter. */ addReplacement(SQLTranslator.TABLE_PREFIX + "alias", "Alias"); - addReplacement(SQLTranslator.TABLE_PREFIX + "area", "Area"); + addReplacement(SQLTranslator.TABLE_PREFIX + "area", "Area"); // Deprecated (removed in EPSG 10) addReplacement(SQLTranslator.TABLE_PREFIX + "change", "Change"); + addReplacement(SQLTranslator.TABLE_PREFIX + "conventionalrs", "ConventionalRS"); addReplacement(SQLTranslator.TABLE_PREFIX + "coordinateaxis", "Coordinate Axis"); addReplacement(SQLTranslator.TABLE_PREFIX + "coordinateaxisname", "Coordinate Axis Name"); addReplacement(SQLTranslator.TABLE_PREFIX + "coordoperation", "Coordinate_Operation"); @@ -135,12 +136,19 @@ final class EPSGInstaller extends ScriptRunner { addReplacement(SQLTranslator.TABLE_PREFIX + "coordinatereferencesystem", "Coordinate Reference System"); addReplacement(SQLTranslator.TABLE_PREFIX + "coordinatesystem", "Coordinate System"); addReplacement(SQLTranslator.TABLE_PREFIX + "datum", "Datum"); + addReplacement(SQLTranslator.TABLE_PREFIX + "datumensemble", "DatumEnsemble"); + addReplacement(SQLTranslator.TABLE_PREFIX + "datumensemblemember", "DatumEnsembleMember"); + addReplacement(SQLTranslator.TABLE_PREFIX + "datumrealizationmethod", "DatumRealizationMethod"); + addReplacement(SQLTranslator.TABLE_PREFIX + "definingoperation", "DefiningOperation"); addReplacement(SQLTranslator.TABLE_PREFIX + "deprecation", "Deprecation"); addReplacement(SQLTranslator.TABLE_PREFIX + "ellipsoid", "Ellipsoid"); + addReplacement(SQLTranslator.TABLE_PREFIX + "extent", "Extent"); addReplacement(SQLTranslator.TABLE_PREFIX + "namingsystem", "Naming System"); addReplacement(SQLTranslator.TABLE_PREFIX + "primemeridian", "Prime Meridian"); + addReplacement(SQLTranslator.TABLE_PREFIX + "scope", "Scope"); addReplacement(SQLTranslator.TABLE_PREFIX + "supersession", "Supersession"); addReplacement(SQLTranslator.TABLE_PREFIX + "unitofmeasure", "Unit of Measure"); + addReplacement(SQLTranslator.TABLE_PREFIX + "usage", "Usage"); addReplacement(SQLTranslator.TABLE_PREFIX + "versionhistory", "Version History"); if (isEnumTypeSupported) { addReplacement(SQLTranslator.TABLE_PREFIX + "datum_kind", "Datum Kind"); @@ -164,7 +172,7 @@ final class EPSGInstaller extends ScriptRunner { final void prependNamespace(final String schema) { modifyReplacements((key, value) -> { if (key.startsWith(SQLTranslator.TABLE_PREFIX)) { - final StringBuilder buffer = new StringBuilder(value.length() + schema.length() + 5); + final var buffer = new StringBuilder(value.length() + schema.length() + 5); buffer.append(identifierQuote).append(schema).append(identifierQuote).append('.'); final boolean isQuoted = value.endsWith(identifierQuote); if (!isQuoted) buffer.append(identifierQuote); diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/EPSG_Prepare.sql b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/EPSG_Prepare.sql index 563d5d28ac..daab9b19d7 100644 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/EPSG_Prepare.sql +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/EPSG_Prepare.sql @@ -10,14 +10,15 @@ -- If enumerated values are not supported by the database, Apache SIS will automatically replace their usage -- by the VARCHAR type. -- -CREATE TYPE epsg_datum_kind AS ENUM ('geodetic', 'vertical', 'temporal', 'engineering'); -CREATE TYPE epsg_crs_kind AS ENUM ('geocentric', 'geographic 2D', 'geographic 3D', 'projected', 'vertical', 'temporal', 'compound', 'engineering'); -CREATE TYPE epsg_cs_kind AS ENUM ('ellipsoidal', 'spherical', 'Cartesian', 'vertical', 'gravity-related', 'time', 'linear', 'polar', 'cylindrical', 'affine'); +CREATE TYPE epsg_datum_kind AS ENUM ('geodetic', 'vertical', 'temporal', 'engineering', 'dynamic geodetic', 'ensemble'); +CREATE TYPE epsg_crs_kind AS ENUM ('geocentric', 'geographic 2D', 'geographic 3D', 'projected', 'vertical', 'temporal', 'compound', 'engineering', 'derived'); +CREATE TYPE epsg_cs_kind AS ENUM ('ellipsoidal', 'spherical', 'Cartesian', 'vertical', 'gravity-related', 'time', 'linear', 'polar', 'cylindrical', 'affine', 'ordinal'); CREATE TYPE epsg_table_name AS ENUM ('Alias', - 'Area', - 'AxisName', + 'Area', -- Deprecated (removed in EPSG 10). + 'AxisName', -- Deprecated (removed in EPSG 10). 'Change', + 'ConventionalRS', 'Coordinate Axis', 'Coordinate Axis Name', 'Coordinate_Operation', @@ -29,12 +30,19 @@ CREATE TYPE epsg_table_name AS ENUM 'Coordinate Reference System', 'Coordinate System', 'Datum', + 'DatumEnsemble', + 'DatumEnsembleMember', + 'DatumRealizationMethod', + 'DefiningOperation', 'Deprecation', 'Ellipsoid', + 'Extent', 'Naming System', 'Prime Meridian', + 'Scope', 'Supersession', 'Unit of Measure', + 'Usage', 'Version History'); -- diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/SQLTranslator.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/SQLTranslator.java index 27f95c2ec2..0f28c94563 100644 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/SQLTranslator.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/SQLTranslator.java @@ -67,6 +67,7 @@ import org.apache.sis.referencing.internal.Resources; * <tr><td>Table</td> <td>{@code Alias}</td> <td>{@code epsg_alias}</td></tr> * <tr><td>Table</td> <td>{@code Area}</td> <td>{@code epsg_area}</td></tr> * <tr><td>Table</td> <td>{@code Change}</td> <td>{@code epsg_change}</td></tr> + * <tr><td>Table</td> <td>{@code ConventionalRS}</td> <td>{@code epsg_conventionalrs}</td></tr> * <tr><td>Table</td> <td>{@code Coordinate Axis}</td> <td>{@code epsg_coordinateaxis}</td></tr> * <tr><td>Table</td> <td>{@code Coordinate Axis Name}</td> <td>{@code epsg_coordinateaxisname}</td></tr> * <tr><td>Table</td> <td>{@code Coordinate_Operation}</td> <td>{@code epsg_coordoperation}</td></tr> @@ -78,13 +79,20 @@ import org.apache.sis.referencing.internal.Resources; * <tr><td>Table</td> <td>{@code Coordinate Reference System}</td> <td>{@code epsg_coordinatereferencesystem}</td></tr> * <tr><td>Table</td> <td>{@code Coordinate System}</td> <td>{@code epsg_coordinatesystem}</td></tr> * <tr><td>Table</td> <td>{@code Datum}</td> <td>{@code epsg_datum}</td></tr> + * <tr><td>Table</td> <td>{@code DatumEnsemble}</td> <td>{@code epsg_datumensemble}</td></tr> + * <tr><td>Table</td> <td>{@code DatumEnsembleMember}</td> <td>{@code epsg_datumensemblemember}</td></tr> + * <tr><td>Table</td> <td>{@code DatumRealizationMethod}</td> <td>{@code epsg_datumrealizationmethod}</td></tr> + * <tr><td>Table</td> <td>{@code DefiningOperation}</td> <td>{@code epsg_definingoperation}</td></tr> * <tr><td>Table</td> <td>{@code Deprecation}</td> <td>{@code epsg_deprecation}</td></tr> * <tr><td>Table</td> <td>{@code Ellipsoid}</td> <td>{@code epsg_ellipsoid}</td></tr> + * <tr><td>Table</td> <td>{@code Extent}</td> <td>{@code epsg_extent}</td></tr> * <tr><td>Table</td> <td>{@code Naming System}</td> <td>{@code epsg_namingsystem}</td></tr> * <tr><td>Table</td> <td>{@code Prime Meridian}</td> <td>{@code epsg_primemeridian}</td></tr> + * <tr><td>Table</td> <td>{@code Scope}</td> <td>{@code epsg_scope}</td></tr> * <tr><td>Table</td> <td>{@code Supersession}</td> <td>{@code epsg_supersession}</td></tr> * <tr><td>Table</td> <td>{@code Unit of Measure}</td> <td>{@code epsg_unitofmeasure}</td></tr> * <tr><td>Table</td> <td>{@code Version History}</td> <td>{@code epsg_versionhistory}</td></tr> + * <tr><td>Table</td> <td>{@code Usage}</td> <td>{@code epsg_usage}</td></tr> * <tr><td>Column</td> <td>{@code ORDER}</td> <td>{@code coord_axis_order}</td></tr> * </table> * diff --git a/endorsed/src/org.apache.sis.util/test/org/apache/sis/util/CharSequencesTest.java b/endorsed/src/org.apache.sis.util/test/org/apache/sis/util/CharSequencesTest.java index baf59f7d9c..6fb5cd1ad8 100644 --- a/endorsed/src/org.apache.sis.util/test/org/apache/sis/util/CharSequencesTest.java +++ b/endorsed/src/org.apache.sis.util/test/org/apache/sis/util/CharSequencesTest.java @@ -350,6 +350,7 @@ public final class CharSequencesTest extends TestCase { assertTrue(isAcronymForWords("alias", "Alias")); assertTrue(isAcronymForWords("area", "Area")); assertTrue(isAcronymForWords("change", "Change")); + assertTrue(isAcronymForWords("conventionalrs", "ConventionalRS")); assertTrue(isAcronymForWords("coordinateaxis", "Coordinate Axis")); assertTrue(isAcronymForWords("coordinateaxisname", "Coordinate Axis Name")); assertTrue(isAcronymForWords("coordoperation", "Coordinate_Operation")); @@ -361,12 +362,19 @@ public final class CharSequencesTest extends TestCase { assertTrue(isAcronymForWords("coordinatereferencesystem", "Coordinate Reference System")); assertTrue(isAcronymForWords("coordinatesystem", "Coordinate System")); assertTrue(isAcronymForWords("datum", "Datum")); + assertTrue(isAcronymForWords("datumensemble", "DatumEnsemble")); + assertTrue(isAcronymForWords("datumensemblemember", "DatumEnsembleMember")); + assertTrue(isAcronymForWords("datumrealizationmethod", "DatumRealizationMethod")); + assertTrue(isAcronymForWords("definingoperation", "DefiningOperation")); assertTrue(isAcronymForWords("deprecation", "Deprecation")); assertTrue(isAcronymForWords("ellipsoid", "Ellipsoid")); + assertTrue(isAcronymForWords("extent", "Extent")); assertTrue(isAcronymForWords("namingsystem", "Naming System")); assertTrue(isAcronymForWords("primemeridian", "Prime Meridian")); + assertTrue(isAcronymForWords("scope", "Scope")); assertTrue(isAcronymForWords("supersession", "Supersession")); assertTrue(isAcronymForWords("unitofmeasure", "Unit of Measure")); + assertTrue(isAcronymForWords("usage", "Usage")); assertTrue(isAcronymForWords("versionhistory", "Version History")); assertFalse(isAcronymForWords(null, "Deprecation")); /* diff --git a/optional/src/org.apache.sis.referencing.epsg/test/org/apache/sis/referencing/factory/sql/epsg/README.md b/optional/src/org.apache.sis.referencing.epsg/test/org/apache/sis/referencing/factory/sql/epsg/README.md index 0bb40aca0b..9e3fe552c7 100644 --- a/optional/src/org.apache.sis.referencing.epsg/test/org/apache/sis/referencing/factory/sql/epsg/README.md +++ b/optional/src/org.apache.sis.referencing.epsg/test/org/apache/sis/referencing/factory/sql/epsg/README.md @@ -65,7 +65,7 @@ Open the `Tables.sql` file for edition: remove the `UNIQUE` constraint on the `change_id` column and add a `CONSTRAINT pk_change PRIMARY KEY (change_id)` line instead. * In the statement creating the `epsg_datum` table, - change the type of the `realization_epoch` column to `DATE`. + change the type of the `realization_epoch` and `publication_date` columns to `DATE`. * Change the type of `ellipsoid_shape`, `reverse_op`, `param_sign_reversal` `show_crs`, `show_operation` and all `deprecated` fields from `SMALLINT` (or sometimes `VARCHAR(3)`) to `BOOLEAN`.
