protected ModelAndView doHandle()

in usage-statistics-impl/src/jetbrains/buildServer/controllers/DownloadUsageStatisticsController.java [42:75]


  protected ModelAndView doHandle(@NotNull final HttpServletRequest request, @NotNull final HttpServletResponse response) throws Exception {
    if (!myStatisticsCollector.isStatisticsCollected()) {
      //noinspection ThrowableResultOfMethodCallIgnored
      final String cause = UsageStatisticsCollectorImpl.createIllegalStateException().getLocalizedMessage().toLowerCase();
      WebUtil.notFound(request, response, "Failed to download usage statistics: " + cause, LOG);
      return null;
    }

    final Date collectingFinishDate = myStatisticsCollector.getLastCollectingFinishDate();
    final String fileName = String.format("tc-usage-statistics-%s.properties", FILE_NAME_DATE_FORMAT.format(collectingFinishDate));

    OutputStream out = null;
    try {
      out = response.getOutputStream();

      response.setContentType("text/plain");
      WebUtil.setContentDisposition(request, response, fileName, false);
      WebUtil.addCacheHeadersForIE(request, response);

      writeStatistics(out, collectingFinishDate);
    }
    catch (final Exception e) {
      LOG.error("Failed to download usage statistics", e);
      response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Failed to download usage statistics");
    }
    finally {
      if (out != null) {
        out.flush();
        out.close();
      }
    }

    return null;
  }