]> git.uio.no Git - ifi-stolz-refaktor.git/blob - case-study/jdt-after/core refactoring/org/eclipse/jdt/internal/corext/refactoring/changes/DynamicValidationRefactoringChange.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / jdt-after / core refactoring / org / eclipse / jdt / internal / corext / refactoring / changes / DynamicValidationRefactoringChange.java
1 /*******************************************************************************
2  * Copyright (c) 2006, 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.changes;
12
13 import org.eclipse.core.runtime.Assert;
14 import org.eclipse.core.runtime.IProgressMonitor;
15
16 import org.eclipse.core.resources.IResource;
17
18 import org.eclipse.ltk.core.refactoring.Change;
19 import org.eclipse.ltk.core.refactoring.ChangeDescriptor;
20 import org.eclipse.ltk.core.refactoring.RefactoringChangeDescriptor;
21 import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
22 import org.eclipse.ltk.core.refactoring.resource.RenameResourceChange;
23
24 import org.eclipse.jdt.core.refactoring.descriptors.JavaRefactoringDescriptor;
25
26 import org.eclipse.jdt.internal.corext.refactoring.RefactoringCoreMessages;
27 import org.eclipse.jdt.internal.corext.refactoring.rename.RenamePackageProcessor;
28 import org.eclipse.jdt.internal.corext.refactoring.rename.RenameTypeProcessor;
29 import org.eclipse.jdt.internal.corext.util.JavaModelUtil;
30
31 /**
32  * Dynamic validation state change with support for refactoring descriptors.
33  *
34  * @since 3.2
35  */
36 public final class DynamicValidationRefactoringChange extends DynamicValidationStateChange {
37
38         /** The refactoring descriptor */
39         private final RefactoringDescriptor fDescriptor;
40
41         /**
42          * Creates a new dynamic validation refactoring change.
43          *
44          * @param descriptor
45          *            the refactoring descriptor
46          * @param name
47          *            the name of the change
48          */
49         public DynamicValidationRefactoringChange(final JavaRefactoringDescriptor descriptor, final String name) {
50                 super(name);
51                 Assert.isNotNull(descriptor);
52                 fDescriptor= descriptor;
53         }
54
55         /**
56          * Creates a new dynamic validation refactoring change.
57          *
58          * @param descriptor
59          *            the refactoring descriptor
60          * @param name
61          *            the name of the change
62          * @param changes
63          *            the changes
64          */
65         public DynamicValidationRefactoringChange(final JavaRefactoringDescriptor descriptor, final String name, final Change[] changes) {
66                 super(name, changes);
67                 Assert.isNotNull(descriptor);
68                 Assert.isTrue(!descriptor.validateDescriptor().hasFatalError(), RefactoringCoreMessages.DynamicValidationRefactoringChange_fatal_error);
69                 fDescriptor= descriptor;
70         }
71
72         /**
73          * {@inheritDoc}
74          */
75         @Override
76         public ChangeDescriptor getDescriptor() {
77                 return new RefactoringChangeDescriptor(fDescriptor);
78         }
79
80         public Change generated_2975924946246089949(IProgressMonitor monitor, RenameTypeProcessor renametypeprocessor) {
81                 addAll(renametypeprocessor.fChangeManager.getAllChanges());
82                 if (renametypeprocessor.willRenameCU()) {
83                         IResource resource= renametypeprocessor.fType.getCompilationUnit().getResource();
84                         if (resource != null && resource.isLinked()) {
85                                 String ext= resource.getFileExtension();
86                                 String renamedResourceName;
87                                 if (ext == null)
88                                         renamedResourceName= renametypeprocessor.getNewElementName();
89                                 else
90                                         renamedResourceName= renametypeprocessor.getNewElementName() + '.' + ext;
91                                 add(new RenameResourceChange(renametypeprocessor.fType.getCompilationUnit().getPath(), renamedResourceName));
92                         } else {
93                                 String renamedCUName= JavaModelUtil.getRenamedCUName(renametypeprocessor.fType.getCompilationUnit(), renametypeprocessor.getNewElementName());
94                                 add(new RenameCompilationUnitChange(renametypeprocessor.fType.getCompilationUnit(), renamedCUName));
95                         }
96                 }
97                 monitor.worked(1);
98                 return this;
99         }
100
101         public Change generated_795509846149273965(IProgressMonitor monitor, RenamePackageProcessor renamepackageprocessor) {
102                 addAll(renamepackageprocessor.fChangeManager.getAllChanges());
103                 renamepackageprocessor.fRenamePackageChange= new RenamePackageChange( renamepackageprocessor.fPackage, renamepackageprocessor.getNewElementName(),  renamepackageprocessor.fRenameSubpackages);
104                 add(renamepackageprocessor.fRenamePackageChange);
105                 monitor.worked(1);
106                 return this;
107         }
108 }