protected void generateHTML()

in plugin/src/main/java/io/fabric8/maven/plugin/mojo/internal/ManifestIndexMojo.java [139:224]


    protected void generateHTML(File outputHtmlFile, Map<String, ManifestInfo> manifests, boolean kubernetes, File introductionHtmlFile, File headHtmlFile, File footerHtmlFile) throws MojoExecutionException {
        Map<String, SortedSet<ManifestInfo>> manifestMap = new TreeMap<>();
        for (ManifestInfo manifestInfo : manifests.values()) {
            String key = manifestInfo.getName();
            SortedSet<ManifestInfo> set = manifestMap.get(key);
            if (set == null) {
                set = new TreeSet<>(createManifestComparator());
                manifestMap.put(key, set);
            }
            set.add(manifestInfo);
        }
        try (PrintWriter writer = new PrintWriter(new FileWriter(outputHtmlFile))) {
            writer.println("<html>");
            writer.println("<head>");
            writer.println(getHtmlFileContentOrDefault(headHtmlFile,
                    "<link href='style.css' rel=stylesheet>\n" +
                            "<link href='custom.css' rel=stylesheet>\n" +
                            "<title>" + manifestTitle + "</title>\n"));
            writer.println("</head>");
            writer.println("<body>");

            writer.println(getHtmlFileContentOrDefault(introductionHtmlFile, "<h1>" + manifestTitle + "</h1>"));

            writer.println("<table class='table table-striped table-hover'>");
            writer.println("  <hhead>");
            writer.println("    <tr>");
            writer.println("      <th>Manifest</th>");
            writer.println("      <th>Versions</th>");
            writer.println("    </tr>");
            writer.println("  </hhead>");
            writer.println("  <tbody>");
            for (Map.Entry<String, SortedSet<ManifestInfo>> entry : manifestMap.entrySet()) {
                String key = entry.getKey();
                SortedSet<ManifestInfo> set = entry.getValue();
                if (!set.isEmpty()) {
                    ManifestInfo first = set.first();
                    first.configure(this);
                    if (!first.isValid()) {
                        continue;
                    }

                    String manifestDescription = getDescription(first);
                    writer.println("    <tr>");
                    writer.println("      <td title='" + manifestDescription + "'>");
                    String iconHtml = "";
                    String iconUrl = findIconURL(set);
                    if (Strings.isNotBlank(iconUrl)) {
                        iconHtml = "<img class='logo' src='" + iconUrl + "'>";
                    }
                    writer.println("        " + iconHtml + "<span class='manifest-name'>" + key + "</span>");
                    writer.println("      </td>");
                    writer.println("      <td class='versions'>");
                    int count = 0;
                    for (ManifestInfo manifestInfo : set) {
                        if (maxVersionsPerApp > 0 && ++count > maxVersionsPerApp) {
                            break;
                        }
                        String description = getDescription(manifestInfo);
                        String version = manifestInfo.getVersion();
                        String href = kubernetes ? manifestInfo.getKubernetesUrl() : manifestInfo.getOpenShiftUrl();
                        String versionId = manifestInfo.getId();
                        String command = kubernetes ? "kubectl" : "oc";
                        writer.println("        <a class='btn btn-default' role='button' data-toggle='collapse' href='#" + versionId + "' aria-expanded='false' aria-controls='" + versionId + "' title='" + description + "'>\n" +
                                version + "\n" +
                                "</a>\n" +
                                "<div class='collapse' id='" + versionId + "'>\n" +
                                "  <div class='well'>\n" +
                                "    <p>To install version <b>" + version + "</b> of <b>" + key + "</b> type the following command:</p>\n" +
                                "    <code>" + command + " apply -f " + href + "</code>\n" +
                                "    <div class='version-buttons'><a class='btn btn-primary' title='Download the YAML manifest for " + key + " version " + version + "' href='" + href + "'><i class='fa fa-download' aria-hidden='true'></i> Download Manifest</a> " +
                                "<a class='btn btn-primary' target='gofabric8' title='Run this application via the go.fabric8.io website' href='https://go.fabric8.io/?manifest=" + href + "'><i class='fa fa-external-link' aria-hidden='true'></i> Run via browser</a></div>\n" +
                                "  </div>\n" +
                                "</div>");
                    }
                    writer.println("      </td>");
                    writer.println("    </tr>");
                }
            }
            writer.println("  </tbody>");
            writer.println("  </table>");
            writer.println(getHtmlFileContentOrDefault(footerHtmlFile, ""));
            writer.println("</body>");
        } catch (IOException e) {
            throw new MojoExecutionException("Failed to write to " + outputHtmlFile + ". " + e, e);
        }
    }