package de.ivu.elect.interfaces.core;

import java.io.Serializable;
import java.util.Objects;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;

@XmlAccessorType(XmlAccessType.FIELD)
public class VeranstaltungReferenz implements Serializable {

  private static final long serialVersionUID = 1L;

  /**
   * HINT: Es gibt keinen eindeutigen fachlichen Schlüssel. In der Datenbank gibt's keinen Unique Index auf
   * Veranstaltung. Die VeranstaltungUK und VeranstaltungTK sind zwar im Takatuka konfiguriert, werden aber in der
   * Geschäftslogik nirgends durchgesetzt. Insb. ist die externeId nicht zwingend unique, insb. nicht, wenn der User
   * die Veranstaltungen manuell erfasst hat. Hier könnten wir selbst eine externeId vergeben, das erscheint mir aber
   * seltsam, da wir dann letztlich die exportierten Daten verändern.
   *
   * Uns bleibt hier also nur, innerhalb der Datei eine technische ID zu verwenden.
   */
  @XmlElement(required = true)
  private Long id;

  public Long getId() {
    return id;
  }

  public void setId(Long id) {
    this.id = id;
  }

  @Override
  public String toString() {
    return "VeranstaltungReferenz{" + "id=" + id + '}';
  }

  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    VeranstaltungReferenz that = (VeranstaltungReferenz) o;
    return Objects.equals(id, that.id);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id);
  }
}
