| package org.apache.commons.vfs.provider; |
| |
| import org.apache.commons.httpclient.URIException; |
| import org.apache.commons.httpclient.util.URIUtil; |
| import org.apache.commons.vfs.FileName; |
| import org.apache.commons.vfs.FileSystemException; |
| |
| public class URLFileName extends GenericFileName |
| { |
| private final String queryString; |
| |
| public URLFileName(final String scheme, |
| final String hostName, |
| final int port, |
| final int defaultPort, |
| final String userName, |
| final String password, |
| final String path, |
| final String queryString) |
| { |
| super(scheme, hostName, port, defaultPort, userName, password, path); |
| this.queryString = queryString; |
| } |
| |
| /** |
| * get the query string |
| * |
| * @return the query string part of the filename |
| */ |
| public String getQueryString() |
| { |
| return queryString; |
| } |
| |
| /** |
| * get the path and query string e.g. /path/servlet?param1=true |
| * |
| * @return the path and its query string |
| */ |
| public String getPathQuery() |
| { |
| StringBuffer sb = new StringBuffer(250); |
| sb.append(getPath()); |
| sb.append("?"); |
| sb.append(getQueryString()); |
| |
| return sb.toString(); |
| } |
| |
| /** |
| * get the path encoded suitable for url like filesystem e.g. (http, webdav) |
| * |
| * @param charset the charset used for the path encoding |
| */ |
| public String getPathQueryEncoded(String charset) throws URIException, FileSystemException |
| { |
| if (getQueryString() == null) |
| { |
| if (charset != null) |
| { |
| return URIUtil.encodePath(getPathDecoded(), charset); |
| } |
| else |
| { |
| return URIUtil.encodePath(getPathDecoded()); |
| } |
| } |
| |
| StringBuffer sb = new StringBuffer(250); |
| if (charset != null) |
| { |
| sb.append(URIUtil.encodePath(getPathDecoded(), charset)); |
| } |
| else |
| { |
| sb.append(URIUtil.encodePath(getPathDecoded())); |
| } |
| sb.append("?"); |
| sb.append(getQueryString()); |
| return sb.toString(); |
| } |
| |
| public FileName createName(final String absPath) |
| { |
| return new URLFileName(getScheme(), |
| getHostName(), |
| getPort(), |
| getDefaultPort(), |
| getUserName(), |
| getPassword(), |
| absPath, |
| getQueryString()); |
| } |
| |
| /** |
| * append query string to the uri |
| * |
| * @return the uri |
| */ |
| protected String createURI() |
| { |
| if (getQueryString() != null) |
| { |
| StringBuffer sb = new StringBuffer(250); |
| sb.append(super.createURI()); |
| sb.append("?"); |
| sb.append(getQueryString()); |
| |
| return sb.toString(); |
| } |
| |
| return super.createURI(); |
| } |
| |
| public String getURIEncoded(String charset) throws FileSystemException, URIException |
| { |
| StringBuffer sb = new StringBuffer(80); |
| appendRootUri(sb); |
| sb.append(getPathQueryEncoded(charset)); |
| return sb.toString(); |
| } |
| } |