EIDSProductReceiver.java
/*
* EIDSProductReceiver
*/
package gov.usgs.earthquake.eids;
import gov.usgs.earthquake.distribution.EIDSNotificationReceiver;
import gov.usgs.earthquake.distribution.Notification;
import gov.usgs.earthquake.distribution.ProductSender;
import gov.usgs.earthquake.eidsutil.EIDSMessageEvent;
import gov.usgs.earthquake.product.Product;
import gov.usgs.earthquake.product.io.ObjectProductSource;
import gov.usgs.util.Config;
/**
* Wrap EIDSProductBuilder in NotificationReceiver interface.
*/
public class EIDSProductReceiver extends EIDSNotificationReceiver {
/** The EIDS builder. */
private EIDSProductBuilder builder;
/**
* Construct a new EIDSProductReceiver.
*
* Uses the Configurable interface, see EIDSNotificationReceiver.
*/
public EIDSProductReceiver() {
builder = new EIDSProductBuilder();
// add a product sender that sends to this receiver
builder.addProductSender(new ProductSender() {
@Override
public void configure(Config arg0) throws Exception {
}
@Override
public void shutdown() throws Exception {
}
@Override
public void startup() throws Exception {
}
@Override
public void sendProduct(Product product) throws Exception {
// forward built products to receiver
Notification notification = storeProductSource(new ObjectProductSource(
product));
receiveNotification(notification);
}
@Override
public String getName() {
return null;
}
@Override
public void setName(String arg0) {
}
});
}
/**
* Receive messages from the EIDSNotificationReceiver EIDS Client.s
*
* Forwards messages to builder, which sends built products to
* receiveNotification method.
*/
public void onEIDSMessage(EIDSMessageEvent event) {
// forward eids messages to builder
builder.onEIDSMessage(event);
}
@Override
public void configure(final Config config) throws Exception {
super.configure(config);
// load builder configuration properties too
builder.configure(config);
}
}