Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkmoore2008-11-06 15:44:16 +0000
committerkmoore2008-11-06 15:44:16 +0000
commitcf20b3ed3ddb7727cd769d65ed716f373f3e6dce (patch)
tree09726c1bdbb72726cc0f19c81d322daff86f96ad /jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal
parent46b08f996af00e46de10761fc760fa4de656e195 (diff)
downloadwebtools.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')
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/BaseJpaUiFactory.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/GenericPersistenceUnitGeneralComposite.java104
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/GenericPersistenceUnitMappingFilesComposite.java52
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitGeneralComposite.java37
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitMappingFilesComposite.java119
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;
+ }
+ }
+ }
}
}
}

Back to the top