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/05/09 08:38:40 UTC
(incubator-baremaps) 03/06: Dissociate the data collection api from the standard library
This is an automated email from the ASF dual-hosted git repository.
bchapuis pushed a commit to branch modularization
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git
commit 0ecc7f131ed681fa31344639671abf566a49f8b0
Author: Bertil Chapuis <bc...@gmail.com>
AuthorDate: Sat May 4 13:53:38 2024 +0200
Dissociate the data collection api from the standard library
---
.../baremaps/database/algorithm/BinarySearch.java | 4 +-
.../database/algorithm/ExternalMergeSort.java | 4 +-
.../baremaps/database/calcite/SqlDataTable.java | 8 +-
.../database/collection/AppendOnlyLog.java | 13 ++-
.../database/collection/DataCollection.java | 74 ++++++++++++--
...ctionAdapter.java => DataCollectionMapper.java} | 24 ++---
.../baremaps/database/collection/DataList.java | 18 ++--
.../baremaps/database/collection/DataMap.java | 109 +++++++--------------
.../database/collection/FixedSizeDataList.java | 14 +--
.../database/collection/IndexedDataList.java | 16 +--
.../database/collection/IndexedDataMap.java | 22 ++---
...AbstractDataCollection.java => MapAdapter.java} | 38 ++++---
.../database/collection/MemoryAlignedDataList.java | 4 +-
.../database/collection/MemoryAlignedDataMap.java | 27 +++--
.../database/collection/MonotonicDataMap.java | 30 +++---
.../collection/MonotonicFixedSizeDataMap.java | 24 ++---
.../collection/MonotonicPairedDataMap.java | 26 ++---
.../database/schema/AbstractDataTable.java | 28 ------
.../baremaps/database/schema/DataTableAdapter.java | 16 +--
.../baremaps/database/schema/DataTableImpl.java | 29 +++---
.../openstreetmap/xml/XmlEntityReader.java | 14 +--
.../storage/flatgeobuf/FlatGeoBufDataTable.java | 19 ++--
.../storage/geopackage/GeoPackageDataTable.java | 10 +-
.../storage/postgres/PostgresDataTable.java | 11 ++-
.../storage/shapefile/ShapefileDataTable.java | 17 ++--
.../apache/baremaps/workflow/WorkflowContext.java | 8 +-
.../tasks/CreateGeocoderOpenStreetMap.java | 6 +-
.../baremaps/database/AppendOnlyLogTest.java | 6 +-
.../org/apache/baremaps/database/DataMapTest.java | 6 +-
.../database/sort/ExternalMergeSortTest.java | 2 +-
.../apache/baremaps/openstreetmap/OsmTestData.java | 9 +-
.../EntityDataTypeGeometryBuilderTest.java | 10 +-
.../baremaps/openstreetmap/store/MockDataMap.java | 90 -----------------
.../org/apache/baremaps/storage/MockDataTable.java | 11 ++-
.../flatgeobuf/FlatGeoBufDataTableTest.java | 5 +-
.../geopackage/GeoPackageDataSchemaTest.java | 2 +-
.../geopackage/GeoPackageToPostgresTest.java | 2 +-
.../storage/postgres/PostgresDataTableTest.java | 2 +-
.../workflow/tasks/ImportUpdateSampleTest.java | 9 +-
39 files changed, 349 insertions(+), 418 deletions(-)
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/algorithm/BinarySearch.java b/baremaps-core/src/main/java/org/apache/baremaps/database/algorithm/BinarySearch.java
index cc9bf656..2bd799a7 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/algorithm/BinarySearch.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/algorithm/BinarySearch.java
@@ -38,7 +38,7 @@ public class BinarySearch {
* @param <E> the type of the elements in the list
*/
public static <E> Long binarySearch(DataList<E> list, E value, Comparator<E> comparator) {
- return binarySearch(list, value, comparator, 0, list.sizeAsLong() - 1l);
+ return binarySearch(list, value, comparator, 0, list.size() - 1l);
}
/**
@@ -87,7 +87,7 @@ public class BinarySearch {
A value,
Comparator<A> comparator) {
long lo = 0;
- long hi = list.sizeAsLong() - 1l;
+ long hi = list.size() - 1l;
while (lo <= hi) {
long mi = (lo + hi) >>> 1;
E e = list.get(mi);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/algorithm/ExternalMergeSort.java b/baremaps-core/src/main/java/org/apache/baremaps/database/algorithm/ExternalMergeSort.java
index 270b34e9..6480ab72 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/algorithm/ExternalMergeSort.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/algorithm/ExternalMergeSort.java
@@ -78,7 +78,7 @@ public class ExternalMergeSort {
new PriorityQueue<>(batches.size(), (i, j) -> comparator.compare(i.peek(), j.peek()));
for (DataList<T> input : batches) {
- if (input.sizeAsLong() == 0) {
+ if (input.size() == 0) {
continue;
}
DataStack stack = new DataStack(input);
@@ -221,7 +221,7 @@ public class ExternalMergeSort {
}
public boolean empty() {
- return this.index > list.sizeAsLong();
+ return this.index > list.size();
}
public T peek() {
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/calcite/SqlDataTable.java b/baremaps-core/src/main/java/org/apache/baremaps/database/calcite/SqlDataTable.java
index b6e03adc..133ec26e 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/calcite/SqlDataTable.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/calcite/SqlDataTable.java
@@ -17,8 +17,8 @@
package org.apache.baremaps.database.calcite;
-import java.util.Collection;
-import org.apache.baremaps.database.collection.DataCollectionAdapter;
+import org.apache.baremaps.database.collection.DataCollection;
+import org.apache.baremaps.database.collection.DataCollectionMapper;
import org.apache.baremaps.database.schema.DataColumn;
import org.apache.baremaps.database.schema.DataTable;
import org.apache.calcite.DataContext;
@@ -44,8 +44,8 @@ class SqlDataTable extends AbstractTable implements ScannableTable {
@Override
public Enumerable<Object[]> scan(final DataContext root) {
- Collection<Object[]> collection =
- new DataCollectionAdapter<>(table, row -> row.values().toArray());
+ DataCollection<Object[]> collection =
+ new DataCollectionMapper<>(table, row -> row.values().toArray());
return Linq4j.asEnumerable(collection);
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/AppendOnlyLog.java b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/AppendOnlyLog.java
index e3f41709..ea4cd2db 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/AppendOnlyLog.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/AppendOnlyLog.java
@@ -36,7 +36,7 @@ import org.apache.baremaps.database.type.DataType;
*
* @param <E> The type of the data.
*/
-public class AppendOnlyLog<E> implements Iterable<E> {
+public class AppendOnlyLog<E> implements DataCollection<E> {
private final DataType<E> dataType;
private final Memory<?> memory;
@@ -75,7 +75,7 @@ public class AppendOnlyLog<E> implements Iterable<E> {
* @param value the value
* @return the position of the value in the memory.
*/
- public long add(E value) {
+ public long addPositioned(E value) {
int valueSize = dataType.size(value);
if (valueSize > segmentSize) {
throw new DataCollectionException("The value is too big to fit in a segment");
@@ -101,6 +101,13 @@ public class AppendOnlyLog<E> implements Iterable<E> {
return position;
}
+ @Override
+ public boolean add(E e) {
+ addPositioned(e);
+ return true;
+ }
+
+
/**
* Returns a values at the specified position in the memory.
*
@@ -143,6 +150,7 @@ public class AppendOnlyLog<E> implements Iterable<E> {
/**
* Returns an iterator over the values of the log.
+ *
* @return an iterator over the values of the log
*/
@Override
@@ -153,6 +161,7 @@ public class AppendOnlyLog<E> implements Iterable<E> {
/**
* Returns true if the log contains the specified value.
+ *
* @param value the value
* @return true if the log contains the specified value
*/
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/DataCollection.java b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/DataCollection.java
index f6b46112..bbf1b316 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/DataCollection.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/DataCollection.java
@@ -18,19 +18,81 @@
package org.apache.baremaps.database.collection;
import java.util.Collection;
+import java.util.Iterator;
+import java.util.Spliterator;
+import java.util.Spliterators;
+import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
-public interface DataCollection<E> extends Collection<E> {
+public interface DataCollection<E> extends Iterable<E> {
/**
- * Returns the number of values stored in the data store.
+ * Returns the number of values stored in the data collection.
*
* @return the number of values
*/
- long sizeAsLong();
+ long size();
- /** {@inheritDoc} */
- default int size() {
- return (int) Math.min(sizeAsLong(), Integer.MAX_VALUE);
+ default boolean isEmpty() {
+ return size() == 0;
}
+ Iterator<E> iterator();
+
+ default Spliterator<E> spliterator() {
+ return Spliterators.spliterator(iterator(), size(), Spliterator.ORDERED);
+ }
+
+ default Stream<E> stream() {
+ return StreamSupport.stream(spliterator(), false);
+ }
+
+ default boolean add(E e) {
+ throw new UnsupportedOperationException();
+ }
+
+ default boolean addAll(Collection<? extends E> c) {
+ boolean modified = false;
+ for (E e : c) {
+ if (add(e)) {
+ modified = true;
+ }
+ }
+ return modified;
+ }
+
+ default boolean remove(Object o) {
+ throw new UnsupportedOperationException();
+ }
+
+ default boolean removeAll(Collection<?> c) {
+ boolean modified = false;
+ for (Object o : c) {
+ if (remove(o)) {
+ modified = true;
+ }
+ }
+ return modified;
+ }
+
+ default boolean contains(Object o) {
+ for (E e : this) {
+ if (e.equals(o)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ default boolean containsAll(Collection<?> c) {
+ for (Object o : c) {
+ if (!contains(o)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ void clear();
+
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/DataCollectionAdapter.java b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/DataCollectionMapper.java
similarity index 73%
rename from baremaps-core/src/main/java/org/apache/baremaps/database/collection/DataCollectionAdapter.java
rename to baremaps-core/src/main/java/org/apache/baremaps/database/collection/DataCollectionMapper.java
index be04534d..70b0ecc5 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/DataCollectionAdapter.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/DataCollectionMapper.java
@@ -24,21 +24,26 @@ import java.util.function.Function;
/**
* A decorator for a table that transforms the geometries of the rows.
*/
-public class DataCollectionAdapter<S, T> extends AbstractDataCollection<T> {
+public class DataCollectionMapper<S, T> implements DataCollection<T> {
private final DataCollection<S> collection;
- private final Function<S, T> transformer;
+ private final Function<S, T> mapper;
/**
* Constructs a new table decorator.
*
* @param collection the table to decorate
- * @param transformer the row transformer
+ * @param mapper the row transformer
*/
- public DataCollectionAdapter(DataCollection<S> collection, Function<S, T> transformer) {
+ public DataCollectionMapper(DataCollection<S> collection, Function<S, T> mapper) {
this.collection = collection;
- this.transformer = transformer;
+ this.mapper = mapper;
+ }
+
+ @Override
+ public long size() {
+ return collection.size();
}
/**
@@ -46,14 +51,11 @@ public class DataCollectionAdapter<S, T> extends AbstractDataCollection<T> {
*/
@Override
public Iterator<T> iterator() {
- return collection.stream().map(this.transformer).iterator();
+ return collection.stream().map(this.mapper).iterator();
}
- /**
- * {@inheritDoc}
- */
@Override
- public long sizeAsLong() {
- return collection.sizeAsLong();
+ public void clear() {
+ collection.clear();
}
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/DataList.java b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/DataList.java
index c6a46d92..41f08e28 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/DataList.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/DataList.java
@@ -27,7 +27,7 @@ import java.util.NoSuchElementException;
*
* @param <E> The type of the data.
*/
-public abstract class DataList<E> extends AbstractDataCollection<E> {
+public interface DataList<E> extends DataCollection<E> {
/**
* Appends a value to the list and returns its index.
@@ -35,13 +35,13 @@ public abstract class DataList<E> extends AbstractDataCollection<E> {
* @param value the value
* @return the index of the value.
*/
- public abstract long addIndexed(E value);
+ long addIndexed(E value);
/**
* {@inheritDoc}
*/
@Override
- public boolean add(E value) {
+ default boolean add(E value) {
addIndexed(value);
return true;
}
@@ -52,7 +52,7 @@ public abstract class DataList<E> extends AbstractDataCollection<E> {
* @param index the index
* @param value the value
*/
- public abstract void set(long index, E value);
+ void set(long index, E value);
/**
* Returns the value at the specified index.
@@ -60,20 +60,16 @@ public abstract class DataList<E> extends AbstractDataCollection<E> {
* @param index the index
* @return the value
*/
- public abstract E get(long index);
+ E get(long index);
/** {@inheritDoc} */
@Override
- public abstract void clear();
-
- /** {@inheritDoc} */
- @Override
- public Iterator<E> iterator() {
+ default Iterator<E> iterator() {
return new Iterator<>() {
private long index = 0;
- private long size = sizeAsLong();
+ private long size = size();
@Override
public boolean hasNext() {
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/DataMap.java b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/DataMap.java
index 925b002c..b2d5258e 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/DataMap.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/DataMap.java
@@ -18,20 +18,32 @@
package org.apache.baremaps.database.collection;
-
import com.google.common.collect.Streams;
import java.util.*;
+import java.util.Map.Entry;
/**
* An abstract map of data elements that can hold a large number of elements.
*
* @param <V> The type of the elements.
*/
-public abstract class DataMap<K, V> implements Map<K, V> {
+public interface DataMap<K, V> {
- /** {@inheritDoc} */
- @Override
- public void putAll(Map<? extends K, ? extends V> m) {
+ long size();
+
+ V get(Object key);
+
+ V put(K key, V value);
+
+ V remove(Object key);
+
+ void clear();
+
+ boolean containsKey(Object key);
+
+ boolean containsValue(Object value);
+
+ default void putAll(Map<? extends K, ? extends V> m) {
m.forEach(this::put);
}
@@ -41,100 +53,51 @@ public abstract class DataMap<K, V> implements Map<K, V> {
* @param keys the keys
* @return the values
*/
- public List<V> getAll(List<K> keys) {
+ default List<V> getAll(List<K> keys) {
return Streams.stream(keys).map(this::get).toList();
}
/** {@inheritDoc} */
- @Override
- public boolean isEmpty() {
+ default boolean isEmpty() {
return size() == 0;
}
- /**
- * Returns the size of the map as a long.
- *
- * @return the size of the map
- */
- public abstract long sizeAsLong();
-
- /** {@inheritDoc} */
- public int size() {
- return (int) Math.min(sizeAsLong(), Integer.MAX_VALUE);
- }
-
/**
* Returns an iterator over the keys of the map.
*
* @return an iterator
*/
- protected abstract Iterator<K> keyIterator();
-
- /** {@inheritDoc} */
- @Override
- public Set<K> keySet() {
- return new KeySet();
- }
-
- private class KeySet extends AbstractSet<K> {
- @Override
- public Iterator<K> iterator() {
- return keyIterator();
- }
-
- @Override
- public int size() {
- return DataMap.this.size();
- }
- }
+ Iterator<K> keyIterator();
/**
* Returns an iterator over the values of the map.
*
* @return an iterator
*/
- protected abstract Iterator<V> valueIterator();
-
- /** {@inheritDoc} */
- @Override
- public Collection<V> values() {
- return new ValueCollection();
- }
-
- private class ValueCollection extends AbstractCollection<V> {
- @Override
- public Iterator<V> iterator() {
- return valueIterator();
- }
-
- @Override
- public int size() {
- return DataMap.this.size();
- }
- }
+ Iterator<V> valueIterator();
/**
* Returns an iterator over the entries of the map.
*
* @return an iterator
*/
- protected abstract Iterator<Entry<K, V>> entryIterator();
+ Iterator<Entry<K, V>> entryIterator();
/** {@inheritDoc} */
- @Override
- public Set<Entry<K, V>> entrySet() {
- return new EntrySet();
+ default Set<Entry<K, V>> entrySet() {
+ int size = (int) size();
+ return new AbstractSet<>() {
+
+ @Override
+ public Iterator<Entry<K, V>> iterator() {
+ return entryIterator();
+ }
+
+ @Override
+ public int size() {
+ return size;
+ }
+ };
}
- private class EntrySet extends AbstractSet<Entry<K, V>> {
- @Override
- public Iterator<Entry<K, V>> iterator() {
- return entryIterator();
- }
-
- @Override
- public int size() {
- return DataMap.this.size();
- }
- }
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/FixedSizeDataList.java b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/FixedSizeDataList.java
index e48dad64..a12c9d8f 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/FixedSizeDataList.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/FixedSizeDataList.java
@@ -19,7 +19,6 @@ package org.apache.baremaps.database.collection;
-import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.concurrent.atomic.AtomicLong;
import org.apache.baremaps.database.memory.Memory;
@@ -33,7 +32,7 @@ import org.apache.baremaps.database.type.FixedSizeDataType;
*
* @param <E> The type of the elements.
*/
-public class FixedSizeDataList<E> extends DataList<E> {
+public class FixedSizeDataList<E> implements DataList<E> {
private final FixedSizeDataType<E> dataType;
@@ -88,7 +87,7 @@ public class FixedSizeDataList<E> extends DataList<E> {
*/
@Override
public void set(long index, E value) {
- if (index >= sizeAsLong()) {
+ if (index >= size()) {
throw new IndexOutOfBoundsException();
}
write(index, value);
@@ -110,7 +109,7 @@ public class FixedSizeDataList<E> extends DataList<E> {
* {@inheritDoc}
*/
@Override
- public long sizeAsLong() {
+ public long size() {
return size.get();
}
@@ -119,11 +118,6 @@ public class FixedSizeDataList<E> extends DataList<E> {
*/
@Override
public void clear() {
- try {
- size.set(0);
- memory.clear();
- } catch (IOException e) {
- throw new DataCollectionException(e);
- }
+ size.set(0);
}
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/IndexedDataList.java b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/IndexedDataList.java
index 5bb51c63..a74dac94 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/IndexedDataList.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/IndexedDataList.java
@@ -28,7 +28,7 @@ import org.apache.baremaps.database.type.LongDataType;
*
* @param <E> The type of the elements.
*/
-public class IndexedDataList<E> extends DataList<E> {
+public class IndexedDataList<E> implements DataList<E> {
private final DataList<Long> index;
@@ -60,7 +60,7 @@ public class IndexedDataList<E> extends DataList<E> {
*/
@Override
public long addIndexed(E value) {
- long position = values.add(value);
+ long position = values.addPositioned(value);
return index.addIndexed(position);
}
@@ -69,7 +69,7 @@ public class IndexedDataList<E> extends DataList<E> {
*/
@Override
public void set(long index, E value) {
- long position = values.add(value);
+ long position = values.addPositioned(value);
this.index.set(index, position);
}
@@ -82,17 +82,11 @@ public class IndexedDataList<E> extends DataList<E> {
return values.read(position);
}
- /**
- * {@inheritDoc}
- */
@Override
- public long sizeAsLong() {
- return index.sizeAsLong();
+ public long size() {
+ return index.size();
}
- /**
- * {@inheritDoc}
- */
@Override
public void clear() {
index.clear();
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/IndexedDataMap.java b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/IndexedDataMap.java
index 610e67ef..82d33018 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/IndexedDataMap.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/IndexedDataMap.java
@@ -23,6 +23,7 @@ import com.google.common.collect.Streams;
import it.unimi.dsi.fastutil.longs.Long2LongOpenHashMap;
import java.util.Iterator;
import java.util.Map;
+import java.util.Map.Entry;
/**
* A map that can hold a large number of variable size data elements.
@@ -31,7 +32,7 @@ import java.util.Map;
*
* @param <E> The type of the elements.
*/
-public class IndexedDataMap<E> extends DataMap<Long, E> {
+public class IndexedDataMap<E> implements DataMap<Long, E> {
private final Map<Long, Long> index;
@@ -63,7 +64,7 @@ public class IndexedDataMap<E> extends DataMap<Long, E> {
@Override
public E put(Long key, E value) {
var oldIndex = index.get(key);
- var position = values.add(value);
+ var position = values.addPositioned(value);
index.put(key, position);
return oldIndex == null ? null : values.read(oldIndex);
}
@@ -81,7 +82,7 @@ public class IndexedDataMap<E> extends DataMap<Long, E> {
* {@inheritDoc}
*/
@Override
- protected Iterator<Long> keyIterator() {
+ public Iterator<Long> keyIterator() {
return index.keySet().iterator();
}
@@ -89,15 +90,12 @@ public class IndexedDataMap<E> extends DataMap<Long, E> {
* {@inheritDoc}
*/
@Override
- protected Iterator<E> valueIterator() {
+ public Iterator<E> valueIterator() {
return Streams.stream(keyIterator()).map(this::get).iterator();
}
- /**
- * {@inheritDoc}
- */
@Override
- protected Iterator<Entry<Long, E>> entryIterator() {
+ public Iterator<Entry<Long, E>> entryIterator() {
return Streams.stream(keyIterator()).map(k -> Map.entry(k, get(k))).iterator();
}
@@ -113,12 +111,8 @@ public class IndexedDataMap<E> extends DataMap<Long, E> {
* {@inheritDoc}
*/
@Override
- public long sizeAsLong() {
- if (index instanceof DataMap<?, ?>dataMap) {
- return dataMap.sizeAsLong();
- } else {
- return index.size();
- }
+ public long size() {
+ return index.size();
}
/**
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/AbstractDataCollection.java b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MapAdapter.java
similarity index 58%
rename from baremaps-core/src/main/java/org/apache/baremaps/database/collection/AbstractDataCollection.java
rename to baremaps-core/src/main/java/org/apache/baremaps/database/collection/MapAdapter.java
index 49087b37..303c9c3c 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/AbstractDataCollection.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MapAdapter.java
@@ -17,25 +17,33 @@
package org.apache.baremaps.database.collection;
+import java.util.AbstractMap;
+import java.util.AbstractSet;
+import java.util.Iterator;
+import java.util.Set;
+public class MapAdapter<K, V> extends AbstractMap<K, V> {
-import java.util.AbstractCollection;
-
-/**
- * An abstract collection of data elements that can hold a large number of elements.
- *
- * @param <E> The type of the data.
- */
-public abstract class AbstractDataCollection<E> extends AbstractCollection<E>
- implements DataCollection<E> {
+ private final DataMap<K, V> dataMap;
+ private final int size;
+ public MapAdapter(DataMap<K, V> dataMap) {
+ this.dataMap = dataMap;
+ this.size = (int) dataMap.size();
+ }
- /**
- * {@inheritDoc}
- */
@Override
- public int size() {
- return (int) Math.min(sizeAsLong(), Integer.MAX_VALUE);
+ public Set<Entry<K, V>> entrySet() {
+ return new AbstractSet<>() {
+ @Override
+ public Iterator<Entry<K, V>> iterator() {
+ return dataMap.entryIterator();
+ }
+
+ @Override
+ public int size() {
+ return size;
+ }
+ };
}
-
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MemoryAlignedDataList.java b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MemoryAlignedDataList.java
index e4afb006..931ed536 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MemoryAlignedDataList.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MemoryAlignedDataList.java
@@ -33,7 +33,7 @@ import org.apache.baremaps.database.type.FixedSizeDataType;
*
* @param <E> The type of the elements.
*/
-public class MemoryAlignedDataList<E> extends DataList<E> {
+public class MemoryAlignedDataList<E> implements DataList<E> {
private final FixedSizeDataType<E> dataType;
@@ -114,7 +114,7 @@ public class MemoryAlignedDataList<E> extends DataList<E> {
/** {@inheritDoc} */
@Override
- public long sizeAsLong() {
+ public long size() {
return size.get();
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MemoryAlignedDataMap.java b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MemoryAlignedDataMap.java
index ee7a4bdb..db439637 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MemoryAlignedDataMap.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MemoryAlignedDataMap.java
@@ -22,6 +22,7 @@ package org.apache.baremaps.database.collection;
import java.nio.ByteBuffer;
import java.util.Iterator;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.NoSuchElementException;
import org.apache.baremaps.database.memory.Memory;
import org.apache.baremaps.database.type.FixedSizeDataType;
@@ -32,7 +33,7 @@ import org.apache.baremaps.database.type.FixedSizeDataType;
* <p>
* This code has been adapted from Planetiler (Apache license).
*/
-public class MemoryAlignedDataMap<E> extends DataMap<Long, E> {
+public class MemoryAlignedDataMap<E> implements DataMap<Long, E> {
private final FixedSizeDataType<E> dataType;
@@ -108,12 +109,18 @@ public class MemoryAlignedDataMap<E> extends DataMap<Long, E> {
/** {@inheritDoc} */
@Override
public boolean containsValue(Object value) {
- return values().contains(value);
+ Iterator<E> iterator = valueIterator();
+ while (iterator.hasNext()) {
+ if (iterator.next().equals(value)) {
+ return true;
+ }
+ }
+ return false;
}
/** {@inheritDoc} */
@Override
- public long sizeAsLong() {
+ public long size() {
return memory.size() / dataType.size();
}
@@ -125,12 +132,12 @@ public class MemoryAlignedDataMap<E> extends DataMap<Long, E> {
/** {@inheritDoc} */
@Override
- protected Iterator<Long> keyIterator() {
+ public Iterator<Long> keyIterator() {
return new Iterator<>() {
private long index = 0;
- private long size = sizeAsLong();
+ private long size = size();
@Override
public boolean hasNext() {
@@ -149,12 +156,12 @@ public class MemoryAlignedDataMap<E> extends DataMap<Long, E> {
/** {@inheritDoc} */
@Override
- protected Iterator<E> valueIterator() {
+ public Iterator<E> valueIterator() {
return new Iterator<>() {
private long index = 0;
- private long size = sizeAsLong();
+ private long size = size();
@Override
public boolean hasNext() {
@@ -171,14 +178,13 @@ public class MemoryAlignedDataMap<E> extends DataMap<Long, E> {
};
}
- /** {@inheritDoc} */
@Override
- protected Iterator<Entry<Long, E>> entryIterator() {
+ public Iterator<Entry<Long, E>> entryIterator() {
return new Iterator<>() {
private long index = 0;
- private long size = sizeAsLong();
+ private long size = size();
@Override
public boolean hasNext() {
@@ -195,4 +201,5 @@ public class MemoryAlignedDataMap<E> extends DataMap<Long, E> {
}
};
}
+
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MonotonicDataMap.java b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MonotonicDataMap.java
index 01f24842..732a63d2 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MonotonicDataMap.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MonotonicDataMap.java
@@ -21,6 +21,7 @@ package org.apache.baremaps.database.collection;
import java.util.Iterator;
import java.util.Map;
+import java.util.Map.Entry;
import org.apache.baremaps.database.type.LongDataType;
import org.apache.baremaps.database.type.PairDataType;
import org.apache.baremaps.database.type.PairDataType.Pair;
@@ -36,7 +37,7 @@ import org.apache.baremaps.database.type.PairDataType.Pair;
* <p>
* Copyright (c) Planetiler.
*/
-public class MonotonicDataMap<E> extends DataMap<Long, E> {
+public class MonotonicDataMap<E> implements DataMap<Long, E> {
private final DataList<Long> offsets;
private final DataList<Pair<Long, Long>> keys;
@@ -85,15 +86,15 @@ public class MonotonicDataMap<E> extends DataMap<Long, E> {
/** {@inheritDoc} */
public E put(Long key, E value) {
- long index = keys.sizeAsLong();
+ long index = keys.size();
long chunk = key >>> 8;
if (chunk != lastChunk) {
- while (offsets.sizeAsLong() <= chunk) {
+ while (offsets.size() <= chunk) {
offsets.add(index);
}
lastChunk = chunk;
}
- long position = values.add(value);
+ long position = values.addPositioned(value);
keys.add(new Pair<>(key, position));
return null;
}
@@ -102,15 +103,15 @@ public class MonotonicDataMap<E> extends DataMap<Long, E> {
public E get(Object keyObject) {
long key = (long) keyObject;
long chunk = key >>> 8;
- if (chunk >= offsets.sizeAsLong()) {
+ if (chunk >= offsets.size()) {
return null;
}
long lo = offsets.get(chunk);
long hi =
Math.min(
- keys.sizeAsLong(),
- chunk >= offsets.sizeAsLong() - 1
- ? keys.sizeAsLong()
+ keys.size(),
+ chunk >= offsets.size() - 1
+ ? keys.size()
: offsets.get(chunk + 1))
- 1;
while (lo <= hi) {
@@ -131,28 +132,28 @@ public class MonotonicDataMap<E> extends DataMap<Long, E> {
/** {@inheritDoc} */
@Override
- protected Iterator<Long> keyIterator() {
+ public Iterator<Long> keyIterator() {
return keys.stream().map(Pair::left).iterator();
}
/** {@inheritDoc} */
@Override
- protected Iterator<E> valueIterator() {
+ public Iterator<E> valueIterator() {
return keys.stream().map(Pair::right).map(values::read).iterator();
}
- /** {@inheritDoc} */
@Override
- protected Iterator<Entry<Long, E>> entryIterator() {
+ public Iterator<Entry<Long, E>> entryIterator() {
return keys.stream()
.map(p -> Map.entry(p.left(), values.read(p.right())))
.iterator();
}
+
/** {@inheritDoc} */
@Override
- public long sizeAsLong() {
- return keys.sizeAsLong();
+ public long size() {
+ return keys.size();
}
/** {@inheritDoc} */
@@ -180,4 +181,5 @@ public class MonotonicDataMap<E> extends DataMap<Long, E> {
keys.clear();
values.clear();
}
+
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MonotonicFixedSizeDataMap.java b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MonotonicFixedSizeDataMap.java
index 88db61cd..dfd99409 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MonotonicFixedSizeDataMap.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MonotonicFixedSizeDataMap.java
@@ -22,6 +22,7 @@ package org.apache.baremaps.database.collection;
import com.google.common.collect.Streams;
import java.util.Iterator;
import java.util.Map;
+import java.util.Map.Entry;
import org.apache.baremaps.database.type.LongDataType;
/**
@@ -35,7 +36,7 @@ import org.apache.baremaps.database.type.LongDataType;
* <p>
* Copyright (c) Planetiler.
*/
-public class MonotonicFixedSizeDataMap<E> extends DataMap<Long, E> {
+public class MonotonicFixedSizeDataMap<E> implements DataMap<Long, E> {
private final DataList<Long> offsets;
private final DataList<Long> keys;
@@ -76,8 +77,8 @@ public class MonotonicFixedSizeDataMap<E> extends DataMap<Long, E> {
return null;
}
long lo = offsets.get(chunk);
- long hi = Math.min(keys.sizeAsLong(),
- chunk >= offsets.sizeAsLong() - 1 ? keys.sizeAsLong() : offsets.get(chunk + 1)) - 1;
+ long hi = Math.min(keys.size(),
+ chunk >= offsets.size() - 1 ? keys.size() : offsets.get(chunk + 1)) - 1;
while (lo <= hi) {
long index = (lo + hi) >>> 1;
long value = keys.get(index);
@@ -94,10 +95,10 @@ public class MonotonicFixedSizeDataMap<E> extends DataMap<Long, E> {
/** {@inheritDoc} */
public E put(Long key, E value) {
- long size = keys.sizeAsLong();
+ long size = keys.size();
long chunk = key >>> 8;
if (chunk != lastChunk) {
- while (offsets.sizeAsLong() <= chunk) {
+ while (offsets.size() <= chunk) {
offsets.add(size);
}
lastChunk = chunk;
@@ -115,8 +116,8 @@ public class MonotonicFixedSizeDataMap<E> extends DataMap<Long, E> {
/** {@inheritDoc} */
@Override
- public long sizeAsLong() {
- return keys.sizeAsLong();
+ public long size() {
+ return keys.size();
}
/** {@inheritDoc} */
@@ -133,23 +134,23 @@ public class MonotonicFixedSizeDataMap<E> extends DataMap<Long, E> {
/** {@inheritDoc} */
@Override
- protected Iterator<Long> keyIterator() {
+ public Iterator<Long> keyIterator() {
return keys.iterator();
}
/** {@inheritDoc} */
@Override
- protected Iterator<E> valueIterator() {
+ public Iterator<E> valueIterator() {
return values.iterator();
}
/** {@inheritDoc} */
@Override
- protected Iterator<Entry<Long, E>> entryIterator() {
+ public Iterator<Entry<Long, E>> entryIterator() {
return Streams.zip(
Streams.stream(keyIterator()),
Streams.stream(valueIterator()),
- (k, v) -> Map.entry(k, v)).iterator();
+ Map::entry).iterator();
}
/** {@inheritDoc} */
@@ -159,4 +160,5 @@ public class MonotonicFixedSizeDataMap<E> extends DataMap<Long, E> {
keys.clear();
values.clear();
}
+
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MonotonicPairedDataMap.java b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MonotonicPairedDataMap.java
index d5bbf7d1..11394602 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MonotonicPairedDataMap.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/MonotonicPairedDataMap.java
@@ -21,6 +21,7 @@ package org.apache.baremaps.database.collection;
import java.util.Iterator;
import java.util.Map;
+import java.util.Map.Entry;
import org.apache.baremaps.database.type.LongDataType;
import org.apache.baremaps.database.type.PairDataType.Pair;
@@ -29,7 +30,7 @@ import org.apache.baremaps.database.type.PairDataType.Pair;
* their key and inserted in a monotonic way. The elements cannot be removed or updated once
* inserted.
*/
-public class MonotonicPairedDataMap<E> extends DataMap<Long, E> {
+public class MonotonicPairedDataMap<E> implements DataMap<Long, E> {
private final DataList<Long> offsets;
private final MemoryAlignedDataList<Pair<Long, E>> values;
@@ -54,10 +55,10 @@ public class MonotonicPairedDataMap<E> extends DataMap<Long, E> {
/** {@inheritDoc} */
public E put(Long key, E value) {
- long index = values.sizeAsLong();
+ long index = values.size();
long chunk = key >>> 8;
if (chunk != lastChunk) {
- while (offsets.sizeAsLong() <= chunk) {
+ while (offsets.size() <= chunk) {
offsets.add(index);
}
lastChunk = chunk;
@@ -70,15 +71,15 @@ public class MonotonicPairedDataMap<E> extends DataMap<Long, E> {
public E get(Object keyObject) {
long key = (long) keyObject;
long chunk = key >>> 8;
- if (chunk >= offsets.sizeAsLong()) {
+ if (chunk >= offsets.size()) {
return null;
}
long lo = offsets.get(chunk);
long hi =
Math.min(
- values.sizeAsLong(),
- chunk >= offsets.sizeAsLong() - 1
- ? values.sizeAsLong()
+ values.size(),
+ chunk >= offsets.size() - 1
+ ? values.size()
: offsets.get(chunk + 1))
- 1;
while (lo <= hi) {
@@ -99,19 +100,18 @@ public class MonotonicPairedDataMap<E> extends DataMap<Long, E> {
/** {@inheritDoc} */
@Override
- protected Iterator<Long> keyIterator() {
+ public Iterator<Long> keyIterator() {
return values.stream().map(Pair::left).iterator();
}
/** {@inheritDoc} */
@Override
- protected Iterator<E> valueIterator() {
+ public Iterator<E> valueIterator() {
return values.stream().map(Pair::right).iterator();
}
- /** {@inheritDoc} */
@Override
- protected Iterator<Entry<Long, E>> entryIterator() {
+ public Iterator<Entry<Long, E>> entryIterator() {
return values.stream()
.map(p -> Map.entry(p.left(), p.right()))
.iterator();
@@ -119,8 +119,8 @@ public class MonotonicPairedDataMap<E> extends DataMap<Long, E> {
/** {@inheritDoc} */
@Override
- public long sizeAsLong() {
- return values.sizeAsLong();
+ public long size() {
+ return values.size();
}
/** {@inheritDoc} */
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/schema/AbstractDataTable.java b/baremaps-core/src/main/java/org/apache/baremaps/database/schema/AbstractDataTable.java
deleted file mode 100644
index d777dd44..00000000
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/schema/AbstractDataTable.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.baremaps.database.schema;
-
-import org.apache.baremaps.database.collection.AbstractDataCollection;
-
-/**
- * A table is a collection of rows respecting a row type.
- */
-public abstract class AbstractDataTable extends AbstractDataCollection<DataRow>
- implements DataTable {
-
-}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/schema/DataTableAdapter.java b/baremaps-core/src/main/java/org/apache/baremaps/database/schema/DataTableAdapter.java
index cfc73d2a..7b248f56 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/schema/DataTableAdapter.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/schema/DataTableAdapter.java
@@ -20,12 +20,11 @@ package org.apache.baremaps.database.schema;
import java.util.Iterator;
import java.util.function.Function;
-import org.apache.baremaps.database.collection.AbstractDataCollection;
/**
* A decorator for a table that transforms the geometries of the rows.
*/
-public class DataTableAdapter extends AbstractDataCollection<DataRow> implements DataTable {
+public class DataTableAdapter implements DataTable {
private final DataTable table;
@@ -50,6 +49,11 @@ public class DataTableAdapter extends AbstractDataCollection<DataRow> implements
return table.rowType();
}
+ @Override
+ public long size() {
+ return table.size();
+ }
+
/**
* {@inheritDoc}
*/
@@ -58,11 +62,9 @@ public class DataTableAdapter extends AbstractDataCollection<DataRow> implements
return table.stream().map(this.transformer).iterator();
}
- /**
- * {@inheritDoc}
- */
@Override
- public long sizeAsLong() {
- return table.sizeAsLong();
+ public void clear() {
+ table.clear();
}
+
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/schema/DataTableImpl.java b/baremaps-core/src/main/java/org/apache/baremaps/database/schema/DataTableImpl.java
index 2f628a8c..e0fd6c5f 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/schema/DataTableImpl.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/schema/DataTableImpl.java
@@ -17,19 +17,17 @@
package org.apache.baremaps.database.schema;
-import java.util.Collection;
import java.util.Iterator;
-import org.apache.baremaps.database.collection.AbstractDataCollection;
import org.apache.baremaps.database.collection.DataCollection;
/**
* A table is a collection of rows respecting a row type.
*/
-public class DataTableImpl extends AbstractDataCollection<DataRow> implements DataTable {
+public class DataTableImpl implements DataTable {
private final DataRowType rowType;
- private final Collection<DataRow> rows;
+ private final DataCollection<DataRow> rows;
/**
* Constructs a table with the specified row type.
@@ -37,7 +35,7 @@ public class DataTableImpl extends AbstractDataCollection<DataRow> implements Da
* @param rowType the row type of the table
* @param rows the collection of rows
*/
- public DataTableImpl(DataRowType rowType, Collection<DataRow> rows) {
+ public DataTableImpl(DataRowType rowType, DataCollection<DataRow> rows) {
this.rowType = rowType;
this.rows = rows;
}
@@ -58,23 +56,22 @@ public class DataTableImpl extends AbstractDataCollection<DataRow> implements Da
return rows.add(e);
}
- /**
- * {@inheritDoc}
- */
@Override
- public Iterator<DataRow> iterator() {
- return rows.iterator();
+ public void clear() {
+ rows.clear();
+ }
+
+ @Override
+ public long size() {
+ return rows.size();
}
/**
* {@inheritDoc}
*/
@Override
- public long sizeAsLong() {
- if (rows instanceof DataCollection<DataRow>dataCollection) {
- return dataCollection.sizeAsLong();
- } else {
- return rows.size();
- }
+ public Iterator<DataRow> iterator() {
+ return rows.iterator();
}
+
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/xml/XmlEntityReader.java b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/xml/XmlEntityReader.java
index e3afb5f7..40e1bd44 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/xml/XmlEntityReader.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/xml/XmlEntityReader.java
@@ -23,9 +23,9 @@ import static org.apache.baremaps.stream.ConsumerUtils.consumeThenReturn;
import java.io.InputStream;
import java.util.List;
+import java.util.Map;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
-import org.apache.baremaps.database.collection.DataMap;
import org.apache.baremaps.openstreetmap.OsmReader;
import org.apache.baremaps.openstreetmap.function.CoordinateMapBuilder;
import org.apache.baremaps.openstreetmap.function.EntityGeometryBuilder;
@@ -41,9 +41,9 @@ public class XmlEntityReader implements OsmReader<Entity> {
private int srid = 4326;
- private DataMap<Long, Coordinate> coordinateMap;
+ private Map<Long, Coordinate> coordinateMap;
- private DataMap<Long, List<Long>> referenceMap;
+ private Map<Long, List<Long>> referenceMap;
public boolean geometries() {
return geometry;
@@ -63,20 +63,20 @@ public class XmlEntityReader implements OsmReader<Entity> {
return this;
}
- public DataMap<Long, Coordinate> coordinateMap() {
+ public Map<Long, Coordinate> coordinateMap() {
return coordinateMap;
}
- public XmlEntityReader coordinateMap(DataMap<Long, Coordinate> coordinateMap) {
+ public XmlEntityReader coordinateMap(Map<Long, Coordinate> coordinateMap) {
this.coordinateMap = coordinateMap;
return this;
}
- public DataMap<Long, List<Long>> referenceMap() {
+ public Map<Long, List<Long>> referenceMap() {
return referenceMap;
}
- public XmlEntityReader referenceMap(DataMap<Long, List<Long>> referenceMap) {
+ public XmlEntityReader referenceMap(Map<Long, List<Long>> referenceMap) {
this.referenceMap = referenceMap;
return this;
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufDataTable.java b/baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufDataTable.java
index fe3238b4..c30680aa 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufDataTable.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufDataTable.java
@@ -24,13 +24,12 @@ import java.nio.ByteOrder;
import java.nio.channels.*;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
-import java.util.Collection;
import java.util.Iterator;
import java.util.NoSuchElementException;
-import org.apache.baremaps.database.collection.AbstractDataCollection;
-import org.apache.baremaps.database.schema.AbstractDataTable;
+import org.apache.baremaps.database.collection.DataCollection;
import org.apache.baremaps.database.schema.DataRow;
import org.apache.baremaps.database.schema.DataRowType;
+import org.apache.baremaps.database.schema.DataTable;
import org.locationtech.jts.geom.*;
import org.wololo.flatgeobuf.Constants;
import org.wololo.flatgeobuf.GeometryConversions;
@@ -42,7 +41,7 @@ import org.wololo.flatgeobuf.generated.GeometryType;
/**
* A table that stores rows in a flatgeobuf file.
*/
-public class FlatGeoBufDataTable extends AbstractDataTable {
+public class FlatGeoBufDataTable implements DataTable {
private final Path file;
@@ -118,11 +117,16 @@ public class FlatGeoBufDataTable extends AbstractDataTable {
}
}
+ @Override
+ public void clear() {
+
+ }
+
/**
* {@inheritDoc}
*/
@Override
- public long sizeAsLong() {
+ public long size() {
try (var channel = FileChannel.open(file, StandardOpenOption.READ)) {
var buffer = ByteBuffer.allocate(1 << 20).order(ByteOrder.LITTLE_ENDIAN);
HeaderMeta headerMeta = readHeaderMeta(channel, buffer);
@@ -153,7 +157,7 @@ public class FlatGeoBufDataTable extends AbstractDataTable {
* @param features the collection of rows to write
* @throws IOException if an error occurs while writing the rows
*/
- public void write(Collection<DataRow> features) throws IOException {
+ public void write(DataCollection<DataRow> features) throws IOException {
try (
var channel = FileChannel.open(file, StandardOpenOption.CREATE, StandardOpenOption.WRITE);
var outputStream = Channels.newOutputStream(channel)) {
@@ -165,8 +169,7 @@ public class FlatGeoBufDataTable extends AbstractDataTable {
headerMeta.geometryType = GeometryType.Unknown;
headerMeta.indexNodeSize = 16;
headerMeta.srid = 3857;
- headerMeta.featuresCount =
- features instanceof AbstractDataCollection<DataRow>c ? c.sizeAsLong() : features.size();
+ headerMeta.featuresCount = features.size();
headerMeta.name = rowType.name();
headerMeta.columns = FlatGeoBufTypeConversion.asColumns(rowType.columns());
HeaderMeta.write(headerMeta, outputStream, bufferBuilder);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/storage/geopackage/GeoPackageDataTable.java b/baremaps-core/src/main/java/org/apache/baremaps/storage/geopackage/GeoPackageDataTable.java
index e59e4f20..90cd8bd9 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/storage/geopackage/GeoPackageDataTable.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/storage/geopackage/GeoPackageDataTable.java
@@ -23,7 +23,6 @@ import mil.nga.geopackage.features.user.FeatureColumn;
import mil.nga.geopackage.features.user.FeatureDao;
import mil.nga.geopackage.features.user.FeatureResultSet;
import mil.nga.geopackage.geom.GeoPackageGeometryData;
-import org.apache.baremaps.database.collection.AbstractDataCollection;
import org.apache.baremaps.database.schema.*;
import org.apache.baremaps.database.schema.DataColumn.Type;
import org.locationtech.jts.geom.*;
@@ -31,7 +30,7 @@ import org.locationtech.jts.geom.*;
/**
* A table that stores rows in a GeoPackage table.
*/
-public class GeoPackageDataTable extends AbstractDataCollection<DataRow> implements DataTable {
+public class GeoPackageDataTable implements DataTable {
private final FeatureDao featureDao;
@@ -73,11 +72,16 @@ public class GeoPackageDataTable extends AbstractDataCollection<DataRow> impleme
return new GeopackageIterator(featureDao.queryForAll(), rowType);
}
+ @Override
+ public void clear() {
+ // Do nothing
+ }
+
/**
* {@inheritDoc}
*/
@Override
- public long sizeAsLong() {
+ public long size() {
return featureDao.count();
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDataTable.java b/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDataTable.java
index 52083dc0..b0ed666d 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDataTable.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDataTable.java
@@ -23,17 +23,17 @@ import java.util.*;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
import javax.sql.DataSource;
-import org.apache.baremaps.database.schema.AbstractDataTable;
import org.apache.baremaps.database.schema.DataRow;
import org.apache.baremaps.database.schema.DataRowImpl;
import org.apache.baremaps.database.schema.DataRowType;
+import org.apache.baremaps.database.schema.DataTable;
import org.apache.baremaps.utils.GeometryUtils;
import org.locationtech.jts.geom.*;
/**
* A table that stores rows in a Postgres table.
*/
-public class PostgresDataTable extends AbstractDataTable {
+public class PostgresDataTable implements DataTable {
private final DataSource dataSource;
@@ -73,7 +73,7 @@ public class PostgresDataTable extends AbstractDataTable {
* {@inheritDoc}
*/
@Override
- public long sizeAsLong() {
+ public long size() {
var countQuery = count(rowType);
try (var connection = dataSource.getConnection();
var statement = connection.prepareStatement(countQuery);
@@ -126,6 +126,11 @@ public class PostgresDataTable extends AbstractDataTable {
}
}
+ @Override
+ public void clear() {
+
+ }
+
/**
* Set the parameters of a prepared statement with the values of a row.
*
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/ShapefileDataTable.java b/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/ShapefileDataTable.java
index 412b19ca..50fe5aa2 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/ShapefileDataTable.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/ShapefileDataTable.java
@@ -22,9 +22,9 @@ import java.io.IOException;
import java.nio.file.Path;
import java.util.Iterator;
import java.util.NoSuchElementException;
-import org.apache.baremaps.database.schema.AbstractDataTable;
import org.apache.baremaps.database.schema.DataRow;
import org.apache.baremaps.database.schema.DataRowType;
+import org.apache.baremaps.database.schema.DataTable;
import org.apache.baremaps.database.schema.DataTableException;
import org.apache.baremaps.storage.shapefile.internal.ShapefileInputStream;
import org.apache.baremaps.storage.shapefile.internal.ShapefileReader;
@@ -34,7 +34,7 @@ import org.slf4j.LoggerFactory;
/**
* A table that stores rows in a shapefile.
*/
-public class ShapefileDataTable extends AbstractDataTable {
+public class ShapefileDataTable implements DataTable {
private static final Logger logger = LoggerFactory.getLogger(ShapefileDataTable.class);
@@ -61,6 +61,11 @@ public class ShapefileDataTable extends AbstractDataTable {
}
}
+ @Override
+ public long size() {
+ return 0;
+ }
+
/**
* {@inheritDoc}
*/
@@ -73,14 +78,10 @@ public class ShapefileDataTable extends AbstractDataTable {
}
}
- /**
- * {@inheritDoc}
- */
@Override
- public long sizeAsLong() {
- return Long.MAX_VALUE;
- }
+ public void clear() {
+ }
/**
* An iterator over the rows of a shapefile.
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowContext.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowContext.java
index b16f52f6..66daaac0 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowContext.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowContext.java
@@ -64,12 +64,12 @@ public class WorkflowContext {
return dataSources.computeIfAbsent(database, PostgresUtils::createDataSourceFromObject);
}
- public DataMap<Long, Coordinate> getCoordinateMap() throws IOException {
- return getMemoryAlignedDataMap("coordinates", new LonLatDataType());
+ public Map<Long, Coordinate> getCoordinateMap() throws IOException {
+ return new MapAdapter<>(getMemoryAlignedDataMap("coordinates", new LonLatDataType()));
}
- public DataMap<Long, List<Long>> getReferenceMap() throws IOException {
- return getMonotonicDataMap("references", new LongListDataType());
+ public Map<Long, List<Long>> getReferenceMap() throws IOException {
+ return new MapAdapter<>(getMonotonicDataMap("references", new LongListDataType()));
}
public <T> DataMap<Long, T> getMemoryAlignedDataMap(String name, FixedSizeDataType<T> dataType)
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateGeocoderOpenStreetMap.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateGeocoderOpenStreetMap.java
index 347fd794..e0c0f87e 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateGeocoderOpenStreetMap.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateGeocoderOpenStreetMap.java
@@ -21,8 +21,8 @@ import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
+import java.util.Map;
import java.util.StringJoiner;
-import org.apache.baremaps.database.collection.DataMap;
import org.apache.baremaps.geocoder.GeocoderConstants;
import org.apache.baremaps.geocoderosm.GeocoderOsmConsumerEntity;
import org.apache.baremaps.openstreetmap.pbf.PbfEntityReader;
@@ -86,8 +86,8 @@ public class CreateGeocoderOpenStreetMap implements Task {
public static void execute(
Path path,
- DataMap<Long, Coordinate> coordinateMap,
- DataMap<Long, List<Long>> referenceMap,
+ Map<Long, Coordinate> coordinateMap,
+ Map<Long, List<Long>> referenceMap,
GeocoderOsmConsumerEntity importer) throws IOException {
// configure the block reader
diff --git a/baremaps-core/src/test/java/org/apache/baremaps/database/AppendOnlyLogTest.java b/baremaps-core/src/test/java/org/apache/baremaps/database/AppendOnlyLogTest.java
index 70554f4c..140b94ce 100644
--- a/baremaps-core/src/test/java/org/apache/baremaps/database/AppendOnlyLogTest.java
+++ b/baremaps-core/src/test/java/org/apache/baremaps/database/AppendOnlyLogTest.java
@@ -37,7 +37,7 @@ class AppendOnlyLogTest {
void addFixedSizeData() {
var collection = new AppendOnlyLog<>(new IntegerDataType(), new OffHeapMemory(1 << 10));
for (int i = 0; i < 1 << 20; i++) {
- assertEquals(Long.BYTES + (i << 2), collection.add(i));
+ assertEquals(Long.BYTES + (i << 2), collection.addPositioned(i));
}
for (int i = 0; i < 1 << 20; i++) {
assertEquals(i, collection.read(Long.BYTES + (i << 2)));
@@ -56,7 +56,7 @@ class AppendOnlyLogTest {
for (int j = 0; j < size; j++) {
value.add(random.nextInt(1 << 20));
}
- positions.add(collection.add(value));
+ positions.add(collection.addPositioned(value));
values.add(value);
}
for (int i = 0; i < positions.size(); i++) {
@@ -73,7 +73,7 @@ class AppendOnlyLogTest {
// write values
for (int i = 0; i < num; i++) {
- collection.add(value);
+ collection.addPositioned(value);
}
collection.close();
diff --git a/baremaps-core/src/test/java/org/apache/baremaps/database/DataMapTest.java b/baremaps-core/src/test/java/org/apache/baremaps/database/DataMapTest.java
index c09203dc..d3bdd263 100644
--- a/baremaps-core/src/test/java/org/apache/baremaps/database/DataMapTest.java
+++ b/baremaps-core/src/test/java/org/apache/baremaps/database/DataMapTest.java
@@ -105,7 +105,7 @@ class DataMapTest {
set.add(i);
map.put(i, i);
}
- var res = map.keySet();
+ var res = new MapAdapter<>(map).keySet();
assertEquals(set, res);
}
@@ -117,7 +117,7 @@ class DataMapTest {
set.add(i);
map.put(i, i);
}
- assertEquals(set, new HashSet(map.values()));
+ assertEquals(set, new HashSet(new MapAdapter<>(map).values()));
}
@ParameterizedTest
@@ -156,7 +156,7 @@ class DataMapTest {
assertEquals(15l, map.get(15l));
assertEquals(20l, map.get(20l));
- assertEquals(Set.of(10l, 15l, 20l), map.keySet());;
+ assertEquals(Set.of(10l, 15l, 20l), new MapAdapter<>(map).keySet());;
}
diff --git a/baremaps-core/src/test/java/org/apache/baremaps/database/sort/ExternalMergeSortTest.java b/baremaps-core/src/test/java/org/apache/baremaps/database/sort/ExternalMergeSortTest.java
index f5a4208a..c8a29069 100644
--- a/baremaps-core/src/test/java/org/apache/baremaps/database/sort/ExternalMergeSortTest.java
+++ b/baremaps-core/src/test/java/org/apache/baremaps/database/sort/ExternalMergeSortTest.java
@@ -61,7 +61,7 @@ class ExternalMergeSortTest {
public List<String> stringList(DataList<String> list) {
var l = new ArrayList<String>();
- for (long i = 0; i < list.sizeAsLong(); i++) {
+ for (long i = 0; i < list.size(); i++) {
l.add(list.get(i));
}
return l;
diff --git a/baremaps-core/src/test/java/org/apache/baremaps/openstreetmap/OsmTestData.java b/baremaps-core/src/test/java/org/apache/baremaps/openstreetmap/OsmTestData.java
index ac228a08..775212d3 100644
--- a/baremaps-core/src/test/java/org/apache/baremaps/openstreetmap/OsmTestData.java
+++ b/baremaps-core/src/test/java/org/apache/baremaps/openstreetmap/OsmTestData.java
@@ -29,7 +29,6 @@ import java.util.stream.Stream;
import org.apache.baremaps.openstreetmap.model.Element;
import org.apache.baremaps.openstreetmap.model.Entity;
import org.apache.baremaps.openstreetmap.pbf.PbfEntityReader;
-import org.apache.baremaps.openstreetmap.store.MockDataMap;
import org.apache.baremaps.openstreetmap.xml.XmlEntityReader;
import org.apache.baremaps.testing.TestFiles;
import org.apache.baremaps.utils.RoundingTransformer;
@@ -70,13 +69,13 @@ public class OsmTestData {
String.format(displayNameFormat, osmTest.getId(), "pbf", osmTest.getDescription());
return Stream.<DynamicTest>builder()
.add(DynamicTest.dynamicTest(xmlDisplayName, () -> runTest(osmTest, new XmlEntityReader()
- .coordinateMap(new MockDataMap<>())
- .referenceMap(new MockDataMap<>())
+ .coordinateMap(new HashMap<>())
+ .referenceMap(new HashMap<>())
.geometries(true)
.stream(Files.newInputStream(osmTest.getOsmXml())))))
.add(DynamicTest.dynamicTest(pbfDisplayName, () -> runTest(osmTest, new PbfEntityReader()
- .coordinateMap(new MockDataMap<>())
- .referenceMap(new MockDataMap<>())
+ .coordinateMap(new HashMap<>())
+ .referenceMap(new HashMap<>())
.geometries(true)
.stream(Files.newInputStream(osmTest.getOsmPbf())))))
.build();
diff --git a/baremaps-core/src/test/java/org/apache/baremaps/openstreetmap/geometry/EntityDataTypeGeometryBuilderTest.java b/baremaps-core/src/test/java/org/apache/baremaps/openstreetmap/geometry/EntityDataTypeGeometryBuilderTest.java
index c9fb84f3..1fc7cc8f 100644
--- a/baremaps-core/src/test/java/org/apache/baremaps/openstreetmap/geometry/EntityDataTypeGeometryBuilderTest.java
+++ b/baremaps-core/src/test/java/org/apache/baremaps/openstreetmap/geometry/EntityDataTypeGeometryBuilderTest.java
@@ -23,9 +23,10 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import java.time.LocalDateTime;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.stream.Collectors;
-import org.apache.baremaps.database.collection.DataMap;
import org.apache.baremaps.openstreetmap.function.EntityGeometryBuilder;
import org.apache.baremaps.openstreetmap.model.Info;
import org.apache.baremaps.openstreetmap.model.Member;
@@ -33,7 +34,6 @@ import org.apache.baremaps.openstreetmap.model.Member.MemberType;
import org.apache.baremaps.openstreetmap.model.Node;
import org.apache.baremaps.openstreetmap.model.Relation;
import org.apache.baremaps.openstreetmap.model.Way;
-import org.apache.baremaps.openstreetmap.store.MockDataMap;
import org.apache.baremaps.utils.CRSUtils;
import org.junit.jupiter.api.Test;
import org.locationtech.jts.geom.Coordinate;
@@ -110,7 +110,7 @@ class EntityDataTypeGeometryBuilderTest {
static final Node NODE_15 = new Node(15L, INFO, ImmutableMap.of(), 3d, 1d);
- static final DataMap<Long, Coordinate> COORDINATE_CACHE = new MockDataMap(Arrays
+ static final Map<Long, Coordinate> COORDINATE_CACHE = new HashMap<>(Arrays
.asList(NODE_0, NODE_1, NODE_2, NODE_3, NODE_4, NODE_5, NODE_6, NODE_7, NODE_8, NODE_9,
NODE_10, NODE_11, NODE_12, NODE_13, NODE_14, NODE_15)
.stream()
@@ -132,8 +132,8 @@ class EntityDataTypeGeometryBuilderTest {
static final Way WAY_5 =
new Way(5L, INFO, ImmutableMap.of(), ImmutableList.of(12L, 13L, 14L, 15L, 12L));
- static final DataMap<Long, List<Long>> REFERENCE_CACHE =
- new MockDataMap(Arrays.asList(WAY_0, WAY_1, WAY_2, WAY_3, WAY_4, WAY_5).stream()
+ static final Map<Long, List<Long>> REFERENCE_CACHE =
+ new HashMap<>(Arrays.asList(WAY_0, WAY_1, WAY_2, WAY_3, WAY_4, WAY_5).stream()
.collect(Collectors.toMap(w -> w.getId(), w -> w.getNodes())));
static final Relation RELATION_0 = new Relation(0L, INFO, ImmutableMap.of(), List.of());
diff --git a/baremaps-core/src/test/java/org/apache/baremaps/openstreetmap/store/MockDataMap.java b/baremaps-core/src/test/java/org/apache/baremaps/openstreetmap/store/MockDataMap.java
deleted file mode 100644
index f1059b50..00000000
--- a/baremaps-core/src/test/java/org/apache/baremaps/openstreetmap/store/MockDataMap.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.baremaps.openstreetmap.store;
-
-
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import org.apache.baremaps.database.collection.DataMap;
-import org.jetbrains.annotations.Nullable;
-
-public class MockDataMap<K, T> extends DataMap<K, T> {
-
- private final Map<K, T> values;
-
- public MockDataMap() {
- this.values = new HashMap<>();
- }
-
- public MockDataMap(Map<K, T> values) {
- this.values = values;
- }
-
- @Override
- protected Iterator<K> keyIterator() {
- return values.keySet().iterator();
- }
-
- @Override
- protected Iterator<T> valueIterator() {
- return values.values().iterator();
- }
-
- @Override
- protected Iterator<Entry<K, T>> entryIterator() {
- return values.entrySet().iterator();
- }
-
- @Override
- public long sizeAsLong() {
- return values.size();
- }
-
- @Override
- public boolean containsKey(Object key) {
- return values.containsKey(key);
- }
-
- @Override
- public boolean containsValue(Object value) {
- return values.containsValue(value);
- }
-
- @Override
- public T get(Object key) {
- return values.get(key);
- }
-
- @Nullable
- @Override
- public T put(K key, T value) {
- return values.put(key, value);
- }
-
- @Override
- public T remove(Object key) {
- return values.remove(key);
- }
-
- @Override
- public void clear() {
- values.clear();
- }
-}
diff --git a/baremaps-core/src/test/java/org/apache/baremaps/storage/MockDataTable.java b/baremaps-core/src/test/java/org/apache/baremaps/storage/MockDataTable.java
index 2ae48bc9..126558a5 100644
--- a/baremaps-core/src/test/java/org/apache/baremaps/storage/MockDataTable.java
+++ b/baremaps-core/src/test/java/org/apache/baremaps/storage/MockDataTable.java
@@ -25,7 +25,7 @@ import org.apache.baremaps.database.schema.*;
import org.apache.baremaps.database.schema.DataColumn.Type;
import org.locationtech.jts.geom.Coordinate;
-public class MockDataTable extends AbstractDataTable {
+public class MockDataTable implements DataTable {
private final DataRowType rowType;
@@ -51,14 +51,19 @@ public class MockDataTable extends AbstractDataTable {
List.of("string", 5, 5.0, 5.0f, GEOMETRY_FACTORY.createPoint(new Coordinate(5, 5)))));
}
+ @Override
+ public long size() {
+ return rows.size();
+ }
+
@Override
public Iterator<DataRow> iterator() {
return rows.iterator();
}
@Override
- public long sizeAsLong() {
- return rows.size();
+ public void clear() {
+ rows.clear();
}
@Override
diff --git a/baremaps-core/src/test/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufDataTableTest.java b/baremaps-core/src/test/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufDataTableTest.java
index 6b886f51..9d094007 100644
--- a/baremaps-core/src/test/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufDataTableTest.java
+++ b/baremaps-core/src/test/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufDataTableTest.java
@@ -37,7 +37,7 @@ class FlatGeoBufDataTableTest {
@Test
void read() throws IOException {
var table = new FlatGeoBufDataTable(TestFiles.resolve("data/countries.fgb"));
- assertEquals(179, table.sizeAsLong());
+ assertEquals(179, table.size());
assertEquals(179, table.stream().count());
}
@@ -46,9 +46,8 @@ class FlatGeoBufDataTableTest {
var file = Files.createTempFile("countries", ".fgb");
file.toFile().deleteOnExit();
var table1 = new FlatGeoBufDataTable(TestFiles.resolve("data/countries.fgb"));
- var rows = table1.stream().toList();
var table2 = new FlatGeoBufDataTable(file, table1.rowType());
- table2.write(rows);
+ table2.write(table1);
var featureSet = new FlatGeoBufDataTable(file);
assertEquals(179, featureSet.stream().count());
diff --git a/baremaps-core/src/test/java/org/apache/baremaps/storage/geopackage/GeoPackageDataSchemaTest.java b/baremaps-core/src/test/java/org/apache/baremaps/storage/geopackage/GeoPackageDataSchemaTest.java
index 57d037d8..b8a5c8ad 100644
--- a/baremaps-core/src/test/java/org/apache/baremaps/storage/geopackage/GeoPackageDataSchemaTest.java
+++ b/baremaps-core/src/test/java/org/apache/baremaps/storage/geopackage/GeoPackageDataSchemaTest.java
@@ -37,7 +37,7 @@ class GeoPackageDataSchemaTest {
void read() {
var geoPackageStore = new GeoPackageDataSchema(TestFiles.resolve("data/countries.gpkg"));
var table = geoPackageStore.get("countries");
- assertEquals(179, table.sizeAsLong());
+ assertEquals(179, table.size());
assertEquals(179, table.stream().count());
}
}
diff --git a/baremaps-core/src/test/java/org/apache/baremaps/storage/geopackage/GeoPackageToPostgresTest.java b/baremaps-core/src/test/java/org/apache/baremaps/storage/geopackage/GeoPackageToPostgresTest.java
index caff9cb4..b1df6687 100644
--- a/baremaps-core/src/test/java/org/apache/baremaps/storage/geopackage/GeoPackageToPostgresTest.java
+++ b/baremaps-core/src/test/java/org/apache/baremaps/storage/geopackage/GeoPackageToPostgresTest.java
@@ -42,7 +42,7 @@ public class GeoPackageToPostgresTest extends PostgresContainerTest {
var postgresTable = postgresStore.get("countries");
assertEquals("countries", postgresTable.rowType().name());
assertEquals(4, postgresTable.rowType().columns().size());
- assertEquals(179l, postgresTable.sizeAsLong());
+ assertEquals(179l, postgresTable.size());
assertEquals(179l, postgresTable.stream().count());
}
}
diff --git a/baremaps-core/src/test/java/org/apache/baremaps/storage/postgres/PostgresDataTableTest.java b/baremaps-core/src/test/java/org/apache/baremaps/storage/postgres/PostgresDataTableTest.java
index 9cb99765..17d5f789 100644
--- a/baremaps-core/src/test/java/org/apache/baremaps/storage/postgres/PostgresDataTableTest.java
+++ b/baremaps-core/src/test/java/org/apache/baremaps/storage/postgres/PostgresDataTableTest.java
@@ -51,7 +51,7 @@ class PostgresDataTableTest extends PostgresContainerTest {
@Tag("integration")
void sizeAsLong() {
var table = schema.get("mock");
- assertEquals(5, table.sizeAsLong());
+ assertEquals(5, table.size());
}
@Test
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 125b24f0..dd019048 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
@@ -27,6 +27,7 @@ import java.util.List;
import java.util.Map;
import org.apache.baremaps.database.collection.AppendOnlyLog;
import org.apache.baremaps.database.collection.IndexedDataMap;
+import org.apache.baremaps.database.collection.MapAdapter;
import org.apache.baremaps.database.memory.OnHeapMemory;
import org.apache.baremaps.database.type.LongListDataType;
import org.apache.baremaps.database.type.geometry.CoordinateDataType;
@@ -58,10 +59,10 @@ class ImportUpdateSampleTest extends PostgresRepositoryTest {
PostgresRelationRepository relationRepository = new PostgresRelationRepository(dataSource());
// Initialize the data maps
- Map<Long, Coordinate> coordinateMap =
- new IndexedDataMap<>(new AppendOnlyLog<>(new CoordinateDataType(), new OnHeapMemory()));
- Map<Long, List<Long>> referenceMap =
- new IndexedDataMap<>(new AppendOnlyLog<>(new LongListDataType(), new OnHeapMemory()));
+ Map<Long, Coordinate> coordinateMap = new MapAdapter<>(
+ new IndexedDataMap<>(new AppendOnlyLog<>(new CoordinateDataType(), new OnHeapMemory())));
+ Map<Long, List<Long>> referenceMap = new MapAdapter<>(
+ new IndexedDataMap<>(new AppendOnlyLog<>(new LongListDataType(), new OnHeapMemory())));
// Import the sample data
ImportOsmPbf.execute(OsmSample.SAMPLE_OSM_PBF, coordinateMap, referenceMap, headerRepository,