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