/*
* 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.List;
/**
* Partie du rapport html pour l'arbre JNDI.
* @author Emeric Vernat
*/
class HtmlJndiTreeReport extends HtmlAbstractReport {
private final List<JndiBinding> jndiBindings;
private final String path;
HtmlJndiTreeReport(List<JndiBinding> jndiBindings, String path, Writer writer) {
super(writer);
assert jndiBindings != null;
this.jndiBindings = jndiBindings;
this.path = JndiBinding.normalizePath(path);
}
@Override
void toHtml() throws IOException {
writeLinks();
writeln("<br/>");
final String title;
if (path.isEmpty()) {
title = getString("Arbre_JNDI");
} else {
title = getFormattedString("Arbre_JNDI_pour_contexte", htmlEncode(path));
}
writeTitle("jndi.png", title);
writeTable();
}
private void writeTable() throws IOException {
final HtmlTable table = new HtmlTable();
table.beginTable(getString("Arbre_JNDI"));
write("<th>#Nom#</th><th>#Type#</th><th>#Value#</th>");
for (final JndiBinding binding : jndiBindings) {
table.nextRow();
writeBinding(binding);
}
table.endTable();
}
private void writeBinding(JndiBinding binding) throws IOException {
write("<td>");
final String name = binding.getName();
final String className = binding.getClassName();
final String contextPath = binding.getContextPath();
final String value = binding.getValue();
if (contextPath != null) {
writeDirectly("<a href=\"?part=jndi&path=" + urlEncode(contextPath) + "\">");
writeDirectly("<img width='16' height='16' src='?resource=folder.png' alt='"
+ urlEncode(name) + "' /> ");
writeDirectly(htmlEncode(name));
writeDirectly("</a>");
} else {
writeDirectly(htmlEncode(name));
}
write("</td>");
write("<td>");
writeDirectly(className != null ? htmlEncode(className) : " ");
write("</td>");
write("<td>");
writeDirectly(value != null ? htmlEncodeButNotSpace(value) : " ");
write("</td>");
}
private void writeLinks() throws IOException {
writeln("<div class='noPrint'>");
writeln("<a href='javascript:history.back()'><img src='?resource=action_back.png' alt='#Retour#'/> #Retour#</a>");
writeln(" ");
writeDirectly("<a href='?#systeminfo'>");
writeln("<img src='?resource=action_home.png' alt='#Page_principale#'/> #Page_principale#</a>");
writeln(" ");
writeln("<a href='?part=jndi&path=" + htmlEncode(path)
+ "'><img src='?resource=action_refresh.png' alt='#Actualiser#'/> #Actualiser#</a>");
if (isPdfEnabled()) {
writeln(" ");
write("<a href='?part=jndi&path=" + htmlEncode(path)
+ "&format=pdf' title='#afficher_PDF#'>");
write("<img src='?resource=pdf.png' alt='#PDF#'/> #PDF#</a>");
}
writeln("</div>");
}
}