blob: 178ba8a88b6b0d81e70a1d69610399fcaabc000d [file] [log] [blame]
/*******************************************************************************
* 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.persistence.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.persistence.Persistence;
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 PersistenceResource extends TranslatorResourceImpl
{
public PersistenceResource(Renderer aRenderer) {
super(aRenderer);
}
public PersistenceResource(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() {
return PersistenceTranslator.INSTANCE;
}
/**
* @see PersistenceResource#getPersistence()
*/
public Persistence getPersistence() {
return (Persistence) 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;
}
}