package com.revolsys.elevation.cloud.las;
import java.util.Arrays;
import java.util.function.BiFunction;
import com.revolsys.util.Pair;
public class LasVariableLengthRecord {
private final byte[] bytes;
private final String description;
private final int recordId;
private final String userId;
private Object value;
public LasVariableLengthRecord(final String userId, final int recordId, final String description,
final byte[] bytes) {
this.userId = userId;
this.recordId = recordId;
this.description = description;
this.bytes = bytes;
}
public LasVariableLengthRecord(final String userId, final int recordId, final String description,
final byte[] bytes, final Object value) {
this.userId = userId;
this.recordId = recordId;
this.description = description;
this.bytes = bytes;
this.value = value;
}
void convertValue(final BiFunction<LasPointCloudHeader, byte[], Object> converter,
final LasPointCloudHeader header) {
this.value = converter.apply(header, this.bytes);
}
public byte[] getBytes() {
return this.bytes;
}
public String getDescription() {
return this.description;
}
public Pair<String, Integer> getKey() {
return new Pair<>(this.userId, this.recordId);
}
public int getRecordId() {
return this.recordId;
}
public String getUserId() {
return this.userId;
}
public Object getValue() {
return this.value;
}
public int getValueLength() {
return this.bytes.length;
}
@Override
public String toString() {
Object value = this.value;
if (value == null) {
value = Arrays.toString(this.bytes);
}
return this.userId + "-" + this.recordId + "=" + value + " (" + this.description + ")";
}
}