in baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/ShapefileByteReader.java [120:153]
private DataRowType getSchema(final String name) {
Objects.requireNonNull(name, "The row name cannot be null.");
var columns = new ArrayList<DataColumn>();
for (int i = 0; i < databaseFieldsDescriptors.size(); i++) {
var fieldDescriptor = this.databaseFieldsDescriptors.get(i);
var columnName = fieldDescriptor.getName();
var columnType = switch (fieldDescriptor.getType()) {
case Character -> Type.STRING;
case Number -> fieldDescriptor.getDecimalCount() == 0 ? Type.LONG : Type.DOUBLE;
case Currency -> Type.DOUBLE;
case Double -> Type.DOUBLE;
case Integer -> Type.INTEGER;
case AutoIncrement -> Type.INTEGER;
// TODO: Implement the following types
case Logical -> Type.STRING;
case Date -> Type.STRING;
case Memo -> Type.STRING;
case FloatingPoint -> Type.STRING;
case Picture -> Type.STRING;
case VariField -> Type.STRING;
case Variant -> Type.STRING;
case TimeStamp -> Type.STRING;
case DateTime -> Type.STRING;
};
columns.add(new DataColumnImpl(columnName, columnType));
}
// Add geometry column.
columns.add(new DataColumnImpl(GEOMETRY_NAME, Type.GEOMETRY));
return new DataRowTypeImpl(name, columns);
}