/*
* Copyright 2008-2017 by Emeric Vernat
*
* This file is part of Java Melody.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.bull.javamelody;
import java.io.IOException;
import java.io.Writer;
import java.util.Map;
/**
* Rapport html pour afficher la liste des dépendances dans WEB-INF/lib, avec noms, urls, licences.
* @author Emeric Vernat
*/
class HtmlDependenciesReport extends HtmlAbstractReport {
private final Map<String, MavenArtifact> dependencies;
HtmlDependenciesReport(Map<String, MavenArtifact> dependencies, Writer writer) {
super(writer);
assert dependencies != null;
this.dependencies = dependencies;
}
@Override
void toHtml() throws IOException {
writeBackLink();
writeln("<br/>");
if (dependencies.isEmpty()) {
writeln("#Aucune_dependance#");
return;
}
writeTitle("beans.png", getString("Dependencies"));
final HtmlTable table = new HtmlTable();
table.beginTable(getString("Dependencies"));
// table of dependencies inspired by Jenkins "/about"
write("<th>Artifact</th><th>#Nom#</th><th>Maven ID</th><th>#Licence#</th>");
for (final Map.Entry<String, MavenArtifact> entry : dependencies.entrySet()) {
final String jarFilename = entry.getKey();
final MavenArtifact dependency = entry.getValue();
table.nextRow();
writeDependency(jarFilename, dependency);
}
table.endTable();
writeln("<div align='right'>" + getFormattedString("nb_dependencies", dependencies.size())
+ "</div>");
}
private void writeBackLink() throws IOException {
writeln("<div class='noPrint'>");
writeln("<a href='javascript:history.back()'>");
writeln("<img src='?resource=action_back.png' alt='#Retour#'/> #Retour#</a>");
writeln("</div>");
}
private void writeDependency(String jarFilename, MavenArtifact dependency) throws IOException {
write("<td>");
writeDirectly(htmlEncodeButNotSpace(jarFilename));
write("</td><td>");
if (dependency == null) {
write("</td><td>");
write("</td><td>");
} else {
if (dependency.getName() != null) {
if (dependency.getUrl() == null) {
writeDirectly(htmlEncodeButNotSpace(dependency.getName()));
} else {
writeDirectly("<a href='" + urlEncode(dependency.getUrl()) + "'>"
+ htmlEncodeButNotSpace(dependency.getName()) + "</a>");
}
}
write("</td><td>");
writeDirectly(dependency.getGroupId() + ':' + dependency.getArtifactId() + ':' + "<b>"
+ dependency.getVersion() + "</b>");
write("</td><td>");
boolean firstLicense = true;
for (final Map.Entry<String, String> entry : dependency.getLicenseUrlsByName()
.entrySet()) {
final String licenseName = entry.getKey();
final String licenseUrl = entry.getValue();
if (!firstLicense) {
write("<br/>");
}
if (licenseUrl == null || !licenseUrl.startsWith("http")) {
writeDirectly(htmlEncodeButNotSpace(licenseName));
} else {
writeDirectly("<a href='" + urlEncode(licenseUrl) + "'>"
+ htmlEncodeButNotSpace(licenseName) + "</a>");
}
firstLicense = false;
}
}
write("</td>");
}
}