
package de.ivu.elect.exchange.person;

import java.util.Date;
import java.util.Objects;

import org.jsefa.csv.annotation.CsvDataType;
import org.jsefa.csv.annotation.CsvField;

import de.ivu.jsefa.CsvHeader;

@CsvDataType
public class DefaultGesperrtePersonDTO {

  public static final String DEFAULT_GEBURTSDATUM_DATE_PATTERN = "dd.MM.yyyy";

  @CsvField(pos = 1)
  @CsvHeader("Familienname")
  private String familienname;

  @CsvField(pos = 2)
  @CsvHeader("Vorname")
  private String rufname;

  @CsvField(pos = 3, format = DefaultGesperrtePersonDTO.DEFAULT_GEBURTSDATUM_DATE_PATTERN)
  @CsvHeader("Geburtsdatum (TT.MM.JJJJ)")
  private Date geburtsdatum;

  @CsvField(pos = 4)
  @CsvHeader("Geschlecht")
  private String geschlecht;

  @CsvField(pos = 5)
  @CsvHeader("Ordnungsmerkmal")
  private String ordnungsmerkmal;

  @CsvField(pos = 6)
  @CsvHeader("Sperrgrund")
  private String sperrgrund;

  public DefaultGesperrtePersonDTO() {
    super();
  }

  public String getFamilienname() {
    return familienname;
  }

  public void setFamilienname(String familienname) {
    this.familienname = familienname;
  }

  public String getRufname() {
    return rufname;
  }

  public void setRufname(String rufname) {
    this.rufname = rufname;
  }

  public Date getGeburtsdatum() {
    return geburtsdatum;
  }

  public void setGeburtsdatum(Date geburtsdatum) {
    this.geburtsdatum = geburtsdatum;
  }

  public String getGeschlecht() {
    return geschlecht;
  }

  public void setGeschlecht(String geschlecht) {
    this.geschlecht = geschlecht;
  }

  public String getOrdnungsmerkmal() {
    return ordnungsmerkmal;
  }

  public void setOrdnungsmerkmal(String ordnungsmerkmal) {
    this.ordnungsmerkmal = ordnungsmerkmal;
  }

  public String getSperrgrund() {
    return sperrgrund;
  }

  public void setSperrgrund(String sperrgrund) {
    this.sperrgrund = sperrgrund;
  }

  /*
   * AUTO-GENERATED
   */

  @Override
  public int hashCode() {
    return Objects.hash(familienname, geburtsdatum, geschlecht, ordnungsmerkmal, rufname);
  }

  @Override
  public boolean equals(Object obj) {
    if (this == obj) {
      return true;
    }

    if (obj == null) {
      return false;
    }

    if (getClass() != obj.getClass()) {
      return false;
    }

    DefaultGesperrtePersonDTO other = (DefaultGesperrtePersonDTO) obj;

    return Objects.equals(familienname, other.familienname) && Objects.equals(geburtsdatum, other.geburtsdatum) && Objects.equals(geschlecht, other.geschlecht)
        && Objects.equals(ordnungsmerkmal, other.ordnungsmerkmal) && Objects.equals(rufname, other.rufname);
  }
}
