| /**************************************************************************** |
| * Copyright (c) 2008 Composent, Inc. 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: |
| * Composent, Inc. - initial API and implementation |
| *****************************************************************************/ |
| |
| package org.eclipse.ecf.provider.filetransfer.browse; |
| |
| import java.net.MalformedURLException; |
| import java.net.URL; |
| import java.net.URLConnection; |
| import org.eclipse.core.runtime.Assert; |
| import org.eclipse.core.runtime.IAdapterManager; |
| import org.eclipse.ecf.filetransfer.IRemoteFile; |
| import org.eclipse.ecf.filetransfer.IRemoteFileAttributes; |
| import org.eclipse.ecf.filetransfer.IRemoteFileInfo; |
| import org.eclipse.ecf.filetransfer.identity.IFileID; |
| import org.eclipse.ecf.internal.provider.filetransfer.Activator; |
| |
| /** |
| * |
| */ |
| public class URLRemoteFile implements IRemoteFile { |
| |
| IFileID fileID; |
| |
| URLConnection urlConnection; |
| IRemoteFileAttributes remoteFileAttributes; |
| |
| public URLRemoteFile(URLConnection urlConnection, IFileID fileID) { |
| Assert.isNotNull(urlConnection); |
| this.urlConnection = urlConnection; |
| Assert.isNotNull(fileID); |
| this.fileID = fileID; |
| remoteFileAttributes = new URLRemoteFileAttributes(); |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.ecf.filetransfer.IRemoteFile#getID() |
| */ |
| public IFileID getID() { |
| return fileID; |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.ecf.filetransfer.IRemoteFile#getInfo() |
| */ |
| public IRemoteFileInfo getInfo() { |
| return new IRemoteFileInfo() { |
| |
| public IRemoteFileAttributes getAttributes() { |
| return remoteFileAttributes; |
| } |
| |
| public long getLastModified() { |
| return urlConnection.getLastModified(); |
| } |
| |
| public long getLength() { |
| return urlConnection.getContentLength(); |
| } |
| |
| public String getName() { |
| URL url; |
| String result = null; |
| try { |
| url = fileID.getURL(); |
| String path = url.getPath(); |
| int index = path.lastIndexOf("/"); //$NON-NLS-1$ |
| if (index == -1) |
| return path; |
| result = path.substring(index + 1); |
| return result; |
| } catch (MalformedURLException e) { |
| return fileID.getName(); |
| } |
| } |
| |
| public boolean isDirectory() { |
| try { |
| return fileID.getURL().toString().endsWith("/"); //$NON-NLS-1$ |
| } catch (MalformedURLException e) { |
| return false; |
| } |
| } |
| |
| public void setAttributes(IRemoteFileAttributes attributes) { |
| // Not supported |
| } |
| |
| public void setLastModified(long time) { |
| // not supported |
| } |
| |
| public void setName(String name) { |
| // not supported |
| } |
| }; |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class) |
| */ |
| public Object getAdapter(Class adapter) { |
| IAdapterManager adapterManager = Activator.getDefault().getAdapterManager(); |
| if (adapterManager == null) |
| return null; |
| return adapterManager.loadAdapter(this, adapter.getName()); |
| } |
| |
| /* (non-Javadoc) |
| * @see java.lang.Object#toString() |
| */ |
| public String toString() { |
| StringBuffer buf = new StringBuffer("URLRemoteFile["); //$NON-NLS-1$ |
| buf.append("id=").append(getID()).append(";"); //$NON-NLS-1$//$NON-NLS-2$ |
| buf.append("name=").append(getInfo().getName()).append(";"); //$NON-NLS-1$ //$NON-NLS-2$ |
| buf.append("isDir=").append(getInfo().isDirectory()).append(";"); //$NON-NLS-1$ //$NON-NLS-2$ |
| buf.append("length=").append(getInfo().getLength()).append(";"); //$NON-NLS-1$ //$NON-NLS-2$ |
| buf.append("lastMod=").append(getInfo().getLastModified()).append(";"); //$NON-NLS-1$ //$NON-NLS-2$ |
| buf.append("attr=").append(getInfo().getAttributes()).append("]"); //$NON-NLS-1$ //$NON-NLS-2$ |
| return buf.toString(); |
| } |
| } |