]> git.uio.no Git - ifi-stolz-refaktor.git/blob - case-study/jdt-before/core refactoring/org/eclipse/jdt/internal/corext/refactoring/ParameterInfo.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / jdt-before / core refactoring / org / eclipse / jdt / internal / corext / refactoring / ParameterInfo.java
1 /*******************************************************************************
2  * Copyright (c) 2000, 2011 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;
12
13 import org.eclipse.core.runtime.Assert;
14
15 import org.eclipse.jdt.core.dom.ITypeBinding;
16 import org.eclipse.jdt.core.dom.IVariableBinding;
17
18
19 public class ParameterInfo {
20
21         public static final int INDEX_FOR_ADDED= -1;
22         public static final String ELLIPSIS= "..."; //$NON-NLS-1$
23
24         private IVariableBinding fOldBinding;
25         private ITypeBinding fOldTypeBinding;
26         private final String fOldName;
27         private final String fOldTypeName;
28         private final int fOldIndex;
29
30         private String fNewTypeName;
31         private ITypeBinding fNewTypeBinding;
32         private String fDefaultValue;
33         private String fNewName;
34         private boolean fIsDeleted;
35         private boolean fCreateField=true;
36         private boolean fInlined;
37         private boolean fResolve= true;
38
39         public ParameterInfo(String type, String name, int index) {
40                 this(null, null, type, name, index);
41         }
42
43         public ParameterInfo(IVariableBinding binding, String type, String name, int index) {
44                 this(binding, null, type, name, index);
45         }
46
47         private ParameterInfo(IVariableBinding binding, ITypeBinding typeBinding, String type, String name, int index) {
48                 fOldBinding= binding;
49                 fOldTypeBinding= typeBinding;
50                 fNewTypeBinding= typeBinding;
51                 fOldTypeName= type;
52                 fNewTypeName= type;
53                 fOldName= name;
54                 fNewName= name;
55                 fOldIndex= index;
56                 fDefaultValue= ""; //$NON-NLS-1$
57                 fIsDeleted= false;
58         }
59
60
61         /**
62          * Creates a new ParameterInfo. Parameter is marked as added and not resolvable
63          * @param type the fullyqualified type
64          * @param name the name
65          * @return the parameter info object
66          */
67         public static ParameterInfo createInfoForAddedParameter(String type, String name) {
68                 ParameterInfo info= new ParameterInfo("", "", INDEX_FOR_ADDED); //$NON-NLS-1$ //$NON-NLS-2$
69                 info.setNewTypeName(type);
70                 info.setNewName(name);
71                 info.setResolve(false);
72                 return info;
73         }
74
75         private void setResolve(boolean resolve) {
76                 fResolve= resolve;
77         }
78
79         public static ParameterInfo createInfoForAddedParameter(String type, String name, String defaultValue) {
80                 ParameterInfo info= new ParameterInfo("", "", INDEX_FOR_ADDED); //$NON-NLS-1$ //$NON-NLS-2$
81                 info.setNewTypeName(type);
82                 info.setNewName(name);
83                 info.setDefaultValue(defaultValue);
84                 return info;
85         }
86
87         public static ParameterInfo createInfoForAddedParameter(ITypeBinding typeBinding, String type, String name, String defaultValue) {
88                 ParameterInfo info= new ParameterInfo(null, typeBinding, "", "", INDEX_FOR_ADDED); //$NON-NLS-1$ //$NON-NLS-2$
89                 info.setNewTypeName(type);
90                 info.setNewName(name);
91                 info.setDefaultValue(defaultValue);
92                 return info;
93         }
94
95         public int getOldIndex() {
96                 return fOldIndex;
97         }
98
99         public boolean isDeleted(){
100                 return fIsDeleted;
101         }
102
103         public void markAsDeleted(){
104                 Assert.isTrue(! isAdded());//added param infos should be simply removed from the list
105                 fIsDeleted= true;
106         }
107
108         public boolean isAdded(){
109                 return fOldIndex == INDEX_FOR_ADDED;
110         }
111
112         public boolean isTypeNameChanged() {
113                 return !fOldTypeName.equals(fNewTypeName);
114         }
115
116         public boolean isRenamed() {
117                 return !fOldName.equals(fNewName);
118         }
119
120         public boolean isVarargChanged() {
121                 return isOldVarargs() != isNewVarargs();
122         }
123
124         public IVariableBinding getOldBinding() {
125                 return fOldBinding;
126         }
127
128         public String getOldTypeName() {
129                 return fOldTypeName;
130         }
131
132         public String getNewTypeName() {
133                 return fNewTypeName;
134         }
135
136         public void setNewTypeName(String type){
137                 Assert.isNotNull(type);
138                 fNewTypeName= type;
139         }
140
141         public ITypeBinding getNewTypeBinding() {
142                 return fNewTypeBinding;
143         }
144
145         public void setNewTypeBinding(ITypeBinding typeBinding){
146                 fNewTypeBinding= typeBinding;
147         }
148
149         public boolean isOldVarargs() {
150                 return isVarargs(fOldTypeName);
151         }
152
153         public boolean isNewVarargs() {
154                 return isVarargs(fNewTypeName);
155         }
156
157         public String getOldName() {
158                 return fOldName;
159         }
160
161         public String getNewName() {
162                 return fNewName;
163         }
164
165         public void setNewName(String newName) {
166                 Assert.isNotNull(newName);
167                 fNewName= newName;
168         }
169
170         public String getDefaultValue(){
171                 return fDefaultValue;
172         }
173
174         public void setDefaultValue(String value){
175                 Assert.isNotNull(value);
176                 fDefaultValue= value;
177         }
178
179         @Override
180         public String toString() {
181                 return fOldTypeName + " " + fOldName + " @" + fOldIndex + " -> " //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
182                 + fNewTypeName + " " + fNewName + ": " + fDefaultValue  //$NON-NLS-1$//$NON-NLS-2$
183                 + (fIsDeleted ? " (deleted)" : " (stays)");  //$NON-NLS-1$//$NON-NLS-2$
184         }
185
186         public static String stripEllipsis(String typeName) {
187                 if (isVarargs(typeName))
188                         return typeName.substring(0, typeName.length() - 3);
189                 else
190                         return typeName;
191         }
192
193         public static boolean isVarargs(String typeName) {
194                 return typeName.endsWith("..."); //$NON-NLS-1$
195         }
196
197         public ITypeBinding getOldTypeBinding() {
198                 return fOldTypeBinding;
199         }
200
201         public boolean isCreateField() {
202                 return fCreateField;
203         }
204
205         public void setCreateField(boolean createField) {
206                 fIsDeleted= createField;
207                 fCreateField= createField;
208         }
209
210         public void setOldBinding(IVariableBinding binding) {
211                 //The variableBinding is needed by IPOR to check what modifier were present
212                 fOldBinding=binding;
213                 fOldTypeBinding=binding.getType();
214                 fNewTypeBinding=binding.getType();
215         }
216
217         public void setInlined(boolean inlined) {
218                 fInlined=inlined;
219         }
220
221         public boolean isInlined() {
222                 return fInlined;
223         }
224
225         public boolean isResolve() {
226                 return fResolve;
227         }
228
229 }