Copyright (c) 2007, 2008 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: IBM Corporation - initial API and implementation
/******************************************************************************* * Copyright (c) 2007, 2008 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/
package org.eclipse.ltk.core.refactoring.resource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.ltk.core.refactoring.Change; import org.eclipse.ltk.core.refactoring.ChangeDescriptor; import org.eclipse.ltk.internal.core.refactoring.BasicElementLabels; import org.eclipse.ltk.internal.core.refactoring.Messages; import org.eclipse.ltk.internal.core.refactoring.RefactoringCoreMessages;
Change that renames a resource.
Since:3.4
/** * {@link Change} that renames a resource. * * @since 3.4 */
public class RenameResourceChange extends ResourceChange { private final String fNewName; private final IPath fResourcePath; private final long fStampToRestore; private ChangeDescriptor fDescriptor;
Creates the change.
Params:
  • resourcePath – the path of the resource to rename
  • newName – the new name. Must not be empty.
/** * Creates the change. * * @param resourcePath the path of the resource to rename * @param newName the new name. Must not be empty. */
public RenameResourceChange(IPath resourcePath, String newName) { this(resourcePath, newName, IResource.NULL_STAMP); }
Creates the change with a time stamp to restore.
Params:
  • resourcePath – the path of the resource to rename
  • newName – the new name. Must not be empty.
  • stampToRestore – the time stamp to restore or IResource.NULL_STAMP to not restore the time stamp.
/** * Creates the change with a time stamp to restore. * * @param resourcePath the path of the resource to rename * @param newName the new name. Must not be empty. * @param stampToRestore the time stamp to restore or {@link IResource#NULL_STAMP} to not restore the * time stamp. */
protected RenameResourceChange(IPath resourcePath, String newName, long stampToRestore) { if (resourcePath == null || newName == null || newName.length() == 0) { throw new IllegalArgumentException(); } fResourcePath= resourcePath; fNewName= newName; fStampToRestore= stampToRestore; fDescriptor= null; setValidationMethod(VALIDATE_NOT_DIRTY); } @Override public ChangeDescriptor getDescriptor() { return fDescriptor; }
Sets the change descriptor to be returned by Change.getDescriptor().
Params:
  • descriptor – the change descriptor
/** * Sets the change descriptor to be returned by {@link Change#getDescriptor()}. * * @param descriptor the change descriptor */
public void setDescriptor(ChangeDescriptor descriptor) { fDescriptor= descriptor; } @Override protected IResource getModifiedResource() { return getResource(); } @Override public String getName() { return Messages.format(RefactoringCoreMessages.RenameResourceChange_name, new String[] { BasicElementLabels.getPathLabel(fResourcePath, false), BasicElementLabels.getResourceName(fNewName) }); }
Returns the new name.
Returns:return the new name
/** * Returns the new name. * * @return return the new name */
public String getNewName() { return fNewName; } private IResource getResource() { return ResourcesPlugin.getWorkspace().getRoot().findMember(fResourcePath); } @Override public Change perform(IProgressMonitor pm) throws CoreException { try { pm.beginTask(RefactoringCoreMessages.RenameResourceChange_progress_description, 1); IResource resource= getResource(); long currentStamp= resource.getModificationStamp(); IPath newPath= renamedResourcePath(fResourcePath, fNewName); resource.move(newPath, IResource.SHALLOW, pm); if (fStampToRestore != IResource.NULL_STAMP) { IResource newResource= ResourcesPlugin.getWorkspace().getRoot().findMember(newPath); newResource.revertModificationStamp(fStampToRestore); } String oldName= fResourcePath.lastSegment(); return new RenameResourceChange(newPath, oldName, currentStamp); } finally { pm.done(); } } private static IPath renamedResourcePath(IPath path, String newName) { return path.removeLastSegments(1).append(newName); } }