diff options
author | kmoore | 2008-11-06 15:44:16 +0000 |
---|---|---|
committer | kmoore | 2008-11-06 15:44:16 +0000 |
commit | cf20b3ed3ddb7727cd769d65ed716f373f3e6dce (patch) | |
tree | 09726c1bdbb72726cc0f19c81d322daff86f96ad /jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal | |
parent | 46b08f996af00e46de10761fc760fa4de656e195 (diff) | |
download | webtools.dali-cf20b3ed3ddb7727cd769d65ed716f373f3e6dce.tar.gz webtools.dali-cf20b3ed3ddb7727cd769d65ed716f373f3e6dce.tar.xz webtools.dali-cf20b3ed3ddb7727cd769d65ed716f373f3e6dce.zip |
250110 - No mapping files options in persistence.xml editor add mapping file dialog - and reducing code duplication in model and UI
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal')
5 files changed, 211 insertions, 105 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/BaseJpaUiFactory.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/BaseJpaUiFactory.java index e82c2734d6..d94b0153a3 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/BaseJpaUiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/BaseJpaUiFactory.java @@ -47,7 +47,7 @@ import org.eclipse.jpt.ui.internal.mappings.details.TransientMappingComposite; import org.eclipse.jpt.ui.internal.mappings.details.VersionMappingComposite; import org.eclipse.jpt.ui.internal.orm.details.OrmEntityComposite; import org.eclipse.jpt.ui.internal.persistence.details.PersistenceUnitConnectionComposite; -import org.eclipse.jpt.ui.internal.persistence.details.PersistenceUnitGeneralComposite; +import org.eclipse.jpt.ui.internal.persistence.details.GenericPersistenceUnitGeneralComposite; import org.eclipse.jpt.ui.internal.persistence.details.PersistenceUnitPropertiesComposite; import org.eclipse.jpt.utility.model.value.PropertyValueModel; import org.eclipse.swt.widgets.Composite; @@ -199,7 +199,7 @@ public abstract class BaseJpaUiFactory implements JpaUiFactory ArrayList<JpaPageComposite> pages = new ArrayList<JpaPageComposite>(1); - pages.add(new PersistenceUnitGeneralComposite(subjectHolder, parent, widgetFactory)); + pages.add(new GenericPersistenceUnitGeneralComposite(subjectHolder, parent, widgetFactory)); pages.add(new PersistenceUnitConnectionComposite(subjectHolder, parent, widgetFactory)); pages.add(new PersistenceUnitPropertiesComposite(subjectHolder, parent, widgetFactory)); diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/GenericPersistenceUnitGeneralComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/GenericPersistenceUnitGeneralComposite.java new file mode 100644 index 0000000000..c3f744e135 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/GenericPersistenceUnitGeneralComposite.java @@ -0,0 +1,104 @@ +/******************************************************************************* + * Copyright (c) 2008 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.ui.internal.persistence.details; + +import org.eclipse.jpt.core.context.persistence.PersistenceUnit; +import org.eclipse.jpt.ui.WidgetFactory; +import org.eclipse.jpt.ui.details.JpaPageComposite; +import org.eclipse.jpt.ui.internal.persistence.JptUiPersistenceMessages; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.widgets.Composite; + +/** + * Here the layout of this pane: + * <pre> + * ----------------------------------------------------------------------------- + * | | + * | - General --------------------------------------------------------------- | + * | ------------------------------------------------- | + * | Name: | I | | + * | ------------------------------------------------- | + * | ------------------------------------------------- | + * | Persistence Provider: | |v| | + * | ------------------------------------------------- | + * | | + * | | + * | - Mapped Classes -------------------------------------------------------- | + * | | + * | Description | + * | | + * | ----------------------------------------------------------------------- | + * | | | | + * | | PersistenceUnitMappedClassesComposite | | + * | | | | + * | ----------------------------------------------------------------------- | + * | | + * | | + * | - XML Mapping Files ----------------------------------------------------- | + * | | + * | Description | + * | | + * | ----------------------------------------------------------------------- | + * | | | | + * | | PersistenceUnitMappingFilesComposite | | + * | | | | + * | ----------------------------------------------------------------------- | + * -----------------------------------------------------------------------------</pre> + * + * @see PersistenceUnit + * @see PersistenceUnitJarFilesComposite + * @see PersistenceUnitMappedClassesComposite + * @see PersistenceUnitMappingFilesComposite + * + * @version 2.0 + * @since 2.0 + */ +public class GenericPersistenceUnitGeneralComposite extends PersistenceUnitGeneralComposite + implements JpaPageComposite +{ + /** + * Creates a new <code>PersistenceUnitGeneralComposite</code>. + * + * @param subjectHolder The holder of this pane's subject + * @param parent The parent container + * @param widgetFactory The factory used to create various common widgets + */ + public GenericPersistenceUnitGeneralComposite(PropertyValueModel<PersistenceUnit> subjectHolder, + Composite container, + WidgetFactory widgetFactory) { + + super(subjectHolder, container, widgetFactory); + } + + @Override + protected void initializeLayout(Composite container) { + + initializeGeneralPane(container); + initializeMappedClassesPane(container); + initializeJPAMappingDescriptorsPane(container); +// initializeJavaArchivesPane(container); + } + + + protected void initializeJPAMappingDescriptorsPane(Composite container) { + + container = addSection( + container, + JptUiPersistenceMessages.PersistenceUnitGeneralComposite_jpaMappingDescriptors, + JptUiPersistenceMessages.PersistenceUnitGeneralComposite_jpaMappingDescriptors_description + ); + + updateGridData(container); + updateGridData(container.getParent()); + + new GenericPersistenceUnitMappingFilesComposite(this, container); + } + +} diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/GenericPersistenceUnitMappingFilesComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/GenericPersistenceUnitMappingFilesComposite.java new file mode 100644 index 0000000000..7b0c103e63 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/GenericPersistenceUnitMappingFilesComposite.java @@ -0,0 +1,52 @@ +/******************************************************************************* + * Copyright (c) 2008 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.ui.internal.persistence.details; + +import org.eclipse.jpt.core.context.persistence.PersistenceUnit; +import org.eclipse.jpt.ui.internal.widgets.Pane; +import org.eclipse.swt.widgets.Composite; + +/** + * Here the layout of this pane: + * <pre> + * ----------------------------------------------------------------------------- + * | ------------------------------------------------------------------------- | + * | | | | + * | | AddRemoveListPane | | + * | | | | + * | ------------------------------------------------------------------------- | + * -----------------------------------------------------------------------------</pre> + * + * @see PersistenceUnit + * @see PersistenceUnitGeneralComposite - The parent container + * @see AddRemoveListPane + * + * @version 2.0 + * @since 2.0 + */ +public class GenericPersistenceUnitMappingFilesComposite extends PersistenceUnitMappingFilesComposite +{ + /** + * Creates a new <code>PersistenceUnitMappingFilesComposite</code>. + * + * @param parentPane The parent pane of this one + * @param parent The parent container + */ + public GenericPersistenceUnitMappingFilesComposite(Pane<? extends PersistenceUnit> parentPane, + Composite parent) { + + super(parentPane, parent); + } + + @Override + protected void initializeLayout(Composite container) { + addMappingFilesList(container); + } +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitGeneralComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitGeneralComposite.java index 7833ef6915..a68b6ca479 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitGeneralComposite.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitGeneralComposite.java @@ -68,7 +68,7 @@ import org.eclipse.swt.widgets.Composite; * @version 2.0 * @since 2.0 */ -public class PersistenceUnitGeneralComposite extends FormPane<PersistenceUnit> +public abstract class PersistenceUnitGeneralComposite extends FormPane<PersistenceUnit> implements JpaPageComposite { /** @@ -78,7 +78,7 @@ public class PersistenceUnitGeneralComposite extends FormPane<PersistenceUnit> * @param parent The parent container * @param widgetFactory The factory used to create various common widgets */ - public PersistenceUnitGeneralComposite(PropertyValueModel<PersistenceUnit> subjectHolder, + public PersistenceUnitGeneralComposite(PropertyValueModel<? extends PersistenceUnit> subjectHolder, Composite container, WidgetFactory widgetFactory) { @@ -185,7 +185,7 @@ public class PersistenceUnitGeneralComposite extends FormPane<PersistenceUnit> return JptUiPersistenceMessages.PersistenceUnitGeneralComposite_general; } - private void initializeGeneralPane(Composite container) { + protected void initializeGeneralPane(Composite container) { container = addSection( container, @@ -214,34 +214,7 @@ public class PersistenceUnitGeneralComposite extends FormPane<PersistenceUnit> ); } - private void initializeJPAMappingDescriptorsPane(Composite container) { - - container = addSection( - container, - JptUiPersistenceMessages.PersistenceUnitGeneralComposite_jpaMappingDescriptors, - JptUiPersistenceMessages.PersistenceUnitGeneralComposite_jpaMappingDescriptors_description - ); - - updateGridData(container); - updateGridData(container.getParent()); - - new PersistenceUnitMappingFilesComposite(this, container); - } - - /* - * (non-Javadoc) - */ - @Override - protected void initializeLayout(Composite container) { - - initializeGeneralPane(container); - initializeMappedClassesPane(container); - initializeJPAMappingDescriptorsPane(container); -// initializeJavaArchivesPane(container); - - } - - private void initializeMappedClassesPane(Composite container) { + protected void initializeMappedClassesPane(Composite container) { container = addSection( container, @@ -254,7 +227,7 @@ public class PersistenceUnitGeneralComposite extends FormPane<PersistenceUnit> new PersistenceUnitClassesComposite(this, container); } - private void updateGridData(Composite container) { + protected void updateGridData(Composite container) { GridData gridData = new GridData(); gridData.grabExcessHorizontalSpace = true; diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitMappingFilesComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitMappingFilesComposite.java index fa7851defd..01a6ad979e 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitMappingFilesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitMappingFilesComposite.java @@ -12,8 +12,6 @@ package org.eclipse.jpt.ui.internal.persistence.details; import java.io.ByteArrayInputStream; import java.io.IOException; import java.util.ListIterator; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; @@ -22,6 +20,7 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.content.IContentType; import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.JavaModelException; @@ -30,9 +29,10 @@ import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; +import org.eclipse.jpt.core.JptCorePlugin; import org.eclipse.jpt.core.context.persistence.MappingFileRef; import org.eclipse.jpt.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.core.internal.resource.orm.translators.OrmXmlMapper; +import org.eclipse.jpt.core.utility.PlatformUtilities; import org.eclipse.jpt.ui.JptUiPlugin; import org.eclipse.jpt.ui.internal.JptUiIcons; import org.eclipse.jpt.ui.internal.persistence.JptUiPersistenceMessages; @@ -81,7 +81,7 @@ import org.xml.sax.helpers.DefaultHandler; * @since 2.0 */ @SuppressWarnings("nls") -public class PersistenceUnitMappingFilesComposite extends Pane<PersistenceUnit> +public abstract class PersistenceUnitMappingFilesComposite extends Pane<PersistenceUnit> { /** * Creates a new <code>PersistenceUnitMappingFilesComposite</code>. @@ -94,6 +94,31 @@ public class PersistenceUnitMappingFilesComposite extends Pane<PersistenceUnit> super(parentPane, parent); } + + protected void addMappingFilesList(Composite container) { + // List pane + new AddRemoveListPane<PersistenceUnit>( + this, + container, + buildAdapter(), + buildItemListHolder(), + buildSelectedItemHolder(), + buildLabelProvider() + ) { + @Override + protected Composite addContainer(Composite parent) { + parent = super.addContainer(parent); + updateGridData(parent); + return parent; + } + + @Override + protected void initializeLayout(Composite container) { + super.initializeLayout(container); + updateGridData(getContainer()); + } + }; + } /** * Prompts a dialog showing a tree structure of the source paths where the @@ -192,12 +217,12 @@ public class PersistenceUnitMappingFilesComposite extends Pane<PersistenceUnit> return new ListAspectAdapter<PersistenceUnit, MappingFileRef>(getSubjectHolder(), PersistenceUnit.SPECIFIED_MAPPING_FILE_REFS_LIST) { @Override protected ListIterator<MappingFileRef> listIterator_() { - return subject.specifiedMappingFileRefs(); + return this.subject.specifiedMappingFileRefs(); } @Override protected int size_() { - return subject.specifiedMappingFileRefsSize(); + return this.subject.specifiedMappingFileRefsSize(); } }; } @@ -248,36 +273,6 @@ public class PersistenceUnitMappingFilesComposite extends Pane<PersistenceUnit> }; } - /* - * (non-Javadoc) - */ - @Override - protected void initializeLayout(Composite container) { - - // List pane - new AddRemoveListPane<PersistenceUnit>( - this, - container, - buildAdapter(), - buildItemListHolder(), - buildSelectedItemHolder(), - buildLabelProvider() - ) { - @Override - protected Composite addContainer(Composite parent) { - parent = super.addContainer(parent); - updateGridData(parent); - return parent; - } - - @Override - protected void initializeLayout(Composite container) { - super.initializeLayout(container); - updateGridData(getContainer()); - } - }; - } - /** * Returns the path of the given file excluding the source folder. * @@ -335,7 +330,7 @@ public class PersistenceUnitMappingFilesComposite extends Pane<PersistenceUnit> private String rootTagName; public String getRootTagName() { - return rootTagName; + return this.rootTagName; } @Override @@ -358,12 +353,16 @@ public class PersistenceUnitMappingFilesComposite extends Pane<PersistenceUnit> } } + protected boolean isMappingFile(String contentTypeId) { + return contentTypeId.equals(JptCorePlugin.ORM_XML_CONTENT_TYPE); + } + /** * This filter will deny showing any file that are not XML files or folders * that don't contain any XML files in its sub-hierarchy. The XML files are * partially parsed to only accept JPA mapping descriptors. */ - private static class XmlFileViewerFilter extends ViewerFilter { + private class XmlFileViewerFilter extends ViewerFilter { private final IJavaProject javaProject; @@ -374,32 +373,11 @@ public class PersistenceUnitMappingFilesComposite extends Pane<PersistenceUnit> /** * Determines whether the given file (an XML file) is a JPA mapping - * descriptor file. It has to be a valid XML file with a root element - * named "entity-mappings". - * - * @param file The file to parse and see if it's a mapping descriptor file - * @return <code>true</code> if the given file is a valid XML file with a - * root element named "entity-mappings"; <code>false</code> in any other - * case + * descriptor file. */ private boolean isMappingFile(IFile file) { - try { - SAXParserFactory factory = SAXParserFactory.newInstance(); - SAXParser saxParser = factory.newSAXParser(); - SAXHandler handler = new SAXHandler(); - try { - saxParser.parse(file.getRawLocationURI().toURL().openStream(), handler); - } - catch (Exception e) { - // Ignore since it's caused by SAXHandler to stop the parsing - // the moment the local name is retrieved - } - return OrmXmlMapper.ENTITY_MAPPINGS.equalsIgnoreCase(handler.getRootTagName()); - } - catch (Exception e) { - JptUiPlugin.log(e); - return false; - } + IContentType contentType = PlatformUtilities.getContentType(file); + return (contentType == null) ? false : PersistenceUnitMappingFilesComposite.this.isMappingFile(contentType.getId()); } private boolean isXmlFile(IFile file) { @@ -419,16 +397,15 @@ public class PersistenceUnitMappingFilesComposite extends Pane<PersistenceUnit> IFolder folder = (IFolder) element; try { - for (IClasspathEntry entry : javaProject.getRawClasspath()) { + for (IClasspathEntry entry : this.javaProject.getRawClasspath()) { if (entry.getEntryKind() == IClasspathEntry.CPE_SOURCE) { - if (!entry.getPath().isPrefixOf(folder.getFullPath().makeRelative())) - return false; - } - } - - for (IResource resource : folder.members()) { - if (select(viewer, folder, resource)) { - return true; + if (entry.getPath().isPrefixOf(folder.getFullPath().makeRelative())) { + for (IResource resource : folder.members()) { + if (select(viewer, folder, resource)) { + return true; + } + } + } } } } |