DefaultStorageListener.java

package gov.usgs.earthquake.distribution;

import gov.usgs.util.Config;
import gov.usgs.util.DefaultConfigurable;

import java.util.logging.Level;
import java.util.logging.Logger;

/** Interface class to implement custom actions around product storage */

public class DefaultStorageListener extends DefaultConfigurable implements StorageListener {

  private static final Logger LOGGER = Logger.getLogger(DefaultStorageListener.class.getName());

  @Override
  public void configure(Config arg0) throws Exception {
    // Nothing to do for default configure
  }

  @Override
  public void shutdown() throws Exception {
    // Nothing to do for default shutdown
  }

  @Override
  public void startup() throws Exception {
    // Nothing to do for default startup
  }

  /**
   * Simple dispatch method for listeners who are only interested in certain types
   * of <code>StorageEvent</code>s.
   *
   * @param event The event that triggered the call
   */
  @Override
  public void onStorageEvent(StorageEvent event) {
    StorageEvent.StorageEventType type = event.getType();
    try {
      if (type == StorageEvent.PRODUCT_STORED) {
        onProductStored(event);
      } else if (type == StorageEvent.PRODUCT_REMOVED) {
        onProductRemoved(event);
      }
    } catch (Exception e) {
      LOGGER.log(Level.WARNING, "[" + getName() + "] exception processing storage event", e);
    }
  }

  /**
   * Dispatched method called when the type of event is
   * <code>StorageEvent.StorageEventType.PRODUCT_STORED</code>.
   *
   * @param event The event that triggered the call
   * @throws Exception if error occurs
   */
  public void onProductStored(StorageEvent event) throws Exception {
    LOGGER.info("onProductStored::" + event.getProductId().toString());
  }

  /**
   * Dispatched method called when the type of event is
   * <code>StorageEvent.StorageEventType.PRODUCT_REMOVED</code>.
   *
   * @param event The event that triggered the call
   * @throws Exception if error occurs
   */
  public void onProductRemoved(StorageEvent event) throws Exception {
    LOGGER.info("onProductRemoved::" + event.getProductId().toString());
  }

}