You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@baremaps.apache.org by bc...@apache.org on 2024/06/12 23:12:35 UTC
(incubator-baremaps) branch sonar updated (7714c237 -> 58950f6d)
This is an automated email from the ASF dual-hosted git repository.
bchapuis pushed a change to branch sonar
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git
from 7714c237 Use record instead of class
new 1d30e692 Format with spotless
new bf7852b6 Format with spotless
new c79d65a7 Use record instead of class
new 58950f6d Use record instead of class
The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../org/apache/baremaps/database/DiffService.java | 4 +-
.../database/postgres/HeaderRepository.java | 22 ++---
.../database/postgres/RelationRepository.java | 12 +--
.../baremaps/workflow/tasks/UpdateOsmDatabase.java | 8 +-
.../database/postgres/HeaderRepositoryTest.java | 14 +--
.../workflow/tasks/ImportUpdateSampleTest.java | 10 +-
.../function/RelationMultiPolygonBuilder.java | 6 +-
.../baremaps/openstreetmap/model/Change.java | 1 -
.../baremaps/openstreetmap/model/Header.java | 110 ++-------------------
.../baremaps/openstreetmap/model/Member.java | 93 ++---------------
.../baremaps/openstreetmap/OsmSampleTest.java | 2 +-
11 files changed, 52 insertions(+), 230 deletions(-)
(incubator-baremaps) 03/04: Use record instead of class
Posted by bc...@apache.org.
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 c79d65a7436ec639e6794f63935ba27802f3ba93
Author: Bertil Chapuis <bc...@gmail.com>
AuthorDate: Thu Jun 13 01:10:27 2024 +0200
Use record instead of class
---
.../org/apache/baremaps/database/DiffService.java | 4 +-
.../database/postgres/HeaderRepository.java | 22 ++--
.../baremaps/workflow/tasks/UpdateOsmDatabase.java | 8 +-
.../database/postgres/HeaderRepositoryTest.java | 14 +--
.../workflow/tasks/ImportUpdateSampleTest.java | 10 +-
.../baremaps/openstreetmap/model/Header.java | 114 +--------------------
.../baremaps/openstreetmap/OsmSampleTest.java | 2 +-
7 files changed, 35 insertions(+), 139 deletions(-)
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/DiffService.java b/baremaps-core/src/main/java/org/apache/baremaps/database/DiffService.java
index cf84d3e8..4a042a2a 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/DiffService.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/DiffService.java
@@ -80,8 +80,8 @@ public class DiffService implements Callable<List<TileCoord>> {
logger.info("Importing changes");
var header = headerRepository.selectLatest();
- var replicationUrl = header.getReplicationUrl();
- var sequenceNumber = header.getReplicationSequenceNumber() + 1;
+ var replicationUrl = header.replicationUrl();
+ var sequenceNumber = header.replicationSequenceNumber() + 1;
var changeUrl = resolve(replicationUrl, sequenceNumber, "osc.gz");
var projectionTransformer = new ProjectionTransformer(srid, 4326);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/postgres/HeaderRepository.java b/baremaps-core/src/main/java/org/apache/baremaps/database/postgres/HeaderRepository.java
index 7ff27821..d2dcfac1 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/postgres/HeaderRepository.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/postgres/HeaderRepository.java
@@ -232,7 +232,7 @@ public class HeaderRepository implements Repository<Long, Header> {
Map<Long, Header> values = new HashMap<>();
while (result.next()) {
Header value = getValue(result);
- values.put(value.getReplicationSequenceNumber(), value);
+ values.put(value.replicationSequenceNumber(), value);
}
return keys.stream().map(values::get).toList();
}
@@ -315,11 +315,11 @@ public class HeaderRepository implements Repository<Long, Header> {
writer.writeHeader();
for (Header value : values) {
writer.startRow(5);
- writer.writeLong(value.getReplicationSequenceNumber());
- writer.writeLocalDateTime(value.getReplicationTimestamp());
- writer.write(value.getReplicationUrl());
- writer.write(value.getSource());
- writer.write(value.getWritingProgram());
+ writer.writeLong(value.replicationSequenceNumber());
+ writer.writeLocalDateTime(value.replicationTimestamp());
+ writer.write(value.replicationUrl());
+ writer.write(value.source());
+ writer.write(value.writingProgram());
}
}
} catch (IOException | SQLException e) {
@@ -338,10 +338,10 @@ public class HeaderRepository implements Repository<Long, Header> {
}
private void setValue(PreparedStatement statement, Header value) throws SQLException {
- statement.setObject(1, value.getReplicationSequenceNumber());
- statement.setObject(2, value.getReplicationTimestamp());
- statement.setObject(3, value.getReplicationUrl());
- statement.setObject(4, value.getSource());
- statement.setObject(5, value.getWritingProgram());
+ statement.setObject(1, value.replicationSequenceNumber());
+ statement.setObject(2, value.replicationTimestamp());
+ statement.setObject(3, value.replicationUrl());
+ statement.setObject(4, value.source());
+ statement.setObject(5, value.writingProgram());
}
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UpdateOsmDatabase.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UpdateOsmDatabase.java
index 0f4fb030..8dbd64a4 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UpdateOsmDatabase.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UpdateOsmDatabase.java
@@ -118,16 +118,16 @@ public class UpdateOsmDatabase implements Task {
// If the replicationUrl is not provided, use the one from the latest header.
if (replicationUrl == null) {
- replicationUrl = header.getReplicationUrl();
+ replicationUrl = header.replicationUrl();
}
// Get the sequence number of the latest header
var stateReader = new StateReader(replicationUrl, true);
- var sequenceNumber = header.getReplicationSequenceNumber();
+ var sequenceNumber = header.replicationSequenceNumber();
// If the replicationTimestamp is not provided, guess it from the replication timestamp.
if (sequenceNumber <= 0) {
- var replicationTimestamp = header.getReplicationTimestamp();
+ var replicationTimestamp = header.replicationTimestamp();
var state = stateReader.getStateFromTimestamp(replicationTimestamp);
if (state.isPresent()) {
sequenceNumber = state.get().getSequenceNumber();
@@ -175,7 +175,7 @@ public class UpdateOsmDatabase implements Task {
try (var stateInputStream = new BufferedInputStream(stateUrl.openStream())) {
var state = new StateReader().read(stateInputStream);
headerRepository.put(new Header(state.getSequenceNumber(), state.getTimestamp(),
- header.getReplicationUrl(), header.getSource(), header.getWritingProgram()));
+ header.replicationUrl(), header.source(), header.writingProgram()));
}
}
diff --git a/baremaps-core/src/test/java/org/apache/baremaps/database/postgres/HeaderRepositoryTest.java b/baremaps-core/src/test/java/org/apache/baremaps/database/postgres/HeaderRepositoryTest.java
index 3897b5f5..7a1b4a4a 100644
--- a/baremaps-core/src/test/java/org/apache/baremaps/database/postgres/HeaderRepositoryTest.java
+++ b/baremaps-core/src/test/java/org/apache/baremaps/database/postgres/HeaderRepositoryTest.java
@@ -60,7 +60,7 @@ class HeaderRepositoryTest extends PostgresRepositoryTest {
@Tag("integration")
void insert() throws RepositoryException {
headerRepository.put(HEADER_0);
- assertEquals(HEADER_0, headerRepository.get(HEADER_0.getReplicationSequenceNumber()));
+ assertEquals(HEADER_0, headerRepository.get(HEADER_0.replicationSequenceNumber()));
}
@Test
@@ -69,15 +69,15 @@ class HeaderRepositoryTest extends PostgresRepositoryTest {
List<Header> headers = Arrays.asList(HEADER_0, HEADER_1, HEADER_2);
headerRepository.put(headers);
assertIterableEquals(headers, headerRepository.get(
- headers.stream().map(Header::getReplicationSequenceNumber).toList()));
+ headers.stream().map(Header::replicationSequenceNumber).toList()));
}
@Test
@Tag("integration")
void delete() throws RepositoryException {
headerRepository.put(HEADER_0);
- headerRepository.delete(HEADER_0.getReplicationSequenceNumber());
- assertNull(headerRepository.get(HEADER_0.getReplicationSequenceNumber()));
+ headerRepository.delete(HEADER_0.replicationSequenceNumber());
+ assertNull(headerRepository.get(HEADER_0.replicationSequenceNumber()));
}
@Test
@@ -86,9 +86,9 @@ class HeaderRepositoryTest extends PostgresRepositoryTest {
List<Header> headers = Arrays.asList(HEADER_0, HEADER_1, HEADER_2);
headerRepository.put(headers);
headerRepository.delete(
- headers.stream().map(Header::getReplicationSequenceNumber).toList());
+ headers.stream().map(Header::replicationSequenceNumber).toList());
assertIterableEquals(Arrays.asList(null, null, null), headerRepository.get(
- headers.stream().map(Header::getReplicationSequenceNumber).toList()));
+ headers.stream().map(Header::replicationSequenceNumber).toList()));
}
@Test
@@ -97,6 +97,6 @@ class HeaderRepositoryTest extends PostgresRepositoryTest {
List<Header> headers = Arrays.asList(HEADER_0, HEADER_1, HEADER_2);
headerRepository.copy(headers);
assertIterableEquals(headers, headerRepository.get(
- headers.stream().map(Header::getReplicationSequenceNumber).toList()));
+ headers.stream().map(Header::replicationSequenceNumber).toList()));
}
}
diff --git a/baremaps-core/src/test/java/org/apache/baremaps/workflow/tasks/ImportUpdateSampleTest.java b/baremaps-core/src/test/java/org/apache/baremaps/workflow/tasks/ImportUpdateSampleTest.java
index 0942ebf7..b545d990 100644
--- a/baremaps-core/src/test/java/org/apache/baremaps/workflow/tasks/ImportUpdateSampleTest.java
+++ b/baremaps-core/src/test/java/org/apache/baremaps/workflow/tasks/ImportUpdateSampleTest.java
@@ -67,14 +67,14 @@ class ImportUpdateSampleTest extends PostgresRepositoryTest {
// Import the sample data
ImportOsmPbf.execute(TestFiles.SAMPLE_OSM_PBF, coordinateMap, referenceMap, headerRepository,
nodeRepository, wayRepository, relationRepository, srid);
- assertEquals(0, headerRepository.selectLatest().getReplicationSequenceNumber());
+ assertEquals(0, headerRepository.selectLatest().replicationSequenceNumber());
// Import the state file
try (var stateInput = Files.newInputStream(TestFiles.SAMPLE_STATE_TXT)) {
var state = new StateReader().read(stateInput);
headerRepository.put(new Header(state.getSequenceNumber(), state.getTimestamp(),
"file:///" + TestFiles.SAMPLE_DIR, "", ""));
- assertEquals(1, headerRepository.selectLatest().getReplicationSequenceNumber());
+ assertEquals(1, headerRepository.selectLatest().replicationSequenceNumber());
}
assertGeometryEquals(NODE_POINT_1, nodeRepository.get(1L).getGeometry(), 100);
assertGeometryEquals(WAY_LINESTRING_4, wayRepository.get(4L).getGeometry(), 100);
@@ -89,7 +89,7 @@ class ImportUpdateSampleTest extends PostgresRepositoryTest {
// Add elements to the database
UpdateOsmDatabase.execute(coordinateMap, referenceMap, headerRepository, nodeRepository,
wayRepository, relationRepository, srid, null);
- assertEquals(2, headerRepository.selectLatest().getReplicationSequenceNumber());
+ assertEquals(2, headerRepository.selectLatest().replicationSequenceNumber());
assertGeometryEquals(NODE_POINT_37, nodeRepository.get(37L).getGeometry(), 100);
assertGeometryEquals(WAY_LINESTRING_40, wayRepository.get(40L).getGeometry(), 100);
@@ -100,7 +100,7 @@ class ImportUpdateSampleTest extends PostgresRepositoryTest {
// Modify elements in the database
UpdateOsmDatabase.execute(coordinateMap, referenceMap, headerRepository, nodeRepository,
wayRepository, relationRepository, srid, null);
- assertEquals(3, headerRepository.selectLatest().getReplicationSequenceNumber());
+ assertEquals(3, headerRepository.selectLatest().replicationSequenceNumber());
assertGeometryEquals(NODE_POINT_1_MODIFIED, nodeRepository.get(1L).getGeometry(), 100);
assertGeometryEquals(WAY_LINESTRING_4_MODIFIED, wayRepository.get(4L).getGeometry(), 100);
assertGeometryEquals(WAY_POLYGON_9_MODIFIED, wayRepository.get(9L).getGeometry(), 100);
@@ -112,7 +112,7 @@ class ImportUpdateSampleTest extends PostgresRepositoryTest {
// Delete elements from the database
UpdateOsmDatabase.execute(coordinateMap, referenceMap, headerRepository, nodeRepository,
wayRepository, relationRepository, srid, null);
- assertEquals(4, headerRepository.selectLatest().getReplicationSequenceNumber());
+ assertEquals(4, headerRepository.selectLatest().replicationSequenceNumber());
assertNull(nodeRepository.get(1L));
assertNull(nodeRepository.get(4L));
assertNull(nodeRepository.get(9L));
diff --git a/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/model/Header.java b/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/model/Header.java
index f017220f..cf692df3 100644
--- a/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/model/Header.java
+++ b/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/model/Header.java
@@ -20,117 +20,13 @@ package org.apache.baremaps.openstreetmap.model;
import java.time.LocalDateTime;
-import java.util.Objects;
-import java.util.StringJoiner;
/** Represents a header entity in an OpenStreetMap dataset. */
public record Header(
- Long replicationSequenceNumber,
- LocalDateTime replicationTimestamp,
- String replicationUrl,
- String source,
- String writingProgram
-) implements Entity {
+ Long replicationSequenceNumber,
+ LocalDateTime replicationTimestamp,
+ String replicationUrl,
+ String source,
+ String writingProgram) implements Entity {
- private final Long replicationSequenceNumber;
- private final LocalDateTime replicationTimestamp;
- private final String replicationUrl;
- private final String source;
- private final String writingProgram;
-
- /**
- * Constructs an OpenStreetMap {@code Header} based on the specified parameters.
- *
- * @param replicationSequenceNumber the replication sequence number
- * @param replicationTimestamp the replication timestamp
- * @param replicationUrl the replication url
- * @param source the source
- * @param writingProgram the writing program
- */
- public Header(Long replicationSequenceNumber, LocalDateTime replicationTimestamp,
- String replicationUrl, String source, String writingProgram) {
- this.replicationTimestamp = replicationTimestamp;
- this.replicationSequenceNumber = replicationSequenceNumber;
- this.replicationUrl = replicationUrl;
- this.source = source;
- this.writingProgram = writingProgram;
- }
-
- /**
- * Returns the replication timestamp.
- *
- * @return the replication timestamp
- */
- public LocalDateTime getReplicationTimestamp() {
- return replicationTimestamp;
- }
-
- /**
- * Returns the replication sequence number.
- *
- * @return the replication sequence number
- */
- public Long getReplicationSequenceNumber() {
- return replicationSequenceNumber;
- }
-
- /**
- * Returns the replication url.
- *
- * @return the replication url
- */
- public String getReplicationUrl() {
- return replicationUrl;
- }
-
- /**
- * Returns the source.
- *
- * @return the source
- */
- public String getSource() {
- return source;
- }
-
- /**
- * Returns the writing program.
- *
- * @return the writing program
- */
- public String getWritingProgram() {
- return writingProgram;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (!(o instanceof Header)) {
- return false;
- }
- Header header = (Header) o;
- return Objects.equals(replicationTimestamp, header.replicationTimestamp)
- && Objects.equals(replicationSequenceNumber, header.replicationSequenceNumber)
- && Objects.equals(replicationUrl, header.replicationUrl)
- && Objects.equals(source, header.source)
- && Objects.equals(writingProgram, header.writingProgram);
- }
-
- /** {@inheritDoc} */
- @Override
- public int hashCode() {
- return Objects.hash(replicationTimestamp, replicationSequenceNumber, replicationUrl, source,
- writingProgram);
- }
-
- /** {@inheritDoc} */
- @Override
- public String toString() {
- return new StringJoiner(", ", Header.class.getSimpleName() + "[", "]")
- .add("replicationTimestamp=" + replicationTimestamp)
- .add("replicationSequenceNumber=" + replicationSequenceNumber)
- .add("replicationUrl='" + replicationUrl + "'").add("source='" + source + "'")
- .add("writingProgram='" + writingProgram + "'").toString();
- }
}
diff --git a/baremaps-openstreetmap/src/test/java/org/apache/baremaps/openstreetmap/OsmSampleTest.java b/baremaps-openstreetmap/src/test/java/org/apache/baremaps/openstreetmap/OsmSampleTest.java
index 5d1b5d84..fdb51ca0 100644
--- a/baremaps-openstreetmap/src/test/java/org/apache/baremaps/openstreetmap/OsmSampleTest.java
+++ b/baremaps-openstreetmap/src/test/java/org/apache/baremaps/openstreetmap/OsmSampleTest.java
@@ -75,7 +75,7 @@ class OsmSampleTest {
stream.forEach(entity -> {
if (entity instanceof Header header) {
Assertions.assertNotNull(header);
- Assertions.assertEquals("osmium/1.16.0", header.getWritingProgram());
+ Assertions.assertEquals("osmium/1.16.0", header.writingProgram());
headers.incrementAndGet();
} else if (entity instanceof Bound bound) {
Assertions.assertNotNull(bound);
(incubator-baremaps) 02/04: Format with spotless
Posted by bc...@apache.org.
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 bf7852b6c0ef6605b4123fa3db5af582098d3ed1
Author: Bertil Chapuis <bc...@gmail.com>
AuthorDate: Thu Jun 13 01:08:48 2024 +0200
Format with spotless
---
.../main/java/org/apache/baremaps/openstreetmap/model/Header.java | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/model/Header.java b/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/model/Header.java
index 36277e0b..f017220f 100644
--- a/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/model/Header.java
+++ b/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/model/Header.java
@@ -24,7 +24,13 @@ import java.util.Objects;
import java.util.StringJoiner;
/** Represents a header entity in an OpenStreetMap dataset. */
-public final class Header implements Entity {
+public record Header(
+ Long replicationSequenceNumber,
+ LocalDateTime replicationTimestamp,
+ String replicationUrl,
+ String source,
+ String writingProgram
+) implements Entity {
private final Long replicationSequenceNumber;
private final LocalDateTime replicationTimestamp;
(incubator-baremaps) 01/04: Format with spotless
Posted by bc...@apache.org.
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 1d30e69228a400e945e6542fdef5dabf1f16901a
Author: Bertil Chapuis <bc...@gmail.com>
AuthorDate: Thu Jun 13 01:07:58 2024 +0200
Format with spotless
---
.../src/main/java/org/apache/baremaps/openstreetmap/model/Change.java | 1 -
1 file changed, 1 deletion(-)
diff --git a/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/model/Change.java b/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/model/Change.java
index 1b7285ab..868df68e 100644
--- a/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/model/Change.java
+++ b/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/model/Change.java
@@ -20,7 +20,6 @@ package org.apache.baremaps.openstreetmap.model;
import java.util.List;
-import java.util.StringJoiner;
/** Represents a change in an OpenStreetMap dataset. */
public record Change(ChangeType type, List<Entity> entities) {
(incubator-baremaps) 04/04: Use record instead of class
Posted by bc...@apache.org.
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 58950f6db15ba091db1b92ddaf7fc11a6e34f119
Author: Bertil Chapuis <bc...@gmail.com>
AuthorDate: Thu Jun 13 01:12:27 2024 +0200
Use record instead of class
---
.../database/postgres/RelationRepository.java | 12 +--
.../function/RelationMultiPolygonBuilder.java | 6 +-
.../baremaps/openstreetmap/model/Member.java | 93 ++--------------------
3 files changed, 16 insertions(+), 95 deletions(-)
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/postgres/RelationRepository.java b/baremaps-core/src/main/java/org/apache/baremaps/database/postgres/RelationRepository.java
index 6a0a9622..a37f02b8 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/postgres/RelationRepository.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/postgres/RelationRepository.java
@@ -315,11 +315,11 @@ public class RelationRepository implements Repository<Long, Relation> {
writer.writeLong(value.getInfo().getChangeset());
writer.writeJsonb(JsonbMapper.toJson(value.getTags()));
writer.writeLongList(
- value.getMembers().stream().map(Member::getRef).toList());
- writer.writeIntegerList(value.getMembers().stream().map(Member::getType)
+ value.getMembers().stream().map(Member::ref).toList());
+ writer.writeIntegerList(value.getMembers().stream().map(Member::type)
.map(MemberType::ordinal).toList());
writer
- .write(value.getMembers().stream().map(Member::getRole).toList());
+ .write(value.getMembers().stream().map(Member::role).toList());
writer.writeGeometry(value.getGeometry());
}
}
@@ -355,12 +355,12 @@ public class RelationRepository implements Repository<Long, Relation> {
statement.setObject(4, value.getInfo().getTimestamp());
statement.setObject(5, value.getInfo().getChangeset());
statement.setObject(6, JsonbMapper.toJson(value.getTags()));
- Object[] refs = value.getMembers().stream().map(Member::getRef).toArray();
+ Object[] refs = value.getMembers().stream().map(Member::ref).toArray();
statement.setObject(7, statement.getConnection().createArrayOf("bigint", refs));
Object[] types =
- value.getMembers().stream().map(Member::getType).map(MemberType::ordinal).toArray();
+ value.getMembers().stream().map(Member::type).map(MemberType::ordinal).toArray();
statement.setObject(8, statement.getConnection().createArrayOf("int", types));
- Object[] roles = value.getMembers().stream().map(Member::getRole).toArray();
+ Object[] roles = value.getMembers().stream().map(Member::role).toArray();
statement.setObject(9, statement.getConnection().createArrayOf("varchar", roles));
statement.setBytes(10, GeometryUtils.serialize(value.getGeometry()));
}
diff --git a/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/function/RelationMultiPolygonBuilder.java b/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/function/RelationMultiPolygonBuilder.java
index cdda73cf..e406d592 100644
--- a/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/function/RelationMultiPolygonBuilder.java
+++ b/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/function/RelationMultiPolygonBuilder.java
@@ -88,8 +88,8 @@ public class RelationMultiPolygonBuilder implements Consumer<Entity> {
var innerMembers = new ArrayList<Member>();
var otherMembers = new ArrayList<Member>();
for (var member : relation.getMembers()) {
- if (MemberType.WAY.equals(member.getType())) {
- switch (member.getRole()) {
+ if (MemberType.WAY.equals(member.type())) {
+ switch (member.role()) {
case "outer" -> outerMembers.add(member);
case "inner" -> innerMembers.add(member);
default -> otherMembers.add(member);
@@ -203,7 +203,7 @@ public class RelationMultiPolygonBuilder implements Consumer<Entity> {
}
private LineString createLineString(Member member) {
- List<Long> refs = referenceMap.get(member.getRef());
+ List<Long> refs = referenceMap.get(member.ref());
// Build the coordinate list and remove duplicates.
List<Coordinate> list = new ArrayList<>();
diff --git a/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/model/Member.java b/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/model/Member.java
index a3b572ac..4e8e8a79 100644
--- a/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/model/Member.java
+++ b/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/model/Member.java
@@ -23,7 +23,7 @@ import com.google.common.base.Objects;
import java.util.StringJoiner;
/** Represents a member of a relation in an OpenStreetMap dataset. */
-public final class Member {
+public record Member(long ref, MemberType type, String role) {
public enum MemberType {
NODE,
@@ -31,91 +31,12 @@ public final class Member {
RELATION;
public static MemberType forNumber(int value) {
- switch (value) {
- case 0:
- return NODE;
- case 1:
- return WAY;
- case 2:
- return RELATION;
- default:
- throw new IllegalArgumentException();
- }
+ return switch (value) {
+ case 0 -> NODE;
+ case 1 -> WAY;
+ case 2 -> RELATION;
+ default -> throw new IllegalArgumentException();
+ };
}
}
-
- private final long ref;
-
- private final MemberType type;
-
- private final String role;
-
- /**
- * Constructs a {@code Member} of an OpenStreetMap relation.
- *
- * @param ref the relation id
- * @param type the member type
- * @param role the member role
- */
- public Member(long ref, MemberType type, String role) {
- checkNotNull(type);
- checkNotNull(role);
- this.ref = ref;
- this.type = type;
- this.role = role;
- }
-
- /**
- * Returns the relation id.
- *
- * @return the relation id
- */
- public long getRef() {
- return ref;
- }
-
- /**
- * Returns the member type.
- *
- * @return the member type
- */
- public MemberType getType() {
- return type;
- }
-
- /**
- * Returns the member role.
- *
- * @return the member role
- */
- public String getRole() {
- return role;
- }
-
- /** {@inheritDoc} */
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
- Member member = (Member) o;
- return ref == member.ref && Objects.equal(type, member.type)
- && Objects.equal(role, member.role);
- }
-
- /** {@inheritDoc} */
- @Override
- public int hashCode() {
- return Objects.hashCode(ref, type, role);
- }
-
- /** {@inheritDoc} */
- @Override
- public String toString() {
- return new StringJoiner(", ", Member.class.getSimpleName() + "[", "]").add("ref=" + ref)
- .add("type='" + type.name() + "'").add("role='" + role + "'").toString();
- }
}