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