This is an automated email from the ASF dual-hosted git repository.
bchapuis pushed a commit to branch calcite
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git
The following commit(s) were added to refs/heads/calcite by this push:
new ff3b2783 Isolate type conversions in dedicated classes
ff3b2783 is described below
commit ff3b2783990c58f620c7908586cee557a11239a5
Author: Bertil Chapuis <[email protected]>
AuthorDate: Sat Jun 24 12:22:50 2023 +0200
Isolate type conversions in dedicated classes
---
.../storage/flatgeobuf/FlatGeoBufDataTable.java | 9 ++--
...versions.java => FlatGeoBufTypeConversion.java} | 6 +--
.../storage/postgres/PostgresDataSchema.java | 52 +++----------------
.../storage/postgres/PostgresTypeConversion.java | 59 ++++++++++++++++++++++
...aSchemaTest.java => PostgresTileStoreTest.java} | 2 +-
5 files changed, 73 insertions(+), 55 deletions(-)
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 a1b85d31..1401b29d 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
@@ -26,7 +26,6 @@ import
org.apache.baremaps.database.collection.AbstractDataCollection;
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.storage.flatgeobuf.internal.TableConversions;
import org.locationtech.jts.geom.*;
import org.wololo.flatgeobuf.Constants;
import org.wololo.flatgeobuf.GeometryConversions;
@@ -81,7 +80,7 @@ public class FlatGeoBufDataTable extends AbstractDataTable {
// try to read the row type from the file
var buffer = ByteBuffer.allocate(1 << 20).order(ByteOrder.LITTLE_ENDIAN);
HeaderMeta headerMeta = readHeaderMeta(channel, buffer);
- return TableConversions.asRowType(headerMeta);
+ return FlatGeoBufTypeConversion.asRowType(headerMeta);
} catch (IOException e) {
return null;
}
@@ -164,7 +163,7 @@ public class FlatGeoBufDataTable extends AbstractDataTable {
headerMeta.featuresCount =
features instanceof AbstractDataCollection<DataRow>c ?
c.sizeAsLong() : features.size();
headerMeta.name = rowType.name();
- headerMeta.columns = TableConversions.asColumns(rowType.columns());
+ headerMeta.columns =
FlatGeoBufTypeConversion.asColumns(rowType.columns());
HeaderMeta.write(headerMeta, outputStream, bufferBuilder);
var indexSize =
@@ -188,7 +187,7 @@ public class FlatGeoBufDataTable extends AbstractDataTable {
var column = headerMeta.columns.get(i);
var value = properties.get(i);
propertiesBuffer.putShort((short) i);
- TableConversions.writeValue(propertiesBuffer, column, value);
+ FlatGeoBufTypeConversion.writeValue(propertiesBuffer, column, value);
}
if (propertiesBuffer.position() > 0) {
propertiesBuffer.flip();
@@ -268,7 +267,7 @@ public class FlatGeoBufDataTable extends AbstractDataTable {
var featureSize = buffer.getInt();
var row =
- TableConversions.asRow(headerMeta, rowType,
Feature.getRootAsFeature(buffer));
+ FlatGeoBufTypeConversion.asRow(headerMeta, rowType,
Feature.getRootAsFeature(buffer));
buffer.position(Integer.BYTES + featureSize);
buffer.compact();
diff --git
a/baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/internal/TableConversions.java
b/baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufTypeConversion.java
similarity index 98%
rename from
baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/internal/TableConversions.java
rename to
baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufTypeConversion.java
index 82f51a20..0974425a 100644
---
a/baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/internal/TableConversions.java
+++
b/baremaps-core/src/main/java/org/apache/baremaps/storage/flatgeobuf/FlatGeoBufTypeConversion.java
@@ -10,7 +10,7 @@
* the License.
*/
-package org.apache.baremaps.storage.flatgeobuf.internal;
+package org.apache.baremaps.storage.flatgeobuf;
import com.google.flatbuffers.FlatBufferBuilder;
@@ -30,7 +30,7 @@ import org.wololo.flatgeobuf.generated.Crs;
import org.wololo.flatgeobuf.generated.Feature;
import org.wololo.flatgeobuf.generated.Header;
-public class TableConversions {
+public class FlatGeoBufTypeConversion {
public static final EnumMap<Type, Integer> types = new EnumMap<>(Type.class);
@@ -194,7 +194,7 @@ public class TableConversions {
public static List<ColumnMeta> asColumns(List<DataColumn> columns) {
return columns.stream()
- .map(TableConversions::asColumn)
+ .map(FlatGeoBufTypeConversion::asColumn)
.filter(Objects::nonNull)
.collect(Collectors.toList());
}
diff --git
a/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDataSchema.java
b/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDataSchema.java
index 5a6e3a5d..e21703c4 100644
---
a/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDataSchema.java
+++
b/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresDataSchema.java
@@ -14,15 +14,9 @@ package org.apache.baremaps.storage.postgres;
import de.bytefish.pgbulkinsert.pgsql.handlers.*;
-import java.net.Inet4Address;
-import java.net.Inet6Address;
import java.sql.SQLException;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
import java.util.Collection;
import java.util.List;
-import java.util.Map;
import java.util.stream.Collectors;
import javax.sql.DataSource;
import org.apache.baremaps.database.schema.*;
@@ -31,7 +25,6 @@ import org.apache.baremaps.postgres.copy.CopyWriter;
import org.apache.baremaps.postgres.copy.GeometryValueHandler;
import org.apache.baremaps.postgres.metadata.DatabaseMetadata;
import org.apache.baremaps.postgres.metadata.TableMetadata;
-import org.locationtech.jts.geom.*;
import org.postgresql.PGConnection;
import org.postgresql.copy.PGCopyOutputStream;
import org.slf4j.Logger;
@@ -46,41 +39,6 @@ public class PostgresDataSchema implements DataSchema {
private static final String[] TYPES = new String[] {"TABLE", "VIEW"};
- protected static final 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(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(Inet4Address.class, "inet"),
- Map.entry(Inet6Address.class, "inet"),
- Map.entry(LocalDate.class, "date"),
- Map.entry(LocalTime.class, "time"),
- Map.entry(LocalDateTime.class, "timestamp"));
-
- protected static final Map<String, Type> nameToType = Map.ofEntries(
- Map.entry("varchar", Type.STRING),
- Map.entry("int2", Type.SHORT),
- Map.entry("int4", Type.INTEGER),
- Map.entry("int8", Type.LONG),
- Map.entry("float4", Type.FLOAT),
- Map.entry("float8", Type.DOUBLE),
- Map.entry("geometry", Type.GEOMETRY),
- Map.entry("inet", Type.INET6_ADDRESS),
- Map.entry("date", Type.LOCAL_DATE),
- Map.entry("time", Type.LOCAL_TIME),
- Map.entry("timestamp", Type.LOCAL_DATE_TIME));
-
private final DataSource dataSource;
/**
@@ -189,7 +147,8 @@ public class PostgresDataSchema implements DataSchema {
protected static DataRowType createRowType(TableMetadata tableMetadata) {
var name = tableMetadata.table().tableName();
var columns = tableMetadata.columns().stream()
- .map(column -> new DataColumnImpl(column.columnName(),
nameToType.get(column.typeName())))
+ .map(column -> new DataColumnImpl(column.columnName(),
+ PostgresTypeConversion.nameToType.get(column.typeName())))
.map(DataColumn.class::cast)
.toList();
return new DataRowTypeImpl(name, columns);
@@ -204,7 +163,7 @@ public class PostgresDataSchema implements DataSchema {
protected DataRowType adaptDataType(DataRowType rowType) {
var name = rowType.name().replaceAll("[^a-zA-Z0-9]", "_");
var properties = rowType.columns().stream()
- .filter(column -> typeToName.containsKey(column.type()))
+ .filter(column ->
PostgresTypeConversion.typeToName.containsKey(column.type()))
.map(column -> (DataColumn) new DataColumnImpl(column.name(),
column.type()))
.toList();
return new DataRowTypeImpl(name, properties);
@@ -233,7 +192,7 @@ public class PostgresDataSchema implements DataSchema {
builder.append("\" (");
builder.append(rowType.columns().stream()
.map(column -> "\"" + column.name()
- + "\" " + typeToName.get(column.type()))
+ + "\" " + PostgresTypeConversion.typeToName.get(column.type()))
.collect(Collectors.joining(", ")));
builder.append(")");
return builder.toString();
@@ -254,6 +213,7 @@ public class PostgresDataSchema implements DataSchema {
.map(column -> "\"" + column.name() + "\"")
.collect(Collectors.joining(", ")));
builder.append(") FROM STDIN BINARY");
+ System.out.println(builder.toString());
return builder.toString();
}
@@ -320,6 +280,6 @@ public class PostgresDataSchema implements DataSchema {
* @return true if the column type is supported
*/
protected boolean isSupported(DataColumn column) {
- return typeToName.containsKey(column.type());
+ return PostgresTypeConversion.typeToName.containsKey(column.type());
}
}
diff --git
a/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresTypeConversion.java
b/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresTypeConversion.java
new file mode 100644
index 00000000..aa2080e4
--- /dev/null
+++
b/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresTypeConversion.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed 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.storage.postgres;
+
+import java.util.EnumMap;
+import java.util.Map;
+import org.apache.baremaps.database.schema.DataColumn.Type;
+
+public class PostgresTypeConversion {
+
+ public static final EnumMap<Type, String> typeToName = new
EnumMap<>(Type.class);
+
+ static {
+ typeToName.put(Type.STRING, "varchar");
+ typeToName.put(Type.SHORT, "int2");
+ typeToName.put(Type.INTEGER, "int4");
+ typeToName.put(Type.LONG, "int8");
+ typeToName.put(Type.FLOAT, "float4");
+ typeToName.put(Type.DOUBLE, "float8");
+ typeToName.put(Type.GEOMETRY, "geometry");
+ typeToName.put(Type.POINT, "geometry");
+ typeToName.put(Type.MULTIPOINT, "geometry");
+ typeToName.put(Type.LINESTRING, "geometry");
+ typeToName.put(Type.MULTILINESTRING, "geometry");
+ typeToName.put(Type.POLYGON, "geometry");
+ typeToName.put(Type.MULTIPOLYGON, "geometry");
+ typeToName.put(Type.GEOMETRYCOLLECTION, "geometry");
+ typeToName.put(Type.INET_ADDRESS, "inet");
+ typeToName.put(Type.INET4_ADDRESS, "inet");
+ typeToName.put(Type.INET6_ADDRESS, "inet");
+ typeToName.put(Type.LOCAL_DATE, "date");
+ typeToName.put(Type.LOCAL_TIME, "time");
+ typeToName.put(Type.LOCAL_DATE_TIME, "timestamp");
+ }
+
+ protected static final Map<String, Type> nameToType = Map.ofEntries(
+ Map.entry("varchar", Type.STRING),
+ Map.entry("int2", Type.SHORT),
+ Map.entry("int4", Type.INTEGER),
+ Map.entry("int8", Type.LONG),
+ Map.entry("float4", Type.FLOAT),
+ Map.entry("float8", Type.DOUBLE),
+ Map.entry("geometry", Type.GEOMETRY),
+ Map.entry("inet", Type.INET6_ADDRESS),
+ Map.entry("date", Type.LOCAL_DATE),
+ Map.entry("time", Type.LOCAL_TIME),
+ Map.entry("timestamp", Type.LOCAL_DATE_TIME));
+
+}
diff --git
a/baremaps-core/src/test/java/org/apache/baremaps/tilestore/postgres/PostgresTileDataSchemaTest.java
b/baremaps-core/src/test/java/org/apache/baremaps/tilestore/postgres/PostgresTileStoreTest.java
similarity index 99%
rename from
baremaps-core/src/test/java/org/apache/baremaps/tilestore/postgres/PostgresTileDataSchemaTest.java
rename to
baremaps-core/src/test/java/org/apache/baremaps/tilestore/postgres/PostgresTileStoreTest.java
index b23954f8..ecfe479e 100644
---
a/baremaps-core/src/test/java/org/apache/baremaps/tilestore/postgres/PostgresTileDataSchemaTest.java
+++
b/baremaps-core/src/test/java/org/apache/baremaps/tilestore/postgres/PostgresTileStoreTest.java
@@ -19,7 +19,7 @@ import java.util.List;
import org.apache.baremaps.tilestore.TileCoord;
import org.junit.jupiter.api.Test;
-class PostgresTileDataSchemaTest {
+class PostgresTileStoreTest {
@Test
void sameQueries() {