package de.ivu.elect.jee.protokollierung;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Optional;

/**
 * Protokoll enthält alle Änderungen einer Transaktion
 */
public class Protokoll {

  private String benutzerkennung;

  private Optional<Date> zeitpunkt = Optional.empty();

  private List<Eintrag> protokollEintraege = new ArrayList<>();

  /**
   * Kein public-constructor, nur über ProtokollThreadLocal zugreifbar
   */
  Protokoll(String benutzerkennung) {
    this.benutzerkennung = benutzerkennung;
  }

  public void addEintrag(Eintrag eintrag) {
    protokollEintraege.add(eintrag);
  }

  public List<Eintrag> getEintraege() {
    return protokollEintraege;
  }

  public String getBenutzerkennung() {
    return benutzerkennung;
  }

  /**
   * Keine public-Methode, nur über ProtokollThreadLocal zugreifbar
   */
  void setBenutzerkennung(String benutzerkennung) {
    this.benutzerkennung = benutzerkennung;
  }

  public Optional<Date> getZeitpunkt() {
    return zeitpunkt;
  }

  /**
   * Keine public-Methode, nur über ProtokollThreadLocal zugreifbar
   */
  void setZeitpunkt(Date zeitpunkt) {
    this.zeitpunkt = Optional.of(zeitpunkt);
  }
}
