net.sourceforge.metrics.core.sources.PackageFragmentMetrics.java Source code

Java tutorial

Introduction

Here is the source code for net.sourceforge.metrics.core.sources.PackageFragmentMetrics.java

Source

/*
 * Copyright (c) 2003 Frank Sauer. All rights reserved.
 *
 * Licenced under CPL 1.0 (Common Public License Version 1.0).
 * The licence is available at http://www.eclipse.org/legal/cpl-v10.html.
 *
 *
 * DISCLAIMER OF WARRANTIES AND LIABILITY:
 *
 * THE SOFTWARE IS PROVIDED "AS IS".  THE AUTHOR MAKES  NO REPRESENTATIONS OR WARRANTIES,
 * EITHER EXPRESS OR IMPLIED.  TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL THE
 * AUTHOR  BE LIABLE FOR ANY DAMAGES, INCLUDING WITHOUT LIMITATION, LOST REVENUE,  PROFITS
 * OR DATA, OR FOR SPECIAL, INDIRECT, CONSEQUENTIAL, INCIDENTAL  OR PUNITIVE DAMAGES,
 * HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF  LIABILITY, ARISING OUT OF OR RELATED TO
 * ANY FURNISHING, PRACTICING, MODIFYING OR ANY USE OF THE SOFTWARE, EVEN IF THE AUTHOR
 * HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 *
 *
 * $id$
 */
package net.sourceforge.metrics.core.sources;

import java.util.List;
import java.util.Set;

import net.sourceforge.metrics.core.ICalculator;
import net.sourceforge.metrics.core.Log;
import net.sourceforge.metrics.core.MetricsPlugin;
import net.sourceforge.metrics.internal.xml.IXMLExporter;

import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.dom.ASTNode;

/**
 * initialize package fragment metrics (my children) and collect all results from the calculators for the package level
 * 
 * @author Frank Sauer
 */
public class PackageFragmentMetrics extends AbstractMetricSource {

    static final long serialVersionUID = 552400421568822970L;

    private Set<String> efferent;

    public PackageFragmentMetrics() {
        super();
    }

    @Override
    protected void initializeChildren(AbstractMetricSource parentMetric) {
        IPackageFragment pack = (IPackageFragment) getJavaElement();
        try {
            IJavaElement[] children = pack.getChildren();
            for (IJavaElement element : children) {
                if (element instanceof ICompilationUnit) {
                    // bug 737542
                    AbstractMetricSource next = Dispatcher.getAbstractMetricSource(element);
                    if (next != null) {
                        addChild(next);
                    } else {
                        Log.logError("Can't initialize AbstractMetricSource for " + element.getElementName(), null);
                    }
                }
            }
        } catch (JavaModelException e) {
            Log.logError("PackageFragmentMetrics.initializeChildren", e);
        }
    }

    @Override
    public void recurse(AbstractMetricSource parentMetric) {
        initializeChildren(parentMetric);
        calculate();
        save();
    }

    /**
     * @see net.sourceforge.metrics.core.sources.AbstractMetricSource#getLevel()
     */
    @Override
    public int getLevel() {
        return PACKAGEFRAGMENT;
    }

    /**
     * @see net.sourceforge.metrics.core.sources.AbstractMetricSource#getCalculators()
     */
    @Override
    protected List<ICalculator> getCalculators() {
        return MetricsPlugin.getDefault().getCalculators("packageFragment");
    }

    /*
     * (non-Javadoc)
     * 
     * @see net.sourceforge.metrics.core.sources.AbstractMetricSource#getExporter()
     */
    @Override
    public IXMLExporter getExporter() {
        return IXMLExporter.PACKAGEFRAGMENT_EXPORTER;
    }

    /**
     * @param packages
     */
    public void setEfferentDependencies(Set<String> packages) {
        this.efferent = packages;
    }

    /**
     * @return
     */
    public Set<String> getEfferentDependencies() {
        return efferent;
    }

    @Override
    public ASTNode getASTNode() {
        return null;
    }

}