public void loadRow()

in baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/DbaseByteReader.java [104:143]


  public void loadRow(DataRow row) {
    // TODO: ignore deleted records
    getByteBuffer().get(); // denotes whether deleted or current
    // read first part of record

    var check = nextRowAvailable();

    for (DBaseFieldDescriptor fieldDescriptor : this.fieldsDescriptors) {
      byte[] data = new byte[fieldDescriptor.getLength()];
      getByteBuffer().get(data);

      int length = data.length;
      while (length != 0 && Byte.toUnsignedInt(data[length - 1]) <= ' ') {
        length--;
      }

      String value = new String(data, 0, length);

      // TODO: move somewhere else
      Object object = switch (fieldDescriptor.getType()) {
        case Character -> value;
        case Number -> getNumber(fieldDescriptor, value);
        case Currency -> Double.parseDouble(value.trim());
        case Integer -> Integer.parseInt(value.trim());
        case Double -> Double.parseDouble(value.trim());
        case AutoIncrement -> Integer.parseInt(value.trim());
        case Logical -> value;
        case Date -> value;
        case Memo -> value;
        case FloatingPoint -> value;
        case Picture -> value;
        case VariField -> value;
        case Variant -> value;
        case TimeStamp -> value;
        case DateTime -> value;
      };

      row.set(fieldDescriptor.getName(), object);
    }
  }