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

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


The following commit(s) were added to refs/heads/main by this push:
     new c151db01 Remove duplicated lines in postgres data table (#814)
c151db01 is described below

commit c151db01348586ac08c96138cd73350840475360
Author: Bertil Chapuis <[email protected]>
AuthorDate: Sat Dec 16 14:13:55 2023 +0100

    Remove duplicated lines in postgres data table (#814)
---
 .../storage/postgres/PostgresDataTable.java        | 41 +++++++++++-----------
 1 file changed, 21 insertions(+), 20 deletions(-)

diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDataTable.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDataTable.java
index 541c2780..08c804ab 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDataTable.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDataTable.java
@@ -18,10 +18,7 @@
 package org.apache.baremaps.storage.postgres;
 
 
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
+import java.sql.*;
 import java.util.*;
 import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
@@ -104,14 +101,7 @@ public class PostgresDataTable extends AbstractDataTable {
     var query = insert(rowType);
     try (var connection = dataSource.getConnection();
         var statement = connection.prepareStatement(query)) {
-      for (int i = 1; i <= rowType.columns().size(); i++) {
-        var value = row.get(rowType.columns().get(i - 1).name());
-        if (value instanceof Geometry geometry) {
-          statement.setBytes(i, GeometryUtils.serialize(geometry));
-        } else {
-          statement.setObject(i, value);
-        }
-      }
+      setParameters(statement, row);
       return statement.executeUpdate() > 0;
     } catch (SQLException e) {
       throw new RuntimeException(e);
@@ -126,14 +116,7 @@ public class PostgresDataTable extends AbstractDataTable {
     try (var connection = dataSource.getConnection();
         var statement = connection.prepareStatement(insert(rowType))) {
       for (var row : rows) {
-        for (int i = 1; i <= rowType.columns().size(); i++) {
-          var value = row.get(rowType.columns().get(i - 1).name());
-          if (value instanceof Geometry geometry) {
-            statement.setBytes(i, GeometryUtils.serialize(geometry));
-          } else {
-            statement.setObject(i, value);
-          }
-        }
+        setParameters(statement, row);
         statement.addBatch();
       }
       statement.executeBatch();
@@ -143,6 +126,24 @@ public class PostgresDataTable extends AbstractDataTable {
     }
   }
 
+  /**
+   * Set the parameters of a prepared statement with the values of a row.
+   * 
+   * @param statement the prepared statement
+   * @param row the row
+   * @throws SQLException if an SQL error occurs
+   */
+  private void setParameters(PreparedStatement statement, DataRow row) throws 
SQLException {
+    for (int i = 1; i <= rowType.columns().size(); i++) {
+      var value = row.get(rowType.columns().get(i - 1).name());
+      if (value instanceof Geometry geometry) {
+        statement.setBytes(i, GeometryUtils.serialize(geometry));
+      } else {
+        statement.setObject(i, value);
+      }
+    }
+  }
+
   /**
    * Generates a query that selects all the rows of a table.
    *

Reply via email to