This is an automated email from the ASF dual-hosted git repository.

bchapuis pushed a commit to branch refactoring
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git

commit 918bc8ceb914e11abd3cc8b8664e02bb2623e590
Author: Bertil Chapuis <[email protected]>
AuthorDate: Fri Dec 23 08:51:31 2022 +0100

    Improve projection transformer
---
 .../org/apache/baremaps/database/ImportService.java    | 16 +++++++++++-----
 .../function/EntityProjectionTransformer.java          | 18 +++++++++++++-----
 .../baremaps/openstreetmap/pbf/PbfBlockReader.java     | 15 +++++++++------
 codestyle.xml                                          |  2 +-
 4 files changed, 34 insertions(+), 17 deletions(-)

diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/database/ImportService.java 
b/baremaps-core/src/main/java/org/apache/baremaps/database/ImportService.java
index 3ef63825..e3af0a56 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/database/ImportService.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/database/ImportService.java
@@ -57,20 +57,26 @@ public class ImportService implements Callable<Void> {
 
   @Override
   public Void call() throws Exception {
+    // Initialize and chain the entity handlers
     var coordinateMapBuilder = new CoordinateMapBuilder(coordinateMap);
     var referenceMapBuilder = new ReferenceMapBuilder(referenceMap);
     var entityGeometryBuilder = new EntityGeometryBuilder(coordinateMap, 
referenceMap);
-    var entityGeometryHandler =
-        
coordinateMapBuilder.andThen(referenceMapBuilder).andThen(entityGeometryBuilder);
     var entityProjectionTransformer = new EntityProjectionTransformer(4326, 
databaseSrid);
-    var entityHandler = 
entityGeometryHandler.andThen(entityProjectionTransformer);
-    var blockEntitiesHandler = new BlockEntitiesHandler(entityHandler);
-    var blockMapper = consumeThenReturn(blockEntitiesHandler);
+    var entityHandler = coordinateMapBuilder
+        .andThen(referenceMapBuilder)
+        .andThen(entityGeometryBuilder)
+        .andThen(entityProjectionTransformer);
+
+    // Initialize the block mapper
+    var blockMapper = consumeThenReturn(new 
BlockEntitiesHandler(entityHandler));
     var blockImporter =
         new BlockImporter(headerRepository, nodeRepository, wayRepository, 
relationRepository);
+
+    // Process the blocks
     try (InputStream inputStream = Files.newInputStream(path)) {
       batch(new 
PbfBlockReader().stream(inputStream).map(blockMapper)).forEach(blockImporter);
     }
+
     return null;
   }
 
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/EntityProjectionTransformer.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/EntityProjectionTransformer.java
index beb1a010..41a0096c 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/EntityProjectionTransformer.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/EntityProjectionTransformer.java
@@ -22,22 +22,30 @@ import org.locationtech.jts.geom.Geometry;
 /** Changes the projection of the geometry of an entity via side-effects. */
 public class EntityProjectionTransformer implements Consumer<Entity> {
 
+  private final int sourceSrid;
+
+  private final int targetSrid;
+
   private final ProjectionTransformer projectionTransformer;
 
   /**
    * Creates a consumer that reproject geometries with the provided SRIDs.
    *
-   * @param inputSRID the input SRID
-   * @param outputSRID the output SRID
+   * @param sourceSrid the source SRID
+   * @param targetSrid the target SRID
    */
-  public EntityProjectionTransformer(int inputSRID, int outputSRID) {
-    this.projectionTransformer = new ProjectionTransformer(inputSRID, 
outputSRID);
+  public EntityProjectionTransformer(int sourceSrid, int targetSrid) {
+    this.sourceSrid = sourceSrid;
+    this.targetSrid = targetSrid;
+    this.projectionTransformer = new ProjectionTransformer(sourceSrid, 
targetSrid);
   }
 
   /** {@inheritDoc} */
   @Override
   public void accept(Entity entity) {
-    if (entity instanceof Element element && element.getGeometry() != null) {
+    if (sourceSrid != targetSrid
+        && entity instanceof Element element
+        && element.getGeometry() != null) {
       Geometry geometry = 
projectionTransformer.transform(element.getGeometry());
       element.setGeometry(geometry);
     }
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/pbf/PbfBlockReader.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/pbf/PbfBlockReader.java
index c23b9a9e..42c442ca 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/pbf/PbfBlockReader.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/pbf/PbfBlockReader.java
@@ -147,16 +147,19 @@ public class PbfBlockReader implements OsmReader<Block> {
     var blocks = StreamUtils.bufferInSourceOrder(StreamUtils.stream(new 
BlobIterator(inputStream)),
         new BlobToBlockMapper(), Runtime.getRuntime().availableProcessors());
     if (geometry) {
+      // Initialize and chain the entity handlers
       var coordinateMapBuilder = new CoordinateMapBuilder(coordinateMap);
       var referenceMapBuilder = new ReferenceMapBuilder(referenceMap);
       var entityGeometryBuilder = new EntityGeometryBuilder(coordinateMap, 
referenceMap);
-      var entityGeometryHandler =
-          
coordinateMapBuilder.andThen(referenceMapBuilder).andThen(entityGeometryBuilder);
       var entityProjectionTransformer = new EntityProjectionTransformer(4326, 
srid);
-      var entityProjectionHandler = srid == 4326 ? entityGeometryHandler
-          : entityGeometryHandler.andThen(entityProjectionTransformer);
-      var blockEntitiesHandler = new 
BlockEntitiesHandler(entityProjectionHandler);
-      var blockMapper = consumeThenReturn(blockEntitiesHandler);
+      var entityHandler = coordinateMapBuilder
+          .andThen(referenceMapBuilder)
+          .andThen(entityGeometryBuilder)
+          .andThen(entityProjectionTransformer);
+
+      // Initialize the block mapper
+      var blockMapper = consumeThenReturn(new 
BlockEntitiesHandler(entityHandler));
+
       blocks = blocks.map(blockMapper);
     }
     return blocks;
diff --git a/codestyle.xml b/codestyle.xml
index 75a4c877..e7c3770e 100644
--- a/codestyle.xml
+++ b/codestyle.xml
@@ -65,7 +65,7 @@
     <setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" 
value="true"/>
     <setting 
id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments"
 value="do not insert"/>
     <setting 
id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations"
 value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" 
value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" 
value="false"/>
     <setting 
id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" 
value="insert"/>
     <setting 
id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call"
 value="16"/>
     <setting 
id="org.eclipse.jdt.core.formatter.wrap_non_simple_local_variable_annotation" 
value="true"/>

Reply via email to