/******************************************************************************* * Copyright (c) 2008, 2009 IBM Corporation and others. * 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.cdt.core.resources; import java.io.InputStream; import java.net.URI; import org.eclipse.core.filesystem.EFS; import org.eclipse.core.filesystem.IFileInfo; import org.eclipse.core.filesystem.IFileStore; import org.eclipse.core.filesystem.URIUtil; import org.eclipse.core.resources.IStorage; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.PlatformObject; /** * A storage object which is backed by an EFS resource. * * @author crecoskie * @since 5.0 * */ public class EFSFileStorage extends PlatformObject implements IStorage { private URI locationURI; private InputStream inputStream; public EFSFileStorage(URI locationURI) { this.locationURI = locationURI; } /* (non-Javadoc) * @see org.eclipse.core.resources.IStorage#getContents() */ public InputStream getContents() throws CoreException { if (inputStream == null) { IFileStore fileStore = EFS.getStore(locationURI); if (fileStore != null) { inputStream = fileStore.openInputStream(EFS.NONE, new NullProgressMonitor()); } } return inputStream; } /* (non-Javadoc) * @see org.eclipse.core.resources.IStorage#getFullPath() */ public IPath getFullPath() { return URIUtil.toPath(locationURI); } /* (non-Javadoc) * @see org.eclipse.core.resources.IStorage#getName() */ public String getName() { IFileStore fileStore = null; try { fileStore = EFS.getStore(locationURI); } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } if (fileStore != null) { return fileStore.getName(); } return null; } /* (non-Javadoc) * @see org.eclipse.core.resources.IStorage#isReadOnly() */ public boolean isReadOnly() { IFileStore fileStore = null; try { fileStore = EFS.getStore(locationURI); } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (fileStore != null) { IFileInfo info = fileStore.fetchInfo(); if(info != null) return info.getAttribute(EFS.ATTRIBUTE_READ_ONLY); } return false; } /** * Returns the location URI corresponding to the EFS resource that * backs this storage. * * @return URI */ public URI getLocationURI() { return locationURI; } @Override public boolean equals(Object obj) { if (obj instanceof EFSFileStorage && locationURI != null) { return locationURI.equals(((EFSFileStorage) obj).getLocationURI()); } return false; } }