package net.sourceforge.cruisecontrol.dashboard.web.view; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sourceforge.cruisecontrol.dashboard.service.TemplateRenderService; import net.sourceforge.cruisecontrol.dashboard.utils.DashboardUtils; import org.apache.commons.lang.StringUtils; public class DirectoryView extends BaseFileView { private final TemplateRenderService service; public DirectoryView(TemplateRenderService service) { this.service = service; } private void handleDir(File file, HttpServletRequest request, HttpServletResponse response) throws IOException { File[] files = file.listFiles(); PrintWriter writer = response.getWriter(); writer.write("<ul style=\"margin-left:1em\">"); Map params = null; for (int i = 0; i < files.length; i++) { if (files[i].isHidden()) { continue; } params = new HashMap(); String url = this.getUrl(request, files[i].getName()); params.put("$url", url); params.put("$fileName", files[i].getName()); params.put("$id", StringUtils.replaceChars(url, '/', '_')); String html = service.renderTemplate(DashboardUtils.getFileType(files[i]) + ".template", params); writer.write(html); } writer.write("</ul>"); } public String getContentType() { return "text/html"; } public void render(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception { File file = (File) model.get("targetFile"); handleDir(file, request, response); } }