private DataRowType getSchema()

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);
  }