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
9 * IBM Corporation - initial API and implementation
10 *******************************************************************************/
11 package org.eclipse.jdt.internal.corext.refactoring;
13 import org.eclipse.core.runtime.Assert;
15 import org.eclipse.jdt.core.dom.ITypeBinding;
16 import org.eclipse.jdt.core.dom.IVariableBinding;
19 public class ParameterInfo {
21 public static final int INDEX_FOR_ADDED= -1;
22 public static final String ELLIPSIS= "..."; //$NON-NLS-1$
24 private IVariableBinding fOldBinding;
25 private ITypeBinding fOldTypeBinding;
26 private final String fOldName;
27 private final String fOldTypeName;
28 private final int fOldIndex;
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;
39 public ParameterInfo(String type, String name, int index) {
40 this(null, null, type, name, index);
43 public ParameterInfo(IVariableBinding binding, String type, String name, int index) {
44 this(binding, null, type, name, index);
47 private ParameterInfo(IVariableBinding binding, ITypeBinding typeBinding, String type, String name, int index) {
49 fOldTypeBinding= typeBinding;
50 fNewTypeBinding= typeBinding;
56 fDefaultValue= ""; //$NON-NLS-1$
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
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);
75 private void setResolve(boolean resolve) {
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);
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);
95 public int getOldIndex() {
99 public boolean isDeleted(){
103 public void markAsDeleted(){
104 Assert.isTrue(! isAdded());//added param infos should be simply removed from the list
108 public boolean isAdded(){
109 return fOldIndex == INDEX_FOR_ADDED;
112 public boolean isTypeNameChanged() {
113 return !fOldTypeName.equals(fNewTypeName);
116 public boolean isRenamed() {
117 return !fOldName.equals(fNewName);
120 public boolean isVarargChanged() {
121 return isOldVarargs() != isNewVarargs();
124 public IVariableBinding getOldBinding() {
128 public String getOldTypeName() {
132 public String getNewTypeName() {
136 public void setNewTypeName(String type){
137 Assert.isNotNull(type);
141 public ITypeBinding getNewTypeBinding() {
142 return fNewTypeBinding;
145 public void setNewTypeBinding(ITypeBinding typeBinding){
146 fNewTypeBinding= typeBinding;
149 public boolean isOldVarargs() {
150 return isVarargs(fOldTypeName);
153 public boolean isNewVarargs() {
154 return isVarargs(fNewTypeName);
157 public String getOldName() {
161 public String getNewName() {
165 public void setNewName(String newName) {
166 Assert.isNotNull(newName);
170 public String getDefaultValue(){
171 return fDefaultValue;
174 public void setDefaultValue(String value){
175 Assert.isNotNull(value);
176 fDefaultValue= value;
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$
186 public static String stripEllipsis(String typeName) {
187 if (isVarargs(typeName))
188 return typeName.substring(0, typeName.length() - 3);
193 public static boolean isVarargs(String typeName) {
194 return typeName.endsWith("..."); //$NON-NLS-1$
197 public ITypeBinding getOldTypeBinding() {
198 return fOldTypeBinding;
201 public boolean isCreateField() {
205 public void setCreateField(boolean createField) {
206 fIsDeleted= createField;
207 fCreateField= createField;
210 public void setOldBinding(IVariableBinding binding) {
211 //The variableBinding is needed by IPOR to check what modifier were present
213 fOldTypeBinding=binding.getType();
214 fNewTypeBinding=binding.getType();
217 public void setInlined(boolean inlined) {
221 public boolean isInlined() {
225 public boolean isResolve() {