Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/command/RenameEntityCommand.java')
-rw-r--r--jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/command/RenameEntityCommand.java51
1 files changed, 51 insertions, 0 deletions
diff --git a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/command/RenameEntityCommand.java b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/command/RenameEntityCommand.java
new file mode 100644
index 0000000000..f91a718a24
--- /dev/null
+++ b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/command/RenameEntityCommand.java
@@ -0,0 +1,51 @@
+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$
+ }
+ }
+
+}

Back to the top