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 936f2a7742c77e9d32439795f3cc5a663ce945ed Author: Bertil Chapuis <[email protected]> AuthorDate: Fri Dec 23 00:54:37 2022 +0100 Simplify the coordinate and reference map builders --- .../org/apache/baremaps/database/ImportService.java | 8 ++++---- .../openstreetmap/function/CoordinateMapBuilder.java | 20 ++++++-------------- .../openstreetmap/function/ReferenceMapBuilder.java | 17 ++++++----------- .../baremaps/openstreetmap/pbf/PbfBlockReader.java | 12 ++++++------ 4 files changed, 22 insertions(+), 35 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 4df67cd3..3ef63825 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 @@ -60,12 +60,12 @@ public class ImportService implements Callable<Void> { 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 = entityGeometryBuilder.andThen(entityProjectionTransformer); + var entityHandler = entityGeometryHandler.andThen(entityProjectionTransformer); var blockEntitiesHandler = new BlockEntitiesHandler(entityHandler); - var blockHandler = - coordinateMapBuilder.andThen(referenceMapBuilder).andThen(blockEntitiesHandler); - var blockMapper = consumeThenReturn(blockHandler); + var blockMapper = consumeThenReturn(blockEntitiesHandler); var blockImporter = new BlockImporter(headerRepository, nodeRepository, wayRepository, relationRepository); try (InputStream inputStream = Files.newInputStream(path)) { diff --git a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/CoordinateMapBuilder.java b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/CoordinateMapBuilder.java index 38ba64fb..b0e1492b 100644 --- a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/CoordinateMapBuilder.java +++ b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/CoordinateMapBuilder.java @@ -16,13 +16,12 @@ package org.apache.baremaps.openstreetmap.function; import java.util.function.Consumer; import org.apache.baremaps.collection.LongDataMap; -import org.apache.baremaps.openstreetmap.model.Block; -import org.apache.baremaps.openstreetmap.model.DataBlock; -import org.apache.baremaps.stream.StreamException; +import org.apache.baremaps.openstreetmap.model.Entity; +import org.apache.baremaps.openstreetmap.model.Node; import org.locationtech.jts.geom.Coordinate; /** A consumer that stores openstreetmap coordinates in a map. */ -public class CoordinateMapBuilder implements Consumer<Block> { +public class CoordinateMapBuilder implements Consumer<Entity> { private final LongDataMap<Coordinate> coordinateMap; @@ -37,16 +36,9 @@ public class CoordinateMapBuilder implements Consumer<Block> { /** {@inheritDoc} */ @Override - public void accept(Block block) { - try { - if (block instanceof DataBlock dataBlock) { - dataBlock.getDenseNodes().stream().forEach( - node -> coordinateMap.put(node.getId(), new Coordinate(node.getLon(), node.getLat()))); - dataBlock.getNodes().stream().forEach( - node -> coordinateMap.put(node.getId(), new Coordinate(node.getLon(), node.getLat()))); - } - } catch (Exception e) { - throw new StreamException(e); + public void accept(Entity entity) { + if (entity instanceof Node node) { + coordinateMap.put(node.getId(), new Coordinate(node.getLon(), node.getLat())); } } } diff --git a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/ReferenceMapBuilder.java b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/ReferenceMapBuilder.java index 8be71b0b..6f720b1d 100644 --- a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/ReferenceMapBuilder.java +++ b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/ReferenceMapBuilder.java @@ -17,12 +17,11 @@ package org.apache.baremaps.openstreetmap.function; import java.util.List; import java.util.function.Consumer; import org.apache.baremaps.collection.LongDataMap; -import org.apache.baremaps.openstreetmap.model.Block; -import org.apache.baremaps.openstreetmap.model.DataBlock; -import org.apache.baremaps.stream.StreamException; +import org.apache.baremaps.openstreetmap.model.Entity; +import org.apache.baremaps.openstreetmap.model.Way; /** A consumer that stores openstreetmap references in a map. */ -public class ReferenceMapBuilder implements Consumer<Block> { +public class ReferenceMapBuilder implements Consumer<Entity> { private final LongDataMap<List<Long>> referenceMap; @@ -37,13 +36,9 @@ public class ReferenceMapBuilder implements Consumer<Block> { /** {@inheritDoc} */ @Override - public void accept(Block block) { - try { - if (block instanceof DataBlock dataBlock) { - dataBlock.getWays().stream().forEach(way -> referenceMap.put(way.getId(), way.getNodes())); - } - } catch (Exception e) { - throw new StreamException(e); + public void accept(Entity entity) { + if (entity instanceof Way way) { + referenceMap.put(way.getId(), way.getNodes()); } } } 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 73011102..c23b9a9e 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 @@ -150,13 +150,13 @@ public class PbfBlockReader implements OsmReader<Block> { 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 entityHandler = srid == 4326 ? entityGeometryBuilder - : entityGeometryBuilder.andThen(entityProjectionTransformer); - var blockEntitiesHandler = new BlockEntitiesHandler(entityHandler); - var blockHandler = - coordinateMapBuilder.andThen(referenceMapBuilder).andThen(blockEntitiesHandler); - var blockMapper = consumeThenReturn(blockHandler); + var entityProjectionHandler = srid == 4326 ? entityGeometryHandler + : entityGeometryHandler.andThen(entityProjectionTransformer); + var blockEntitiesHandler = new BlockEntitiesHandler(entityProjectionHandler); + var blockMapper = consumeThenReturn(blockEntitiesHandler); blocks = blocks.map(blockMapper); } return blocks;
