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 f5fd44cf33d23f6a8d2b0921cc38289805208d78 Author: Bertil Chapuis <[email protected]> AuthorDate: Thu Dec 22 23:54:56 2022 +0100 Split the coordinate and reference map builders --- .../java/org/apache/baremaps/database/ImportService.java | 16 ++++++++-------- .../{CacheBuilder.java => CoordinateMapBuilder.java} | 13 ++++--------- .../{CacheBuilder.java => ReferenceMapBuilder.java} | 16 ++++------------ .../baremaps/openstreetmap/pbf/PbfBlockReader.java | 7 +++++-- 4 files changed, 21 insertions(+), 31 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 ab1b58ad..4df67cd3 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 @@ -23,10 +23,7 @@ import java.util.concurrent.Callable; import org.apache.baremaps.collection.LongDataMap; import org.apache.baremaps.database.repository.HeaderRepository; import org.apache.baremaps.database.repository.Repository; -import org.apache.baremaps.openstreetmap.function.BlockEntitiesHandler; -import org.apache.baremaps.openstreetmap.function.CacheBuilder; -import org.apache.baremaps.openstreetmap.function.EntityGeometryBuilder; -import org.apache.baremaps.openstreetmap.function.EntityProjectionTransformer; +import org.apache.baremaps.openstreetmap.function.*; import org.apache.baremaps.openstreetmap.model.Node; import org.apache.baremaps.openstreetmap.model.Relation; import org.apache.baremaps.openstreetmap.model.Way; @@ -60,12 +57,15 @@ public class ImportService implements Callable<Void> { @Override public Void call() throws Exception { - var cacheBuilder = new CacheBuilder(coordinateMap, referenceMap); + var coordinateMapBuilder = new CoordinateMapBuilder(coordinateMap); + var referenceMapBuilder = new ReferenceMapBuilder(referenceMap); var entityGeometryBuilder = new EntityGeometryBuilder(coordinateMap, referenceMap); var entityProjectionTransformer = new EntityProjectionTransformer(4326, databaseSrid); - var blockEntitiesHandler = - new BlockEntitiesHandler(entityGeometryBuilder.andThen(entityProjectionTransformer)); - var blockMapper = consumeThenReturn(cacheBuilder.andThen(blockEntitiesHandler)); + var entityHandler = entityGeometryBuilder.andThen(entityProjectionTransformer); + var blockEntitiesHandler = new BlockEntitiesHandler(entityHandler); + var blockHandler = + coordinateMapBuilder.andThen(referenceMapBuilder).andThen(blockEntitiesHandler); + var blockMapper = consumeThenReturn(blockHandler); 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/CacheBuilder.java b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/CoordinateMapBuilder.java similarity index 73% copy from baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/CacheBuilder.java copy to baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/CoordinateMapBuilder.java index 435867eb..f4f10749 100644 --- a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/CacheBuilder.java +++ b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/CoordinateMapBuilder.java @@ -14,7 +14,6 @@ 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; @@ -22,21 +21,18 @@ import org.apache.baremaps.openstreetmap.model.DataBlock; import org.apache.baremaps.stream.StreamException; import org.locationtech.jts.geom.Coordinate; -/** A consumer that caches openstreetmap coordinates and references. */ -public class CacheBuilder implements Consumer<Block> { +/** A consumer that caches openstreetmap coordinates in a map. */ +public class CoordinateMapBuilder implements Consumer<Block> { private final LongDataMap<Coordinate> coordinateMap; - private final LongDataMap<List<Long>> referenceMap; /** - * Constructs a {@code CacheBlockConsumer} with the provided caches. + * Constructs a {@code CacheBlockConsumer} with the provided map. * * @param coordinateMap the map of coordinates - * @param referenceMap the map of references */ - public CacheBuilder(LongDataMap<Coordinate> coordinateMap, LongDataMap<List<Long>> referenceMap) { + public CoordinateMapBuilder(LongDataMap<Coordinate> coordinateMap) { this.coordinateMap = coordinateMap; - this.referenceMap = referenceMap; } /** {@inheritDoc} */ @@ -48,7 +44,6 @@ public class CacheBuilder implements Consumer<Block> { 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()))); - dataBlock.getWays().stream().forEach(way -> referenceMap.put(way.getId(), way.getNodes())); } } catch (Exception e) { throw new StreamException(e); diff --git a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/CacheBuilder.java b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/ReferenceMapBuilder.java similarity index 63% rename from baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/CacheBuilder.java rename to baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/ReferenceMapBuilder.java index 435867eb..14791908 100644 --- a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/CacheBuilder.java +++ b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/ReferenceMapBuilder.java @@ -20,22 +20,18 @@ 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.locationtech.jts.geom.Coordinate; -/** A consumer that caches openstreetmap coordinates and references. */ -public class CacheBuilder implements Consumer<Block> { +/** A consumer that caches openstreetmap references in a map. */ +public class ReferenceMapBuilder implements Consumer<Block> { - private final LongDataMap<Coordinate> coordinateMap; private final LongDataMap<List<Long>> referenceMap; /** - * Constructs a {@code CacheBlockConsumer} with the provided caches. + * Constructs a {@code CacheBlockConsumer} with the provided map. * - * @param coordinateMap the map of coordinates * @param referenceMap the map of references */ - public CacheBuilder(LongDataMap<Coordinate> coordinateMap, LongDataMap<List<Long>> referenceMap) { - this.coordinateMap = coordinateMap; + public ReferenceMapBuilder(LongDataMap<List<Long>> referenceMap) { this.referenceMap = referenceMap; } @@ -44,10 +40,6 @@ public class CacheBuilder implements Consumer<Block> { 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()))); dataBlock.getWays().stream().forEach(way -> referenceMap.put(way.getId(), way.getNodes())); } } catch (Exception e) { 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 7e74c969..73011102 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,13 +147,16 @@ public class PbfBlockReader implements OsmReader<Block> { var blocks = StreamUtils.bufferInSourceOrder(StreamUtils.stream(new BlobIterator(inputStream)), new BlobToBlockMapper(), Runtime.getRuntime().availableProcessors()); if (geometry) { - var cacheBuilder = new CacheBuilder(coordinateMap, referenceMap); + var coordinateMapBuilder = new CoordinateMapBuilder(coordinateMap); + var referenceMapBuilder = new ReferenceMapBuilder(referenceMap); var entityGeometryBuilder = new EntityGeometryBuilder(coordinateMap, referenceMap); var entityProjectionTransformer = new EntityProjectionTransformer(4326, srid); var entityHandler = srid == 4326 ? entityGeometryBuilder : entityGeometryBuilder.andThen(entityProjectionTransformer); var blockEntitiesHandler = new BlockEntitiesHandler(entityHandler); - var blockMapper = consumeThenReturn(cacheBuilder.andThen(blockEntitiesHandler)); + var blockHandler = + coordinateMapBuilder.andThen(referenceMapBuilder).andThen(blockEntitiesHandler); + var blockMapper = consumeThenReturn(blockHandler); blocks = blocks.map(blockMapper); } return blocks;
