NotificationEvent.java
/*
 * NotificationEvent
 */
package gov.usgs.earthquake.distribution;
import gov.usgs.earthquake.product.Product;
import java.io.IOException;
import java.util.EventObject;
/**
 * An event sent to a NotificationListener.
 *
 * These events are sent by a NotificationReceiver.
 */
public class NotificationEvent extends EventObject {
  /** For serialization. */
  private static final long serialVersionUID = 1L;
  /** The notification that generated this event. */
  private final Notification notification;
  /**
   * Construct a new NotificationEvent.
   *
   * @param source       the source of this event, usually a NotificationReceiver.
   * @param notification the notification that generated this event.
   */
  public NotificationEvent(final NotificationReceiver source, final Notification notification) {
    super(source);
    this.notification = notification;
  }
  /**
   * Get the notification associated with this NotificationEvent.
   *
   * @return the associated notification.
   */
  public Notification getNotification() {
    return notification;
  }
  /**
   * A convenience method that casts event source into a NotificationReceiver.
   *
   * @return source as a NotificationReceiver.
   */
  public NotificationReceiver getNotificationReceiver() {
    return (NotificationReceiver) getSource();
  }
  /**
   * A convenience method to request a product.
   *
   * @return the requested product.
   * @throws IOException if any errors occur while retrieving the product.
   */
  public Product getProduct() throws Exception {
    return getNotificationReceiver().retrieveProduct(notification.getProductId());
  }
}