1 4 package org.terracotta.dso.refactoring; 5 6 import org.apache.commons.lang.StringUtils; 7 import org.eclipse.core.resources.IProject; 8 import org.eclipse.core.resources.IWorkspace; 9 import org.eclipse.core.resources.ResourcesPlugin; 10 import org.eclipse.core.runtime.IProgressMonitor; 11 import org.eclipse.core.runtime.OperationCanceledException; 12 import org.eclipse.jdt.core.IJavaElement; 13 import org.eclipse.jdt.core.IType; 14 import org.eclipse.ltk.core.refactoring.Change; 15 import org.eclipse.ltk.core.refactoring.RefactoringStatus; 16 17 import org.terracotta.dso.PatternHelper; 18 import org.terracotta.dso.TcPlugin; 19 20 public class RenameTypeChange extends Change { 21 private String fOldTypeName; 22 private String fNewTypeName; 23 private String fProjectName; 24 25 public RenameTypeChange(IType type, String newTypeName) { 26 fOldTypeName = PatternHelper.getFullyQualifiedName(type); 27 fNewTypeName = StringUtils.replace(fOldTypeName, type.getElementName(), newTypeName); 28 fProjectName = type.getAncestor(IJavaElement.JAVA_PROJECT).getElementName(); 29 } 30 31 public RenameTypeChange(String oldTypeName, 32 String newTypeName, 33 String projectName) 34 { 35 fNewTypeName = newTypeName; 36 fOldTypeName = oldTypeName; 37 fProjectName = projectName; 38 } 39 40 public Object getModifiedElement() { 41 return null; 42 } 43 44 public String getName() { 45 return "TCRenameTypeConfigUpdate"; 46 } 47 48 public void initializeValidationData(IProgressMonitor pm) {} 49 50 public RefactoringStatus isValid(IProgressMonitor pm) 51 throws OperationCanceledException 52 { 53 return new RefactoringStatus(); 54 } 55 56 public Change perform(IProgressMonitor pm) { 57 IWorkspace workspace = ResourcesPlugin.getWorkspace(); 58 IProject project = workspace.getRoot().getProject(fProjectName); 59 60 TcPlugin.getDefault().replaceConfigText(project, fOldTypeName, fNewTypeName); 61 62 return new RenameTypeChange(fNewTypeName, fOldTypeName, fProjectName); 64 } 65 } 66 | Popular Tags |