Factory.java

package gov.usgs.earthquake.distribution;

import gov.usgs.earthquake.eidsutil.EIDSClient;

import java.io.File;
import java.net.URL;

/**
 * Factory class for EIDS CLIENT to send and receive notifications and products
 */
public class Factory {

  /**
   * Creates EIDS Client using given params
   *
   * @param serverHost       host
   * @param serverPort       port
   * @param alternateServers for list of alternate servers
   * @param trackingFileName tracking file name
   * @return EIDSClient
   */
  public EIDSClient createEIDSClient(final String serverHost, final Integer serverPort, final String alternateServers,
      final String trackingFileName) {
    EIDSClient client = new EIDSClient();

    client.setServerHost(serverHost);
    client.setServerPort(serverPort);
    client.setAlternateServersList(alternateServers);
    client.setTrackingFileName(trackingFileName);

    return client;
  }

  /**
   * Creates EIDS Notification Receiver
   *
   * @param serverList               serverlist
   * @param receiverStorageDirectory file of storage directory
   * @param receiverIndexFile        file of receiver index
   * @param client                   EIDSClient
   * @return new EIDSNotificationReceiver
   * @throws Exception if error occurs
   */
  public EIDSNotificationReceiver createEIDSNotificationReceiver(final String serverList,
      final File receiverStorageDirectory, final File receiverIndexFile, final EIDSClient client) throws Exception {
    EIDSNotificationReceiver receiver = new EIDSNotificationReceiver();

    receiver.setName("eids");

    receiver.setProductStorage(new FileProductStorage(receiverStorageDirectory));
    receiver.setNotificationIndex(new JDBCNotificationIndex(receiverIndexFile.getCanonicalPath()));

    return receiver;
  }

  /**
   * Create new socket product receiver
   *
   * @param port                     int of port
   * @param numThreads               int of threads
   * @param receiverStorageDirectory file of storage directory
   * @param receiverIndexFile        file of receiver index
   * @return new SocketProductReceiver
   * @throws Exception if error occurs
   */
  public SocketProductReceiver createSocketProductReceiver(final int port, final int numThreads,
      final File receiverStorageDirectory, final File receiverIndexFile) throws Exception {
    SocketProductReceiver receiver = new SocketProductReceiver();

    receiver.setName("socket");
    receiver.setProductStorage(new FileProductStorage(receiverStorageDirectory));
    receiver.setNotificationIndex(new JDBCNotificationIndex(receiverIndexFile.getCanonicalPath()));

    return receiver;
  }

  /**
   * create new EIDS Notification Sender
   *
   * @param corbaHost   String of host
   * @param corbaPort   String of port
   * @param eidsPolldir file of eidsPoll directory
   * @param htdocs      file of htdocs
   * @param htdocsURL   URL of htdocs
   * @return new EIDSNotificationSender
   */
  public EIDSNotificationSender createEIDSNotificationSender(final String corbaHost, final String corbaPort,
      final File eidsPolldir, final File htdocs, final URL htdocsURL) {
    EIDSNotificationSender sender = new EIDSNotificationSender();

    sender.setName("eids");
    sender.setServerHost(corbaHost);
    sender.setServerPort(corbaPort);
    sender.setServerPolldir(eidsPolldir);
    sender.setProductStorage(new URLProductStorage(htdocs, htdocsURL));

    return sender;
  }

}