in tsfile-viewer-web/src/main/java/org/apache/iotdb/ui/service/TsfileViewerService.java [564:632]
public Page<TimeseriesIndexVO> getTimeseriesIndexList(
String filePath, PageModel pageModel, QueryByTimeseriesIndexReq req)
throws TsfileViewerException {
filePath = getFullPath(filePath);
TsFileAnalyserV13 parse = tsfileViewerContainer.getTsfileParser(filePath);
Map<Long, Pair<Path, ITimeSeriesMetadata>> timeseriesMap = parse.getTimeseriesMetadataMap();
List<TimeseriesIndexVO> list = new ArrayList<>();
// 查询条件过滤
timeseriesMap =
timeseriesMap.entrySet().stream()
.filter(
s -> {
if (req.getDeviceNameLike() != null && !"".equals(req.getDeviceNameLike())) {
if (!s.getValue().left.getDevice().contains(req.getDeviceNameLike())) {
return false;
}
}
long start = s.getValue().right.getStatistics().getStartTime();
long end = s.getValue().right.getStatistics().getEndTime();
if (req.getBeginDate() != null && req.getBeginDate() != 0) {
if (req.getBeginDate() > end) {
return false;
}
}
if (req.getEndDate() != null && req.getEndDate() != 0) {
if (req.getEndDate() < start) {
return false;
}
}
return true;
})
.collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue()));
double totalSize = timeseriesMap.size();
double pageNo = pageModel.getPageNo();
PageParam pageParam = new PageParam();
pageParam.setPageNo(pageModel.getPageNo());
pageParam.setPageSize(pageModel.getPageSize());
pageParam.setMaxPageNum((int) Math.ceil(totalSize / pageNo));
pageParam.setTotalCount(timeseriesMap.size());
int start = (pageModel.getPageNo() - 1) * pageModel.getPageSize();
int end = pageModel.getPageNo() * pageModel.getPageSize();
if (end > timeseriesMap.size()) {
end = timeseriesMap.size();
}
List<Long> pagingKeys = new ArrayList<>(timeseriesMap.keySet()).subList(start, end);
for (Long offset : pagingKeys) {
TimeseriesIndexVO timeseriesIndexVO = new TimeseriesIndexVO();
timeseriesIndexVO.setOffset(offset);
Pair<Path, ITimeSeriesMetadata> pair = timeseriesMap.get(offset);
timeseriesIndexVO.setDeviceId(pair.left.getDevice());
timeseriesIndexVO.setMeasurementId(pair.left.getMeasurement());
if (pair.right instanceof TimeseriesMetadata) {
timeseriesIndexVO.setAligned(false);
} else {
timeseriesIndexVO.setAligned(true);
}
list.add(timeseriesIndexVO);
}
Page<TimeseriesIndexVO> res = new Page(list, pageParam);
return res;
}