package mil.nga.giat.geowave.core.store.flatten;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
public class FlattenedUnreadDataSingleRow implements
FlattenedUnreadData
{
private final ByteBuffer partiallyConsumedBuffer;
private final int currentIndexInFieldPositions;
private final List<Integer> fieldPositions;
private List<FlattenedFieldInfo> cachedRead = null;
public FlattenedUnreadDataSingleRow(
final ByteBuffer partiallyConsumedBuffer,
final int currentIndexInFieldPositions,
final List<Integer> fieldPositions ) {
this.partiallyConsumedBuffer = partiallyConsumedBuffer;
this.currentIndexInFieldPositions = currentIndexInFieldPositions;
this.fieldPositions = fieldPositions;
}
public List<FlattenedFieldInfo> finishRead() {
if (cachedRead == null) {
cachedRead = new ArrayList<>();
for (int i = currentIndexInFieldPositions; i < fieldPositions.size(); i++) {
final int fieldLength = partiallyConsumedBuffer.getInt();
final byte[] fieldValueBytes = new byte[fieldLength];
partiallyConsumedBuffer.get(fieldValueBytes);
final Integer fieldPosition = fieldPositions.get(i);
cachedRead.add(new FlattenedFieldInfo(
fieldPosition,
fieldValueBytes));
}
}
return cachedRead;
}
}