in juneau-doc/src/main/java/org/apache/juneau/doc/internal/DocGenerator.java [62:196]
private static void build() {
try {
long startTime = System.currentTimeMillis();
String template = IOUtils.readFile("docs/overview_template.html");
String configProps = ConfigPropsGenerator.run();
DocStore ds = new DocStore(new File("docs/docs.txt"));
File top = new File("docs/Topics");
reorder(top);
Topics topics = new Topics(top);
ReleaseNotes releaseNotes = new ReleaseNotes(new File("docs/ReleaseNotes"));
StringBuilder toc = new StringBuilder("<ol class='toc'>\n"), contents = new StringBuilder();
for (PageFile pf1 : topics.pageFiles) {
toc
.append("\t<li><p class='toc2'><a class='doclink' href='{OVERVIEW_URL}#").append(pf1.id).append("'>").append(pf1.title).append("</a>").append(pf1.tags.isEmpty() ? "" : ("<span class='update'>"+pf1.tags+"</span>")).append("</p>\n");
ds
.addLink(pf1.id, "#" + pf1.id, "Overview > " + pf1.title);
contents
.append("\n")
.append("<!-- ==================================================================================================== -->\n\n")
.append("<h2 class='topic' onclick='toggle(this)'><a href='#").append(pf1.id).append("' id='").append(pf1.id).append("'>").append(pf1.fullNumber).append(" - ").append(pf1.title).append("</a>").append(pf1.tags.isEmpty() ? "" : ("<span class='update'>"+pf1.tags+"</span>")).append("</h2>\n")
.append("<div class='topic'>").append("<!-- START: ").append(pf1.fullNumber).append(" - " ).append(pf1.id).append(" -->\n")
.append(pf1.contents).append("\n");
if (! pf1.pageFiles.isEmpty()) {
toc.append("\t<ol>\n");
for (PageFile pf2 : pf1.pageFiles) {
toc
.append("\t\t<li><p><a class='doclink' href='{OVERVIEW_URL}#").append(pf2.id).append("'>").append(pf2.title).append("</a>").append(pf2.tags.isEmpty() ? "" : ("<span class='update'>"+pf2.tags+"</span>")).append("</p>\n");
ds
.addLink(pf2.id, "#" + pf2.id, "Overview > " + pf1.title + " > " + pf2.title);
contents
.append("\n")
.append("<!-- ==================================================================================================== -->\n\n")
.append("<h3 class='topic' onclick='toggle(this)'><a href='#").append(pf2.id).append("' id='").append(pf2.id).append("'>").append(pf2.fullNumber).append(" - ").append(pf2.title).append("</a>").append(pf2.tags.isEmpty() ? "" : ("<span class='update'>"+pf2.tags+"</span>")).append("</h3>\n")
.append("<div class='topic'>").append("<!-- START: ").append(pf2.fullNumber).append(" - " ).append(pf2.id).append(" -->\n")
.append(pf2.contents).append("\n");
if (! pf2.pageFiles.isEmpty()) {
toc.append("\t\t<ol>\n");
for (PageFile pf3 : pf2.pageFiles) {
toc
.append("\t\t\t<li><p><a class='doclink' href='{OVERVIEW_URL}#").append(pf3.id).append("'>").append(pf3.title).append("</a>").append(pf3.tags.isEmpty() ? "" : ("<span class='update'>"+pf3.tags+"</span>")).append("</p>\n");
ds
.addLink(pf3.id, "#" + pf3.id, "Overview > " + pf1.title + " > " + pf2.title + " > " + pf3.title);
contents
.append("\n")
.append("<!-- ==================================================================================================== -->\n\n")
.append("<h5 class='topic' onclick='toggle(this)'><a href='#").append(pf3.id).append("' id='").append(pf3.id).append("'>").append(pf3.fullNumber).append(" - ").append(pf3.title).append("</a>").append(pf3.tags.isEmpty() ? "" : ("<span class='update'>"+pf3.tags+"</span>")).append("</h4>\n")
.append("<div class='topic'>").append("<!-- START: ").append(pf3.fullNumber).append(" - " ).append(pf3.id).append(" -->\n")
.append(pf3.contents).append("\n")
.append("</div>").append("<!-- END: ").append(pf3.fullNumber).append(" - ").append(pf3.id).append(" -->\n");
}
toc.append("\t\t</ol>\n");
}
contents
.append("</div>").append("<!-- END: ").append(pf2.fullNumber).append(" - ").append(pf2.id).append(" -->\n");
}
toc.append("\t</ol>\n");
}
contents
.append("</div>").append("<!-- END: ").append(pf1.fullNumber).append(" - ").append(pf1.id).append(" -->\n");
}
StringBuilder tocRn = new StringBuilder("<ul class='toc'>\n"), rn = new StringBuilder();
for (ReleaseFile rf : releaseNotes.releaseFiles) {
tocRn
.append("<li><p><a class='doclink' href='{OVERVIEW_URL}#").append(rf.version).append("'>").append(rf.title).append("</a></p>\n");
rn
.append("\n")
.append("<!-- ==================================================================================================== -->\n\n")
.append("<h3 class='topic' onclick='toggle(this)'><a href='#").append(rf.version).append("' id='").append(rf.version).append("'>").append(rf.title).append("</a></h3>\n")
.append("<div class='topic'>").append("<!-- START: ").append(rf.version).append(" -->\n")
.append(rf.contents).append("\n")
.append("</div>").append("<!-- END: ").append(rf.version).append(" -->\n");
}
toc.append("</ol>\n");
tocRn.append("</ul>\n");
template = template
.replace("{TOC-CONTENTS}", toc.toString())
.replace("{CONTENTS}", contents.toString())
.replace("{TOC-RELEASE-NOTES}", tocRn)
.replace("{RELEASE-NOTES}", rn)
.replace("{CONFIG-PROPS}", configProps)
.replace("{OVERVIEW_URL}", "");
IOUtils.writeFile("src/main/javadoc/overview.html", template);
ds.save(new File("src/main/javadoc/resources/docs.txt"));
info("Generated target/overview.html in {0}ms", System.currentTimeMillis()-startTime);
startTime = System.currentTimeMillis();
for (File f : new File("src/main/javadoc/doc-files").listFiles())
Files.delete(f.toPath());
for (File f : new File("src/main/javadoc/resources/fragments").listFiles())
Files.delete(f.toPath());
for (File f : topics.docFiles)
Files.copy(f.toPath(), Paths.get("src/main/javadoc/doc-files", f.getName()), StandardCopyOption.REPLACE_EXISTING);
for (File f : releaseNotes.docFiles)
Files.copy(f.toPath(), Paths.get("src/main/javadoc/doc-files", f.getName()), StandardCopyOption.REPLACE_EXISTING);
String toc2 = new StringBuilder().append("<!--").append(COPYRIGHT).append("\n-->\n").append(toc).toString();
IOUtils.writeFile("src/main/javadoc/resources/fragments/toc.html", toc2);
String tocRn2 = new StringBuilder().append("<!--").append(COPYRIGHT).append("\n-->\n").append(tocRn).toString();
IOUtils.writeFile("src/main/javadoc/resources/fragments/rntoc.html", tocRn2);
info("Copied doc-files in {0}ms", System.currentTimeMillis()-startTime);
} catch (IOException e) {
e.printStackTrace();
}
}