This is an automated email from the ASF dual-hosted git repository. bchapuis pushed a commit to branch flatgeobuf in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git
commit 34a82af9d68993c64efac2cbc9feadef31131e67 Author: Bertil Chapuis <[email protected]> AuthorDate: Tue Jun 25 01:00:38 2024 +0200 Minor refactoring --- .../apache/baremaps/flatgeobuf/FlatGeoBufReader.java | 19 +------------------ .../apache/baremaps/flatgeobuf/FlatGeoBufWriter.java | 19 +++++++++++-------- .../apache/baremaps/flatgeobuf/FlatGeoBufTest.java | 18 +++++++++++------- 3 files changed, 23 insertions(+), 33 deletions(-) diff --git a/baremaps-flatgeobuf/src/main/java/org/apache/baremaps/flatgeobuf/FlatGeoBufReader.java b/baremaps-flatgeobuf/src/main/java/org/apache/baremaps/flatgeobuf/FlatGeoBufReader.java index 38b49fa0..650b6559 100644 --- a/baremaps-flatgeobuf/src/main/java/org/apache/baremaps/flatgeobuf/FlatGeoBufReader.java +++ b/baremaps-flatgeobuf/src/main/java/org/apache/baremaps/flatgeobuf/FlatGeoBufReader.java @@ -25,13 +25,11 @@ import java.nio.ByteOrder; import java.nio.channels.Channels; import java.nio.channels.ReadableByteChannel; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; import java.util.List; import java.util.stream.IntStream; import org.apache.baremaps.flatgeobuf.generated.Column; import org.apache.baremaps.flatgeobuf.generated.Feature; import org.apache.baremaps.flatgeobuf.generated.Header; -import org.locationtech.jts.geom.Geometry; public class FlatGeoBufReader { @@ -110,22 +108,7 @@ public class FlatGeoBufReader { Header header, ByteBuffer buffer) throws IOException { Feature feature = readFeatureFlatGeoBuf(channel, buffer); - List<Object> properties = new ArrayList<>(); - - if (feature.propertiesLength() > 0) { - var propertiesBuffer = feature.propertiesAsByteBuffer(); - while (propertiesBuffer.hasRemaining()) { - var type = propertiesBuffer.getShort(); - var column = header.columns(type); - var value = readValue(propertiesBuffer, column); - properties.add(value); - } - } - - - Geometry geometry = - GeometryConversions.readGeometry(feature.geometry(), header.geometryType()); - return new FlatGeoBuf.Feature(properties, geometry); + return FlatGeoBufWriter.asFeatureRecord(header, feature); } /** diff --git a/baremaps-flatgeobuf/src/main/java/org/apache/baremaps/flatgeobuf/FlatGeoBufWriter.java b/baremaps-flatgeobuf/src/main/java/org/apache/baremaps/flatgeobuf/FlatGeoBufWriter.java index 71ec6dd4..70ce5b78 100644 --- a/baremaps-flatgeobuf/src/main/java/org/apache/baremaps/flatgeobuf/FlatGeoBufWriter.java +++ b/baremaps-flatgeobuf/src/main/java/org/apache/baremaps/flatgeobuf/FlatGeoBufWriter.java @@ -42,7 +42,8 @@ public class FlatGeoBufWriter { writeHeaderFlatGeoBuf(channel, headerFlatGeoBuf); } - public static void writeHeaderFlatGeoBuf(WritableByteChannel channel, Header header) throws IOException { + public static void writeHeaderFlatGeoBuf(WritableByteChannel channel, Header header) + throws IOException { ByteBuffer headerBuffer = header.getByteBuffer(); ByteBuffer startBuffer = ByteBuffer.allocate(12).order(ByteOrder.LITTLE_ENDIAN); startBuffer.put(FlatGeoBuf.MAGIC_BYTES); @@ -70,7 +71,8 @@ public class FlatGeoBufWriter { } } - public static void writeFeatureFlatGeoBuf(WritableByteChannel channel, Feature feature) throws IOException { + public static void asFeatureRecord(WritableByteChannel channel, Feature feature) + throws IOException { ByteBuffer sizeBuffer = ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN); sizeBuffer.putInt(feature.getByteBuffer().remaining()); sizeBuffer.flip(); @@ -88,7 +90,7 @@ public class FlatGeoBufWriter { Header header, FlatGeoBuf.Feature feature) throws IOException { Feature featureRecord = writeFeature(header, feature); - writeFeatureFlatGeoBuf(channel, featureRecord); + asFeatureRecord(channel, featureRecord); } public static Header asHeaderRecord(FlatGeoBuf.Header header) { @@ -244,18 +246,19 @@ public class FlatGeoBufWriter { return Feature.getRootAsFeature(buffer); } - public static FlatGeoBuf.Feature writeFeatureFlatGeoBuf(Header header, Feature feature) { - var values = new ArrayList<>(); + public static FlatGeoBuf.Feature asFeatureRecord(Header header, Feature feature) { + var properties = new ArrayList<>(); if (feature.propertiesLength() > 0) { var propertiesBuffer = feature.propertiesAsByteBuffer(); while (propertiesBuffer.hasRemaining()) { var columnPosition = propertiesBuffer.getShort(); var columnType = header.columns(columnPosition); var columnValue = readValue(propertiesBuffer, columnType); - values.add(columnValue); + properties.add(columnValue); } } - return new FlatGeoBuf.Feature( - values, GeometryConversions.readGeometry(feature.geometry(), header.geometryType())); + Geometry geometry = + GeometryConversions.readGeometry(feature.geometry(), header.geometryType()); + return new FlatGeoBuf.Feature(properties, geometry); } } diff --git a/baremaps-flatgeobuf/src/test/java/org/apache/baremaps/flatgeobuf/FlatGeoBufTest.java b/baremaps-flatgeobuf/src/test/java/org/apache/baremaps/flatgeobuf/FlatGeoBufTest.java index fa5aa424..3c5c9a17 100644 --- a/baremaps-flatgeobuf/src/test/java/org/apache/baremaps/flatgeobuf/FlatGeoBufTest.java +++ b/baremaps-flatgeobuf/src/test/java/org/apache/baremaps/flatgeobuf/FlatGeoBufTest.java @@ -59,12 +59,13 @@ public class FlatGeoBufTest { ByteBuffer indexBuffer = FlatGeoBufReader.readIndexBuffer(channel, headerFlatGeoBuf1); FlatGeoBufWriter.writeIndexBuffer(tempChannel, indexBuffer); - // Copy the features + // Copy the features var buffer = ByteBuffer.allocate(1 << 10).order(ByteOrder.LITTLE_ENDIAN); for (int i = 0; i < headerFlatGeoBuf1.featuresCount(); i++) { Feature feature = FlatGeoBufReader.readFeatureFlatGeoBuf(channel, buffer); - FlatGeoBufWriter.writeFeatureFlatGeoBuf(tempChannel, feature); - FlatGeoBuf.Feature featureRecord = FlatGeoBufWriter.writeFeatureFlatGeoBuf(headerFlatGeoBuf1, feature); + FlatGeoBufWriter.asFeatureRecord(tempChannel, feature); + FlatGeoBuf.Feature featureRecord = + FlatGeoBufWriter.asFeatureRecord(headerFlatGeoBuf1, feature); featureRecords.add(featureRecord); } } @@ -85,7 +86,8 @@ public class FlatGeoBufTest { ByteBuffer buffer = ByteBuffer.allocate(1 << 10).order(ByteOrder.LITTLE_ENDIAN); for (int i = 0; i < headerFlatGeoBuf2.featuresCount(); i++) { Feature featureFlatGeoBuf = FlatGeoBufReader.readFeatureFlatGeoBuf(channel, buffer); - FlatGeoBuf.Feature featureRecord = FlatGeoBufWriter.writeFeatureFlatGeoBuf(headerFlatGeoBuf2, featureFlatGeoBuf); + FlatGeoBuf.Feature featureRecord = + FlatGeoBufWriter.asFeatureRecord(headerFlatGeoBuf2, featureFlatGeoBuf); assertNotNull(featureRecord); assertEquals(featureRecords.get(i), featureRecord); } @@ -103,7 +105,7 @@ public class FlatGeoBufTest { // Copy the file try (ReadableByteChannel channel = FileChannel.open(file, StandardOpenOption.READ); - WritableByteChannel tempChannel = FileChannel.open(tempFile, StandardOpenOption.WRITE)) { + WritableByteChannel tempChannel = FileChannel.open(tempFile, StandardOpenOption.WRITE)) { // Copy the header headerRecord1 = FlatGeoBufReader.readHeaderRecord(channel); @@ -117,7 +119,8 @@ public class FlatGeoBufTest { // Copy the features var buffer = ByteBuffer.allocate(1 << 10).order(ByteOrder.LITTLE_ENDIAN); for (int i = 0; i < headerFlatGeoBuf1.featuresCount(); i++) { - FlatGeoBuf.Feature feature = FlatGeoBufReader.readFeatureRecord(channel, headerFlatGeoBuf1, buffer); + FlatGeoBuf.Feature feature = + FlatGeoBufReader.readFeatureRecord(channel, headerFlatGeoBuf1, buffer); FlatGeoBufWriter.writeFeatureRecord(tempChannel, headerFlatGeoBuf1, feature); featureRecords.add(feature); } @@ -138,7 +141,8 @@ public class FlatGeoBufTest { // Read the features ByteBuffer buffer = ByteBuffer.allocate(1 << 10).order(ByteOrder.LITTLE_ENDIAN); for (int i = 0; i < headerFlatGeoBuf2.featuresCount(); i++) { - FlatGeoBuf.Feature featureRecord = FlatGeoBufReader.readFeatureRecord(channel, headerFlatGeoBuf2, buffer); + FlatGeoBuf.Feature featureRecord = + FlatGeoBufReader.readFeatureRecord(channel, headerFlatGeoBuf2, buffer); assertNotNull(featureRecord); assertEquals(featureRecords.get(i), featureRecord); }
