/******************************************************************************* * Copyright (c) 2009, 2017 Mountainminds GmbH & Co. KG and Contributors * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Marc R. Hoffmann - initial API and implementation * *******************************************************************************/ package org.jacoco.report.internal.html; import java.io.IOException; import org.jacoco.core.analysis.IBundleCoverage; import org.jacoco.core.analysis.ICoverageNode; import org.jacoco.report.ISourceFileLocator; import org.jacoco.report.internal.AbstractGroupVisitor; import org.jacoco.report.internal.ReportOutputFolder; import org.jacoco.report.internal.html.page.BundlePage; import org.jacoco.report.internal.html.page.GroupPage; import org.jacoco.report.internal.html.page.NodePage; import org.jacoco.report.internal.html.page.ReportPage; /** * Group visitor for HTML reports. */ public class HTMLGroupVisitor extends AbstractGroupVisitor { private final ReportOutputFolder folder; private final IHTMLReportContext context; private final GroupPage page; /** * Create a new group handler. * * @param parent * optional hierarchical parent * @param folder * base folder for this group * @param context * settings context * @param name * group name */ public HTMLGroupVisitor(final ReportPage parent, final ReportOutputFolder folder, final IHTMLReportContext context, final String name) { super(name); this.folder = folder; this.context = context; page = new GroupPage(total, parent, folder, context); } /** * Returns the page rendered for this group. * * @return page for this group */ public NodePage<ICoverageNode> getPage() { return page; } @Override protected void handleBundle(final IBundleCoverage bundle, final ISourceFileLocator locator) throws IOException { final BundlePage bundlepage = new BundlePage(bundle, page, locator, folder.subFolder(bundle.getName()), context); bundlepage.render(); page.addItem(bundlepage); } @Override protected AbstractGroupVisitor handleGroup(final String name) throws IOException { final HTMLGroupVisitor handler = new HTMLGroupVisitor(page, folder.subFolder(name), context, name); page.addItem(handler.getPage()); return handler; } @Override protected void handleEnd() throws IOException { page.render(); } }