URLNotification.java

/*
 * URLNotification
 */
package gov.usgs.earthquake.distribution;

import gov.usgs.earthquake.product.ProductId;
import java.net.URL;
import java.util.Date;

/**
 * A URLNotification represents a product that is available via a URL.
 */
public class URLNotification extends DefaultNotification {

	/** Location where product is available. */
	private final URL productURL;

	/**
	 * Construct a URLNotification.
	 *
	 * @param id
	 *            which product is available.
	 * @param expirationDate
	 *            how long the product is available.
	 * @param trackerURL
	 *            where to send status updates.
	 * @param productURL
	 *            where product is available.
	 */
	public URLNotification(ProductId id, Date expirationDate, URL trackerURL,
			URL productURL) {
		super(id, expirationDate, trackerURL);
		this.productURL = productURL;
	}

	/**
	 * @return Location where this product can be downloaded.
	 */
	public URL getProductURL() {
		return productURL;
	}

	/** A comparison method to see if two notifications are equal. */
	public boolean equals(Notification that) {
		return (that instanceof URLNotification
				&& getExpirationDate().equals(that.getExpirationDate())
				&& getProductId().equals(that.getProductId())
				&& (
					(getTrackerURL() == null && that.getTrackerURL() == null)
					|| getTrackerURL().equals(that.getTrackerURL()))
				&& (
					(getProductURL() == null
						&& ((URLNotification) that).getProductURL() == null)
					|| getProductURL().equals(((URLNotification) that).getProductURL())));
	}

}