1 8 package com.mountainminds.eclemma.internal.core.analysis; 9 10 import java.util.ArrayList ; 11 import java.util.HashMap ; 12 import java.util.List ; 13 import java.util.Map ; 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 31 public class JavaModelCoverage extends JavaElementCoverage implements 32 IJavaModelCoverage { 33 34 35 private final Map coveragemap = new HashMap (); 36 37 38 private final List projects = new ArrayList (); 39 40 41 private final List fragmentroots = new ArrayList (); 42 43 44 private final List fragments = new ArrayList (); 45 46 47 private final List types = new ArrayList (); 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 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 if (c == null && element.getElementType() == IJavaElement.METHOD) { 97 IJavaElement parent = element.getParent(); 98 Object 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 |