private void doGenerateReport()

in report-builder/src/jetbrains/coverage/report/impl/html/HTMLReportBuilderImpl.java [96:130]


  private void doGenerateReport(final CoverageData data, final StatisticsCalculator covStatsCalculator) {
    FileSystem fs = null;
    try {
      fs = createFS();
      createReportDir(fs);
      MapToSet<ModuleInfo, ClassInfo> moduleToClassesMap = groupByModules(data.getClasses());

      final TemplateProcessorFactory fac;
      final LocalGeneratorPaths paths;
      final TemplateFactory templateFactory = new TemplateFactory();
      if (moduleToClassesMap.keySet().size() > 1) {
        paths = new ModulesLocalPaths(myReportDir);
        fac = new TemplateProcessorFactory(templateFactory, myResourceBundleName, true, getFooterInfos(), fs, myReportTitle, myCharset);
        new ModulesIndexGenerator(fac.createModulesIndexProcessor(), paths).generateModulesIndex(moduleToClassesMap.keySet(), covStatsCalculator);
      } else {
        fac = new TemplateProcessorFactory(templateFactory, myResourceBundleName, false, getFooterInfos(), fs, myReportTitle, myCharset);
        paths = new NamespacesLocalPaths(myReportDir);
      }


      if (moduleToClassesMap.isEmpty()) {
        fac.createEmptyTemplate().renderTemplate(Collections.<String, Object>emptyMap(), paths.getModulesIndexPath(SortOption.NONE));
      } else {
        for (ModuleInfo info : moduleToClassesMap.keySet()) {
          generateReportForModule(data.getSourceData(), covStatsCalculator, fac, paths, moduleToClassesMap, info);
        }
      }
    } catch (IOException e) {
      throw new ReportGenerationFailedException("Failed to generate report", e);
    } finally {
      if (fs instanceof Closeable) {
        IOUtil.close((Closeable) fs);
      }
    }
  }