This is an automated email from the ASF dual-hosted git repository. bchapuis pushed a commit to branch remove-duplicate-in-storage in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git
commit 7479eeaea89b7066273747f02d017b7be4127003 Author: Bertil Chapuis <[email protected]> AuthorDate: Sat Dec 16 13:47:32 2023 +0100 Remove duplicated lines in postgres data table --- .../storage/postgres/PostgresDataTable.java | 40 +++++++++++----------- 1 file changed, 20 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..b2f185ae 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,23 @@ 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. *
