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`.

Reply via email to