package htsjdk.tribble.util; import java.io.IOException; import java.io.InputStream; import java.net.URL; /** * Implementation of URLHelper designed for remote resources. * Determines appropriate helper based on protocol (ftp/http), * and then delegates. * * @author jacob * @date 2013-Apr-11 */ public class RemoteURLHelper implements URLHelper { private URLHelper wrappedHelper; public RemoteURLHelper(URL url){ String protocol = url.getProtocol().toLowerCase(); if(protocol.startsWith("http")){ this.wrappedHelper = new HTTPHelper(url); }else if(protocol.startsWith("ftp")){ this.wrappedHelper = new FTPHelper(url); }else{ throw new IllegalArgumentException("Unable to create helper for url with protocol " + protocol); } } @Override public URL getUrl() { return this.wrappedHelper.getUrl(); } @Override public long getContentLength() throws IOException { return this.wrappedHelper.getContentLength(); } @Override public InputStream openInputStream() throws IOException { return this.wrappedHelper.openInputStream(); } @Override public InputStream openInputStreamForRange(long start, long end) throws IOException { return this.wrappedHelper.openInputStreamForRange(start, end); } @Override public boolean exists() throws IOException { return this.wrappedHelper.exists(); } }