Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmResourceImpl.java')
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmResourceImpl.java119
1 files changed, 119 insertions, 0 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmResourceImpl.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmResourceImpl.java
new file mode 100644
index 0000000000..3e84f7c62f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmResourceImpl.java
@@ -0,0 +1,119 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.core.internal.content.orm.resource;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.URIConverter;
+import org.eclipse.jem.util.emf.workbench.WorkbenchResourceHelperBase;
+import org.eclipse.jem.util.plugin.JEMUtilPlugin;
+import org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal;
+import org.eclipse.jpt.core.internal.content.orm.OrmResource;
+import org.eclipse.wst.common.internal.emf.resource.Renderer;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+import org.eclipse.wst.common.internal.emf.resource.TranslatorResource;
+import org.eclipse.wst.common.internal.emf.resource.TranslatorResourceImpl;
+
+public class OrmResourceImpl extends TranslatorResourceImpl
+ implements OrmResource
+{
+ private Translator rootTranslator;
+
+ public OrmResourceImpl(Renderer aRenderer) {
+ super(aRenderer);
+ }
+
+ public OrmResourceImpl(URI uri, Renderer aRenderer) {
+ super(uri, aRenderer);
+ }
+
+ /**
+ * @see TranslatorResourceImpl#getDefaultPublicId()
+ */
+ protected String getDefaultPublicId() {
+ return null;
+ // only applicable for DTD-based files
+ }
+
+ /**
+ * @see TranslatorResourceImpl#getDefaultSystemId()
+ */
+ protected String getDefaultSystemId() {
+ return null;
+ // only applicable for DTD-based files
+ }
+
+ /**
+ * @see TranslatorResourceImpl#getDefaultVersionId()
+ */
+ protected int getDefaultVersionID() {
+ return 10;
+ // this seems to be the default version of the spec for this doc
+ // and the id 10 maps to the version 1.0
+ }
+
+ /**
+ * @see TranslatorResource#getDoctype()
+ */
+ public String getDoctype() {
+ return null;
+ // only applicable for DTD-based files
+ }
+
+ /**
+ * @see TranslatorResource#getRootTranslator()
+ */
+ public Translator getRootTranslator() {
+ if (this.rootTranslator == null) {
+ this.rootTranslator = buildRootTranslator();
+ }
+ return this.rootTranslator;
+ }
+
+ protected Translator buildRootTranslator() {
+ return new EntityMappingsTranslator();
+ }
+
+ /**
+ * @see OrmResource#getEntityMappings()
+ */
+ public EntityMappingsInternal getEntityMappings() {
+ return (EntityMappingsInternal) getRootObject();
+ }
+
+ public IFile getFile() {
+ IFile file = null;
+ file = getFile(getURI());
+ if (file == null) {
+ if (getResourceSet() != null) {
+ URIConverter converter = getResourceSet().getURIConverter();
+ URI convertedUri = converter.normalize(getURI());
+ if (! getURI().equals(convertedUri)) {
+ file = getFile(convertedUri);
+ }
+ }
+ }
+ return file;
+ }
+
+ /**
+ * Return the IFile for the <code>uri</code> within the Workspace. This URI is assumed to be
+ * absolute in the following format: platform:/resource/....
+ */
+ private IFile getFile(URI uri) {
+ if (WorkbenchResourceHelperBase.isPlatformResourceURI(uri)) {
+ String fileString = URI.decode(uri.path());
+ fileString = fileString.substring(JEMUtilPlugin.PLATFORM_RESOURCE.length() + 1);
+ return ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(fileString));
+ }
+ return null;
+ }
+}

Back to the top