CSVPackageHandler.java
1/*******************************************************************************
2 * Copyright (c) 2009, 2010 Mountainminds GmbH & Co. KG and Contributors
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 * Brock Janiczak - initial API and implementation
10 *
11 *******************************************************************************/
12package org.jacoco.report.csv;
13
14import static java.lang.String.format;
15
16import java.io.IOException;
17
18import org.jacoco.core.analysis.ClassCoverage;
19import org.jacoco.core.analysis.ICoverageNode;
20import org.jacoco.core.analysis.ICoverageNode.ElementType;
21import org.jacoco.report.IReportVisitor;
22import org.jacoco.report.ISourceFileLocator;
23
24/**
25 * Report visitor that handles coverage information for packages.
26 *
27 * @author Brock Janiczak
28 * @version 0.4.1.20101007204400
29 */
30class CSVPackageHandler implements IReportVisitor {
31
32 private final ClassRowWriter writer;
33
34 private final String groupName;
35
36 private final String packageName;
37
38 public CSVPackageHandler(final ClassRowWriter writer,
39 final String groupName, final String packageName) {
40 this.writer = writer;
41 this.groupName = groupName;
42 this.packageName = packageName;
43 }
44
45 public IReportVisitor visitChild(final ICoverageNode node)
46 throws IOException {
47 final ElementType type = node.getElementType();
48 switch (type) {
49 case CLASS:
50 final ClassCoverage classNode = (ClassCoverage) node;
51 writer.writeRow(groupName, packageName, classNode);
52 return IReportVisitor.NOP;
53 case SOURCEFILE:
54 return IReportVisitor.NOP;
55 }
56 throw new IllegalStateException(format("Unexpected child node %s.",
57 type));
58 }
59
60 public void visitEnd(final ISourceFileLocator sourceFileLocator) {
61 }
62
63}