in tsfile-viewer-web/src/main/java/org/apache/iotdb/ui/service/TsfileViewerService.java [451:511]
public PageDataVO getPageDataThroughTimeseriesIndex(
TimeseriesIndexOffsetInfo timeseriesIndexOffsetInfo, String filePath, QueryByTimeReq req)
throws IOException, InterruptedException, TsfileViewerException {
filePath = getFullPath(filePath);
TsFileAnalyserV13 parse = tsfileViewerContainer.getTsfileParser(filePath);
PageDataTableInfo table =
parse.fetchBatchDataByTimeseriesIndexOffset(timeseriesIndexOffsetInfo);
BatchData data = table.getData();
PageDataVO pageDataVO = new PageDataVO();
pageDataVO.setTitle(table.getTitle());
if (timeseriesIndexOffsetInfo.isAligned()) {
while (data.hasCurrent()) {
List<String> col = new ArrayList<>();
long time = data.currentTime();
col.add(time + "");
String[] values = data.currentTsPrimitiveType().getStringValue().split(",");
for (int i = 0; i < values.length; i++) {
values[i] = values[i].trim();
if (i == 0) {
values[i] = values[i].substring(1);
} else if (i == values.length - 1) {
values[i] = values[i].substring(0, values[i].length() - 1);
}
col.add(values[i]);
}
pageDataVO.getValues().add(col);
data.next();
}
} else {
while (data.hasCurrent()) {
List<String> col = new ArrayList<>();
col.add(data.currentTime() + "");
Object currValue = data.currentValue();
col.add(currValue.toString());
pageDataVO.getValues().add(col);
data.next();
}
}
// 通过时间条件过滤一下
pageDataVO.setValues(
pageDataVO.getValues().stream()
.filter(
cols -> {
long timestamp = Long.parseLong(cols.get(0));
if (req.getBeginDate() != null && req.getBeginDate() != 0) {
if (req.getBeginDate() > timestamp) {
return false;
}
}
if (req.getEndDate() != null && req.getEndDate() != 0) {
if (req.getEndDate() < timestamp) {
return false;
}
}
return true;
})
.collect(Collectors.toList()));
return pageDataVO;
}