This is an automated email from the ASF dual-hosted git repository.

bchapuis pushed a commit to branch sonar
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git

commit 12e24742887c3365eb8356e9302ad227833e5445
Author: Bertil Chapuis <[email protected]>
AuthorDate: Thu Jun 13 20:32:40 2024 +0200

    Improve exception handling
---
 .../database/metadata/DatabaseMetadata.java        | 35 ++++++++++++----------
 .../storage/postgres/PostgresDataStore.java        | 32 ++++++++++++--------
 .../tilestore/postgres/PostgresQueryGenerator.java | 15 +++++++---
 .../postgres/PostgresQueryGeneratorTest.java       |  3 +-
 4 files changed, 53 insertions(+), 32 deletions(-)

diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/database/metadata/DatabaseMetadata.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/database/metadata/DatabaseMetadata.java
index 1c0a180c..77bc51b6 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/database/metadata/DatabaseMetadata.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/database/metadata/DatabaseMetadata.java
@@ -66,12 +66,15 @@ public class DatabaseMetadata {
     this.dataSource = dataSource;
   }
 
-  public List<TableMetadata> getTableMetaData() {
+  public List<TableMetadata> getTableMetaData() throws SQLException {
     return getTableMetaData(null, null, null, null);
   }
 
-  public List<TableMetadata> getTableMetaData(String catalog, String schema,
-      String tableNamePattern, String[] types) {
+  public List<TableMetadata> getTableMetaData(
+      String catalog,
+      String schema,
+      String tableNamePattern,
+      String[] types) throws SQLException {
     Map<String, TableResult> descriptions = getTables(catalog, schema, 
tableNamePattern, types)
         .stream().collect(Collectors.toMap(TableResult::tableName, 
Function.identity()));
     Map<String, List<ColumnResult>> columns = getColumns(catalog, schema, 
tableNamePattern, null)
@@ -86,8 +89,11 @@ public class DatabaseMetadata {
         .toList();
   }
 
-  private List<TableResult> getTables(String catalog, String schemaPattern, 
String tableNamePattern,
-      String[] types) {
+  private List<TableResult> getTables(
+      String catalog,
+      String schemaPattern,
+      String tableNamePattern,
+      String[] types) throws SQLException {
     var tableDescriptions = new ArrayList<TableResult>();
     try (var connection = dataSource.getConnection();
         var resultSet =
@@ -105,14 +111,15 @@ public class DatabaseMetadata {
             resultSet.getString(SELF_REFERENCING_COL_NAME),
             resultSet.getString(REF_GENERATION)));
       }
-    } catch (SQLException e) {
-      throw new RuntimeException(e);
     }
     return tableDescriptions;
   }
 
-  private List<ColumnResult> getColumns(String catalog, String schemaPattern,
-      String tableNamePattern, String columnNamePattern) {
+  private List<ColumnResult> getColumns(
+      String catalog,
+      String schemaPattern,
+      String tableNamePattern,
+      String columnNamePattern) throws SQLException {
     var tableColumns = new ArrayList<ColumnResult>();
     try (var connection = dataSource.getConnection();
         var resultSet = connection.getMetaData().getColumns(catalog, 
schemaPattern,
@@ -143,14 +150,14 @@ public class DatabaseMetadata {
             resultSet.getString(IS_AUTOINCREMENT),
             resultSet.getString(IS_GENERATEDCOLUMN)));
       }
-    } catch (SQLException e) {
-      throw new RuntimeException(e);
     }
     return tableColumns;
   }
 
-  private List<PrimaryKeyResult> getPrimaryKeys(String catalog, String 
schemaPattern,
-      String table) {
+  private List<PrimaryKeyResult> getPrimaryKeys(
+      String catalog,
+      String schemaPattern,
+      String table) throws SQLException {
     var tablePrimaryKeyColumns = new ArrayList<PrimaryKeyResult>();
     try (var connection = dataSource.getConnection();
         var resultSet = connection.getMetaData().getPrimaryKeys(catalog, 
schemaPattern, table)) {
@@ -163,8 +170,6 @@ public class DatabaseMetadata {
             resultSet.getShort(KEY_SEQ),
             resultSet.getString(PK_NAME)));
       }
-    } catch (SQLException e) {
-      throw new RuntimeException(e);
     }
     return tablePrimaryKeyColumns;
   }
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDataStore.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDataStore.java
index e767b0d1..58445f92 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDataStore.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDataStore.java
@@ -65,10 +65,14 @@ public class PostgresDataStore implements DataStore {
    */
   @Override
   public List<String> list() throws DataStoreException {
-    DatabaseMetadata metadata = new DatabaseMetadata(dataSource);
-    return metadata.getTableMetaData(null, "public", null, TYPES).stream()
-        .map(table -> table.table().tableName())
-        .toList();
+    try {
+      DatabaseMetadata metadata = new DatabaseMetadata(dataSource);
+      return metadata.getTableMetaData(null, "public", null, TYPES).stream()
+          .map(table -> table.table().tableName())
+          .toList();
+    } catch (SQLException e) {
+      throw new DataStoreException(e);
+    }
   }
 
   /**
@@ -76,15 +80,19 @@ public class PostgresDataStore implements DataStore {
    */
   @Override
   public DataTable get(String name) throws DataStoreException {
-    var databaseMetadata = new DatabaseMetadata(dataSource);
-    var postgresName = name.replaceAll(REGEX, "_").toLowerCase();
-    var tableMetadata = databaseMetadata.getTableMetaData(null, null, 
postgresName, TYPES)
-        .stream().findFirst();
-    if (tableMetadata.isEmpty()) {
-      throw new DataStoreException("Table " + name + " does not exist.");
+    try {
+      var databaseMetadata = new DatabaseMetadata(dataSource);
+      var postgresName = name.replaceAll(REGEX, "_").toLowerCase();
+      var tableMetadata = databaseMetadata.getTableMetaData(null, null, 
postgresName, TYPES)
+          .stream().findFirst();
+      if (tableMetadata.isEmpty()) {
+        throw new DataStoreException("Table " + name + " does not exist.");
+      }
+      var schema = createSchema(tableMetadata.get());
+      return new PostgresDataTable(dataSource, schema);
+    } catch (SQLException e) {
+      throw new DataStoreException(e);
     }
-    var schema = createSchema(tableMetadata.get());
-    return new PostgresDataTable(dataSource, schema);
   }
 
   /**
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/tilestore/postgres/PostgresQueryGenerator.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/tilestore/postgres/PostgresQueryGenerator.java
index 73f189fb..ae6f1417 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/tilestore/postgres/PostgresQueryGenerator.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/tilestore/postgres/PostgresQueryGenerator.java
@@ -18,6 +18,7 @@
 package org.apache.baremaps.tilestore.postgres;
 
 
+import java.sql.SQLException;
 import java.util.List;
 import java.util.stream.Collectors;
 import javax.sql.DataSource;
@@ -67,8 +68,13 @@ public class PostgresQueryGenerator {
    * @param columnNamePattern the column name pattern
    * @param types the types
    */
-  public PostgresQueryGenerator(DataSource dataSource, String catalog, String 
schemaPattern,
-      String typeNamePattern, String columnNamePattern, String... types) {
+  public PostgresQueryGenerator(
+      DataSource dataSource,
+      String catalog,
+      String schemaPattern,
+      String typeNamePattern,
+      String columnNamePattern,
+      String... types) {
     this.dataSource = dataSource;
     this.catalog = catalog;
     this.schemaPattern = schemaPattern;
@@ -82,11 +88,12 @@ public class PostgresQueryGenerator {
    *
    * @return the queries
    */
-  public List<TilesetQuery> generate() {
+  public List<TilesetQuery> generate() throws SQLException {
     return new DatabaseMetadata(dataSource)
         .getTableMetaData(catalog, schemaPattern, tableNamePattern, 
types).stream()
         .filter(table -> table.primaryKeys().size() == 1)
-        .filter(table -> table.getGeometryColumns().size() == 
1).map(this::getLayer).toList();
+        .filter(table -> table.getGeometryColumns().size() == 1)
+        .map(this::getLayer).toList();
   }
 
   private TilesetQuery getLayer(TableMetadata table) {
diff --git 
a/baremaps-core/src/test/java/org/apache/baremaps/tilestore/postgres/PostgresQueryGeneratorTest.java
 
b/baremaps-core/src/test/java/org/apache/baremaps/tilestore/postgres/PostgresQueryGeneratorTest.java
index 98affb2b..214c13a6 100644
--- 
a/baremaps-core/src/test/java/org/apache/baremaps/tilestore/postgres/PostgresQueryGeneratorTest.java
+++ 
b/baremaps-core/src/test/java/org/apache/baremaps/tilestore/postgres/PostgresQueryGeneratorTest.java
@@ -19,6 +19,7 @@ package org.apache.baremaps.tilestore.postgres;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
+import java.sql.SQLException;
 import java.util.List;
 import javax.sql.DataSource;
 import org.apache.baremaps.database.postgres.PostgresRepositoryTest;
@@ -30,7 +31,7 @@ class PostgresQueryGeneratorTest extends 
PostgresRepositoryTest {
 
   @Test
   @Tag("integration")
-  void generate() {
+  void generate() throws SQLException {
     DataSource dataSource = dataSource();
     List<TilesetQuery> queries =
         new PostgresQueryGenerator(dataSource, null, "public", null, null, 
"TABLE").generate();

Reply via email to