KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > jdt > internal > corext > refactoring > rename > GenericRefactoringHandleTransplanter


1 /*******************************************************************************
2  * Copyright (c) 2006, 2007 IBM Corporation 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  * IBM Corporation - initial API and implementation
10  *******************************************************************************/

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); // recursive
37

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 JavaDoc(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 JavaDoc(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; // can't get from parent!
159
}
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 JavaDoc(element.toString());
169         }
170     }
171 }
172
Popular Tags