diff options
author | bvosburgh | 2012-04-03 15:35:18 +0000 |
---|---|---|
committer | bvosburgh | 2012-04-03 15:35:18 +0000 |
commit | b7e53c0b7bf55ba278e9b63f8b232ac45c89c049 (patch) | |
tree | c35cf00f59e367de5128938eeefc8e87a4d38e44 /jpa/plugins/org.eclipse.jpt.jpa.ui/src/org | |
parent | e37fe558e61f33ed18c7a38c268b995d984b8f9d (diff) | |
download | webtools.dali-b7e53c0b7bf55ba278e9b63f8b232ac45c89c049.tar.gz webtools.dali-b7e53c0b7bf55ba278e9b63f8b232ac45c89c049.tar.xz webtools.dali-b7e53c0b7bf55ba278e9b63f8b232ac45c89c049.zip |
[353149] metadata conversion UI
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.jpa.ui/src/org')
28 files changed, 1038 insertions, 1146 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/JptUiMessages.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/JptUiMessages.java index 2926fa483b..de595118db 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/JptUiMessages.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/JptUiMessages.java @@ -19,6 +19,12 @@ import org.eclipse.osgi.util.NLS; */ // TODO bjv rename... public class JptUiMessages { + private static final String BUNDLE_NAME = "jpt_ui"; //$NON-NLS-1$ + private static final Class<?> BUNDLE_CLASS = JptUiMessages.class; + + static { + NLS.initializeMessages(BUNDLE_NAME, BUNDLE_CLASS); + } public static String AccessTypeComposite_access; public static String AddToEarComposite_earMemberShip; @@ -153,41 +159,38 @@ public class JptUiMessages { public static String JpaProblemSeveritiesPage_Ignore; public static String JpaProblemSeveritiesPage_Info; public static String JpaProblemSeveritiesPage_Warning; - public static String SelectJpaOrmMappingFileDialog_title; - public static String SelectJpaOrmMappingFileDialog_message; public static String JpaEntityGenPreferencePage_Description; public static String JpaEntityGenPreferencePage_generalGroup_title; public static String JpaEntityGenPreferencePage_defaultPackageLabel; - public static String SelectJpaOrmMappingFileDialog_newButton; - public static String SelectJpaOrmMappingFileDialog_newBtnToolTip; - public static String SynchronizingClasses_TaskName; - public static String JpaGlobalMetadataConversionWizard_title; - public static String JpaGlobalMetadataConversion_convertingJpaGlobalMetadataWarning; - public static String JpaGlobalMetadataConversion_mappingFileDoesNotExist; - public static String JpaGlobalMetadataConversion_mappingFileHasInvalidVersion; - public static String JpaGlobalMetadataConversion_mappingFileNotListedInPersistenceXml; - public static String JpaGlobalMetadataConversion_noGeneratorMetadataToConvert; - public static String JpaGlobalMetadataConversion_noQueryMetadataToConvert; - public static String JpaGlobalMetadataConversionWizardPage_browseMappingFileBtn; - public static String JpaGlobalMetadataConversionWizardPage_browseMappingFileBtnToolTip; - public static String JpaGlobalMetadataConversionWizardPage_label; - public static String JpaGlobalMetadataConversionWizardPage_newMappingFileLink; - public static String JpaGlobalMetadataConversionWizardPage_newMappingFileLinkToolTip; - public static String JpaJavaGeneratorMetadataConversionWizardPage_description; - public static String JpaJavaGeneratorMetadataConversionWizardPage_title; - public static String JpaJavaQueryMetadataConversionWizardPage_description; - public static String JpaJavaQueryMetadataConversionWizardPage_title; + public static String SelectJpaProjectWizardPage_title; + public static String SelectJpaProjectWizardPage_msg; + public static String SelectMappingFileDialog_title; + public static String SelectMappingFileDialog_message; + public static String SelectMappingFileDialog_newButton; + public static String SelectMappingFileDialog_newButtonToolTip; - private static final String BUNDLE_NAME = "jpt_ui"; //$NON-NLS-1$ - private static final Class<?> BUNDLE_CLASS = JptUiMessages.class; + public static String SynchronizingClasses_TaskName; - static { - NLS.initializeMessages(BUNDLE_NAME, BUNDLE_CLASS); - } + public static String JavaMetadataConversionWizard_title; + public static String JavaMetadataConversion_warning; + public static String JavaMetadataConversion_mappingFileDoesNotExist; + public static String JavaMetadataConversion_mappingFileVersionIsInvalid; + public static String JavaMetadataConversion_mappingFileNotListedInPersistenceXml; + public static String JavaMetadataConversion_noGeneratorsToConvert; + public static String JavaMetadataConversion_noQueriesToConvert; + public static String JavaMetadataConversionWizardPage_mappingFileBrowseButton; + public static String JavaMetadataConversionWizardPage_mappingFileBrowseButtonToolTip; + public static String JavaMetadataConversionWizardPage_label; + public static String JavaMetadataConversionWizardPage_newMappingFileLink; + public static String JavaMetadataConversionWizardPage_newMappingFileLinkToolTip; + public static String JavaGeneratorConversionWizardPage_title; + public static String JavaGeneratorConversionWizardPage_description; + public static String JavaQueryConversionWizardPage_title; + public static String JavaQueryConversionWizardPage_description; private JptUiMessages() { throw new UnsupportedOperationException(); } -}
\ No newline at end of file +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/commands/AbstractJavaMetadataConversionHandler.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/commands/AbstractJavaMetadataConversionHandler.java new file mode 100644 index 0000000000..4fe1d873ae --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/commands/AbstractJavaMetadataConversionHandler.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright (c) 2011, 2012 Oracle. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0, which accompanies this distribution + * and is available at http://www.eclipse.org/legal/epl-v10.html. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.jpa.ui.internal.commands; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.jdt.core.IJavaElement; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jpt.common.core.internal.utility.PlatformTools; +import org.eclipse.jpt.jpa.core.JpaProject; +import org.eclipse.jpt.jpa.ui.JpaPlatformUi; +import org.eclipse.ui.handlers.HandlerUtil; + +public abstract class AbstractJavaMetadataConversionHandler + extends AbstractHandler +{ + public AbstractJavaMetadataConversionHandler() { + super(); + } + + public Object execute(ExecutionEvent event) throws ExecutionException { + this.execute_(event); + return null; + } + + protected void execute_(ExecutionEvent event) throws ExecutionException { + IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelectionChecked(event); + JpaProject jpaProject = this.convertSelectionToJpaProject(selection.getFirstElement()); + if (jpaProject != null) { + this.convertJavaMetadata(jpaProject); + } + } + + protected abstract void convertJavaMetadata(JpaProject jpaProject); + + protected JpaProject convertSelectionToJpaProject(Object sel) { + try { + return (sel == null) ? null : this.convertSelectionToJpaProject_(sel); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + return null; + } + } + + protected JpaProject convertSelectionToJpaProject_(Object sel) throws InterruptedException { + // this will handle JpaProject and IProject (when the JpaProject is already present) + JpaProject jpaProject = PlatformTools.getAdapter(sel, JpaProject.class); + if (jpaProject != null) { + return jpaProject; + } + IProject project = this.convertSelectionToProject(sel); + if (project == null) { + return null; + } + JpaProject.Reference ref = (JpaProject.Reference) project.getAdapter(JpaProject.Reference.class); + // this will wait for the JpaProject if it is under construction + return (ref == null) ? null : ref.getValue(); + } + + protected IProject convertSelectionToProject(Object sel) { + // this will handle JpaProject and IProject + IResource resource = PlatformTools.getAdapter(sel, IResource.class); + if (resource != null) { + return resource.getProject(); + } + + IJavaProject javaProject = this.convertSelectionToJavaProject(sel); + return (javaProject == null) ? null : javaProject.getProject(); + } + + protected IJavaProject convertSelectionToJavaProject(Object sel) { + IJavaElement javaElement = PlatformTools.getAdapter(sel, IJavaElement.class); + return (javaElement == null) ? null : javaElement.getJavaProject(); + } + + /** + * Convenience method. + */ + protected JpaPlatformUi getJpaPlatformUi(JpaProject jpaProject) { + return (JpaPlatformUi) jpaProject.getJpaPlatform().getAdapter(JpaPlatformUi.class); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/commands/AbstractJpaJavaMetadataConversionHandler.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/commands/AbstractJpaJavaMetadataConversionHandler.java deleted file mode 100644 index fc9908083f..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/commands/AbstractJpaJavaMetadataConversionHandler.java +++ /dev/null @@ -1,67 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2012 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.commands; - -import org.eclipse.core.commands.AbstractHandler; -import org.eclipse.core.commands.ExecutionEvent; -import org.eclipse.core.commands.ExecutionException; -import org.eclipse.core.resources.IProject; -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jpt.jpa.core.JpaProject; -import org.eclipse.jpt.jpa.ui.JpaPlatformUi; -import org.eclipse.jpt.jpa.ui.internal.platform.JpaPlatformUiRegistry; -import org.eclipse.ui.handlers.HandlerUtil; - -public abstract class AbstractJpaJavaMetadataConversionHandler extends AbstractHandler { - - public AbstractJpaJavaMetadataConversionHandler() { - super(); - } - - - public Object execute(ExecutionEvent event) throws ExecutionException { - IStructuredSelection selections = (IStructuredSelection) - HandlerUtil.getCurrentSelectionChecked(event); - - Object selection = selections.iterator().next(); - JpaProject jpaProject = getJpaProjectFromSelection(selection); - if (jpaProject != null) { - converterJavaGlobalMetadata(jpaProject); - } - return null; - } - - - abstract protected void converterJavaGlobalMetadata(JpaProject jpaProject); - - protected JpaPlatformUi getJpaPlatformUi(JpaProject project) { - String coreJpaPlatformId = project.getJpaPlatform().getId(); - return JpaPlatformUiRegistry.instance().getJpaPlatformUi(coreJpaPlatformId); - } - - protected JpaProject getJpaProjectFromSelection(Object selection) { - IProject project = getIProjectFromSelection(selection); - if (project != null) { - return (JpaProject) project.getAdapter(JpaProject.class); - } - return null; - } - - protected IProject getIProjectFromSelection(Object selection) { - if (selection instanceof IProject) { - return (IProject) selection; - } - if (selection instanceof IJavaProject) { - return ((IJavaProject) selection).getProject(); - } - return null; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/commands/JpaJavaQueryMetadataConversionHandler.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/commands/JavaGeneratorConversionHandler.java index 8e4ed93bc5..dadb127fbe 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/commands/JpaJavaQueryMetadataConversionHandler.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/commands/JavaGeneratorConversionHandler.java @@ -11,13 +11,15 @@ package org.eclipse.jpt.jpa.ui.internal.commands; import org.eclipse.jpt.jpa.core.JpaProject; -public class JpaJavaQueryMetadataConversionHandler extends AbstractJpaJavaMetadataConversionHandler { - public JpaJavaQueryMetadataConversionHandler() { +public class JavaGeneratorConversionHandler + extends AbstractJavaMetadataConversionHandler +{ + public JavaGeneratorConversionHandler() { super(); } @Override - protected void converterJavaGlobalMetadata(JpaProject jpaProject) { - super.getJpaPlatformUi(jpaProject).convertJavaQueryMetadataToGlobal(jpaProject); + protected void convertJavaMetadata(JpaProject jpaProject) { + this.getJpaPlatformUi(jpaProject).convertJavaGeneratorMetadataToGlobal(jpaProject); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/commands/JpaJavaGeneratorMetadataConversionHandler.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/commands/JavaQueryConversionHandler.java index b9d9149eb8..8aa38f790b 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/commands/JpaJavaGeneratorMetadataConversionHandler.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/commands/JavaQueryConversionHandler.java @@ -11,15 +11,15 @@ package org.eclipse.jpt.jpa.ui.internal.commands; import org.eclipse.jpt.jpa.core.JpaProject; -public class JpaJavaGeneratorMetadataConversionHandler extends AbstractJpaJavaMetadataConversionHandler { - - public JpaJavaGeneratorMetadataConversionHandler() { +public class JavaQueryConversionHandler + extends AbstractJavaMetadataConversionHandler +{ + public JavaQueryConversionHandler() { super(); } @Override - protected void converterJavaGlobalMetadata(JpaProject jpaProject) { - super.getJpaPlatformUi(jpaProject).convertJavaGeneratorMetadataToGlobal(jpaProject); - + protected void convertJavaMetadata(JpaProject jpaProject) { + this.getJpaPlatformUi(jpaProject).convertJavaQueryMetadataToGlobal(jpaProject); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/platform/base/AbstractJpaJavaGlobalMetadataConvertor.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/platform/base/AbstractJpaJavaGlobalMetadataConvertor.java deleted file mode 100644 index 65d75a6639..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/platform/base/AbstractJpaJavaGlobalMetadataConvertor.java +++ /dev/null @@ -1,59 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2012 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.platform.base; - -import org.eclipse.jface.wizard.Wizard; -import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.jpt.jpa.core.JpaProject; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.graphics.Rectangle; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; - -public abstract class AbstractJpaJavaGlobalMetadataConvertor { - - protected JpaProject jpaProject; - - public AbstractJpaJavaGlobalMetadataConvertor(JpaProject jpaProject) { - super(); - this.jpaProject = jpaProject; - } - - public static void convert(JpaProject jpaProject) { - new GenericJpaJavaQueryMetadataConvertor(jpaProject).convert(); - } - - protected void convert() { - WizardDialog dialog = new WizardDialog(this.getCurrentShell(), getWizard()) { - @Override - protected void configureShell(Shell newShell) { - super.configureShell(newShell); - newShell.setSize(520, 460); - center(newShell); - } - }; - dialog.create(); - dialog.open(); - } - - abstract protected Wizard getWizard(); - - protected Shell getCurrentShell() { - return Display.getCurrent().getActiveShell(); - } - - protected void center(Shell shell) { - Rectangle bounds = shell.getDisplay().getBounds(); - Point point = shell.getSize(); - int nLeft = (bounds.width - point.x) / 2; - int nTop = (bounds.height - point.y) / 3; - shell.setBounds(nLeft, nTop, point.x, point.y); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/platform/base/BaseJpaPlatformUi.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/platform/base/AbstractJpaPlatformUi.java index 567f09e21a..7942c16b0c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/platform/base/BaseJpaPlatformUi.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/platform/base/AbstractJpaPlatformUi.java @@ -13,8 +13,11 @@ import java.util.Iterator; import java.util.ListIterator; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.IWizard; +import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.jpt.common.core.JptResourceType; import org.eclipse.jpt.common.ui.WidgetFactory; +import org.eclipse.jpt.common.ui.internal.util.SWTUtil; import org.eclipse.jpt.common.ui.jface.ItemTreeStateProviderFactoryProvider; import org.eclipse.jpt.common.utility.internal.CollectionTools; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; @@ -35,11 +38,12 @@ import org.eclipse.jpt.jpa.ui.details.JpaComposite; import org.eclipse.jpt.jpa.ui.details.JpaDetailsPageManager; import org.eclipse.jpt.jpa.ui.details.JpaDetailsProvider; import org.eclipse.jpt.jpa.ui.details.MappingUiDefinition; +import org.eclipse.jpt.jpa.ui.internal.wizards.conversion.java.JavaMetadataConversionWizard; +import org.eclipse.jpt.jpa.ui.internal.wizards.conversion.java.JavaMetadataConversionWizardPage; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; -public abstract class BaseJpaPlatformUi +public abstract class AbstractJpaPlatformUi implements JpaPlatformUi { private final ItemTreeStateProviderFactoryProvider navigatorFactoryProvider; @@ -47,11 +51,14 @@ public abstract class BaseJpaPlatformUi private final JpaPlatformUiProvider platformUiProvider; - protected BaseJpaPlatformUi( + protected AbstractJpaPlatformUi( ItemTreeStateProviderFactoryProvider navigatorFactoryProvider, JpaPlatformUiProvider platformUiProvider ) { super(); + if ((navigatorFactoryProvider == null) || (platformUiProvider == null)) { + throw new NullPointerException(); + } this.navigatorFactoryProvider = navigatorFactoryProvider; this.platformUiProvider = platformUiProvider; } @@ -182,7 +189,45 @@ public abstract class BaseJpaPlatformUi // ********** convenience methods ********** protected void displayMessage(String title, String message) { - Shell currentShell = Display.getCurrent().getActiveShell(); - MessageDialog.openInformation(currentShell, title, message); + MessageDialog.openInformation(SWTUtil.getShell(), title, message); + } + + protected void openInDialog(JavaMetadataConversionWizardPage wizardPage) { + openInDialog(new JavaMetadataConversionWizard(wizardPage)); + } + + protected void openInDialog(IWizard wizard) { + new SizedWizardDialog(wizard).open(); + } + + + // ********** wizard dialog ********** + + public class SizedWizardDialog + extends WizardDialog + { + private final int width; + private final int height; + + public SizedWizardDialog(IWizard wizard) { + this(wizard, 520, 460); + } + + public SizedWizardDialog(IWizard wizard, int width, int height) { + this(SWTUtil.getShell(), wizard, width, height); + } + + public SizedWizardDialog(Shell shell, IWizard wizard, int width, int height) { + super(shell, wizard); + this.width = width; + this.height = height; + } + + @Override + protected void configureShell(Shell shell) { + super.configureShell(shell); + shell.setSize(this.width, this.height); + SWTUtil.center(shell, this.getParentShell()); + } } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/platform/base/GenericJpaJavaGeneratorMetadataConvertor.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/platform/base/GenericJpaJavaGeneratorMetadataConvertor.java deleted file mode 100644 index ea25b11617..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/platform/base/GenericJpaJavaGeneratorMetadataConvertor.java +++ /dev/null @@ -1,32 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2012 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.platform.base; - -import org.eclipse.jface.wizard.Wizard; -import org.eclipse.jpt.jpa.core.JpaProject; -import org.eclipse.jpt.jpa.ui.internal.wizards.conversion.java.GenericJpaJavaGeneratorMetadataConversionWizard; - -public class GenericJpaJavaGeneratorMetadataConvertor extends - AbstractJpaJavaGlobalMetadataConvertor { - - public GenericJpaJavaGeneratorMetadataConvertor(JpaProject jpaProject) { - super(jpaProject); - } - - - public static void convert(JpaProject jpaProject) { - new GenericJpaJavaGeneratorMetadataConvertor(jpaProject).convert(); - } - - @Override - protected Wizard getWizard() { - return new GenericJpaJavaGeneratorMetadataConversionWizard(super.jpaProject); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/platform/base/GenericJpaJavaQueryMetadataConvertor.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/platform/base/GenericJpaJavaQueryMetadataConvertor.java deleted file mode 100644 index 8e8080133e..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/platform/base/GenericJpaJavaQueryMetadataConvertor.java +++ /dev/null @@ -1,31 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2012 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.platform.base; - -import org.eclipse.jface.wizard.Wizard; -import org.eclipse.jpt.jpa.core.JpaProject; -import org.eclipse.jpt.jpa.ui.internal.wizards.conversion.java.GenericJpaJavaQueryMetadataConversionWizard; - -public class GenericJpaJavaQueryMetadataConvertor extends - AbstractJpaJavaGlobalMetadataConvertor { - - public GenericJpaJavaQueryMetadataConvertor(JpaProject jpaProject) { - super(jpaProject); - } - - public static void convert(JpaProject jpaProject) { - new GenericJpaJavaQueryMetadataConvertor(jpaProject).convert(); - } - - @Override - protected Wizard getWizard(){ - return new GenericJpaJavaQueryMetadataConversionWizard(super.jpaProject); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/platform/generic/GenericJpaPlatformUi.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/platform/generic/GenericJpaPlatformUi.java index 7b37e22675..32e3e4743e 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/platform/generic/GenericJpaPlatformUi.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/platform/generic/GenericJpaPlatformUi.java @@ -14,12 +14,12 @@ import org.eclipse.jpt.common.ui.jface.ItemTreeStateProviderFactoryProvider; import org.eclipse.jpt.jpa.core.JpaProject; import org.eclipse.jpt.jpa.ui.JpaPlatformUiProvider; import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; -import org.eclipse.jpt.jpa.ui.internal.platform.base.BaseJpaPlatformUi; -import org.eclipse.jpt.jpa.ui.internal.platform.base.GenericJpaJavaGeneratorMetadataConvertor; -import org.eclipse.jpt.jpa.ui.internal.platform.base.GenericJpaJavaQueryMetadataConvertor; +import org.eclipse.jpt.jpa.ui.internal.platform.base.AbstractJpaPlatformUi; +import org.eclipse.jpt.jpa.ui.internal.wizards.conversion.java.GenericJavaGeneratorConversionWizardPage; +import org.eclipse.jpt.jpa.ui.internal.wizards.conversion.java.GenericJavaQueryConversionWizardPage; public class GenericJpaPlatformUi - extends BaseJpaPlatformUi + extends AbstractJpaPlatformUi { public GenericJpaPlatformUi( ItemTreeStateProviderFactoryProvider navigatorFactoryProvider, @@ -37,10 +37,10 @@ public class GenericJpaPlatformUi // ********** metadata conversion ********** public void convertJavaQueryMetadataToGlobal(JpaProject jpaProject) { - GenericJpaJavaQueryMetadataConvertor.convert(jpaProject); + this.openInDialog(new GenericJavaQueryConversionWizardPage(jpaProject)); } public void convertJavaGeneratorMetadataToGlobal(JpaProject jpaProject) { - GenericJpaJavaGeneratorMetadataConvertor.convert(jpaProject); + this.openInDialog(new GenericJavaGeneratorConversionWizardPage(jpaProject)); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/JpaMakePersistentWizardPage.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/JpaMakePersistentWizardPage.java index 8d919df218..49d8ed44ae 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/JpaMakePersistentWizardPage.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/JpaMakePersistentWizardPage.java @@ -283,7 +283,7 @@ public class JpaMakePersistentWizardPage extends WizardPage { ViewerFilter filter = buildMappingFileDialogViewerFilter(); ITreeContentProvider contentProvider = new WorkbenchContentProvider(); ILabelProvider labelProvider = new WorkbenchLabelProvider(); - SelectJpaOrmMappingFileDialog dialog = new SelectJpaOrmMappingFileDialog(getShell(), this.jpaProject.getProject(), labelProvider, contentProvider); + SelectMappingFileDialog dialog = new SelectMappingFileDialog(getShell(), this.jpaProject.getProject(), labelProvider, contentProvider); dialog.setTitle(EntityWizardMsg.MAPPING_XML_TITLE); dialog.setMessage(EntityWizardMsg.CHOOSE_MAPPING_XML_MESSAGE); dialog.addFilter(filter); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/SelectJPAProjectWizardPage.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/SelectJPAProjectWizardPage.java deleted file mode 100644 index 1b4df67238..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/SelectJPAProjectWizardPage.java +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2012 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.wizards; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.jpt.jpa.core.JpaProject; -import org.eclipse.jpt.jpa.core.JptJpaCorePlugin; -import org.eclipse.jpt.jpa.ui.internal.wizards.conversion.java.JpaJavaGlobalMetadataConversionWizard; -import org.eclipse.jpt.jpa.ui.internal.wizards.gen.PromptJPAProjectWizardPage; -import org.eclipse.swt.widgets.TableItem; - -public class SelectJPAProjectWizardPage extends PromptJPAProjectWizardPage { - - public SelectJPAProjectWizardPage( final String helpContextId ) { - super(SELECT_PROJECT_PAGE_NAME); - } - - @Override - protected void handleJpaProjectSelection() { - if (projTable.getSelectionIndex() != -1) { - TableItem item = projTable.getItem(projTable.getSelectionIndex()); - String projName = item.getText(0); - IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projName); - JpaProject jpaProject = (JpaProject)project.getAdapter(JpaProject.class); - ((JpaJavaGlobalMetadataConversionWizard)getWizard()).setJpaProject(jpaProject); - validate(); - } - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/SelectJpaOrmMappingFileDialog.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/SelectMappingFileDialog.java index eab16c4331..5e27540411 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/SelectJpaOrmMappingFileDialog.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/SelectMappingFileDialog.java @@ -9,7 +9,6 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.ui.internal.wizards; -import java.io.File; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; @@ -37,15 +36,23 @@ import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Tree; import org.eclipse.ui.dialogs.ElementTreeSelectionDialog; +import org.eclipse.ui.model.WorkbenchContentProvider; +import org.eclipse.ui.model.WorkbenchLabelProvider; -public class SelectJpaOrmMappingFileDialog extends ElementTreeSelectionDialog +public class SelectMappingFileDialog + extends ElementTreeSelectionDialog { protected final IProject project; protected Label messageLabel; protected Tree treeWidget; - public SelectJpaOrmMappingFileDialog(Shell parent, IProject project, ILabelProvider labelProvider, ITreeContentProvider contentProvider) { + + public SelectMappingFileDialog(Shell parent, IProject project) { + this(parent, project, new WorkbenchLabelProvider(), new WorkbenchContentProvider()); + } + + public SelectMappingFileDialog(Shell parent, IProject project, ILabelProvider labelProvider, ITreeContentProvider contentProvider) { super(parent, labelProvider, contentProvider); setAllowMultiple(false); this.project = project; @@ -55,10 +62,10 @@ public class SelectJpaOrmMappingFileDialog extends ElementTreeSelectionDialog protected Control createDialogArea(Composite parent) { Composite composite = (Composite) super.createDialogArea(parent); Button newButton = new Button(composite, SWT.PUSH); - newButton.setText(JptUiMessages.SelectJpaOrmMappingFileDialog_newButton); + newButton.setText(JptUiMessages.SelectMappingFileDialog_newButton); GridData browseButtonData = new GridData(GridData.HORIZONTAL_ALIGN_END); newButton.setLayoutData(browseButtonData); - newButton.setToolTipText(JptUiMessages.SelectJpaOrmMappingFileDialog_newBtnToolTip); + newButton.setToolTipText(JptUiMessages.SelectMappingFileDialog_newButtonToolTip); newButton.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { openNewMappingFileWizard(); @@ -84,10 +91,6 @@ public class SelectJpaOrmMappingFileDialog extends ElementTreeSelectionDialog return treeViewer; } - /** - * @param project - * @return the runtime path of the chosen element - */ public String getChosenName() { IPath resourcePath = null; Object element = getFirstResult(); @@ -96,8 +99,7 @@ public class SelectJpaOrmMappingFileDialog extends ElementTreeSelectionDialog } else { resourcePath = ((IFile) element).getFullPath(); } - String runtimePath = this.getProjectResourceLocator().getRuntimePath(resourcePath).toOSString(); - return runtimePath.replace(File.separatorChar, '/'); + return this.getProjectResourceLocator().getRuntimePath(resourcePath).toString(); } @Override @@ -109,15 +111,15 @@ public class SelectJpaOrmMappingFileDialog extends ElementTreeSelectionDialog TreeSelection selection = (TreeSelection)getTreeViewer().getSelection(); IResource selectedResource = (IResource) selection.getFirstElement(); if (selectedResource instanceof IFile) { - updateStatus(new Status(IStatus.OK, JptJpaUiPlugin.PLUGIN_ID, "")); + updateStatus(new Status(IStatus.OK, JptJpaUiPlugin.PLUGIN_ID, "")); //$NON-NLS-1$ } else { - updateStatus(new Status(IStatus.ERROR, JptJpaUiPlugin.PLUGIN_ID, "")); + updateStatus(new Status(IStatus.ERROR, JptJpaUiPlugin.PLUGIN_ID, "")); //$NON-NLS-1$ } } protected void openNewMappingFileWizard() { - IPath path = EmbeddedMappingFileWizard.createNewMappingFile(new StructuredSelection(this.project), null); + IPath path = EmbeddedMappingFileWizard.createNewMappingFile(new StructuredSelection(this.project)); updateDialog(path); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJavaGeneratorConversionWizardPage.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJavaGeneratorConversionWizardPage.java new file mode 100644 index 0000000000..3b549a5022 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJavaGeneratorConversionWizardPage.java @@ -0,0 +1,48 @@ +/******************************************************************************* + * Copyright (c) 2011, 2012 Oracle. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0, which accompanies this distribution + * and is available at http://www.eclipse.org/legal/epl-v10.html. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.jpa.ui.internal.wizards.conversion.java; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jpt.jpa.core.JpaProject; +import org.eclipse.jpt.jpa.core.context.orm.EntityMappings; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; + +public class GenericJavaGeneratorConversionWizardPage + extends GenericJavaMetadataConversionWizardPage +{ + public GenericJavaGeneratorConversionWizardPage(JpaProject jpaProject) { + super(jpaProject, JptUiMessages.JavaGeneratorConversionWizardPage_title, JptUiMessages.JavaGeneratorConversionWizardPage_description); + } + + @Override + protected boolean hasConvertibleJavaMetadata_() { + return this.persistenceUnit.hasConvertibleJavaGenerators(); + } + + @Override + protected String getMissingJavaMetadataWarningMessage() { + return JptUiMessages.JavaMetadataConversion_noGeneratorsToConvert; + } + + @Override + protected ConversionCommand.Strategy getConversionCommandStrategy() { + return CONVERSION_COMMAND_STRATEGY; + } + + public static final ConversionCommandStrategy CONVERSION_COMMAND_STRATEGY = new ConversionCommandStrategy(); + + protected static class ConversionCommandStrategy + implements ConversionCommand.Strategy + { + public void execute(EntityMappings entityMappings, IProgressMonitor monitor) { + entityMappings.getPersistenceUnit().convertJavaGenerators(entityMappings, monitor); + } + } +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJavaMetadataConversionWizardPage.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJavaMetadataConversionWizardPage.java new file mode 100644 index 0000000000..cb5c6c253f --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJavaMetadataConversionWizardPage.java @@ -0,0 +1,46 @@ +/******************************************************************************* + * Copyright (c) 2011, 2012 Oracle. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0, which accompanies this distribution + * and is available at http://www.eclipse.org/legal/epl-v10.html. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.jpa.ui.internal.wizards.conversion.java; + +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.content.IContentType; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jpt.jpa.core.JpaProject; +import org.eclipse.jpt.jpa.core.JptJpaCorePlugin; +import org.eclipse.jpt.jpa.ui.internal.wizards.SelectMappingFileDialog; +import org.eclipse.jpt.jpa.ui.internal.wizards.orm.EmbeddedMappingFileWizard; + +public abstract class GenericJavaMetadataConversionWizardPage + extends JavaMetadataConversionWizardPage +{ + public GenericJavaMetadataConversionWizardPage(JpaProject jpaProject, String title, String description) { + super(jpaProject, title, description); + } + + @Override + protected IPath getDefaultMappingFileRuntimPath() { + return JptJpaCorePlugin.DEFAULT_ORM_XML_RUNTIME_PATH; + } + + @Override + protected IContentType getMappingFileContentType() { + return JptJpaCorePlugin.ORM_XML_CONTENT_TYPE; + } + + @Override + protected IPath openNewMappingFileWizard() { + return EmbeddedMappingFileWizard.createNewMappingFile(new StructuredSelection(this.jpaProject.getProject())); + } + + @Override + protected SelectMappingFileDialog buildSelectMappingFileDialog(){ + return new SelectMappingFileDialog(this.getShell(), this.jpaProject.getProject()); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJavaQueryConversionWizardPage.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJavaQueryConversionWizardPage.java new file mode 100644 index 0000000000..5e9412a13f --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJavaQueryConversionWizardPage.java @@ -0,0 +1,48 @@ +/******************************************************************************* + * Copyright (c) 2011, 2012 Oracle. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0, which accompanies this distribution + * and is available at http://www.eclipse.org/legal/epl-v10.html. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.jpa.ui.internal.wizards.conversion.java; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jpt.jpa.core.JpaProject; +import org.eclipse.jpt.jpa.core.context.orm.EntityMappings; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; + +public class GenericJavaQueryConversionWizardPage + extends GenericJavaMetadataConversionWizardPage +{ + public GenericJavaQueryConversionWizardPage(JpaProject jpaProject) { + super(jpaProject, JptUiMessages.JavaQueryConversionWizardPage_title, JptUiMessages.JavaQueryConversionWizardPage_description); + } + + @Override + protected boolean hasConvertibleJavaMetadata_() { + return this.persistenceUnit.hasConvertibleJavaQueries(); + } + + @Override + protected String getMissingJavaMetadataWarningMessage() { + return JptUiMessages.JavaMetadataConversion_noQueriesToConvert; + } + + @Override + protected ConversionCommand.Strategy getConversionCommandStrategy() { + return CONVERSION_COMMAND_STRATEGY; + } + + public static final ConversionCommandStrategy CONVERSION_COMMAND_STRATEGY = new ConversionCommandStrategy(); + + protected static class ConversionCommandStrategy + implements ConversionCommand.Strategy + { + public void execute(EntityMappings entityMappings, IProgressMonitor monitor) { + entityMappings.getPersistenceUnit().convertJavaQueries(entityMappings, monitor); + } + } +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJpaJavaGeneratorMetadataConversionWizard.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJpaJavaGeneratorMetadataConversionWizard.java deleted file mode 100644 index 604d27fb56..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJpaJavaGeneratorMetadataConversionWizard.java +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2012 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.wizards.conversion.java; - -import java.lang.reflect.InvocationTargetException; -import org.eclipse.jpt.jpa.core.JpaProject; - -public class GenericJpaJavaGeneratorMetadataConversionWizard extends - GenericJpaJavaGlobalMetadataConversionWizard { - - public GenericJpaJavaGeneratorMetadataConversionWizard(JpaProject jpaProject) { - super(jpaProject); - } - - @Override - protected GenericJpaJavaGeneratorMetadataConversionWizardPage buildJpaMetadataConversionWizardPage() { - return new GenericJpaJavaGeneratorMetadataConversionWizardPage( - this.getPersistenceUnit(), this.mappingXmlModel, HELP_CONTEXT_ID); - } - - @Override - public boolean performFinish() { - try { - ((GenericJpaJavaGeneratorMetadataConversionWizardPage) - super.jpaMetadataConversionWizardPage).performFinish(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } - return true; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJpaJavaGeneratorMetadataConversionWizardPage.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJpaJavaGeneratorMetadataConversionWizardPage.java deleted file mode 100644 index ffc18f69b3..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJpaJavaGeneratorMetadataConversionWizardPage.java +++ /dev/null @@ -1,50 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2012 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.wizards.conversion.java; - -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; -import org.eclipse.jpt.jpa.core.context.orm.EntityMappings; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; - -public class GenericJpaJavaGeneratorMetadataConversionWizardPage extends - GenericJpaJavaGlobalMetadataConversionWizardPage { - - public GenericJpaJavaGeneratorMetadataConversionWizardPage( - PersistenceUnit persistenceUnit, SimplePropertyValueModel<String> model, String helpContextId) { - super(persistenceUnit, model, helpContextId); - } - - @Override - protected String getWizardPageTitle() { - return JptUiMessages.JpaJavaGeneratorMetadataConversionWizardPage_title; - } - - @Override - protected String getWizardPageDescription() { - return JptUiMessages.JpaJavaGeneratorMetadataConversionWizardPage_description; - } - - @Override - protected void executeConversion(EntityMappings entityMappings, IProgressMonitor monitor){ - persistenceUnit.convertJavaGenerators(entityMappings, monitor); - } - - @Override - protected boolean hasConvertibleJavaGlobalMetadata() { - return persistenceUnit.hasConvertibleJavaGenerators(); - } - - @Override - protected String getWarningMessageForNonExistentGlobals() { - return JptUiMessages.JpaGlobalMetadataConversion_noGeneratorMetadataToConvert; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJpaJavaGlobalMetadataConversionWizard.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJpaJavaGlobalMetadataConversionWizard.java deleted file mode 100644 index a7bdfa77a0..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJpaJavaGlobalMetadataConversionWizard.java +++ /dev/null @@ -1,42 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2012 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.wizards.conversion.java; - -import org.eclipse.core.resources.IFile; -import org.eclipse.jpt.jpa.core.JpaProject; -import org.eclipse.jpt.jpa.core.JptJpaCorePlugin; -import org.eclipse.jpt.jpa.core.context.MappingFile; -import org.eclipse.jpt.jpa.core.context.persistence.MappingFileRef; - -public abstract class GenericJpaJavaGlobalMetadataConversionWizard extends - JpaJavaGlobalMetadataConversionWizard { - - public GenericJpaJavaGlobalMetadataConversionWizard(JpaProject jpaProject) { - super(jpaProject); - } - - @Override - protected String getDefaultMappingFileRuntimPath() { - return JptJpaCorePlugin.DEFAULT_ORM_XML_RUNTIME_PATH.toString(); - } - - @Override - protected MappingFile getFirstAvaliableMappingFile() { - for (MappingFileRef ref : getPersistenceUnit().getMappingFileRefs()) { - MappingFile mappingFile = ref.getMappingFile(); - if (mappingFile != null) { - IFile file = ref.getMappingFile().getXmlResource().getFile(); - if (jpaProject.getJpaFile(file).getContentType().isKindOf(JptJpaCorePlugin.MAPPING_FILE_CONTENT_TYPE)) - return ref.getMappingFile(); - } - } - return null; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJpaJavaGlobalMetadataConversionWizardPage.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJpaJavaGlobalMetadataConversionWizardPage.java deleted file mode 100644 index 0ab7ec3497..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJpaJavaGlobalMetadataConversionWizardPage.java +++ /dev/null @@ -1,56 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2012 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.wizards.conversion.java; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.IPath; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.jface.viewers.ITreeContentProvider; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.viewers.ViewerFilter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; -import org.eclipse.jpt.jpa.core.JptJpaCorePlugin; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.ui.internal.jface.XmlMappingFileViewerFilter; -import org.eclipse.jpt.jpa.ui.internal.wizards.SelectJpaOrmMappingFileDialog; -import org.eclipse.jpt.jpa.ui.internal.wizards.orm.EmbeddedMappingFileWizard; -import org.eclipse.swt.widgets.Shell; - -public abstract class GenericJpaJavaGlobalMetadataConversionWizardPage extends - JpaJavaGlobalMetadataConversionWizardPage<PersistenceUnit> { - - public GenericJpaJavaGlobalMetadataConversionWizardPage( - PersistenceUnit persistenceUnit, SimplePropertyValueModel<String> model, String helpContextId) { - super(persistenceUnit, model, helpContextId); - } - - @Override - protected ViewerFilter buildSelectMappingFileDialogViewerFilter() { - return new XmlMappingFileViewerFilter(this.getJpaProject(), JptJpaCorePlugin.MAPPING_FILE_CONTENT_TYPE); - } - - @Override - protected SelectJpaOrmMappingFileDialog buildSelectMappingFileDialog - (Shell shell, IProject project, ILabelProvider lp, ITreeContentProvider cp){ - return new SelectJpaOrmMappingFileDialog(shell, project, lp, cp); - } - - @Override - protected IPath getMappingFilePath(){ - return EmbeddedMappingFileWizard.createNewMappingFile( - new StructuredSelection(this.getJpaProject().getProject()), - getOrmXmlResourceName()); - } - - @Override - protected String getDefaultMappingFileRuntimPath() { - return JptJpaCorePlugin.DEFAULT_ORM_XML_RUNTIME_PATH.toString(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJpaJavaQueryMetadataConversionWizard.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJpaJavaQueryMetadataConversionWizard.java deleted file mode 100644 index 45590b5b0f..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJpaJavaQueryMetadataConversionWizard.java +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2012 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.wizards.conversion.java; - -import java.lang.reflect.InvocationTargetException; -import org.eclipse.jpt.jpa.core.JpaProject; - -public class GenericJpaJavaQueryMetadataConversionWizard extends GenericJpaJavaGlobalMetadataConversionWizard { - - public GenericJpaJavaQueryMetadataConversionWizard(JpaProject jpaProject) { - super(jpaProject); - } - - @Override - protected GenericJpaJavaQueryMetadataConversionWizardPage buildJpaMetadataConversionWizardPage() { - return new GenericJpaJavaQueryMetadataConversionWizardPage( - this.getPersistenceUnit(), this.mappingXmlModel, HELP_CONTEXT_ID); - } - - @Override - public boolean performFinish() { - try { - ((GenericJpaJavaQueryMetadataConversionWizardPage) - super.jpaMetadataConversionWizardPage).performFinish(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } - return true; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJpaJavaQueryMetadataConversionWizardPage.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJpaJavaQueryMetadataConversionWizardPage.java deleted file mode 100644 index dafcd851bd..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/GenericJpaJavaQueryMetadataConversionWizardPage.java +++ /dev/null @@ -1,51 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2012 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.wizards.conversion.java; - -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; -import org.eclipse.jpt.jpa.core.context.orm.EntityMappings; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; - -public class GenericJpaJavaQueryMetadataConversionWizardPage extends - GenericJpaJavaGlobalMetadataConversionWizardPage { - - public GenericJpaJavaQueryMetadataConversionWizardPage( - PersistenceUnit persistenceUnit, SimplePropertyValueModel<String> model, String helpContextId) { - super(persistenceUnit, model, helpContextId); - } - - - @Override - protected String getWizardPageTitle() { - return JptUiMessages.JpaJavaQueryMetadataConversionWizardPage_title; - } - - @Override - protected String getWizardPageDescription() { - return JptUiMessages.JpaJavaQueryMetadataConversionWizardPage_description; - } - - @Override - protected void executeConversion(EntityMappings entityMappings, IProgressMonitor monitor) { - persistenceUnit.convertJavaQueries(entityMappings, monitor); - } - - @Override - protected boolean hasConvertibleJavaGlobalMetadata() { - return persistenceUnit.hasConvertibleJavaQueries(); - } - - @Override - protected String getWarningMessageForNonExistentGlobals() { - return JptUiMessages.JpaGlobalMetadataConversion_noQueryMetadataToConvert; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/JavaMetadataConversionWizard.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/JavaMetadataConversionWizard.java new file mode 100644 index 0000000000..fa2d215d37 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/JavaMetadataConversionWizard.java @@ -0,0 +1,41 @@ +/******************************************************************************* + * Copyright (c) 2011, 2012 Oracle. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0, which accompanies this distribution + * and is available at http://www.eclipse.org/legal/epl-v10.html. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.jpa.ui.internal.wizards.conversion.java; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jpt.jpa.ui.JptJpaUiPlugin; +import org.eclipse.jpt.jpa.ui.internal.JptUiIcons; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; + +public class JavaMetadataConversionWizard + extends Wizard +{ + private final JavaMetadataConversionWizardPage page; + + + public JavaMetadataConversionWizard(JavaMetadataConversionWizardPage page) { + super(); + if (page == null) { + throw new NullPointerException(); + } + this.page = page; + this.setWindowTitle(JptUiMessages.JavaMetadataConversionWizard_title); + this.setDefaultPageImageDescriptor(JptJpaUiPlugin.getImageDescriptor(JptUiIcons.JPA_FILE_WIZ_BANNER)); + } + + @Override + public void addPages() { + this.addPage(this.page); + } + + @Override + public boolean performFinish() { + return this.page.performFinish(); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/JavaMetadataConversionWizardPage.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/JavaMetadataConversionWizardPage.java new file mode 100644 index 0000000000..159ee0d120 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/JavaMetadataConversionWizardPage.java @@ -0,0 +1,625 @@ +/******************************************************************************* + * Copyright (c) 2011, 2012 Oracle. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0, which accompanies this distribution + * and is available at http://www.eclipse.org/legal/epl-v10.html. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.jpa.ui.internal.wizards.conversion.java; + +import java.lang.reflect.InvocationTargetException; +import java.util.Iterator; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IWorkspace; +import org.eclipse.core.resources.IWorkspaceRunnable; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.OperationCanceledException; +import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.content.IContentType; +import org.eclipse.core.runtime.jobs.ISchedulingRule; +import org.eclipse.jface.dialogs.IMessageProvider; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.jface.viewers.ViewerFilter; +import org.eclipse.jface.window.Window; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.jpt.common.core.internal.utility.WorkspaceRunnableAdapter; +import org.eclipse.jpt.common.core.resource.ProjectResourceLocator; +import org.eclipse.jpt.common.ui.internal.util.SWTUtil; +import org.eclipse.jpt.common.ui.internal.utility.SynchronousUiCommandExecutor; +import org.eclipse.jpt.common.ui.internal.utility.swt.SWTTools; +import org.eclipse.jpt.common.utility.command.Command; +import org.eclipse.jpt.common.utility.internal.StringTools; +import org.eclipse.jpt.common.utility.internal.Tools; +import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; +import org.eclipse.jpt.common.utility.model.event.PropertyChangeEvent; +import org.eclipse.jpt.common.utility.model.listener.PropertyChangeAdapter; +import org.eclipse.jpt.common.utility.model.listener.PropertyChangeListener; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.core.JpaProject; +import org.eclipse.jpt.jpa.core.JpaProjectManager; +import org.eclipse.jpt.jpa.core.JpaStructureNode; +import org.eclipse.jpt.jpa.core.JptJpaCorePlugin; +import org.eclipse.jpt.jpa.core.context.MappingFile; +import org.eclipse.jpt.jpa.core.context.orm.EntityMappings; +import org.eclipse.jpt.jpa.core.context.persistence.MappingFileRef; +import org.eclipse.jpt.jpa.core.context.persistence.Persistence; +import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; +import org.eclipse.jpt.jpa.core.context.persistence.PersistenceXml; +import org.eclipse.jpt.jpa.core.resource.xml.JpaXmlResource; +import org.eclipse.jpt.jpa.ui.JptJpaUiPlugin; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.jface.XmlMappingFileViewerFilter; +import org.eclipse.jpt.jpa.ui.internal.wizards.SelectMappingFileDialog; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.graphics.Font; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Link; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.ide.IDE; + +public abstract class JavaMetadataConversionWizardPage + extends WizardPage +{ + /** + * The JPA project can<em>not</em> be <code>null</code>. + */ + protected final JpaProject jpaProject; + + /** + * The persistence unit can be <code>null</code>. + */ + protected final PersistenceUnit persistenceUnit; + protected final boolean noConvertibleJavaMetadata; + + private final SimplePropertyValueModel<String> mappingFileNameModel = new SimplePropertyValueModel<String>(); + + private static final String PAGE_NAME = "JavaMetadataConversion"; //$NON-NLS-1$ + public static final String HELP_CONTEXT_ID = JptJpaUiPlugin.PLUGIN_ID_ + PAGE_NAME; + + + protected JavaMetadataConversionWizardPage(JpaProject jpaProject, String title, String description) { + super(PAGE_NAME); + if (jpaProject == null) { + throw new NullPointerException(); + } + this.jpaProject = jpaProject; + this.persistenceUnit = this.buildPersistenceUnit(); + this.mappingFileNameModel.setValue(this.buildDefaultMappingFileName()); + this.setTitle(title); + this.setDescription(description); + this.noConvertibleJavaMetadata = this.hasNoConvertibleJavaMetadata(); + } + + /** + * Return the JPA project's <em>first</em> persistence unit. + */ + protected PersistenceUnit buildPersistenceUnit() { + PersistenceXml persistenceXml = this.jpaProject.getRootContextNode().getPersistenceXml(); + if (persistenceXml == null) { + return null; + } + Persistence persistence = persistenceXml.getPersistence(); + if (persistence == null) { + return null; + } + Iterator<PersistenceUnit> stream = persistence.getPersistenceUnits().iterator(); + return stream.hasNext() ? stream.next() : null; + } + + protected String buildDefaultMappingFileName() { + IPath path = this.buildDefaultMappingFilePath(); + return (path == null) ? null : path.toString(); + } + + protected IPath buildDefaultMappingFilePath() { + IPath path = this.getFirstMappingFilePath(); + return (path == null) ? this.getDefaultMappingFileRuntimPath() : this.convertToRuntimPath(path); + } + + protected abstract IPath getDefaultMappingFileRuntimPath(); + + /** + * Return the JPA project's <em>first</em> mapping file with the + * {@link #getMappingFileContentType() default content type}. + */ + protected IPath getFirstMappingFilePath() { + if (this.persistenceUnit == null) { + return null; + } + for (MappingFileRef ref : this.persistenceUnit.getMappingFileRefs()) { + MappingFile mappingFile = ref.getMappingFile(); + if (mappingFile != null) { + IFile file = mappingFile.getXmlResource().getFile(); + if (this.jpaProject.getJpaFile(file).getContentType().isKindOf(this.getMappingFileContentType())) { + return file.getFullPath(); + } + } + } + return null; + } + + protected IContentType getMappingFileContentType() { + return JptJpaCorePlugin.MAPPING_FILE_CONTENT_TYPE; + } + + protected IPath convertToRuntimPath(IPath path) { + ProjectResourceLocator locator = (ProjectResourceLocator) this.jpaProject.getProject().getAdapter(ProjectResourceLocator.class); + return locator.getRuntimePath(path); + } + + + // ********** missing metadata warning message ********** + + protected final boolean hasNoConvertibleJavaMetadata() { + return ! this.hasConvertibleJavaMetadata(); + } + + protected final boolean hasConvertibleJavaMetadata() { + return (this.persistenceUnit != null) && this.hasConvertibleJavaMetadata_(); + } + + /** + * Pre-condition: the {@link #persistenceUnit persistence unit} + * is not <code>null</code>. + */ + protected abstract boolean hasConvertibleJavaMetadata_(); + + protected abstract String getMissingJavaMetadataWarningMessage(); + + + // ********** UI control ********** + + public void createControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NULL); + composite.setLayout(new GridLayout()); + + Label pageLabel = new Label(composite, SWT.NONE); + pageLabel.setText(JptUiMessages.JavaMetadataConversionWizardPage_label); + pageLabel.setBounds(3, 230, 150, 12); + + Control mappingFileControl = this.createMappingFileControl(composite); + GridData data = new GridData(GridData.FILL_HORIZONTAL); + data.heightHint = 58; + data.grabExcessHorizontalSpace = true; + mappingFileControl.setLayoutData(data); + + Text noteTextField = new Text(composite, SWT.READ_ONLY | SWT.MULTI); + noteTextField.setText(NLS.bind(JptUiMessages.JavaMetadataConversion_warning, StringTools.CR)); + noteTextField.setFont(new Font(composite.getDisplay(), "Arial", 10, SWT.EMBEDDED)); //$NON-NLS-1$ + noteTextField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true, 1, 1)); + + this.setControl(composite); + + // no need to remove this listener, since we build the model ourselves + this.mappingFileNameModel.addPropertyChangeListener(PropertyValueModel.VALUE, this.buildMappingFileNameListener()); + this.setPageComplete(this.getOrmXmlResource() != null); + } + + protected Control createMappingFileControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NULL); + composite.setLayout(new GridLayout(3, false)); + + Link link = new Link(composite, SWT.LEFT); + link.setText(JptUiMessages.JavaMetadataConversionWizardPage_newMappingFileLink); + link.setToolTipText(JptUiMessages.JavaMetadataConversionWizardPage_newMappingFileLinkToolTip); + link.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING)); + link.addSelectionListener(this.buildMappingFileLinkListener()); + + Text nameTextField = new Text(composite, SWT.SEARCH | SWT.SINGLE); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.grabExcessVerticalSpace = true; + gridData.widthHint = 486; + gridData.heightHint = 14; + gridData.horizontalSpan = 1; + gridData.grabExcessHorizontalSpace = true; + nameTextField.setLayoutData(gridData); + SWTTools.bind(this.mappingFileNameModel, nameTextField); + + Button browseButton = new Button(composite, SWT.CENTER); + browseButton.setToolTipText(JptUiMessages.JavaMetadataConversionWizardPage_mappingFileBrowseButtonToolTip); + browseButton.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1)); + browseButton.setText(JptUiMessages.JavaMetadataConversionWizardPage_mappingFileBrowseButton); + browseButton.addSelectionListener(this.buildMappingFileBrowseButtonListener()); + + return composite; + } + + + // ********** mapping file name listener ********** + + protected PropertyChangeListener buildMappingFileNameListener() { + return new MappingFileNameListener(); + } + + protected class MappingFileNameListener + extends PropertyChangeAdapter + { + @Override + public void propertyChanged(PropertyChangeEvent event) { + JavaMetadataConversionWizardPage.this.validate(); + } + } + + protected void validate() { + String errorMessage = this.buildErrorMessage(); + this.setErrorMessage(errorMessage); + this.setPageComplete(errorMessage == null); + } + + protected String buildErrorMessage() { + JpaXmlResource ormXmlResource = this.getOrmXmlResource(); + if (ormXmlResource == null) { + return JptUiMessages.JavaMetadataConversion_mappingFileDoesNotExist; + } + String mappingFileVersion = ormXmlResource.getVersion(); + String jpaProjectVersion = this.getJpaProjectVersion(); + if (Tools.valuesAreDifferent(mappingFileVersion, jpaProjectVersion)) { + return NLS.bind(JptUiMessages.JavaMetadataConversion_mappingFileVersionIsInvalid, mappingFileVersion, jpaProjectVersion); + } + if (this.getEntityMappings(ormXmlResource) == null) { + return JptUiMessages.JavaMetadataConversion_mappingFileNotListedInPersistenceXml; + } + if (this.noConvertibleJavaMetadata) { + this.setMessage(this.getMissingJavaMetadataWarningMessage(), IMessageProvider.WARNING); + } + return null; + } + + protected EntityMappings getEntityMappings() { + return this.getEntityMappings(this.getOrmXmlResource()); + } + + protected EntityMappings getEntityMappings(JpaXmlResource ormXmlResource) { + return (ormXmlResource == null) ? null : this.getEntityMappings_(ormXmlResource); + } + + /** + * Pre-condition: the specified <code>orm.xml</code> resource is + * not <code>null</code>. + */ + protected EntityMappings getEntityMappings_(JpaXmlResource ormXmlResource) { + Iterator<JpaStructureNode> nodes = this.jpaProject.getJpaFile(ormXmlResource.getFile()).getRootStructureNodes().iterator(); + return nodes.hasNext() ? (EntityMappings) nodes.next() : null; + } + + protected JpaXmlResource getOrmXmlResource() { + IPath mappingFilePath = this.getMappingFilePath(); + return (mappingFilePath == null) ? null : this.jpaProject.getMappingFileXmlResource(mappingFilePath); + } + + protected IPath getMappingFilePath() { + String mappingFileName = this.getMappingFileName(); + return StringTools.stringIsEmpty(mappingFileName) ? null : new Path(mappingFileName); + } + + protected String getMappingFileName() { + String mappingFileName = this.mappingFileNameModel.getValue(); + return StringTools.stringIsEmpty(mappingFileName) ? null : mappingFileName; + } + + protected String getJpaProjectVersion(){ + return this.jpaProject.getJpaPlatform().getJpaVersion().getVersion(); + } + + + // ********** mapping file link listener ********** + + protected SelectionListener buildMappingFileLinkListener() { + return new MappingFileLinkListener(); + } + + protected class MappingFileLinkListener + extends SelectionAdapter + { + @Override + public void widgetSelected(SelectionEvent event) { + JavaMetadataConversionWizardPage.this.mappingFileLinkPressed(); + } + } + + protected void mappingFileLinkPressed() { + IPath path = this.openNewMappingFileWizard(); + if (path != null) { + this.mappingFileNameModel.setValue(path.toString()); + // revalidate because the mapping file may have been created + this.validate(); + } + } + + protected abstract IPath openNewMappingFileWizard(); + + + // ********** mapping file browse button listener ********** + + protected SelectionListener buildMappingFileBrowseButtonListener() { + return new MappingFileBrowseButtonListener(); + } + + protected class MappingFileBrowseButtonListener + extends SelectionAdapter + { + @Override + public void widgetSelected(SelectionEvent event) { + JavaMetadataConversionWizardPage.this.mappingFileBrowseButtonPressed(); + } + } + + protected void mappingFileBrowseButtonPressed() { + IProject project = this.jpaProject.getProject(); + SelectMappingFileDialog dialog = this.buildSelectMappingFileDialog(); + dialog.setTitle(JptUiMessages.SelectMappingFileDialog_title); + dialog.setMessage(JptUiMessages.SelectMappingFileDialog_message); + dialog.addFilter(this.buildSelectMappingFileDialogViewerFilter()); + dialog.setInput(project); + + JpaXmlResource resource = this.getOrmXmlResource(); + IFile file = (resource == null) ? null : resource.getFile(); + if (file != null) { + dialog.setInitialSelection(file); + } + if (dialog.open() == Window.OK) { + this.mappingFileNameModel.setValue(dialog.getChosenName()); + // revalidate because the mapping file may have been created + this.validate(); + } + } + + protected abstract SelectMappingFileDialog buildSelectMappingFileDialog(); + + protected ViewerFilter buildSelectMappingFileDialogViewerFilter() { + return new XmlMappingFileViewerFilter(this.jpaProject, this.getMappingFileContentType()); + } + + + // ********** finish => conversion ********** + + protected boolean performFinish() { + return this.isOKToConvert() && this.performFinish_(); + } + + protected boolean isOKToConvert() { + return this.hasConvertibleJavaMetadata(); + } + + protected boolean performFinish_() { + // true=fork; true=cancellable + try { + this.buildProgressMonitorDialog().run(true, true, this.buildConversionRunnable()); + } catch (InvocationTargetException ex) { + JptJpaUiPlugin.log(ex); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); // runnable cancelled + } + return true; + } + + protected ProgressMonitorDialog buildProgressMonitorDialog() { + return new ProgressMonitorDialog(this.getShell()); + } + + protected IRunnableWithProgress buildConversionRunnable() { + return new ConversionRunnable(this.getConversionCommandStrategy(), this.getEntityMappings()); + } + + protected abstract ConversionCommand.Strategy getConversionCommandStrategy(); + + /** + * UI runnable + */ + protected static class ConversionRunnable + implements IRunnableWithProgress + { + protected final ConversionCommand.Strategy conversionCommandStrategy; + protected final EntityMappings entityMappings; + + protected ConversionRunnable(ConversionCommand.Strategy conversionCommandStrategy, EntityMappings entityMappings) { + super(); + if ((conversionCommandStrategy == null) || (entityMappings == null)) { + throw new NullPointerException(); + } + this.conversionCommandStrategy = conversionCommandStrategy; + this.entityMappings = entityMappings; + } + + public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { + IWorkspace ws = ResourcesPlugin.getWorkspace(); + ISchedulingRule rule = ws.getRuleFactory().modifyRule(ws.getRoot()); + try { + ws.run(this.buildWorkspaceRunnable(), rule, IWorkspace.AVOID_UPDATE, monitor); + } catch (CoreException ex) { + if (ex.getStatus().getSeverity() == IStatus.CANCEL) { + throw new InterruptedException(); // ??? + } + throw new InvocationTargetException(ex); + } + } + + protected void run_(IProgressMonitor monitor) { + Command conversionCommand = new ConversionCommand(this.conversionCommandStrategy, this.entityMappings, monitor); + try { + this.getJpaProjectManager().execute(conversionCommand, SynchronousUiCommandExecutor.instance()); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + throw new OperationCanceledException(); + } + } + + protected IWorkspaceRunnable buildWorkspaceRunnable() { + return new WorkspaceRunnable(); + } + + protected JpaProjectManager getJpaProjectManager() { + return (JpaProjectManager) this.getWorkspace().getAdapter(JpaProjectManager.class); + } + + protected IWorkspace getWorkspace() { + return this.entityMappings.getParent().getXmlResource().getFile().getWorkspace(); + } + + @Override + public String toString() { + return StringTools.buildToStringFor(this); + } + + /** + * Workspace runnable + */ + protected class WorkspaceRunnable + extends WorkspaceRunnableAdapter + { + @Override + public void run(IProgressMonitor monitor) throws CoreException { + ConversionRunnable.this.run_(monitor); + } + } + } + + + /** + * Conversion command. + * This is dispatched to the JPA project manager. + */ + protected static class ConversionCommand + implements Command + { + protected final Strategy strategy; + protected final EntityMappings entityMappings; + protected final IProgressMonitor monitor; + + protected ConversionCommand(Strategy strategy, EntityMappings entityMappings, IProgressMonitor monitor) { + super(); + if ((strategy == null) || (entityMappings == null) || (monitor == null)) { + throw new NullPointerException(); + } + this.strategy = strategy; + this.entityMappings = entityMappings; + this.monitor = monitor; + } + + public void execute() { + this.strategy.execute(this.entityMappings, this.monitor); + this.getOrmXmlResource().save(); + this.saveAllFiles(); + this.openEditorOnMappingFile(); + } + + protected JpaXmlResource getOrmXmlResource() { + return this.entityMappings.getParent().getXmlResource(); + } + + protected void saveAllFiles() { + SWTUtil.asyncExec(this.buildSaveAllFilesRunnable()); + } + + protected Runnable buildSaveAllFilesRunnable() { + return new SaveFilesRunnable(this.getProject()); + } + + protected IProject getProject() { + return this.entityMappings.getJpaProject().getProject(); + } + + protected void openEditorOnMappingFile() { + SWTUtil.asyncExec(this.buildOpenEditorOnMappingFileRunnable()); + } + + protected Runnable buildOpenEditorOnMappingFileRunnable() { + return new OpenEditorRunnable(this.getOrmXmlResource().getFile()); + } + + @Override + public String toString() { + return StringTools.buildToStringFor(this, this.entityMappings.getPersistenceUnit()); + } + + public interface Strategy { + void execute(EntityMappings entityMappings, IProgressMonitor monitor); + } + } + + + // ********** save files ********** + + protected static class SaveFilesRunnable + implements Runnable + { + protected final IResource[] resourceRoots; + + protected SaveFilesRunnable(IProject project) { + super(); + if (project == null) { + throw new NullPointerException(); + } + this.resourceRoots = new IResource[] { project }; + } + + public void run() { + IDE.saveAllEditors(this.resourceRoots, false); // false=no confirm + } + + @Override + public String toString() { + return StringTools.buildToStringFor(this, this.resourceRoots[0]); + } + } + + + // ********** open editor ********** + + protected static class OpenEditorRunnable + implements Runnable + { + protected final IFile file; + + protected OpenEditorRunnable(IFile file) { + super(); + if (file == null) { + throw new NullPointerException(); + } + this.file = file; + } + + public void run() { + IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); + try { + IDE.openEditor(page, this.file); + } catch (PartInitException ex) { + JptJpaUiPlugin.log(ex); + } + } + + @Override + public String toString() { + return StringTools.buildToStringFor(this, this.file); + } + } + + + // ********** misc ********** + + @Override + public final void performHelp() { + PlatformUI.getWorkbench().getHelpSystem().displayHelp(HELP_CONTEXT_ID); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/JpaJavaGlobalMetadataConversionWizard.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/JpaJavaGlobalMetadataConversionWizard.java deleted file mode 100644 index c15a78af1c..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/JpaJavaGlobalMetadataConversionWizard.java +++ /dev/null @@ -1,144 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2012 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.wizards.conversion.java; -import java.io.File; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.jface.resource.JFaceResources; -import org.eclipse.jface.resource.LocalResourceManager; -import org.eclipse.jface.resource.ResourceManager; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.wizard.IWizardPage; -import org.eclipse.jface.wizard.Wizard; -import org.eclipse.jpt.common.core.internal.resource.ResourceLocatorManager; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; -import org.eclipse.jpt.jpa.core.JpaProject; -import org.eclipse.jpt.jpa.core.context.MappingFile; -import org.eclipse.jpt.jpa.core.context.persistence.Persistence; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceXml; -import org.eclipse.jpt.jpa.core.resource.xml.JpaXmlResource; -import org.eclipse.jpt.jpa.ui.JptJpaUiPlugin; -import org.eclipse.jpt.jpa.ui.internal.JptUiIcons; -import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; -import org.eclipse.jpt.jpa.ui.internal.wizards.SelectJPAProjectWizardPage; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; - -public abstract class JpaJavaGlobalMetadataConversionWizard extends Wizard { - public static final String HELP_CONTEXT_ID = JptJpaUiPlugin.PLUGIN_ID + ".GLobalMetadataConversion"; //$NON-NLS-1$ - - protected JpaProject jpaProject; - protected final ResourceManager resourceManager; - protected SimplePropertyValueModel<String> mappingXmlModel; - protected IStructuredSelection selection; - - private SelectJPAProjectWizardPage selectJPAProjectWizardPage; - protected JpaJavaGlobalMetadataConversionWizardPage<?> jpaMetadataConversionWizardPage; - - public JpaJavaGlobalMetadataConversionWizard(JpaProject jpaProject) { - this.jpaProject = jpaProject; - this.resourceManager = new LocalResourceManager(JFaceResources.getResources()); - this.mappingXmlModel = new SimplePropertyValueModel<String>(); - this.setWindowTitle(JptUiMessages.JpaGlobalMetadataConversionWizard_title); - this.setDefaultPageImageDescriptor(JptJpaUiPlugin.getImageDescriptor(JptUiIcons.JPA_FILE_WIZ_BANNER)); - return; - } - - @Override - public void addPages() { - if( this.jpaProject == null ){ - this.selectJPAProjectWizardPage= new SelectJPAProjectWizardPage(HELP_CONTEXT_ID); - this.addPage(this.selectJPAProjectWizardPage); - return; - } - setMappingXml(); - addMainPages(); - } - - protected void addMainPages(){ - this.jpaMetadataConversionWizardPage = buildJpaMetadataConversionWizardPage(); - this.addPage(jpaMetadataConversionWizardPage); - } - - @Override - public boolean performFinish() { - return true; - } - - protected PersistenceUnit getPersistenceUnit() { - PersistenceXml persistenceXml = this.jpaProject.getRootContextNode().getPersistenceXml(); - if (persistenceXml != null) { - Persistence persistence = persistenceXml.getPersistence(); - if (persistence != null && persistence.getPersistenceUnitsSize() > 0) { - for (PersistenceUnit pu : persistence.getPersistenceUnits()) - return pu; // return the first persistence unit - } - } - return null; - } - - public void setJpaProject(JpaProject jpaProject) { - if (this.jpaProject == null) { - this.jpaProject = jpaProject; - IWizardPage currentPage = getContainer().getCurrentPage(); - if (this.selectJPAProjectWizardPage != null && currentPage.equals(this.selectJPAProjectWizardPage)) { - setMappingXml(); - buildJpaMetadataConversionWizardPage(); - } - } - } - - @Override - public void dispose() { - this.resourceManager.dispose(); - super.dispose(); - } - - protected void setMappingXml() { - if (getFirstAvaliableMappingFile() == null) { - this.mappingXmlModel.setValue(null); - } else - if (getDefaultOrmXmlResource() != null) { - this.mappingXmlModel.setValue(getDefaultMappingFileRuntimPath()); - } else { - this.mappingXmlModel.setValue(getMappingFileRuntimPath(getFirstAvaliableMappingFile())); - } - } - - protected String getMappingFileRuntimPath(MappingFile mappingFile) { - if (mappingFile != null) { - IPath resourcePath = mappingFile.getXmlResource().getFile().getFullPath(); - IProject project = jpaProject.getProject(); - @SuppressWarnings("restriction") - String runtimePath = ResourceLocatorManager.instance().getResourceLocator(project). - getRuntimePath(project, resourcePath).toOSString(); - return runtimePath.replace(File.separatorChar, '/'); - } - return null; - } - - protected JpaXmlResource getDefaultOrmXmlResource() { - return jpaProject.getMappingFileXmlResource(new Path(getDefaultMappingFileRuntimPath())); - } - - protected static Shell getCurrentShell() { - return Display.getCurrent().getActiveShell(); - } - - // ************ abstract methods *************** - - abstract protected JpaJavaGlobalMetadataConversionWizardPage<?> buildJpaMetadataConversionWizardPage(); - - abstract protected String getDefaultMappingFileRuntimPath(); - - abstract protected MappingFile getFirstAvaliableMappingFile(); -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/JpaJavaGlobalMetadataConversionWizardPage.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/JpaJavaGlobalMetadataConversionWizardPage.java deleted file mode 100644 index 7bdd2e66be..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/conversion/java/JpaJavaGlobalMetadataConversionWizardPage.java +++ /dev/null @@ -1,422 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2012 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.wizards.conversion.java; - -import java.io.File; -import java.lang.reflect.InvocationTargetException; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IWorkspace; -import org.eclipse.core.resources.IWorkspaceRunnable; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.jobs.ISchedulingRule; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.dialogs.ProgressMonitorDialog; -import org.eclipse.jface.operation.IRunnableWithProgress; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.jface.viewers.ITreeContentProvider; -import org.eclipse.jface.viewers.ViewerFilter; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.jpt.common.ui.internal.utility.SynchronousUiCommandExecutor; -import org.eclipse.jpt.common.ui.internal.utility.swt.SWTTools; -import org.eclipse.jpt.common.utility.command.Command; -import org.eclipse.jpt.common.utility.internal.StringTools; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; -import org.eclipse.jpt.common.utility.model.event.PropertyChangeEvent; -import org.eclipse.jpt.common.utility.model.listener.PropertyChangeListener; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.JpaProject; -import org.eclipse.jpt.jpa.core.JpaProjectManager; -import org.eclipse.jpt.jpa.core.context.orm.EntityMappings; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.core.internal.operations.OrmFileCreationDataModelProvider; -import org.eclipse.jpt.jpa.core.resource.xml.JpaXmlResource; -import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; -import org.eclipse.jpt.jpa.ui.internal.wizards.SelectJpaOrmMappingFileDialog; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Link; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.ide.IDE; -import org.eclipse.ui.model.WorkbenchContentProvider; -import org.eclipse.ui.model.WorkbenchLabelProvider; -import org.eclipse.wst.common.frameworks.datamodel.IDataModelProvider; - -public abstract class JpaJavaGlobalMetadataConversionWizardPage<P extends PersistenceUnit> -extends WizardPage { - - private static String METADATA_CONVERSION_PAGE_NAME = "MetadataConversion"; //$NON-NLS-1$ - protected final P persistenceUnit; - private final ModifiablePropertyValueModel<String> mappingFileModel; - - private final String helpContextId; - - public JpaJavaGlobalMetadataConversionWizardPage( - final P persistenceUnit, SimplePropertyValueModel<String> model, final String helpContextId) { - super(METADATA_CONVERSION_PAGE_NAME); - this.persistenceUnit = persistenceUnit; - this.mappingFileModel = model; - this.helpContextId = helpContextId; - setTitle(this.getWizardPageTitle()); - setDescription(this.getWizardPageDescription()); - } - - public void createControl(Composite parent) { - - Composite composite = new Composite(parent, SWT.NULL); - - GridLayout layout = new GridLayout(); - composite.setLayout(layout); - - Label WizardPageLbl = new Label(composite, SWT.NONE); - WizardPageLbl.setText(JptUiMessages.JpaGlobalMetadataConversionWizardPage_label); - WizardPageLbl.setBounds(3, 230, 150, 12); - - Composite mappingFileComposite = this.createMappingFileControl(composite); - GridData data = new GridData(GridData.FILL_HORIZONTAL); - data.heightHint = 58; - data.grabExcessHorizontalSpace = true; - mappingFileComposite.setLayoutData(data); - setControl(composite); - - String message = org.eclipse.osgi.util.NLS.bind( - JptUiMessages.JpaGlobalMetadataConversion_convertingJpaGlobalMetadataWarning, StringTools.CR); - Text noteText = new Text(composite, SWT.READ_ONLY | SWT.MULTI); - Font font = new Font(composite.getDisplay(), "Arial", 10, SWT.EMBEDDED); - noteText.setText(message); - noteText.setFont(font); - noteText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true, 1, 1)); - - setPageComplete(this.mappingFileModel.getValue() != null); - } - - private Composite createMappingFileControl(Composite parent) { - Composite composite = new Composite(parent, SWT.NULL); - int nColumns = 3; - GridLayout layout = new GridLayout(); - layout.numColumns = nColumns; - composite.setLayout(layout); - - final Link mappingFileLink = new Link(composite, SWT.LEFT); - mappingFileLink.setText(JptUiMessages.JpaGlobalMetadataConversionWizardPage_newMappingFileLink); - mappingFileLink.setToolTipText(JptUiMessages.JpaGlobalMetadataConversionWizardPage_newMappingFileLinkToolTip); - mappingFileLink.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING)); - mappingFileLink.addSelectionListener( - new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - openNewMappingFileWizard(); - } - }); - - Text mappingFileNameTextField = createMappingFileNameText(composite, 1); - SWTTools.bind(this.mappingFileModel, mappingFileNameTextField); - this.mappingFileModel.addPropertyChangeListener(PropertyValueModel.VALUE, new PropertyChangeListener() { - public void propertyChanged(PropertyChangeEvent event) { - validate(); - } - }); - - Button mappingFileBrowseBtn = new Button(composite, SWT.CENTER); - mappingFileBrowseBtn.setToolTipText(JptUiMessages.JpaGlobalMetadataConversionWizardPage_browseMappingFileBtnToolTip); - mappingFileBrowseBtn.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1)); - mappingFileBrowseBtn.setText(JptUiMessages.JpaGlobalMetadataConversionWizardPage_browseMappingFileBtn); - mappingFileBrowseBtn.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - mappingFileBrowseBtnPressed(); - } - }); - - return composite; - } - - private Text createMappingFileNameText(Composite parent, int span) { - Text text = new Text(parent, SWT.SEARCH | SWT.SINGLE); - text.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent e) { - } - }); - - GridData gridData = new GridData(GridData.FILL_HORIZONTAL); - gridData.grabExcessVerticalSpace = true; - gridData.widthHint = 486; - gridData.heightHint = 14; - gridData.horizontalSpan = span; - gridData.grabExcessHorizontalSpace = true; - - text.setLayoutData(gridData); - - return text; - } - - protected void mappingFileBrowseBtnPressed() { - IProject project = this.getJpaProject().getProject(); - ViewerFilter filter = this.buildSelectMappingFileDialogViewerFilter(); - ITreeContentProvider contentProvider = new WorkbenchContentProvider(); - ILabelProvider labelProvider = new WorkbenchLabelProvider(); - SelectJpaOrmMappingFileDialog dialog = buildSelectMappingFileDialog(getShell(), project, labelProvider, contentProvider); - dialog.setTitle(JptUiMessages.SelectJpaOrmMappingFileDialog_title); - dialog.setMessage(JptUiMessages.SelectJpaOrmMappingFileDialog_message); - dialog.addFilter(filter); - dialog.setInput(project); - - JpaXmlResource resource = this.getJpaProject().getMappingFileXmlResource(new Path(getMappingFileRuntimePath())); - IFile file = (resource == null) ? null : resource.getFile(); - if (file != null) { - dialog.setInitialSelection(file); - } - if (dialog.open() == org.eclipse.jface.window.Window.OK) { - this.mappingFileModel.setValue(dialog.getChosenName()); - } - } - - protected JpaProject getJpaProject() { - return this.persistenceUnit.getJpaProject(); - } - - protected void openNewMappingFileWizard() { - IPath path = getMappingFilePath(); - if (path != null) { - this.mappingFileModel.setValue(path.toString()); - } - } - - protected String getMappingFileRuntimePath() { - if (this.mappingFileModel.getValue() != null) { - return this.mappingFileModel.getValue(); - } - return getDefaultMappingFileRuntimPath(); - } - - protected String getDefaultOrmXmlResourceName() { - return new File(getDefaultMappingFileRuntimPath()).getName(); - } - - protected JpaXmlResource getDefaultOrmXmlResource() { - return getJpaProject().getMappingFileXmlResource(new Path(getDefaultMappingFileRuntimPath())); - } - - protected String getOrmXmlResourceName() { - return new File(getMappingFileRuntimePath()).getName(); - } - - protected JpaXmlResource getOrmXmlResource() { - return getJpaProject().getMappingFileXmlResource(new Path(getMappingFileRuntimePath())); - } - - @Override - public final void performHelp() { - PlatformUI.getWorkbench().getHelpSystem().displayHelp(this.helpContextId); - } - - public void performFinish() throws InvocationTargetException { - try { - // true=fork; true=cancellable - this.buildPerformFinishProgressMonitorDialog().run(true, true, this.buildPerformFinishRunableWithProgress()); - } - catch (InterruptedException ex) { - ex.printStackTrace(); - } - } - - protected ProgressMonitorDialog buildPerformFinishProgressMonitorDialog() { - return new ProgressMonitorDialog(getControl().getShell()); - } - - protected IRunnableWithProgress buildPerformFinishRunableWithProgress() { - return new IRunnableWithProgress() { - public void run( final IProgressMonitor monitor) throws InvocationTargetException { - IWorkspace ws = ResourcesPlugin.getWorkspace(); - ISchedulingRule rule = ws.getRuleFactory().modifyRule(ws.getRoot()); - try { - ws.run( - buildPerformFinishWorkspaceRunnable(), - rule, - IWorkspace.AVOID_UPDATE, - monitor); - } - catch (CoreException ex) { - throw new InvocationTargetException(ex); - } - } - }; - } - - private IWorkspaceRunnable buildPerformFinishWorkspaceRunnable() { - return new IWorkspaceRunnable() { - public void run(IProgressMonitor monitor) throws CoreException { - Command syncCommand = new SyncCommand(persistenceUnit, monitor); - try { - JpaJavaGlobalMetadataConversionWizardPage.this.getJpaProjectManager(). - execute(syncCommand, SynchronousUiCommandExecutor.instance()); - } catch (InterruptedException ex) { - throw new RuntimeException(ex); - } - } - }; - } - - private JpaProjectManager getJpaProjectManager() { - return (JpaProjectManager) this.getWorkspace().getAdapter(JpaProjectManager.class); - } - - private IWorkspace getWorkspace() { - return ResourcesPlugin.getWorkspace(); - } - - protected IDataModelProvider getDefaultProvider() { - return new OrmFileCreationDataModelProvider(); - } - - protected String getMappingFileVersion(){ - return getOrmXmlResource().getVersion(); - } - - protected String getJpaProjectVersion(){ - return getJpaProject().getJpaPlatform().getJpaVersion().getVersion(); - } - - protected void validate() { - String errorMessage = null; - JpaXmlResource ormXmlResource = getOrmXmlResource(); - if (ormXmlResource == null) { - errorMessage = JptUiMessages.JpaGlobalMetadataConversion_mappingFileDoesNotExist; - } else - if (!StringTools.stringsAreEqual(getMappingFileVersion(),getJpaProjectVersion())) { - errorMessage = JptUiMessages.JpaGlobalMetadataConversion_mappingFileHasInvalidVersion; - } - else - if (getJpaProject().getJpaFile(ormXmlResource.getFile()).getRootStructureNodesSize() == 0) { - errorMessage = JptUiMessages.JpaGlobalMetadataConversion_mappingFileNotListedInPersistenceXml; - } - if ( ! this.hasConvertibleJavaGlobalMetadata()) { - String message = getWarningMessageForNonExistentGlobals(); - setMessage(message, 2); - } - setErrorMessage(errorMessage); - setPageComplete(errorMessage == null); - } - - // ********* abstract methods ************* - - abstract protected String getWizardPageTitle(); - - abstract protected String getWizardPageDescription(); - - abstract protected ViewerFilter buildSelectMappingFileDialogViewerFilter(); - - abstract protected SelectJpaOrmMappingFileDialog buildSelectMappingFileDialog - (Shell shell, IProject project, ILabelProvider lp, ITreeContentProvider cp); - - abstract protected IPath getMappingFilePath(); - - abstract protected String getDefaultMappingFileRuntimPath(); - - abstract protected void executeConversion(EntityMappings entityMappings, IProgressMonitor monitor); - - abstract protected boolean hasConvertibleJavaGlobalMetadata(); - - abstract protected String getWarningMessageForNonExistentGlobals(); - - // ********** sync command ********** - - /** - * This is dispatched to the JPA project manager. - */ - class SyncCommand implements Command { - private final PersistenceUnit persistenceUnit; - private final IProgressMonitor monitor; - - SyncCommand(PersistenceUnit persistenceUnit, IProgressMonitor monitor) { - super(); - this.persistenceUnit = persistenceUnit; - this.monitor = monitor; - } - - public void execute() { - JpaXmlResource ormXmlResource = getOrmXmlResource(); - final EntityMappings entityMappings = getEntityMappings(); - execute(entityMappings).run(); - ormXmlResource.save(); - saveFiles(JpaJavaGlobalMetadataConversionWizardPage.this.getJpaProject()); - openEditor(); - } - - private Runnable execute(final EntityMappings entityMappings) { - return (new Runnable() { - public void run() { - executeConversion(entityMappings, monitor); - }}); - } - - @Override - public String toString() { - return StringTools.buildToStringFor(this, this.persistenceUnit); - } - } - - protected EntityMappings getEntityMappings() { - JpaXmlResource xmlResource = getOrmXmlResource(); - return (EntityMappings) getJpaProject().getJpaFile(xmlResource.getFile()).getRootStructureNodes().iterator().next(); - } - - protected void saveFiles(final JpaProject jpaProject) { - Display.getDefault().asyncExec(new Runnable() { - public void run() { - IDE.saveAllEditors(new IResource[]{jpaProject.getProject()}, false); - } - }); - } - - protected void openEditor() { - Display.getDefault().asyncExec(new Runnable() { - public void run() { - getConversionCompletedAction().run(); - } - }); - } - - protected Action getConversionCompletedAction() { - return new Action() { - @Override - public void run() { - JpaXmlResource resource = getJpaProject().getMappingFileXmlResource(new Path(getMappingFileRuntimePath())); - IFile file = resource.getFile(); - IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); - try { - IDE.openEditor(page, file, true); - } catch (PartInitException e) { - e.printStackTrace(); - } - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/entity/EntityClassWizardPage.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/entity/EntityClassWizardPage.java index e0a187b5dd..249a70c579 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/entity/EntityClassWizardPage.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/entity/EntityClassWizardPage.java @@ -35,7 +35,7 @@ import org.eclipse.jpt.jpa.core.JptJpaCorePlugin; import org.eclipse.jpt.jpa.core.resource.xml.JpaXmlResource; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.jpt.jpa.ui.internal.jface.XmlMappingFileViewerFilter; -import org.eclipse.jpt.jpa.ui.internal.wizards.SelectJpaOrmMappingFileDialog; +import org.eclipse.jpt.jpa.ui.internal.wizards.SelectMappingFileDialog; import org.eclipse.jpt.jpa.ui.internal.wizards.entity.data.model.IEntityDataModelProperties; import org.eclipse.jst.j2ee.internal.common.operations.INewJavaClassDataModelProperties; import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages; @@ -342,7 +342,7 @@ public class EntityClassWizardPage ViewerFilter filter = getDialogViewerFilter(jpaProject); ITreeContentProvider contentProvider = new WorkbenchContentProvider(); ILabelProvider labelProvider = new WorkbenchLabelProvider(); - SelectJpaOrmMappingFileDialog dialog = new SelectJpaOrmMappingFileDialog(getShell(), project, labelProvider, contentProvider); + SelectMappingFileDialog dialog = new SelectMappingFileDialog(getShell(), project, labelProvider, contentProvider); dialog.setTitle(EntityWizardMsg.MAPPING_XML_TITLE); dialog.setMessage(EntityWizardMsg.CHOOSE_MAPPING_XML_MESSAGE); dialog.addFilter(filter); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/orm/EmbeddedMappingFileWizard.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/orm/EmbeddedMappingFileWizard.java index 1c1072c284..2cddf4578c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/orm/EmbeddedMappingFileWizard.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/wizards/orm/EmbeddedMappingFileWizard.java @@ -16,19 +16,30 @@ import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory; import org.eclipse.wst.common.frameworks.datamodel.IDataModel; /** - * This wizard will create a new mapping file without open it afterwards. - * It is used within other wizards where opening mapping file is unnecessary, - * therefore, making the whole process more smooth. - * This wizard has one more attribute called <code> DEFAULT_XML_FILE_NAME </code> - * used when the given XML file name is null to avoid NullPointerException. + * This wizard will create a new mapping file without opening it afterwards. + * It can be used within other wizards where opening the mapping file is + * unnecessary, making the process smoother. */ +public class EmbeddedMappingFileWizard + extends MappingFileWizard +{ + public static IPath createNewMappingFile(IStructuredSelection selection) { + return createNewMappingFile(selection, null); + } + + public static IPath createNewMappingFile(IStructuredSelection selection, String xmlFileName) { + if (xmlFileName == null) { + xmlFileName = DEFAULT_XML_FILE_NAME; + } + EmbeddedMappingFileWizard wizard = new EmbeddedMappingFileWizard(DataModelFactory.createDataModel(new OrmFileCreationDataModelProvider())); + return MappingFileWizard.createMappingFile(selection, xmlFileName, wizard); + } + + private static final String DEFAULT_XML_FILE_NAME = "orm.xml"; //$NON-NLS-1$ -public class EmbeddedMappingFileWizard extends MappingFileWizard { - - - public static final String DEFAULT_XML_FILE_NAME = "orm.xml"; public EmbeddedMappingFileWizard() { + super(); } public EmbeddedMappingFileWizard(IDataModel dataModel) { @@ -39,10 +50,4 @@ public class EmbeddedMappingFileWizard extends MappingFileWizard { public final boolean performFinish() { return this.createMappingFile(); } - - public static IPath createNewMappingFile(IStructuredSelection selection, String xmlFileName) { - if (xmlFileName == null) {xmlFileName = DEFAULT_XML_FILE_NAME;} - EmbeddedMappingFileWizard wizard = new EmbeddedMappingFileWizard(DataModelFactory.createDataModel(new OrmFileCreationDataModelProvider())); - return MappingFileWizard.createMappingFile(selection, xmlFileName, wizard); - } } |