KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > mountainminds > eclemma > internal > core > analysis > JavaModelCoverage


1 /*******************************************************************************
2  * Copyright (c) 2006 Mountainminds GmbH & Co. KG
3  * This software is provided under the terms of the Eclipse Public License v1.0
4  * See http://www.eclipse.org/legal/epl-v10.html.
5  *
6  * $Id: JavaModelCoverage.java 199 2006-12-18 14:49:40Z mtnminds $
7  ******************************************************************************/

8 package com.mountainminds.eclemma.internal.core.analysis;
9
10 import java.util.ArrayList JavaDoc;
11 import java.util.HashMap JavaDoc;
12 import java.util.List JavaDoc;
13 import java.util.Map JavaDoc;
14
15 import org.eclipse.jdt.core.IJavaElement;
16 import org.eclipse.jdt.core.IJavaProject;
17 import org.eclipse.jdt.core.IPackageFragment;
18 import org.eclipse.jdt.core.IPackageFragmentRoot;
19 import org.eclipse.jdt.core.IType;
20
21 import com.mountainminds.eclemma.core.analysis.IJavaElementCoverage;
22 import com.mountainminds.eclemma.core.analysis.IJavaModelCoverage;
23
24 /**
25  * The IJavaModelCoverage implementation maps Java elements to its corresponding
26  * coverage data objects.
27  *
28  * @author Marc R. Hoffmann
29  * @version $Revision: 199 $
30  */

31 public class JavaModelCoverage extends JavaElementCoverage implements
32     IJavaModelCoverage {
33
34   /** Maps Java elements to coverage objects */
35   private final Map JavaDoc coveragemap = new HashMap JavaDoc();
36   
37   /** List of all IJavaProject objects with coverage information attached */
38   private final List JavaDoc projects = new ArrayList JavaDoc();
39
40   /** List of all IPackageFragmentRoot objects with coverage information attached */
41   private final List JavaDoc fragmentroots = new ArrayList JavaDoc();
42
43   /** List of all IPackageFragment objects with coverage information attached */
44   private final List JavaDoc fragments = new ArrayList JavaDoc();
45
46   /** List of all IType objects with coverage information attached */
47   private final List JavaDoc types = new ArrayList JavaDoc();
48
49   public JavaModelCoverage() {
50     super(null, false, 0);
51   }
52   
53   public void put(IJavaElement element, IJavaElementCoverage coverage) {
54     coveragemap.put(element, coverage);
55     switch (element.getElementType()) {
56       case IJavaElement.JAVA_PROJECT:
57         projects.add(element);
58         break;
59       case IJavaElement.PACKAGE_FRAGMENT_ROOT:
60         fragmentroots.add(element);
61         break;
62       case IJavaElement.PACKAGE_FRAGMENT:
63         fragments.add(element);
64         break;
65       case IJavaElement.TYPE:
66         types.add(element);
67         break;
68     }
69   }
70   
71   // IJavaModelCoverage interface
72

73   public IJavaProject[] getInstrumentedProjects() {
74     IJavaProject[] arr = new IJavaProject[projects.size()];
75     return (IJavaProject[]) projects.toArray(arr);
76   }
77
78   public IPackageFragmentRoot[] getInstrumentedPackageFragmentRoots() {
79     IPackageFragmentRoot[] arr = new IPackageFragmentRoot[fragmentroots.size()];
80     return (IPackageFragmentRoot[]) fragmentroots.toArray(arr);
81   }
82
83   public IPackageFragment[] getInstrumentedPackageFragments() {
84     IPackageFragment[] arr = new IPackageFragment[fragments.size()];
85     return (IPackageFragment[]) fragments.toArray(arr);
86   }
87
88   public IType[] getInstrumentedTypes() {
89     IType[] arr = new IType[types.size()];
90     return (IType[]) types.toArray(arr);
91   }
92
93   public IJavaElementCoverage getCoverageFor(IJavaElement element) {
94     IJavaElementCoverage c = (IJavaElementCoverage) coveragemap.get(element);
95     // Currently lazy binding is for methods only:
96
if (c == null && element.getElementType() == IJavaElement.METHOD) {
97       IJavaElement parent = element.getParent();
98       Object JavaDoc parentcoverage = getCoverageFor(parent);
99       if (parentcoverage instanceof ILazyBinding) {
100         ((ILazyBinding) parentcoverage).resolve(parent, this);
101       }
102       c = (IJavaElementCoverage) coveragemap.get(element);
103     }
104     return c;
105   }
106
107 }
108
Popular Tags