| /**************************************************************************** |
| * Copyright (c) 2006, 2007 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.identity; |
| |
| import java.net.MalformedURLException; |
| import java.net.URI; |
| import java.net.URISyntaxException; |
| import java.net.URL; |
| import org.eclipse.core.runtime.Assert; |
| import org.eclipse.ecf.core.identity.BaseID; |
| import org.eclipse.ecf.core.identity.Namespace; |
| import org.eclipse.ecf.filetransfer.identity.IFileID; |
| import org.eclipse.ecf.internal.provider.filetransfer.Messages; |
| |
| public class FileTransferID extends BaseID implements IFileID { |
| |
| private static final long serialVersionUID = 1274308869502156992L; |
| |
| URL fileURL; |
| URI fileURI; |
| |
| public FileTransferID(Namespace namespace, URL url) { |
| super(namespace); |
| Assert.isNotNull(url, Messages.FileTransferID_Exception_Url_Not_Null); |
| this.fileURL = url; |
| } |
| |
| /** |
| * @since 3.2 |
| */ |
| public FileTransferID(Namespace namespace, URI uri) { |
| super(namespace); |
| Assert.isNotNull(uri, "FileTransferID URI cannot be null"); //$NON-NLS-1$ |
| this.fileURI = uri; |
| } |
| |
| protected int namespaceCompareTo(BaseID o) { |
| if (o == null) |
| return 1; |
| if (!(o instanceof FileTransferID)) |
| return 1; |
| |
| return (fileURI != null) ? fileURI.compareTo(((FileTransferID) o).fileURI) : fileURL.toExternalForm().compareTo(((FileTransferID) o).toExternalForm()); |
| } |
| |
| protected boolean namespaceEquals(BaseID o) { |
| if (o == null) |
| return false; |
| if (!(o instanceof FileTransferID)) |
| return false; |
| |
| return (fileURI != null) ? fileURI.equals(((FileTransferID) o).fileURI) : fileURL.equals(((FileTransferID) o).fileURL); |
| } |
| |
| protected String namespaceGetName() { |
| return (fileURI != null) ? fileURI.toASCIIString() : fileURL.toExternalForm(); |
| } |
| |
| protected int namespaceHashCode() { |
| return (fileURI != null) ? fileURI.hashCode() : this.fileURL.hashCode(); |
| } |
| |
| public String getFilename() { |
| return getFileNameOnly(); |
| } |
| |
| public URL getURL() throws MalformedURLException { |
| return (fileURI != null) ? fileURI.toURL() : fileURL; |
| } |
| |
| protected String getFileNameOnly() { |
| String path = (fileURI != null) ? fileURI.getPath() : fileURL.getPath(); |
| return (path == null) ? null : path.substring(path.lastIndexOf("/") + 1); //$NON-NLS-1$; |
| } |
| |
| public String toString() { |
| final StringBuffer b = new StringBuffer("FileTransferID["); //$NON-NLS-1$ |
| b.append(toExternalForm()); |
| b.append("]"); //$NON-NLS-1$ |
| return b.toString(); |
| } |
| |
| /** |
| * @since 3.2 |
| */ |
| public URI getURI() throws URISyntaxException { |
| return (fileURI != null) ? fileURI : new URI(fileURL.toExternalForm()); |
| } |
| } |