Exemple #1
0
  @Override
  public void handle(Context ctx, Model model, Payload payload) {
    ListViewModel listViewModel = new ListViewModel();
    AbtestStatus status = AbtestStatus.getByName(payload.getStatus(), null);

    List<AbtestItem> filterItems = new ArrayList<AbtestItem>();
    List<AbtestItem> totalItems = new ArrayList<AbtestItem>();
    int createdCount = 0, readyCount = 0, runningCount = 0, terminatedCount = 0, suspendedCount = 0;

    try {
      List<AbtestRun> runs = m_abtestRunDao.findAll(AbtestRunEntity.READSET_FULL);

      if (runs != null) {
        for (AbtestRun run : runs) {
          Abtest abtest = m_abtestDao.findByPK(run.getCaseId(), AbtestEntity.READSET_FULL);
          AbtestItem item = new AbtestItem(abtest, run);

          totalItems.add(item);

          if (status != null && item.getStatus() == status) {
            filterItems.add(item);
          }

          switch (item.getStatus()) {
            case CREATED:
              createdCount++;
              break;
            case READY:
              readyCount++;
              break;
            case RUNNING:
              runningCount++;
              break;
            case TERMINATED:
              terminatedCount++;
              break;
            case SUSPENDED:
              suspendedCount++;
              break;
          }
        }
      }
    } catch (Throwable e) {
      Cat.logError(e);
    }

    listViewModel.setCreatedCount(createdCount);
    listViewModel.setReadyCount(readyCount);
    listViewModel.setRunningCount(runningCount);
    listViewModel.setTerminatedCount(terminatedCount);
    listViewModel.setSuspendedCount(suspendedCount);

    if (status != null) {
      totalItems = null;
      totalItems = filterItems;
    }

    int totalSize = totalItems.size();
    int totalPages =
        totalSize % m_pageSize == 0 ? (totalSize / m_pageSize) : (totalSize / m_pageSize + 1);

    // safe guarder for pageNum
    if (payload.getPageNum() >= totalPages) {
      if (totalPages == 0) {
        payload.setPageNum(1);
      } else {
        payload.setPageNum(totalPages);
      }
    } else if (payload.getPageNum() <= 0) {
      payload.setPageNum(1);
    }

    int fromIndex = (payload.getPageNum() - 1) * m_pageSize;
    int toIndex = (fromIndex + m_pageSize) <= totalSize ? (fromIndex + m_pageSize) : totalSize;

    listViewModel.setTotalPages(totalPages);
    listViewModel.setItems(totalItems.subList(fromIndex, toIndex));

    model.setListViewModel(listViewModel);
  }