URLContent.java

/*
 * URLContent
 */
package gov.usgs.earthquake.product;

import gov.usgs.util.StreamUtils;

import java.io.IOException;
import java.io.InputStream;

import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;

import javax.activation.MimetypesFileTypeMap;

/**
 * Content stored at a URL.
 */
public class URLContent extends AbstractContent {

	/** Used to look up file types. */
	private static MimetypesFileTypeMap MIME_TYPES = new MimetypesFileTypeMap();

	/** The actual content. */
	private URL content;

	/**
	 * Create a new URLContent object.
	 *
	 * @param content
	 *            the content available at a URL.
	 * @throws URISyntaxException on URI error
	 */
	public URLContent(final URL content) throws URISyntaxException {
		this.setContentType(MIME_TYPES.getContentType(content.toURI()
				.toString()));
		this.content = content;
	}

	/**
	 * Create a new URLContent object from a FileContent.
	 *
	 * @param fc
	 *            the file content.
	 * @throws MalformedURLException if URL error
	 */
	public URLContent(final FileContent fc) throws MalformedURLException {
		super(fc);
		this.content = fc.getFile().toURI().toURL();
	}

	/**
	 * @return an InputStream for the wrapped content.
	 * @throws IOException on IO error
	 */
	public InputStream getInputStream() throws IOException {
		return StreamUtils.getURLInputStream(content);
	}

	/**
	 * @return the wrapped url.
	 */
	public URL getURL() {
		return content;
	}

	/**
	 * Free any resources associated with this content.
	 */
	public void close() {
		// nothing to free
	}

}