IndexerChange.java

  1. package gov.usgs.earthquake.indexer;

  2. /**
  3.  * Description of a specific change to a {@link ProductIndex}.
  4.  *
  5.  * Multiple IndexerChange objects may be created, and grouped
  6.  * into an {@link IndexerEvent}, in response to one product
  7.  * being processed.
  8.  */
  9. public class IndexerChange {

  10.     /** Enumeration of indexer event types. */
  11.     public static enum IndexerChangeType {
  12.         /** Enum for IndexerChangeType Event Added */
  13.         EVENT_ADDED,
  14.         /** Enum for IndexerChangeType Event Updated */
  15.         EVENT_UPDATED,
  16.         /** Enum for IndexerChangeType Event Deleted */
  17.         EVENT_DELETED,
  18.         /** Enum for IndexerChangeType Event Archived */
  19.         EVENT_ARCHIVED,
  20.         /** Enum for IndexerChangeType Event Merged */
  21.         EVENT_MERGED,
  22.         /** Enum for IndexerChangeType Event Split */
  23.         EVENT_SPLIT,

  24.         /** Enum for IndexerChangeType Product Added */
  25.         PRODUCT_ADDED,
  26.         /** Enum for IndexerChangeType Product Updated */
  27.         PRODUCT_UPDATED,
  28.         /** Enum for IndexerChangeType Product Deleted */
  29.         PRODUCT_DELETED,
  30.         /** Enum for IndexerChangeType Product Archived */
  31.         PRODUCT_ARCHIVED
  32.     };
  33.     /** IndexerChangeType for Event Added */
  34.     public static final IndexerChangeType EVENT_ADDED = IndexerChangeType.EVENT_ADDED;
  35.     /** IndexerChangeType for Event Updated */
  36.     public static final IndexerChangeType EVENT_UPDATED = IndexerChangeType.EVENT_UPDATED;
  37.     /** IndexerChangeType for Event Deleted */
  38.     public static final IndexerChangeType EVENT_DELETED = IndexerChangeType.EVENT_DELETED;
  39.     /** IndexerChangeType for Event Archived */
  40.     public static final IndexerChangeType EVENT_ARCHIVED = IndexerChangeType.EVENT_ARCHIVED;
  41.     /** IndexerChangeType for Event Merged */
  42.     public static final IndexerChangeType EVENT_MERGED = IndexerChangeType.EVENT_MERGED;
  43.     /** IndexerChangeType for Event Split */
  44.     public static final IndexerChangeType EVENT_SPLIT = IndexerChangeType.EVENT_SPLIT;

  45.     /** IndexerChangeType for Product Added */
  46.     public static final IndexerChangeType PRODUCT_ADDED = IndexerChangeType.PRODUCT_ADDED;
  47.     /** IndexerChangeType for Product Updated */
  48.     public static final IndexerChangeType PRODUCT_UPDATED = IndexerChangeType.PRODUCT_UPDATED;
  49.     /** IndexerChangeType for Product Deleted */
  50.     public static final IndexerChangeType PRODUCT_DELETED = IndexerChangeType.PRODUCT_DELETED;
  51.     /** IndexerChangeType for Product Archived */
  52.     public static final IndexerChangeType PRODUCT_ARCHIVED = IndexerChangeType.PRODUCT_ARCHIVED;

  53.     /** Indicates the type of change that is occurring */
  54.     private IndexerChangeType type;
  55.     /** The event as it was before the change occurred. */
  56.     private Event originalEvent;
  57.     /** The event as it is after the change occurred. */
  58.     private Event newEvent;

  59.     /**
  60.      * Constructor to quickly create a new <code>IndexerChange</code> object to
  61.      * be added to the list of changes in a given <code>IndexerEvent</code>.
  62.      * Note the <code>oldEvent</code> and <code>newEvent</code> will have
  63.      * particular meanings depending on the given <code>type</code> of change
  64.      * that occurred.
  65.      *
  66.      * @param type
  67.      *            The type of change that occurred.
  68.      * @param originalEvent
  69.      *            The event as it was before the change occurred.
  70.      * @param newEvent
  71.      *            The event as it is after the change occurred.
  72.      * @see IndexerEvent
  73.      */
  74.     public IndexerChange(IndexerChangeType type, Event originalEvent,
  75.             Event newEvent) {
  76.         this.type = type;
  77.         this.originalEvent = originalEvent;
  78.         this.newEvent = newEvent;
  79.     }

  80.     /** @return IndexerChangeType */
  81.     public IndexerChangeType getType() {
  82.         return this.type;
  83.     }

  84.     /** @return originalEvent */
  85.     public Event getOriginalEvent() {
  86.         return this.originalEvent;
  87.     }

  88.     /** @return newEvent */
  89.     public Event getNewEvent() {
  90.         return this.newEvent;
  91.     }

  92.     @Override
  93.     public String toString() {
  94.         StringBuffer b = new StringBuffer();
  95.         b.append(getType().toString() + " :: ");

  96.         if (getOriginalEvent() != null) {
  97.             b.append(getOriginalEvent().getEventId() + " --> ");
  98.         } else {
  99.             b.append("null --> ");
  100.         }

  101.         if (getNewEvent() != null) {
  102.             b.append(getNewEvent().getEventId());
  103.         } else {
  104.             b.append("null");
  105.         }

  106.         return b.toString();
  107.     }
  108. }