blob: f91a718a249705a754043576c5388feb219e73ee [file] [log] [blame]
package org.eclipse.jpt.jpadiagrameditor.ui.internal.command;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.ui.refactoring.RenameSupport;
import org.eclipse.jpt.common.utility.command.Command;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType;
import org.eclipse.jpt.jpadiagrameditor.ui.internal.JPADiagramEditorPlugin;
import org.eclipse.jpt.jpadiagrameditor.ui.internal.provider.IJPAEditorFeatureProvider;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchWindow;
public class RenameEntityCommand implements Command {
private JavaPersistentType jpt;
private String newEntityName;
private IJPAEditorFeatureProvider fp;
public RenameEntityCommand(JavaPersistentType jpt, String newEntityName, IJPAEditorFeatureProvider fp){
super();
this.jpt = jpt;
this.newEntityName = newEntityName;
this.fp = fp;
}
public void execute() {
renameEntityClass(this.fp.getCompilationUnit(this.jpt), this.newEntityName);
this.jpt.getJavaResourceType().getJavaResourceCompilationUnit().synchronizeWithJavaSource();
}
private void renameEntityClass(ICompilationUnit cu, String newName) {
IType javaType = cu.findPrimaryType();
renameType(javaType, newName);
}
private void renameType(IType type, String newName) {
if (!type.exists())
return;
String oldName = type.getElementName();
try {
RenameSupport s = RenameSupport.create(type, newName, RenameSupport.UPDATE_REFERENCES);
IWorkbenchWindow ww = JPADiagramEditorPlugin.getDefault()
.getWorkbench().getActiveWorkbenchWindow();
Shell sh = ww.getShell();
s.perform(sh, ww);
} catch (Exception e1) {
JPADiagramEditorPlugin.logError("Cannot rename the type " + oldName, e1); //$NON-NLS-1$
}
}
}