in dashboard/src/main/java/com/google/cloud/tools/opensource/dashboard/DashboardMain.java [466:524]
static void generateDashboard(
Configuration configuration,
Path output,
List<ArtifactResults> table,
List<DependencyGraph> globalDependencies,
ImmutableMap<ClassPathEntry, ImmutableSet<LinkageProblem>> linkageProblemTable,
ClassPathResult classPathResult,
Bom bom)
throws IOException, TemplateException {
Map<String, String> latestArtifacts = collectLatestVersions(globalDependencies);
Map<String, Object> templateData = new HashMap<>();
templateData.put("table", table);
templateData.put("lastUpdated", LocalDateTime.now());
templateData.put("latestArtifacts", latestArtifacts);
templateData.put("linkageProblems", linkageProblemTable);
templateData.put("classPathResult", classPathResult);
templateData.put("dependencyPathRootCauses", findRootCauses(classPathResult));
templateData.put("coordinates", bom.getCoordinates());
templateData.put("dependencyGraphs", globalDependencies);
// Accessing static methods from Freemarker template
// https://freemarker.apache.org/docs/pgui_misc_beanwrapper.html#autoid_60
DefaultObjectWrapper wrapper = new DefaultObjectWrapperBuilder(Configuration.VERSION_2_3_28)
.build();
TemplateHashModel staticModels = wrapper.getStaticModels();
templateData.put("dashboardMain", staticModels.get(DashboardMain.class.getName()));
templateData.put("pieChart", staticModels.get(PieChart.class.getName()));
templateData.put("linkageProblem", staticModels.get(LinkageProblem.class.getName()));
File dashboardFile = output.resolve("index.html").toFile();
try (Writer out = new OutputStreamWriter(
new FileOutputStream(dashboardFile), StandardCharsets.UTF_8)) {
Template dashboard = configuration.getTemplate("/templates/index.ftl");
dashboard.process(templateData, out);
}
File detailsFile = output.resolve("artifact_details.html").toFile();
try (Writer out = new OutputStreamWriter(
new FileOutputStream(detailsFile), StandardCharsets.UTF_8)) {
Template details = configuration.getTemplate("/templates/artifact_details.ftl");
details.process(templateData, out);
}
File unstable = output.resolve("unstable_artifacts.html").toFile();
try (Writer out = new OutputStreamWriter(
new FileOutputStream(unstable), StandardCharsets.UTF_8)) {
Template details = configuration.getTemplate("/templates/unstable_artifacts.ftl");
details.process(templateData, out);
}
File dependencyTrees = output.resolve("dependency_trees.html").toFile();
try (Writer out =
new OutputStreamWriter(new FileOutputStream(dependencyTrees), StandardCharsets.UTF_8)) {
Template details = configuration.getTemplate("/templates/dependency_trees.ftl");
details.process(templateData, out);
}
}