docs: protected String generateAllTopicZanataUrl(final BuildData buildData) {
          final ZanataDetails zanataDetails = buildData.getZanataDetails();
          final String zanataServerUrl = zanataDetails == null ? null : zanataDetails.getServer();
          final String zanataProject = zanataDetails == null ? null : zanataDetails.getProject();
          final String zanataVersion = zanataDetails == null ? null : zanataDetails.getVersion();
  
          String reportChapter = "";
          if (zanataServerUrl != null && !zanataServerUrl.isEmpty() && zanataProject != null && !zanataProject.isEmpty() && zanataVersion
                  != null && !zanataVersion.isEmpty()) {
  
              final List<StringBuilder> zanataUrls = new ArrayList<StringBuilder>();
              StringBuilder zanataUrl = new StringBuilder(zanataServerUrl);
              zanataUrls.add(zanataUrl);
  
              zanataUrl.append("webtrans/Application.html?project=" + zanataProject);
              zanataUrl.append("&amp;");
              zanataUrl.append("iteration=" + zanataVersion);
              zanataUrl.append("&amp;");
              zanataUrl.append("localeId=" + buildData.getBuildLocale());
  
              // Add all the Topic Zanata Ids
              final List<TranslatedTopicWrapper> topics = buildData.getBuildDatabase().getAllTopics();
              int andCount = 0;
              for (final TranslatedTopicWrapper topic : topics) {
                  // Check to make sure the topic has been pushed for translation
                  if (!EntityUtilities.isDummyTopic(topic) || EntityUtilities.hasBeenPushedForTranslation(topic)) {
                      zanataUrl.append("&amp;");
                      andCount++;
                      zanataUrl.append("doc=" + ((TranslatedTopicWrapper) topic).getZanataId());
                  }
  
                  // If the URL gets too big create a second, third, etc... URL.
                  if (zanataUrl.length() > (MAX_URL_LENGTH + andCount * 4)) {
                      zanataUrl = new StringBuilder(zanataServerUrl);
                      zanataUrls.add(zanataUrl);
  
                      zanataUrl.append("webtrans/Application.html?project=" + zanataProject);
                      zanataUrl.append("&amp;");
                      zanataUrl.append("iteration=" + zanataVersion);
                      zanataUrl.append("&amp;");
                      zanataUrl.append("localeId=" + buildData.getBuildLocale());
                  }
              }
  
              // Add the CSP Zanata ID
              final TranslatedContentSpecWrapper translatedContentSpec = EntityUtilities.getClosestTranslatedContentSpecById(providerFactory,
                      buildData.getContentSpec().getId(), buildData.getContentSpec().getRevision());
              if (translatedContentSpec != null) {
                  zanataUrl.append("&amp;");
                  zanataUrl.append("doc=" + translatedContentSpec.getZanataId());
              }
  
              // Generate the docbook elements for the links
              for (int i = 1; i <= zanataUrls.size(); i++) {
                  final String para;
  
                  if (zanataUrls.size() > 1) {
                      para = DocBookUtilities.wrapInPara(DocBookUtilities.buildULink(zanataUrls.get(i - 1).toString(),
                              "View Topics and Statistics in Zanata (" + i + "/" + zanataUrls.size() + ")"));
                  } else {
                      para = DocBookUtilities.wrapInPara(
                              DocBookUtilities.buildULink(zanataUrl.toString(), "View Topics and Statistics in Zanata"));
                  }
  
                  reportChapter += para;
              }
          }
  
          return reportChapter;
      }