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;

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());
	}

}