1 11 package org.eclipse.jdt.internal.corext.refactoring.changes; 12 13 import org.eclipse.core.resources.mapping.ResourceMapping; 14 15 import org.eclipse.core.runtime.CoreException; 16 import org.eclipse.core.runtime.IProgressMonitor; 17 import org.eclipse.core.runtime.OperationCanceledException; 18 import org.eclipse.core.runtime.SubProgressMonitor; 19 20 21 import org.eclipse.ltk.core.refactoring.Change; 22 import org.eclipse.ltk.core.refactoring.participants.ReorgExecutionLog; 23 24 import org.eclipse.jdt.core.ICompilationUnit; 25 import org.eclipse.jdt.core.IPackageFragment; 26 import org.eclipse.jdt.core.JavaCore; 27 28 import org.eclipse.jdt.internal.corext.refactoring.RefactoringCoreMessages; 29 import org.eclipse.jdt.internal.corext.refactoring.base.JDTChange; 30 import org.eclipse.jdt.internal.corext.refactoring.reorg.INewNameQuery; 31 import org.eclipse.jdt.internal.corext.util.JavaElementResourceMapping; 32 33 abstract class CompilationUnitReorgChange extends JDTChange { 34 35 private String fCuHandle; 36 private String fOldPackageHandle; 37 private String fNewPackageHandle; 38 39 private INewNameQuery fNewNameQuery; 40 41 CompilationUnitReorgChange(ICompilationUnit cu, IPackageFragment dest, INewNameQuery newNameQuery) { 42 fCuHandle= cu.getHandleIdentifier(); 43 fNewPackageHandle= dest.getHandleIdentifier(); 44 fNewNameQuery= newNameQuery; 45 fOldPackageHandle= cu.getParent().getHandleIdentifier(); 46 } 47 48 CompilationUnitReorgChange(ICompilationUnit cu, IPackageFragment dest) { 49 this(cu, dest, null); 50 } 51 52 CompilationUnitReorgChange(String oldPackageHandle, String newPackageHandle, String cuHandle) { 53 fOldPackageHandle= oldPackageHandle; 54 fNewPackageHandle= newPackageHandle; 55 fCuHandle= cuHandle; 56 } 57 58 public final Change perform(IProgressMonitor pm) throws CoreException, OperationCanceledException { 59 pm.beginTask(getName(), 1); 60 try { 61 ICompilationUnit unit= getCu(); 62 ResourceMapping mapping= JavaElementResourceMapping.create(unit); 63 Change result= doPerformReorg(new SubProgressMonitor(pm, 1)); 64 markAsExecuted(unit, mapping); 65 return result; 66 } finally { 67 pm.done(); 68 } 69 } 70 71 abstract Change doPerformReorg(IProgressMonitor pm) throws CoreException, OperationCanceledException; 72 73 public Object getModifiedElement() { 74 return getCu(); 75 } 76 77 ICompilationUnit getCu() { 78 return (ICompilationUnit)JavaCore.create(fCuHandle); 79 } 80 81 IPackageFragment getOldPackage() { 82 return (IPackageFragment)JavaCore.create(fOldPackageHandle); 83 } 84 85 IPackageFragment getDestinationPackage() { 86 return (IPackageFragment)JavaCore.create(fNewPackageHandle); 87 } 88 89 String getNewName() throws OperationCanceledException { 90 if (fNewNameQuery == null) 91 return null; 92 return fNewNameQuery.getNewName(); 93 } 94 95 static String getPackageName(IPackageFragment pack) { 96 if (pack.isDefaultPackage()) 97 return RefactoringCoreMessages.MoveCompilationUnitChange_default_package; 98 else 99 return pack.getElementName(); 100 } 101 102 private void markAsExecuted(ICompilationUnit unit, ResourceMapping mapping) { 103 ReorgExecutionLog log= (ReorgExecutionLog)getAdapter(ReorgExecutionLog.class); 104 if (log != null) { 105 log.markAsProcessed(unit); 106 log.markAsProcessed(mapping); 107 } 108 } 109 } 110 | Popular Tags |