public SagaExecutionQueryResult querySagaExecution()

in saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaExecutionQueryService.java [77:103]


  public SagaExecutionQueryResult querySagaExecution(String pageIndex, String pageSize,
      String startTime, String endTime) throws ParseException {

    Date start = "NaN-NaN-NaN NaN:NaN:NaN".equals(startTime) ? new Date(0) : this.dateFormat.parse(startTime);
    Date end = "NaN-NaN-NaN NaN:NaN:NaN".equals(endTime) ? new Date() : this.dateFormat.parse(endTime);

    List<SagaExecution> requests = new ArrayList<>();
    Page<SagaEventEntity> startEvents = repo.findByTypeAndCreationTimeBetweenOrderByIdDesc(
        SagaStartedEvent.class.getSimpleName(), start, end,
        new PageRequest(Integer.parseInt(pageIndex), Integer.parseInt(pageSize)));
    for (SagaEventEntity event : startEvents) {
      SagaEventEntity endEvent = repo
          .findFirstByTypeAndSagaId(SagaEndedEvent.class.getSimpleName(), event.sagaId());
      SagaEventEntity abortedEvent = repo
          .findFirstByTypeAndSagaId(TransactionAbortedEvent.class.getSimpleName(), event.sagaId());

      requests.add(new SagaExecution(
          event.id(),
          event.sagaId(),
          event.creationTime(),
          endEvent == null ? 0 : endEvent.creationTime(),
          endEvent == null ? "Running" : abortedEvent == null ? "OK" : "Failed"));
    }

    return new SagaExecutionQueryResult(Integer.parseInt(pageIndex), Integer.parseInt(pageSize),
        startEvents.getTotalPages(), requests);
  }