EventSummary.java

package gov.usgs.earthquake.indexer;

import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * Summary of an Event and its products.
 */
public class EventSummary implements Comparable<EventSummary> {

  /** The product index id for the original event. */
  private Long indexId;

  /** Event attributes. */
  private String source;
  private String sourceCode;
  private Date time;
  private BigDecimal latitude;
  private BigDecimal longitude;
  private BigDecimal depth;
  private BigDecimal magnitude;
  private boolean deleted = false;

  /** A map of all event codes associated with this event. */
  private final Map<String, String> eventCodes = new HashMap<String, String>();

  /** Summary properties for an event. */
  private final Map<String, String> properties = new HashMap<String, String>();

  /**
   * Create a new EventSummary.
   */
  public EventSummary() {
  }

  /** @param indexId to set */
  public void setIndexId(Long indexId) {
    this.indexId = indexId;
  }

  /** @return indexID */
  public Long getIndexId() {
    return indexId;
  }

  /**
   * Combines source + source code for ID or returns null
   *
   * @return Id or null
   */
  public String getId() {
    if (source != null && sourceCode != null) {
      return source + sourceCode;
    }
    return null;
  }

  /** @return source */
  public String getSource() {
    return source;
  }

  /** @param source to set */
  public void setSource(String source) {
    this.source = source;
  }

  /** @return sourceCode */
  public String getSourceCode() {
    return sourceCode;
  }

  /** @param sourceCode to set */
  public void setSourceCode(String sourceCode) {
    this.sourceCode = sourceCode;
  }

  /** @return time */
  public Date getTime() {
    return time;
  }

  /** @param time to set */
  public void setTime(Date time) {
    this.time = time;
  }

  /** @return latitude */
  public BigDecimal getLatitude() {
    return latitude;
  }

  /** @param latitude to set */
  public void setLatitude(BigDecimal latitude) {
    this.latitude = latitude;
  }

  /** @return longitude */
  public BigDecimal getLongitude() {
    return longitude;
  }

  /** @param longitude to set */
  public void setLongitude(BigDecimal longitude) {
    this.longitude = longitude;
  }

  /** @return depth */
  public BigDecimal getDepth() {
    return depth;
  }

  /** @param depth to set */
  public void setDepth(BigDecimal depth) {
    this.depth = depth;
  }

  /** @return magnitude */
  public BigDecimal getMagnitude() {
    return magnitude;
  }

  /** @param magnitude to set */
  public void setMagnitude(BigDecimal magnitude) {
    this.magnitude = magnitude;
  }

  /** @param deleted to set */
  public void setDeleted(final boolean deleted) {
    this.deleted = deleted;
  }

  /** @return deleted */
  public boolean isDeleted() {
    return deleted;
  }

  /**
   * These properties are derived from product properties, and are those desirable
   * for searching at an event level.
   *
   * @return The properties of this event.
   */
  public Map<String, String> getProperties() {
    return this.properties;
  }

  /**
   *
   * @return A map of event codes associated with this event.
   */
  public Map<String, String> getEventCodes() {
    return this.eventCodes;
  }

  @Override
  public int compareTo(EventSummary that) {
    int r;

    r = this.getSource().compareTo(that.getSource());
    if (r != 0) {
      return r;
    }
    r = this.getSourceCode().compareTo(that.getSourceCode());

    return r;
  }

}