ExtentIndexerListener.java
- /**
- * Extent Indexer Listener
- */
- package gov.usgs.earthquake.indexer;
- import gov.usgs.util.Config;
- import gov.usgs.earthquake.distribution.ConfigurationException;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- /**
- * ExtentIndexerListener is an extension of the ReliableIndexerListener. It
- * populates the ExtentSummary table with viable products.
- *
- * This listener takes an ExtentIndex for querying and table updates:
- * <dl>
- * <dt>index</dt>
- * <dd>(Required) the ExtentIndex used for querying and updates</dd>
- * </dl>
- */
- public class ExtentIndexerListener extends ReliableIndexerListener {
- private static final Logger LOGGER = Logger.getLogger(ExtentIndexerListener.class.getName());
- /**
- * Configures listener, checking for correct type
- *
- * @param config configuration
- *
- * @throws ConfigurationException if incorrect type provided
- */
- @Override
- public void configure(Config config) throws Exception {
- super.configure(config);
- if (!(this.getProductIndex() instanceof ExtentIndex)) {
- throw new ConfigurationException(
- "[" + getName() + "] index must be of type ExtentIndex. Given type "
- + productIndex.getClass().getName());
- }
- }
- /**
- * Loads the last index id in the extent table before the listener has to use it
- *
- * @throws Exception if ExtentIndex can't do database transaction
- */
- @Override
- protected void onBeforeProcessThreadStart() throws Exception {
- long lastIndexId = ((ExtentIndex) productIndex).getLastExtentIndexId();
- LOGGER.fine("[" + getName() + "] last index id " + lastIndexId);
- setLastIndexId(lastIndexId);
- }
- /**
- * Hands product to index to be added to table
- *
- * @param product the product to be added
- *
- * @throws Exception if ExtentIndex can't do database transaction
- */
- @Override
- public void processProduct(ProductSummary product) throws Exception {
- super.processProduct(product);
- ExtentSummary extent = new ExtentSummary(product);
- if (extent.isValid()) {
- LOGGER.log(Level.FINEST, "[" + getName() + "] adding product "
- + product.getId().toString()
- + " to extent table");
- ((ExtentIndex) productIndex).addExtentSummary(extent);
- } else {
- LOGGER.log(Level.FINEST, "[" + getName() + "] product "
- + product.getId().toString()
- + " has no extent information; won't add to extent table");
- }
- setLastIndexId(product.getIndexId());
- }
- }