1 11 package org.eclipse.jdt.internal.corext.refactoring.rename; 12 13 import org.eclipse.jdt.core.IClassFile; 14 import org.eclipse.jdt.core.ICompilationUnit; 15 import org.eclipse.jdt.core.IField; 16 import org.eclipse.jdt.core.IImportContainer; 17 import org.eclipse.jdt.core.IImportDeclaration; 18 import org.eclipse.jdt.core.IInitializer; 19 import org.eclipse.jdt.core.IJavaElement; 20 import org.eclipse.jdt.core.IJavaModel; 21 import org.eclipse.jdt.core.IJavaProject; 22 import org.eclipse.jdt.core.ILocalVariable; 23 import org.eclipse.jdt.core.IMember; 24 import org.eclipse.jdt.core.IMethod; 25 import org.eclipse.jdt.core.IPackageDeclaration; 26 import org.eclipse.jdt.core.IPackageFragment; 27 import org.eclipse.jdt.core.IPackageFragmentRoot; 28 import org.eclipse.jdt.core.IType; 29 import org.eclipse.jdt.core.ITypeParameter; 30 31 public class GenericRefactoringHandleTransplanter { 32 33 public final IJavaElement transplantHandle(IJavaElement element) { 34 IJavaElement parent= element.getParent(); 35 if (parent != null) 36 parent= transplantHandle(parent); 38 switch (element.getElementType()) { 39 case IJavaElement.JAVA_MODEL: 40 return transplantHandle((IJavaModel) element); 41 42 case IJavaElement.JAVA_PROJECT: 43 return transplantHandle((IJavaProject) element); 44 45 case IJavaElement.PACKAGE_FRAGMENT_ROOT: 46 return transplantHandle((IJavaProject) parent, (IPackageFragmentRoot) element); 47 48 case IJavaElement.PACKAGE_FRAGMENT: 49 return transplantHandle((IPackageFragmentRoot) parent, (IPackageFragment) element); 50 51 case IJavaElement.COMPILATION_UNIT: 52 return transplantHandle((IPackageFragment) parent, (ICompilationUnit) element); 53 54 case IJavaElement.CLASS_FILE: 55 return transplantHandle((IPackageFragment) parent, (IClassFile) element); 56 57 case IJavaElement.TYPE: 58 return transplantHandle(parent, (IType) element); 59 60 case IJavaElement.FIELD: 61 return transplantHandle((IType) parent, (IField) element); 62 63 case IJavaElement.METHOD: 64 return transplantHandle((IType) parent, (IMethod) element); 65 66 case IJavaElement.INITIALIZER: 67 return transplantHandle((IType) parent, (IInitializer) element); 68 69 case IJavaElement.PACKAGE_DECLARATION: 70 return transplantHandle((ICompilationUnit) parent, (IPackageDeclaration) element); 71 72 case IJavaElement.IMPORT_CONTAINER: 73 return transplantHandle((ICompilationUnit) parent, (IImportContainer) element); 74 75 case IJavaElement.IMPORT_DECLARATION: 76 return transplantHandle((IImportContainer) parent, (IImportDeclaration) element); 77 78 case IJavaElement.LOCAL_VARIABLE: 79 return transplantHandle((ILocalVariable) element); 80 81 case IJavaElement.TYPE_PARAMETER: 82 return transplantHandle((IMember) parent, (ITypeParameter) element); 83 84 default: 85 throw new IllegalArgumentException (element.toString()); 86 } 87 88 } 89 90 protected IJavaModel transplantHandle(IJavaModel element) { 91 return element; 92 } 93 94 protected IJavaProject transplantHandle(IJavaProject element) { 95 return element; 96 } 97 98 protected IPackageFragmentRoot transplantHandle(IJavaProject parent, IPackageFragmentRoot element) { 99 return element; 100 } 101 102 protected IPackageFragment transplantHandle(IPackageFragmentRoot parent, IPackageFragment element) { 103 return parent.getPackageFragment(element.getElementName()); 104 } 105 106 protected ICompilationUnit transplantHandle(IPackageFragment parent, ICompilationUnit element) { 107 return parent.getCompilationUnit(element.getElementName()); 108 } 109 110 protected IClassFile transplantHandle(IPackageFragment parent, IClassFile element) { 111 return parent.getClassFile(element.getElementName()); 112 } 113 114 protected IType transplantHandle(IJavaElement parent, IType element) { 115 switch (parent.getElementType()) { 116 case IJavaElement.COMPILATION_UNIT: 117 return ((ICompilationUnit) parent).getType(element.getElementName()); 118 case IJavaElement.CLASS_FILE: 119 return ((IClassFile) parent).getType(); 120 case IJavaElement.METHOD: 121 return ((IMethod) parent).getType(element.getElementName(), element.getOccurrenceCount()); 122 case IJavaElement.FIELD: 123 return ((IField) parent).getType(element.getElementName(), element.getOccurrenceCount()); 124 case IJavaElement.INITIALIZER: 125 return ((IInitializer) parent).getType(element.getElementName(), element.getOccurrenceCount()); 126 case IJavaElement.TYPE: 127 return ((IType) parent).getType(element.getElementName(), element.getOccurrenceCount()); 128 default: 129 throw new IllegalStateException (element.toString()); 130 } 131 } 132 133 protected IField transplantHandle(IType parent, IField element) { 134 return parent.getField(element.getElementName()); 135 } 136 137 protected IMethod transplantHandle(IType parent, IMethod element) { 138 return parent.getMethod(element.getElementName(), element.getParameterTypes()); 139 } 140 141 protected IInitializer transplantHandle(IType parent, IInitializer element) { 142 return parent.getInitializer(element.getOccurrenceCount()); 143 } 144 145 protected IPackageDeclaration transplantHandle(ICompilationUnit parent, IPackageDeclaration element) { 146 return parent.getPackageDeclaration(element.getElementName()); 147 } 148 149 protected IImportContainer transplantHandle(ICompilationUnit parent, IImportContainer element) { 150 return parent.getImportContainer(); 151 } 152 153 protected IImportDeclaration transplantHandle(IImportContainer parent, IImportDeclaration element) { 154 return parent.getImport(element.getElementName()); 155 } 156 157 protected ILocalVariable transplantHandle(ILocalVariable element) { 158 return element; } 160 161 protected ITypeParameter transplantHandle(IMember parent, ITypeParameter element) { 162 switch (parent.getElementType()) { 163 case IJavaElement.TYPE: 164 return ((IType) parent).getTypeParameter(element.getElementName()); 165 case IJavaElement.METHOD: 166 return ((IMethod) parent).getTypeParameter(element.getElementName()); 167 default: 168 throw new IllegalStateException (element.toString()); 169 } 170 } 171 } 172 | Popular Tags |