public PageDataVO getPageDataThroughTimeseriesIndex()

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