public Page getTimeseriesIndexList()

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