PackageCoverage.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 *    Marc R. Hoffmann - initial API and implementation
   10 *    
   11 *******************************************************************************/
   12package org.jacoco.core.analysis;
   13
   14import java.util.Collection;
   15
   16/**
   17 * Coverage data of a Java package. The name of this data node is the package
   18 * name in VM notation (slash separated). The name of the default package is the
   19 * empty string.
   20 * 
   21 * @author Marc R. Hoffmann
   22 * @version 0.4.1.20101007204400
   23 */
   24public class PackageCoverage extends CoverageNodeImpl {
   25
   26    private final Collection<ClassCoverage> classes;
   27
   28    private final Collection<SourceFileCoverage> sourceFiles;
   29
   30    /**
   31     * Creates package node instance for a package with the given name.
   32     * 
   33     * @param name
   34     *            vm name of the package
   35     * @param classes
   36     *            collection of all classes in this package
   37     * @param sourceFiles
   38     *            collection of all source files in this package
   39     */
   40    public PackageCoverage(final String name,
   41            final Collection<ClassCoverage> classes,
   42            final Collection<SourceFileCoverage> sourceFiles) {
   43        super(ElementType.PACKAGE, name, false);
   44        this.classes = classes;
   45        this.sourceFiles = sourceFiles;
   46        increment(sourceFiles);
   47        for (final ClassCoverage c : classes) {
   48            // We need to add only classes without a source file reference.
   49            // Classes associated with a source file are already included in the
   50            // SourceFileCoverage objects.
   51            if (c.getSourceFileName() == null) {
   52                increment(c);
   53            }
   54        }
   55    }
   56
   57    /**
   58     * Returns all classes contained in this package.
   59     * 
   60     * @return all classes
   61     */
   62    public Collection<ClassCoverage> getClasses() {
   63        return classes;
   64    }
   65
   66    /**
   67     * Returns all source files in this package.
   68     * 
   69     * @return all source files
   70     */
   71    public Collection<SourceFileCoverage> getSourceFiles() {
   72        return sourceFiles;
   73    }
   74
   75}