// Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.history.elasticsearch;

import java.util.Collection;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.collect.Lists;

import uk.gov.dstl.baleen.core.history.HistoryEvent;

/**
 * This is a Java representation of the data structure of ES, used for serialisation and
 * deserialisation.
 */
public class ESHistory {
  private String documentId;
  private Collection<HistoryEvent> events;

  /** New instance. */
  public ESHistory() {
    // Empty constructor, do nothing
  }

  /**
   * New instance with the specified content.
   *
   * @param documentId the document
   * @param events the events in the history
   */
  public ESHistory(String documentId, Collection<HistoryEvent> events) {
    this.documentId = documentId;
    this.events = events;
  }

  /**
   * Set the document id.
   *
   * @param documentId
   */
  @JsonProperty("docId")
  public void setDocumentId(String documentId) {
    this.documentId = documentId;
  }

  /**
   * Get the document id.
   *
   * @return the document i
   */
  @JsonProperty("docId")
  public String getDocumentId() {
    return documentId;
  }

  /**
   * Get the history events.
   *
   * @return the event (non-null, but may be empty)
   */
  @JsonProperty("events")
  public Collection<HistoryEvent> getEvents() {
    if (events == null) {
      events = Lists.newLinkedList();
    }
    return events;
  }

  /**
   * Set the events.
   *
   * @param events the events
   */
  @JsonProperty("events")
  public void setEvents(Collection<HistoryEvent> events) {
    this.events = events;
  }
}
