PackageCoverage.java

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