]> git.uio.no Git - ifi-stolz-refaktor.git/blob - case-study/jdt-after/ui/org/eclipse/jdt/internal/ui/fix/VariableDeclarationCleanUp.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / jdt-after / ui / org / eclipse / jdt / internal / ui / fix / VariableDeclarationCleanUp.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.ui.fix;
12
13 import java.util.ArrayList;
14 import java.util.List;
15 import java.util.Map;
16
17 import org.eclipse.core.runtime.CoreException;
18
19 import org.eclipse.jdt.core.dom.CompilationUnit;
20
21 import org.eclipse.jdt.internal.corext.fix.CleanUpConstants;
22 import org.eclipse.jdt.internal.corext.fix.VariableDeclarationFix;
23
24 import org.eclipse.jdt.ui.cleanup.CleanUpContext;
25 import org.eclipse.jdt.ui.cleanup.CleanUpRequirements;
26 import org.eclipse.jdt.ui.cleanup.ICleanUpFix;
27
28 public class VariableDeclarationCleanUp extends AbstractCleanUp {
29
30         public VariableDeclarationCleanUp(Map<String, String> options) {
31                 super(options);
32         }
33
34         public VariableDeclarationCleanUp() {
35                 super();
36         }
37
38         /**
39          * {@inheritDoc}
40          */
41         @Override
42         public CleanUpRequirements getRequirements() {
43                 return new CleanUpRequirements(requireAST(), false, false, null);
44         }
45
46         private boolean requireAST() {
47                 boolean addFinal= isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL);
48                 if (!addFinal)
49                         return false;
50
51                 return isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_PRIVATE_FIELDS) ||
52                                 isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_PARAMETERS) ||
53                                 isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_LOCAL_VARIABLES);
54         }
55
56         /**
57          * {@inheritDoc}
58          */
59         @Override
60         public ICleanUpFix createFix(CleanUpContext context) throws CoreException {
61                 CompilationUnit compilationUnit= context.getAST();
62                 if (compilationUnit == null)
63                         return null;
64
65                 boolean addFinal= isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL);
66                 if (!addFinal)
67                         return null;
68
69                 return VariableDeclarationFix.createCleanUp(compilationUnit,
70                                 isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_PRIVATE_FIELDS),
71                                 isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_PARAMETERS),
72                                 isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_LOCAL_VARIABLES));
73         }
74
75         /**
76          * {@inheritDoc}
77          */
78         @Override
79         public String[] getStepDescriptions() {
80                 List<String> result= new ArrayList<String>();
81                 if (isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL) && isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_PRIVATE_FIELDS))
82                         result.add(MultiFixMessages.VariableDeclarationCleanUp_AddFinalField_description);
83                 if (isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL) && isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_PARAMETERS))
84                         result.add(MultiFixMessages.VariableDeclarationCleanUp_AddFinalParameters_description);
85                 if (isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL) && isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_LOCAL_VARIABLES))
86                         result.add(MultiFixMessages.VariableDeclarationCleanUp_AddFinalLocals_description);
87
88                 return result.toArray(new String[result.size()]);
89         }
90
91         /**
92          * {@inheritDoc}
93          */
94         @Override
95         public String getPreview() {
96                 StringBuffer buf= new StringBuffer();
97
98                 if (isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL) && isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_PRIVATE_FIELDS)) {
99                         buf.append("private final int i= 0;\n"); //$NON-NLS-1$
100                 } else {
101                         buf.append("private int i= 0;\n"); //$NON-NLS-1$
102                 }
103                 if (isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL) && isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_PARAMETERS)) {
104                         buf.append("public void foo(final int j) {\n"); //$NON-NLS-1$
105                 } else {
106                         buf.append("public void foo(int j) {\n"); //$NON-NLS-1$
107                 }
108                 if (isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL) && isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_LOCAL_VARIABLES)) {
109                         buf.append("    final int k;\n"); //$NON-NLS-1$
110                         buf.append("    int h;\n"); //$NON-NLS-1$
111                         buf.append("    h= 0;\n"); //$NON-NLS-1$
112                 } else {
113                         buf.append("    int k, h;\n"); //$NON-NLS-1$
114                         buf.append("    h= 0;\n"); //$NON-NLS-1$
115                 }
116                 buf.append("}\n"); //$NON-NLS-1$
117
118                 return buf.toString();
119         }
120
121 }