Skip to content

Commit

Permalink
Remove duplicated lines in postgres data table (#814)
Browse files Browse the repository at this point in the history
  • Loading branch information
bchapuis authored Dec 16, 2023
1 parent 7b97e5d commit c151db0
Showing 1 changed file with 21 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -104,14 +101,7 @@ public boolean add(DataRow row) {
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);
Expand All @@ -126,14 +116,7 @@ public boolean addAll(Collection<? extends DataRow> rows) {
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();
Expand All @@ -143,6 +126,24 @@ public boolean addAll(Collection<? extends DataRow> rows) {
}
}

/**
* 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.
*
Expand Down

0 comments on commit c151db0

Please sign in to comment.