public Map readNextRowAsObjects()

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


  public Map<String, byte[]> readNextRowAsObjects() {
    // TODO: ignore deleted records
    /* byte isDeleted = */ getByteBuffer().get(); // denotes whether deleted or current

    // read first part of record
    HashMap<String, byte[]> fieldsValues = new HashMap<>();

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

      // Trim the bytes right.
      int length = data.length;

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

      if (length != data.length) {
        byte[] dataTrimmed = new byte[length];

        for (int index = 0; index < length; index++) {
          dataTrimmed[index] = data[index];
        }

        fieldsValues.put(fd.getName(), dataTrimmed);
      } else {
        fieldsValues.put(fd.getName(), data);
      }
    }

    return fieldsValues;
  }