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 2023/02/26 19:56:48 UTC
[incubator-baremaps] 01/01: Improve naming and documentation
This is an automated email from the ASF dual-hosted git repository.
bchapuis pushed a commit to branch 590-flatgeobuf
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git
commit b8d50269abb901294e37e120e0dccc4dbeea60dd
Author: Bertil Chapuis <bc...@gmail.com>
AuthorDate: Sun Feb 26 20:47:34 2023 +0100
Improve naming and documentation
---
.../baremaps/dataframe/AbstractDataFrame.java | 3 +
.../java/org/apache/baremaps/dataframe/Column.java | 13 ++
.../org/apache/baremaps/dataframe/ColumnImpl.java | 3 +
.../org/apache/baremaps/dataframe/DataFrame.java | 10 +-
.../apache/baremaps/dataframe/DataFrameImpl.java | 22 +++-
.../org/apache/baremaps/dataframe/DataStore.java | 28 ++++-
.../java/org/apache/baremaps/dataframe/Row.java | 39 ++++--
.../org/apache/baremaps/dataframe/RowImpl.java | 23 ++--
.../dataframe/{DataType.java => Schema.java} | 22 +++-
.../{DataTypeImpl.java => SchemaImpl.java} | 16 ++-
...form.java => DataFrameGeometryTransformer.java} | 29 +++--
...BufFeatureSet.java => FlatGeoBufDataFrame.java} | 24 ++--
.../storage/flatgeobuf/RowConversions.java | 6 +-
.../{FeatureIterator.java => RowIterator.java} | 12 +-
.../storage/geopackage/GeoPackageDatabase.java | 12 +-
.../storage/geopackage/GeoPackageTable.java | 20 +--
.../storage/postgres/PostgresDataFrame.java | 12 +-
.../storage/postgres/PostgresDatabase.java | 140 ++++++++++-----------
.../storage/shapefile/ShapefileDataFrame.java | 13 +-
.../storage/shapefile/ShapefileDirectory.java | 10 +-
.../shapefile/internal/InputFeatureStream.java | 45 +++----
.../shapefile/internal/ShapefileByteReader.java | 24 ++--
.../shapefile/internal/ShapefileReader.java | 14 +--
.../org/apache/baremaps/workflow/tasks/Entity.java | 16 +--
.../baremaps/workflow/tasks/ImportGeoPackage.java | 4 +-
.../baremaps/workflow/tasks/ImportShapefile.java | 4 +-
.../workflow/tasks/TransformEntityCollection.java | 4 +-
.../org/apache/baremaps/mvt/ExpressionsTest.java | 12 +-
...reSetTest.java => FlatGeoBufDataFrameTest.java} | 14 +--
29 files changed, 346 insertions(+), 248 deletions(-)
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/dataframe/AbstractDataFrame.java b/baremaps-core/src/main/java/org/apache/baremaps/dataframe/AbstractDataFrame.java
index 8a0349a4..959238f4 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/dataframe/AbstractDataFrame.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/dataframe/AbstractDataFrame.java
@@ -14,6 +14,9 @@ package org.apache.baremaps.dataframe;
import org.apache.baremaps.collection.AbstractDataCollection;
+/**
+ * A data frame is a collection of rows respecting a schema.
+ */
public abstract class AbstractDataFrame extends AbstractDataCollection<Row> implements DataFrame {
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/dataframe/Column.java b/baremaps-core/src/main/java/org/apache/baremaps/dataframe/Column.java
index 174d86ad..189dd730 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/dataframe/Column.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/dataframe/Column.java
@@ -12,10 +12,23 @@
package org.apache.baremaps.dataframe;
+/**
+ * A column in a data frame.
+ */
public interface Column {
+ /**
+ * Returns the name of the column.
+ *
+ * @return the name of the column
+ */
String name();
+ /**
+ * Returns the type of the column.
+ *
+ * @return the type of the column
+ */
Class type();
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/dataframe/ColumnImpl.java b/baremaps-core/src/main/java/org/apache/baremaps/dataframe/ColumnImpl.java
index ad3928c7..79d3e59c 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/dataframe/ColumnImpl.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/dataframe/ColumnImpl.java
@@ -12,6 +12,9 @@
package org.apache.baremaps.dataframe;
+/**
+ * A A column in a data frame.
+ */
public record ColumnImpl(String name, Class type) implements Column {
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/dataframe/DataFrame.java b/baremaps-core/src/main/java/org/apache/baremaps/dataframe/DataFrame.java
index 3efccf11..02f59176 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/dataframe/DataFrame.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/dataframe/DataFrame.java
@@ -14,8 +14,16 @@ package org.apache.baremaps.dataframe;
import org.apache.baremaps.collection.DataCollection;
+/**
+ * A data frame is a collection of rows respecting a schema.
+ */
public interface DataFrame extends DataCollection<Row> {
- DataType dataType();
+ /**
+ * Returns the schema of the data frame.
+ *
+ * @return the schema of the data frame
+ */
+ Schema schema();
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/dataframe/DataFrameImpl.java b/baremaps-core/src/main/java/org/apache/baremaps/dataframe/DataFrameImpl.java
index 4b0ffd27..a31e8267 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/dataframe/DataFrameImpl.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/dataframe/DataFrameImpl.java
@@ -14,21 +14,35 @@ package org.apache.baremaps.dataframe;
import java.util.ArrayList;
+/**
+ * A data frame is a collection of rows respecting a schema.
+ */
public class DataFrameImpl extends ArrayList<Row> implements DataFrame {
- private final DataType dataType;
+ private final Schema dataType;
- public DataFrameImpl(DataType dataType) {
- this.dataType = dataType;
+ /**
+ * Constructs a data frame with the specified schema.
+ *
+ * @param schema the schema of the data frame
+ */
+ public DataFrameImpl(Schema schema) {
+ this.dataType = schema;
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public long sizeAsLong() {
return size();
}
+ /**
+ * {@inheritDoc}
+ */
@Override
- public DataType dataType() {
+ public Schema schema() {
return dataType;
}
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/dataframe/DataStore.java b/baremaps-core/src/main/java/org/apache/baremaps/dataframe/DataStore.java
index ce89b957..451a563a 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/dataframe/DataStore.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/dataframe/DataStore.java
@@ -14,14 +14,38 @@ package org.apache.baremaps.dataframe;
import java.util.Collection;
+/**
+ * A data store is a collection of data frames.
+ */
public interface DataStore {
- Collection<DataFrame> list() throws DataFrameException;
-
+ /**
+ * Lists the names of the data frames.
+ *
+ * @return the names of the data frames
+ */
+ Collection<String> list() throws DataFrameException;
+
+ /**
+ * Gets a data frame by its name.
+ *
+ * @param name the name of the data frame
+ * @return the data frame
+ */
DataFrame get(String name) throws DataFrameException;
+ /**
+ * Adds a data frame to the data store.
+ *
+ * @param value the data frame
+ */
void add(DataFrame value) throws DataFrameException;
+ /**
+ * Removes a data frame from the data store.
+ *
+ * @param name the name of the data frame
+ */
void remove(String name) throws DataFrameException;
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/dataframe/Row.java b/baremaps-core/src/main/java/org/apache/baremaps/dataframe/Row.java
index 8b291119..ac97fa76 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/dataframe/Row.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/dataframe/Row.java
@@ -14,14 +14,39 @@ package org.apache.baremaps.dataframe;
import java.util.List;
+/**
+ * A row in a data frame.
+ */
public interface Row {
- DataType dataType();
-
- List<Object> values();
-
- Object get(String name);
-
- void set(String name, Object value);
+ /**
+ * Returns the schema of the row.
+ *
+ * @return the schema of the row
+ */
+ Schema dataType();
+
+ /**
+ * Returns the values of the columns in the row.
+ *
+ * @return the values of the columns in the row
+ */
+ List values();
+
+ /**
+ * Returns the value of the specified column.
+ *
+ * @param column the column
+ * @return the value of the specified column
+ */
+ Object get(String column);
+
+ /**
+ * Sets the value of the specified column.
+ *
+ * @param column the column
+ * @param value the value
+ */
+ void set(String column, Object value);
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/dataframe/RowImpl.java b/baremaps-core/src/main/java/org/apache/baremaps/dataframe/RowImpl.java
index 027b383e..3b7aa0e4 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/dataframe/RowImpl.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/dataframe/RowImpl.java
@@ -14,27 +14,36 @@ package org.apache.baremaps.dataframe;
import java.util.List;
-public record RowImpl(DataType dataType, List values) implements Row {
+/**
+ * A row in a data frame.
+ */
+public record RowImpl(Schema dataType, List values) implements Row {
+ /**
+ * {@inheritDoc}
+ */
@Override
- public Object get(String name) {
+ public Object get(String column) {
for (int i = 0; i < dataType().columns().size(); i++) {
- if (dataType().columns().get(i).name().equals(name)) {
+ if (dataType().columns().get(i).name().equals(column)) {
return values.get(i);
}
}
- throw new IllegalArgumentException("Column " + name + " not found.");
+ throw new IllegalArgumentException("Column " + column + " not found.");
}
+ /**
+ * {@inheritDoc}
+ */
@Override
- public void set(String name, Object value) {
+ public void set(String column, Object value) {
for (int i = 0; i < dataType().columns().size(); i++) {
- if (dataType().columns().get(i).name().equals(name)) {
+ if (dataType().columns().get(i).name().equals(column)) {
values.set(i, value);
return;
}
}
- throw new IllegalArgumentException("Column " + name + " not found.");
+ throw new IllegalArgumentException("Column " + column + " not found.");
}
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/dataframe/DataType.java b/baremaps-core/src/main/java/org/apache/baremaps/dataframe/Schema.java
similarity index 63%
rename from baremaps-core/src/main/java/org/apache/baremaps/dataframe/DataType.java
rename to baremaps-core/src/main/java/org/apache/baremaps/dataframe/Schema.java
index 29352566..2c6fb2fd 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/dataframe/DataType.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/dataframe/Schema.java
@@ -14,12 +14,30 @@ package org.apache.baremaps.dataframe;
import java.util.List;
-public interface DataType {
+/**
+ * A schema defines the structure of a data frame.
+ */
+public interface Schema {
+ /**
+ * Returns the name of the schema.
+ *
+ * @return the name of the schema
+ */
String name();
+ /**
+ * Returns the columns of the schema.
+ *
+ * @return the columns of the schema
+ */
List<Column> columns();
- Row newInstance();
+ /**
+ * Creates a new row of the schema.
+ *
+ * @return a new row of the schema
+ */
+ Row createRow();
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/dataframe/DataTypeImpl.java b/baremaps-core/src/main/java/org/apache/baremaps/dataframe/SchemaImpl.java
similarity index 64%
rename from baremaps-core/src/main/java/org/apache/baremaps/dataframe/DataTypeImpl.java
rename to baremaps-core/src/main/java/org/apache/baremaps/dataframe/SchemaImpl.java
index ee362fd2..ac13b179 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/dataframe/DataTypeImpl.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/dataframe/SchemaImpl.java
@@ -15,10 +15,20 @@ package org.apache.baremaps.dataframe;
import java.util.ArrayList;
import java.util.List;
-public record DataTypeImpl(String name, List<Column> columns) implements DataType {
+/**
+ * A schema defines the structure of a data frame.
+ */
+public record SchemaImpl(String name, List<Column> columns) implements Schema {
+ /**
+ * {@inheritDoc}
+ */
@Override
- public Row newInstance() {
- return new RowImpl(this, new ArrayList(columns.size()));
+ public Row createRow() {
+ var values = new ArrayList<>(columns.size());
+ for (int i = 0; i < columns.size(); i++) {
+ values.add(null);
+ }
+ return new RowImpl(this, values);
}
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/storage/DataFrameProjectionTransform.java b/baremaps-core/src/main/java/org/apache/baremaps/storage/DataFrameGeometryTransformer.java
similarity index 64%
rename from baremaps-core/src/main/java/org/apache/baremaps/storage/DataFrameProjectionTransform.java
rename to baremaps-core/src/main/java/org/apache/baremaps/storage/DataFrameGeometryTransformer.java
index 9074d45e..75330537 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/storage/DataFrameProjectionTransform.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/storage/DataFrameGeometryTransformer.java
@@ -13,51 +13,50 @@
package org.apache.baremaps.storage;
-
import java.util.Iterator;
import org.apache.baremaps.collection.AbstractDataCollection;
import org.apache.baremaps.dataframe.Column;
import org.apache.baremaps.dataframe.DataFrame;
-import org.apache.baremaps.dataframe.DataType;
import org.apache.baremaps.dataframe.Row;
-import org.apache.baremaps.openstreetmap.utils.ProjectionTransformer;
+import org.apache.baremaps.dataframe.Schema;
import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.util.GeometryTransformer;
-public class DataFrameProjectionTransform extends AbstractDataCollection<Row> implements DataFrame {
+public class DataFrameGeometryTransformer extends AbstractDataCollection<Row> implements DataFrame {
private final DataFrame dataFrame;
- private final ProjectionTransformer projectionTransformer;
+ private final GeometryTransformer transformer;
- public DataFrameProjectionTransform(DataFrame dataFrame,
- ProjectionTransformer projectionTransformer) {
+ public DataFrameGeometryTransformer(DataFrame dataFrame,
+ GeometryTransformer geometryTransformer) {
this.dataFrame = dataFrame;
- this.projectionTransformer = projectionTransformer;
+ this.transformer = geometryTransformer;
}
@Override
- public DataType dataType() {
- return dataFrame.dataType();
+ public Schema schema() {
+ return dataFrame.schema();
}
- public Row transformProjection(Row row) {
- var columns = dataType().columns().stream()
+ public Row transform(Row row) {
+ var columns = schema().columns().stream()
.filter(column -> column.type().isInstance(Geometry.class)).toList();
for (Column column : columns) {
var name = column.name();
var geometry = (Geometry) row.get(name);
- row.set(name, projectionTransformer.transform(geometry));
+ row.set(name, transformer.transform(geometry));
}
return row;
}
@Override
public Iterator<Row> iterator() {
- return dataFrame.stream().map(this::transformProjection).iterator();
+ return dataFrame.stream().map(this::transform).iterator();
}
@Override
public long sizeAsLong() {
- return 0;
+ return dataFrame.sizeAsLong();
}
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufFeatureSet.java b/baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufDataFrame.java
similarity index 88%
rename from baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufFeatureSet.java
rename to baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufDataFrame.java
index 6d22a890..f0d2788f 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufFeatureSet.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufDataFrame.java
@@ -21,8 +21,8 @@ import java.nio.channels.SeekableByteChannel;
import java.util.Collection;
import java.util.Iterator;
import org.apache.baremaps.collection.AbstractDataCollection;
-import org.apache.baremaps.dataframe.DataType;
import org.apache.baremaps.dataframe.Row;
+import org.apache.baremaps.dataframe.Schema;
import org.locationtech.jts.geom.Geometry;
import org.wololo.flatgeobuf.Constants;
import org.wololo.flatgeobuf.GeometryConversions;
@@ -30,26 +30,26 @@ import org.wololo.flatgeobuf.HeaderMeta;
import org.wololo.flatgeobuf.PackedRTree;
import org.wololo.flatgeobuf.generated.GeometryType;
-public class FlatGeoBufFeatureSet {
+public class FlatGeoBufDataFrame {
private final SeekableByteChannel channel;
private HeaderMeta headerMeta;
- private DataType dataType;
+ private Schema schema;
- public FlatGeoBufFeatureSet(SeekableByteChannel channel) {
+ public FlatGeoBufDataFrame(SeekableByteChannel channel) {
this.channel = channel;
}
- public FlatGeoBufFeatureSet(SeekableByteChannel channel, DataType dataType) {
+ public FlatGeoBufDataFrame(SeekableByteChannel channel, Schema schema) {
this.channel = channel;
- this.dataType = dataType;
+ this.schema = schema;
}
- public DataType getType() throws IOException {
+ public Schema getSchema() throws IOException {
readHeaderMeta();
- return dataType;
+ return schema;
}
public Collection<Row> read() throws IOException {
@@ -68,7 +68,7 @@ public class FlatGeoBufFeatureSet {
channel.position(headerMeta.offset + indexSize);
// create the feature stream
- return new FeatureIterator(channel, headerMeta, dataType);
+ return new RowIterator(channel, headerMeta, schema);
} catch (IOException e) {
throw new RuntimeException(e);
}
@@ -88,7 +88,7 @@ public class FlatGeoBufFeatureSet {
channel.read(headerMetaBuffer);
headerMetaBuffer.flip();
headerMeta = HeaderMeta.read(headerMetaBuffer);
- dataType = RowConversions.asFeatureType(headerMeta);
+ schema = RowConversions.asFeatureType(headerMeta);
}
public void write(Collection<Row> features) throws IOException {
@@ -105,8 +105,8 @@ public class FlatGeoBufFeatureSet {
headerMeta.indexNodeSize = 16;
headerMeta.featuresCount =
features instanceof AbstractDataCollection<Row>c ? c.sizeAsLong() : features.size();
- headerMeta.name = dataType.name();
- headerMeta.columns = RowConversions.asColumns(dataType.columns());
+ headerMeta.name = schema.name();
+ headerMeta.columns = RowConversions.asColumns(schema.columns());
HeaderMeta.write(headerMeta, outputStream, bufferBuilder);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/RowConversions.java b/baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/RowConversions.java
index 53d08391..84c940d7 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/RowConversions.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/RowConversions.java
@@ -33,16 +33,16 @@ import org.wololo.flatgeobuf.generated.Header;
public class RowConversions {
- public static DataType asFeatureType(HeaderMeta headerMeta) {
+ public static Schema asFeatureType(HeaderMeta headerMeta) {
var name = headerMeta.name;
var columns = headerMeta.columns.stream()
.map(column -> new ColumnImpl(column.name, column.getBinding()))
.map(Column.class::cast)
.toList();
- return new DataTypeImpl(name, columns);
+ return new SchemaImpl(name, columns);
}
- public static RowImpl asFeature(HeaderMeta headerMeta, DataType dataType, Feature feature) {
+ public static Row asRow(HeaderMeta headerMeta, Schema dataType, Feature feature) {
var values = new ArrayList();
var geometryBuffer = feature.geometry();
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/FeatureIterator.java b/baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/RowIterator.java
similarity index 83%
rename from baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/FeatureIterator.java
rename to baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/RowIterator.java
index cb1dab60..f1b611ad 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/FeatureIterator.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/RowIterator.java
@@ -18,16 +18,16 @@ import java.nio.ByteOrder;
import java.nio.channels.SeekableByteChannel;
import java.util.Iterator;
import java.util.NoSuchElementException;
-import org.apache.baremaps.dataframe.DataType;
import org.apache.baremaps.dataframe.Row;
+import org.apache.baremaps.dataframe.Schema;
import org.wololo.flatgeobuf.HeaderMeta;
import org.wololo.flatgeobuf.generated.Feature;
-public class FeatureIterator implements Iterator<Row> {
+public class RowIterator implements Iterator<Row> {
private final HeaderMeta headerMeta;
- private final DataType dataType;
+ private final Schema dataType;
private final SeekableByteChannel channel;
@@ -35,8 +35,8 @@ public class FeatureIterator implements Iterator<Row> {
private long cursor = 0;
- public FeatureIterator(SeekableByteChannel channel, HeaderMeta headerMeta,
- DataType dataType) {
+ public RowIterator(SeekableByteChannel channel, HeaderMeta headerMeta,
+ Schema dataType) {
this.channel = channel;
this.headerMeta = headerMeta;
this.dataType = dataType;
@@ -56,7 +56,7 @@ public class FeatureIterator implements Iterator<Row> {
var featureSize = buffer.getInt();
var row =
- RowConversions.asFeature(headerMeta, dataType, Feature.getRootAsFeature(buffer));
+ RowConversions.asRow(headerMeta, dataType, Feature.getRootAsFeature(buffer));
buffer.position(Integer.BYTES + featureSize);
buffer.compact();
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/storage/geopackage/GeoPackageDatabase.java b/baremaps-core/src/main/java/org/apache/baremaps/storage/geopackage/GeoPackageDatabase.java
index 1b05afe5..8c2008c2 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/storage/geopackage/GeoPackageDatabase.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/storage/geopackage/GeoPackageDatabase.java
@@ -36,19 +36,13 @@ public class GeoPackageDatabase implements DataStore, AutoCloseable {
}
@Override
- public Collection<DataFrame> list() throws DataFrameException {
- return geoPackage.getFeatureTables().stream()
- .map(table -> new GeoPackageTable(geoPackage.getFeatureDao(table)))
- .map(DataFrame.class::cast)
- .toList();
+ public Collection<String> list() throws DataFrameException {
+ return geoPackage.getFeatureTables();
}
@Override
public DataFrame get(String name) throws DataFrameException {
- return list().stream()
- .filter(dataFrame -> dataFrame.dataType().name().equals(name))
- .findFirst()
- .orElseThrow(() -> new DataFrameException());
+ return new GeoPackageTable(geoPackage.getFeatureDao(name));
}
@Override
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/storage/geopackage/GeoPackageTable.java b/baremaps-core/src/main/java/org/apache/baremaps/storage/geopackage/GeoPackageTable.java
index b406f29c..c992858e 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/storage/geopackage/GeoPackageTable.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/storage/geopackage/GeoPackageTable.java
@@ -26,7 +26,7 @@ public class GeoPackageTable extends AbstractDataCollection<Row> implements Data
private final FeatureDao featureDao;
- private final DataType featureType;
+ private final Schema schema;
private final GeometryFactory geometryFactory;
@@ -39,7 +39,7 @@ public class GeoPackageTable extends AbstractDataCollection<Row> implements Data
var propertyType = classType(column);
columns.add(new ColumnImpl(propertyName, propertyType));
}
- featureType = new DataTypeImpl(name, columns);
+ schema = new SchemaImpl(name, columns);
geometryFactory = new GeometryFactory(new PrecisionModel(), (int) featureDao.getSrs().getId());
}
@@ -53,30 +53,30 @@ public class GeoPackageTable extends AbstractDataCollection<Row> implements Data
@Override
public Iterator<Row> iterator() {
- return new FeatureIterator(featureDao.queryForAll(), featureType);
+ return new FeatureIterator(featureDao.queryForAll(), schema);
}
@Override
public long sizeAsLong() {
- return 0;
+ return featureDao.count();
}
@Override
- public DataType dataType() {
- return null;
+ public Schema schema() {
+ return schema;
}
public class FeatureIterator implements Iterator<Row> {
private final FeatureResultSet featureResultSet;
- private final DataType dataType;
+ private final Schema schema;
private boolean hasNext;
- public FeatureIterator(FeatureResultSet featureResultSet, DataType dataType) {
+ public FeatureIterator(FeatureResultSet featureResultSet, Schema schema) {
this.featureResultSet = featureResultSet;
- this.dataType = dataType;
+ this.schema = schema;
this.hasNext = featureResultSet.moveToFirst();
}
@@ -90,7 +90,7 @@ public class GeoPackageTable extends AbstractDataCollection<Row> implements Data
if (!hasNext) {
throw new NoSuchElementException();
}
- Row row = dataType.newInstance();
+ Row row = schema.createRow();
for (FeatureColumn featureColumn : featureResultSet.getColumns().getColumns()) {
var value = featureResultSet.getValue(featureColumn);
if (value != null) {
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDataFrame.java b/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDataFrame.java
index 3c49de7c..994d1d53 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDataFrame.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDataFrame.java
@@ -17,15 +17,15 @@ package org.apache.baremaps.storage.postgres;
import java.util.Iterator;
import org.apache.baremaps.collection.AbstractDataCollection;
import org.apache.baremaps.dataframe.DataFrame;
-import org.apache.baremaps.dataframe.DataType;
import org.apache.baremaps.dataframe.Row;
+import org.apache.baremaps.dataframe.Schema;
public class PostgresDataFrame extends AbstractDataCollection<Row> implements DataFrame {
- private final DataType dataType;
+ private final Schema schema;
- public PostgresDataFrame(DataType dataType) {
- this.dataType = dataType;
+ public PostgresDataFrame(Schema schema) {
+ this.schema = schema;
}
@Override
@@ -39,7 +39,7 @@ public class PostgresDataFrame extends AbstractDataCollection<Row> implements Da
}
@Override
- public DataType dataType() {
- return dataType();
+ public Schema schema() {
+ return schema();
}
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDatabase.java b/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDatabase.java
index 76df463a..ecfe2f96 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDatabase.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDatabase.java
@@ -19,7 +19,6 @@ import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Collection;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -34,54 +33,48 @@ import org.postgresql.copy.PGCopyOutputStream;
public class PostgresDatabase implements DataStore {
// TODO: Instantiate with Map.of()
- private static Map<Class, String> typeToName = new HashMap<>();
-
- static {
- typeToName.put(String.class, "varchar");
- typeToName.put(Short.class, "int2");
- typeToName.put(Integer.class, "int4");
- typeToName.put(Long.class, "int8");
- typeToName.put(Float.class, "float4");
- typeToName.put(Double.class, "float8");
- typeToName.put(Geometry.class, "geometry");
- typeToName.put(Point.class, "geometry");
- typeToName.put(MultiPoint.class, "geometry");
- typeToName.put(Point.class, "geometry");
- typeToName.put(LineString.class, "geometry");
- typeToName.put(MultiLineString.class, "geometry");
- typeToName.put(Polygon.class, "geometry");
- typeToName.put(MultiPolygon.class, "geometry");
- typeToName.put(LinearRing.class, "geometry");
- typeToName.put(GeometryCollection.class, "geometry");
- typeToName.put(LocalDate.class, "date");
- typeToName.put(LocalTime.class, "time");
- typeToName.put(LocalDateTime.class, "timestamp");
- }
+ private static Map<Class, String> typeToName = Map.ofEntries(
+ Map.entry(String.class, "varchar"),
+ Map.entry(Short.class, "int2"),
+ Map.entry(Integer.class, "int4"),
+ Map.entry(Long.class, "int8"),
+ Map.entry(Float.class, "float4"),
+ Map.entry(Double.class, "float8"),
+ Map.entry(Geometry.class, "geometry"),
+ Map.entry(Point.class, "geometry"),
+ Map.entry(MultiPoint.class, "geometry"),
+ Map.entry(Point.class, "geometry"),
+ Map.entry(LineString.class, "geometry"),
+ Map.entry(MultiLineString.class, "geometry"),
+ Map.entry(Polygon.class, "geometry"),
+ Map.entry(MultiPolygon.class, "geometry"),
+ Map.entry(LinearRing.class, "geometry"),
+ Map.entry(GeometryCollection.class, "geometry"),
+ Map.entry(LocalDate.class, "date"),
+ Map.entry(LocalTime.class, "time"),
+ Map.entry(LocalDateTime.class, "timestamp"));
// TODO: Instantiate with Map.of()
- private static Map<Class, BaseValueHandler> typeToHandler = new HashMap<>();
-
- static {
- typeToHandler.put(String.class, new StringValueHandler());
- typeToHandler.put(Short.class, new ShortValueHandler());
- typeToHandler.put(Integer.class, new IntegerValueHandler());
- typeToHandler.put(Long.class, new LongValueHandler());
- typeToHandler.put(Float.class, new FloatValueHandler());
- typeToHandler.put(Double.class, new DoubleValueHandler());
- typeToHandler.put(Geometry.class, new PostgisGeometryValueHandler());
- typeToHandler.put(Point.class, new PostgisGeometryValueHandler());
- typeToHandler.put(MultiPoint.class, new PostgisGeometryValueHandler());
- typeToHandler.put(Point.class, new PostgisGeometryValueHandler());
- typeToHandler.put(LineString.class, new PostgisGeometryValueHandler());
- typeToHandler.put(MultiLineString.class, new PostgisGeometryValueHandler());
- typeToHandler.put(Polygon.class, new PostgisGeometryValueHandler());
- typeToHandler.put(MultiPolygon.class, new PostgisGeometryValueHandler());
- typeToHandler.put(LinearRing.class, new PostgisGeometryValueHandler());
- typeToHandler.put(GeometryCollection.class, new PostgisGeometryValueHandler());
- typeToHandler.put(LocalDate.class, new LocalDateValueHandler());
- typeToHandler.put(LocalTime.class, new LocalTimeValueHandler());
- typeToHandler.put(LocalDateTime.class, new LocalDateTimeValueHandler());
- }
+ private static Map<Class, BaseValueHandler> typeToHandler = Map.ofEntries(
+ Map.entry(String.class, new StringValueHandler()),
+ Map.entry(Short.class, new ShortValueHandler()),
+ Map.entry(Integer.class, new IntegerValueHandler()),
+ Map.entry(Long.class, new LongValueHandler()),
+ Map.entry(Float.class, new FloatValueHandler()),
+ Map.entry(Double.class, new DoubleValueHandler()),
+ Map.entry(Geometry.class, new PostgisGeometryValueHandler()),
+ Map.entry(Point.class, new PostgisGeometryValueHandler()),
+ Map.entry(MultiPoint.class, new PostgisGeometryValueHandler()),
+ Map.entry(Point.class, new PostgisGeometryValueHandler()),
+ Map.entry(LineString.class, new PostgisGeometryValueHandler()),
+ Map.entry(MultiLineString.class, new PostgisGeometryValueHandler()),
+ Map.entry(Polygon.class, new PostgisGeometryValueHandler()),
+ Map.entry(MultiPolygon.class, new PostgisGeometryValueHandler()),
+ Map.entry(LinearRing.class, new PostgisGeometryValueHandler()),
+ Map.entry(GeometryCollection.class, new PostgisGeometryValueHandler()),
+ Map.entry(LocalDate.class, new LocalDateValueHandler()),
+ Map.entry(LocalTime.class, new LocalTimeValueHandler()),
+ Map.entry(LocalDateTime.class, new LocalDateTimeValueHandler()));
private final DataSource dataSource;
@@ -89,16 +82,16 @@ public class PostgresDatabase implements DataStore {
this.dataSource = dataSource;
}
- private DataType adaptDataType(DataType datatype) {
+ private Schema adaptDataType(Schema datatype) {
var name = datatype.name().replaceAll("[^a-zA-Z0-9]", "_");
var properties = datatype.columns().stream()
.filter(columnType -> typeToName.containsKey(columnType.type()))
.toList();
- return new DataTypeImpl(name, properties);
+ return new SchemaImpl(name, properties);
}
@Override
- public Collection<DataFrame> list() throws DataFrameException {
+ public Collection<String> list() throws DataFrameException {
throw new UnsupportedOperationException();
}
@@ -110,33 +103,33 @@ public class PostgresDatabase implements DataStore {
@Override
public void add(DataFrame dataFrame) {
try (var connection = dataSource.getConnection()) {
- var dataType = adaptDataType(dataFrame.dataType());
+ var schema = adaptDataType(dataFrame.schema());
// Drop the table if it exists
- var dropQuery = dropTable(dataType);
+ var dropQuery = dropTable(schema);
try (var dropStatement = connection.prepareStatement(dropQuery)) {
dropStatement.execute();
}
// Create the table
- var createQuery = createTable(dataType);
+ var createQuery = createTable(schema);
try (var createStatement = connection.prepareStatement(createQuery)) {
createStatement.execute();
}
// Populate the table with a copy query
PGConnection pgConnection = connection.unwrap(PGConnection.class);
- var copyQuery = copyTable(dataType);
+ var copyQuery = copyTable(schema);
try (var writer = new CopyWriter(new PGCopyOutputStream(pgConnection, copyQuery))) {
writer.writeHeader();
- var featureIterator = dataFrame.iterator();
- while (featureIterator.hasNext()) {
- var feature = featureIterator.next();
- var attributes = getAttributes(dataType);
- writer.startRow(attributes.size());
- for (var attribute : attributes) {
- var name = attribute.name().toString();
- var value = feature.get(name);
+ var rowIterator = dataFrame.iterator();
+ while (rowIterator.hasNext()) {
+ var row = rowIterator.next();
+ var columns = getColumns(schema);
+ writer.startRow(columns.size());
+ for (var column : columns) {
+ var name = column.name().toString();
+ var value = row.get(name);
if (value == null) {
writer.writeNull();
} else {
@@ -150,21 +143,22 @@ public class PostgresDatabase implements DataStore {
}
}
- private List<Column> getAttributes(DataType dataType) {
- return dataType.columns().stream()
- .filter(this::isSupported).collect(Collectors.toList());
+ private List<Column> getColumns(Schema schema) {
+ return schema.columns().stream()
+ .filter(this::isSupported)
+ .collect(Collectors.toList());
}
private boolean isSupported(Column column) {
return typeToName.containsKey(column.type());
}
- private String createTable(DataType dataType) {
+ private String createTable(Schema schema) {
StringBuilder builder = new StringBuilder();
builder.append("CREATE TABLE ");
- builder.append(dataType.name());
+ builder.append(schema.name());
builder.append(" (");
- builder.append(dataType.columns().stream()
+ builder.append(schema.columns().stream()
.map(column -> column.name()
+ " " + typeToName.get(column.type()))
.collect(Collectors.joining(", ")));
@@ -172,12 +166,12 @@ public class PostgresDatabase implements DataStore {
return builder.toString();
}
- private String copyTable(DataType dataType) {
+ private String copyTable(Schema schema) {
StringBuilder builder = new StringBuilder();
builder.append("COPY ");
- builder.append(dataType.name());
+ builder.append(schema.name());
builder.append(" (");
- builder.append(dataType.columns().stream()
+ builder.append(schema.columns().stream()
.map(column -> column.name())
.collect(Collectors.joining(", ")));
builder.append(") FROM STDIN BINARY");
@@ -194,7 +188,7 @@ public class PostgresDatabase implements DataStore {
}
}
- private String dropTable(DataType type) {
- return String.format("DROP TABLE IF EXISTS %s CASCADE", type.name());
+ private String dropTable(Schema schema) {
+ return String.format("DROP TABLE IF EXISTS %s CASCADE", schema.name());
}
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/ShapefileDataFrame.java b/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/ShapefileDataFrame.java
index 8226ea26..a762de5d 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/ShapefileDataFrame.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/ShapefileDataFrame.java
@@ -20,8 +20,8 @@ import java.util.NoSuchElementException;
import org.apache.baremaps.collection.AbstractDataCollection;
import org.apache.baremaps.dataframe.DataFrame;
import org.apache.baremaps.dataframe.DataFrameException;
-import org.apache.baremaps.dataframe.DataType;
import org.apache.baremaps.dataframe.Row;
+import org.apache.baremaps.dataframe.Schema;
import org.apache.baremaps.storage.shapefile.internal.InputFeatureStream;
import org.apache.baremaps.storage.shapefile.internal.ShapefileReader;
@@ -35,9 +35,9 @@ public class ShapefileDataFrame extends AbstractDataCollection<Row>
}
@Override
- public DataType dataType() throws DataFrameException {
+ public Schema schema() throws DataFrameException {
try (var input = shapeFile.read()) {
- return input.getDataType();
+ return input.getSchema();
} catch (IOException e) {
throw new DataFrameException(e);
}
@@ -72,14 +72,13 @@ public class ShapefileDataFrame extends AbstractDataCollection<Row>
this.inputFeatureStream = inputFeatureStream;
}
-
@Override
public boolean hasNext() {
try {
if (next == null) {
- next = inputFeatureStream.readFeature();
+ next = inputFeatureStream.readRow();
}
- return true;
+ return next != null;
} catch (IOException exception) {
return false;
}
@@ -89,7 +88,7 @@ public class ShapefileDataFrame extends AbstractDataCollection<Row>
public Row next() {
try {
if (next == null) {
- next = inputFeatureStream.readFeature();
+ next = inputFeatureStream.readRow();
}
Row current = next;
next = null;
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/ShapefileDirectory.java b/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/ShapefileDirectory.java
index 919bc062..1a7779dc 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/ShapefileDirectory.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/ShapefileDirectory.java
@@ -31,12 +31,11 @@ public class ShapefileDirectory implements DataStore {
}
@Override
- public Collection<DataFrame> list() {
+ public Collection<String> list() {
try {
return Files.list(directory)
.filter(file -> file.toString().toLowerCase().endsWith(".shp"))
- .map(file -> new ShapefileDataFrame(file))
- .map(DataFrame.class::cast)
+ .map(file -> file.getFileName().toString())
.toList();
} catch (IOException e) {
throw new DataFrameException(e);
@@ -45,10 +44,7 @@ public class ShapefileDirectory implements DataStore {
@Override
public DataFrame get(String name) {
- return list().stream()
- .filter(dataFrame -> dataFrame.dataType().name().equals(name))
- .findFirst()
- .orElseThrow(() -> new DataFrameException());
+ return new ShapefileDataFrame(directory.resolve(name));
}
@Override
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/InputFeatureStream.java b/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/InputFeatureStream.java
index 7fb8d72e..4a0b4758 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/InputFeatureStream.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/InputFeatureStream.java
@@ -17,10 +17,9 @@ package org.apache.baremaps.storage.shapefile.internal;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
-import java.sql.SQLFeatureNotSupportedException;
import java.util.List;
-import org.apache.baremaps.dataframe.DataType;
import org.apache.baremaps.dataframe.Row;
+import org.apache.baremaps.dataframe.Schema;
/**
* Input Stream of features.
@@ -47,8 +46,8 @@ public class InputFeatureStream extends InputStream {
/** Indicates that the shape file has a valid index provided with it. */
private boolean hasShapefileIndex;
- /** Type of the features contained in this shapefile. */
- private DataType dataType;
+ /** Schema of the features contained in this shapefile. */
+ private Schema schema;
/** Shapefile reader. */
private ShapefileByteReader shapefileReader;
@@ -74,7 +73,7 @@ public class InputFeatureStream extends InputStream {
this.shapefileReader =
new ShapefileByteReader(this.shapefile, this.databaseFile, this.shapefileIndex);
- this.dataType = this.shapefileReader.getDataType();
+ this.schema = this.shapefileReader.getSchema();
}
/**
@@ -113,17 +112,24 @@ public class InputFeatureStream extends InputStream {
* @throws ShapefileException if the current connection used to query the shapefile has been
* closed.
*/
- public Row readFeature() throws ShapefileException {
- return internalReadFeature();
+ public Row readRow() throws ShapefileException {
+ if (!this.dbaseReader.nextRowAvailable()) {
+ return null;
+ }
+ Row row = this.schema.createRow();
+ this.dbaseReader.loadRow(row);
+ this.shapefileReader.setRowNum(this.dbaseReader.getRowNum());
+ this.shapefileReader.completeFeature(row);
+ return row;
}
/**
- * Return the features type.
+ * Returns the schema.
*
- * @return Features type.
+ * @return the schema.
*/
- public DataType getDataType() {
- return dataType;
+ public Schema getSchema() {
+ return schema;
}
/**
@@ -153,21 +159,4 @@ public class InputFeatureStream extends InputStream {
return this.hasShapefileIndex;
}
- /**
- * Read next feature responding to the SQL query.
- *
- * @return Feature, null if no more feature is available.
- * @throws SQLFeatureNotSupportedException if a SQL ability is not currently available through
- * this driver.
- */
- private Row internalReadFeature() throws ShapefileException {
- if (!this.dbaseReader.nextRowAvailable()) {
- return null;
- }
- Row row = this.dataType.newInstance();
- this.dbaseReader.loadRow(row);
- this.shapefileReader.setRowNum(this.dbaseReader.getRowNum());
- this.shapefileReader.completeFeature(row);
- return row;
- }
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/ShapefileByteReader.java b/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/ShapefileByteReader.java
index a7572903..dbc44ade 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/ShapefileByteReader.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/ShapefileByteReader.java
@@ -44,8 +44,8 @@ public class ShapefileByteReader extends CommonByteReader {
/** Database Field descriptors. */
private List<DBaseFieldDescriptor> databaseFieldsDescriptors;
- /** Type of the features contained in this shapefile. */
- private DataType dataType;
+ /** Schema of the features contained in this shapefile. */
+ private Schema schema;
/** Shapefile index. */
private File shapeFileIndex;
@@ -80,7 +80,7 @@ public class ShapefileByteReader extends CommonByteReader {
loadShapefileIndexes();
}
- this.dataType = getDataType(shapefile.getName());
+ this.schema = getSchema(shapefile.getName());
}
/**
@@ -102,12 +102,12 @@ public class ShapefileByteReader extends CommonByteReader {
}
/**
- * Returns the type of the features contained in this shapefile.
+ * Returns the schema of the data contained in this shapefile.
*
- * @return Features type.
+ * @return the schema
*/
- public DataType getDataType() {
- return this.dataType;
+ public Schema getSchema() {
+ return this.schema;
}
/**
@@ -116,14 +116,14 @@ public class ShapefileByteReader extends CommonByteReader {
* @param name Name of the field.
* @return The feature type.
*/
- private DataType getDataType(final String name) {
+ private Schema getSchema(final String name) {
Objects.requireNonNull(name, "The feature name cannot be null.");
var columns = new ArrayList<Column>();
for (int i = 0; i < databaseFieldsDescriptors.size(); i++) {
var fieldDescriptor = this.databaseFieldsDescriptors.get(i);
- var propertyName = fieldDescriptor.getName();
- var propertyType = switch (fieldDescriptor.getType()) {
+ var columnName = fieldDescriptor.getName();
+ var columnType = switch (fieldDescriptor.getType()) {
case Character -> String.class;
case Number -> fieldDescriptor.getDecimalCount() == 0 ? Long.class : Double.class;
case Currency -> Double.class;
@@ -143,13 +143,13 @@ public class ShapefileByteReader extends CommonByteReader {
case DateTime -> String.class;
};
- columns.add(new ColumnImpl(propertyName, propertyType));
+ columns.add(new ColumnImpl(columnName, columnType));
}
// Add geometry column.
columns.add(new ColumnImpl(GEOMETRY_NAME, Geometry.class));
- return new DataTypeImpl(name, columns);
+ return new SchemaImpl(name, columns);
}
/** Load shapefile descriptor. */
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/ShapefileReader.java b/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/ShapefileReader.java
index 9d5314ec..3b3d5c52 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/ShapefileReader.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/ShapefileReader.java
@@ -18,7 +18,7 @@ import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Objects;
-import org.apache.baremaps.dataframe.DataType;
+import org.apache.baremaps.dataframe.Schema;
/**
* Provides a ShapeFile Reader.
@@ -44,7 +44,7 @@ public class ShapefileReader {
private File shapeFileIndex;
/** Type of the features contained in this shapefile. */
- private DataType dataType;
+ private Schema schema;
/** Shapefile descriptor. */
private ShapefileDescriptor shapefileDescriptor;
@@ -113,12 +113,12 @@ public class ShapefileReader {
}
/**
- * Return the default feature type.
+ * Return the schema.
*
- * @return Feature type.
+ * @return the schema.
*/
- public DataType getDataType() {
- return this.dataType;
+ public Schema getSchema() {
+ return this.schema;
}
/**
@@ -174,7 +174,7 @@ public class ShapefileReader {
public InputFeatureStream read() throws IOException {
InputFeatureStream is =
new InputFeatureStream(this.shapefile, this.databaseFile, this.shapeFileIndex);
- this.dataType = is.getDataType();
+ this.schema = is.getSchema();
this.shapefileDescriptor = is.getShapefileDescriptor();
this.databaseFieldsDescriptors = is.getDatabaseFieldsDescriptors();
return is;
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/Entity.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/Entity.java
index b173a0c2..e43c1163 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/Entity.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/Entity.java
@@ -34,29 +34,29 @@ public class Entity implements Row {
@Override
- public DataType dataType() {
+ public Schema dataType() {
var columns = new ArrayList<Column>();
columns.add(new ColumnImpl("id", Long.class));
columns.add(new ColumnImpl("geometry", Geometry.class));
for (var entry : tags.entrySet()) {
columns.add(new ColumnImpl(entry.getKey(), String.class));
}
- return new DataTypeImpl("entity", columns);
+ return new SchemaImpl("entity", columns);
}
@Override
- public void set(String name, Object value) {
- tags.put(name, value.toString());
+ public void set(String column, Object value) {
+ tags.put(column, value.toString());
}
@Override
- public Object get(String name) {
- if (name.equals("id")) {
+ public Object get(String column) {
+ if (column.equals("id")) {
return id;
- } else if (name.equals("geometry")) {
+ } else if (column.equals("geometry")) {
return geometry;
} else {
- return tags.get(name);
+ return tags.get(column);
}
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportGeoPackage.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportGeoPackage.java
index 735127df..784d093e 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportGeoPackage.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportGeoPackage.java
@@ -14,7 +14,7 @@ package org.apache.baremaps.workflow.tasks;
import java.nio.file.Path;
import org.apache.baremaps.openstreetmap.utils.ProjectionTransformer;
-import org.apache.baremaps.storage.DataFrameProjectionTransform;
+import org.apache.baremaps.storage.DataFrameGeometryTransformer;
import org.apache.baremaps.storage.geopackage.GeoPackageDatabase;
import org.apache.baremaps.storage.postgres.PostgresDatabase;
import org.apache.baremaps.workflow.Task;
@@ -38,7 +38,7 @@ public record ImportGeoPackage(Path file, String database, Integer sourceSRID, I
var postgresDatabase = new PostgresDatabase(dataSource);
for (var dataFrame : geoPackageStore.list()) {
var transformer = new ProjectionTransformer(sourceSRID, targetSRID);
- var transformedDataFrame = new DataFrameProjectionTransform(dataFrame, transformer);
+ var transformedDataFrame = new DataFrameGeometryTransformer(dataFrame, transformer);
postgresDatabase.add(transformedDataFrame);
}
logger.info("Finished importing {} into {}", file, database);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportShapefile.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportShapefile.java
index 4582efe6..95745562 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportShapefile.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportShapefile.java
@@ -14,7 +14,7 @@ package org.apache.baremaps.workflow.tasks;
import java.nio.file.Path;
import org.apache.baremaps.openstreetmap.utils.ProjectionTransformer;
-import org.apache.baremaps.storage.DataFrameProjectionTransform;
+import org.apache.baremaps.storage.DataFrameGeometryTransformer;
import org.apache.baremaps.storage.postgres.PostgresDatabase;
import org.apache.baremaps.storage.shapefile.ShapefileDataFrame;
import org.apache.baremaps.workflow.Task;
@@ -36,7 +36,7 @@ public record ImportShapefile(Path file, String database, Integer sourceSRID, In
try (var featureSet = new ShapefileDataFrame(path)) {
var dataSource = context.getDataSource(database);
var postgresDatabase = new PostgresDatabase(dataSource);
- postgresDatabase.add(new DataFrameProjectionTransform(
+ postgresDatabase.add(new DataFrameGeometryTransformer(
featureSet, new ProjectionTransformer(sourceSRID, targetSRID)));
logger.info("Finished importing {} into {}", file, database);
} catch (Exception e) {
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/TransformEntityCollection.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/TransformEntityCollection.java
index f2cc47b3..afcd0fff 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/TransformEntityCollection.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/TransformEntityCollection.java
@@ -53,7 +53,7 @@ public record TransformEntityCollection(Path collection, String database,
public void execute(WorkflowContext context) throws Exception {
logger.info("Transform {} with {}", collection, recipe);
- var dataType = new DataTypeImpl(recipe.name, columns());
+ var dataType = new SchemaImpl(recipe.name, columns());
var groups = new AppendOnlyBuffer<>(new EntityDataType(), new MemoryMappedFile(collection))
.stream()
@@ -71,7 +71,7 @@ public record TransformEntityCollection(Path collection, String database,
var dataFrame = new AbstractDataFrame() {
@Override
- public DataType dataType() {
+ public Schema schema() {
return dataType;
}
diff --git a/baremaps-core/src/test/java/org/apache/baremaps/mvt/ExpressionsTest.java b/baremaps-core/src/test/java/org/apache/baremaps/mvt/ExpressionsTest.java
index 83e7b80b..629ea6c1 100644
--- a/baremaps-core/src/test/java/org/apache/baremaps/mvt/ExpressionsTest.java
+++ b/baremaps-core/src/test/java/org/apache/baremaps/mvt/ExpressionsTest.java
@@ -17,8 +17,8 @@ import static org.junit.jupiter.api.Assertions.*;
import java.io.IOException;
import java.util.List;
import java.util.Map;
-import org.apache.baremaps.dataframe.DataType;
import org.apache.baremaps.dataframe.Row;
+import org.apache.baremaps.dataframe.Schema;
import org.apache.baremaps.mvt.expression.Expressions;
import org.apache.baremaps.mvt.expression.Expressions.*;
import org.junit.jupiter.api.Test;
@@ -28,7 +28,7 @@ class ExpressionsTest {
record RowMock(Map<String, Object> properties) implements Row {
@Override
- public DataType dataType() {
+ public Schema dataType() {
throw new UnsupportedOperationException();
}
@@ -38,13 +38,13 @@ class ExpressionsTest {
}
@Override
- public void set(String name, Object value) {
- properties.put(name, value);
+ public void set(String column, Object value) {
+ properties.put(column, value);
}
@Override
- public Object get(String name) {
- return properties.get(name);
+ public Object get(String column) {
+ return properties.get(column);
}
}
diff --git a/baremaps-core/src/test/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufFeatureSetTest.java b/baremaps-core/src/test/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufDataFrameTest.java
similarity index 82%
rename from baremaps-core/src/test/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufFeatureSetTest.java
rename to baremaps-core/src/test/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufDataFrameTest.java
index a47088be..32b8fab2 100644
--- a/baremaps-core/src/test/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufFeatureSetTest.java
+++ b/baremaps-core/src/test/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufDataFrameTest.java
@@ -21,13 +21,13 @@ import java.nio.file.StandardOpenOption;
import org.apache.baremaps.testing.TestFiles;
import org.junit.jupiter.api.Test;
-class FlatGeoBufFeatureSetTest {
+class FlatGeoBufDataFrameTest {
@Test
void getType() throws IOException {
try (var channel = FileChannel.open(TestFiles.resolve("countries.fgb"))) {
- var featureSet = new FlatGeoBufFeatureSet(channel);
- var featureType = featureSet.getType();
+ var featureSet = new FlatGeoBufDataFrame(channel);
+ var featureType = featureSet.getSchema();
assertEquals(featureType.name(), null);
assertEquals(featureType.columns().size(), 2);
}
@@ -36,7 +36,7 @@ class FlatGeoBufFeatureSetTest {
@Test
void read() throws IOException {
try (var channel = FileChannel.open(TestFiles.resolve("countries.fgb"))) {
- var featureSet = new FlatGeoBufFeatureSet(channel);
+ var featureSet = new FlatGeoBufDataFrame(channel);
assertEquals(179, featureSet.read().size());
assertEquals(179, featureSet.read().stream().count());
}
@@ -48,14 +48,14 @@ class FlatGeoBufFeatureSetTest {
file.toFile().deleteOnExit();
try (var channel1 = FileChannel.open(TestFiles.resolve("countries.fgb"));
var channel2 = FileChannel.open(file, StandardOpenOption.WRITE)) {
- var featureSet1 = new FlatGeoBufFeatureSet(channel1);
+ var featureSet1 = new FlatGeoBufDataFrame(channel1);
var featureList = featureSet1.read().stream().toList();
- var featureSet2 = new FlatGeoBufFeatureSet(channel2, featureSet1.getType());
+ var featureSet2 = new FlatGeoBufDataFrame(channel2, featureSet1.getSchema());
featureSet2.write(featureList);
}
try (var channel = FileChannel.open(file, StandardOpenOption.READ)) {
- var featureSet = new FlatGeoBufFeatureSet(channel);
+ var featureSet = new FlatGeoBufDataFrame(channel);
assertEquals(179, featureSet.read().size());
}
}