package de.ivu.elect.sitzberechnung.osv.exchange.p22;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

public class BesonderheitBeiNominierungDerGewaehlten {

  private int index;
  private BesonderheitBeiNominierungDerGewaehltenTyp typ;
  private List<String> parameters = new ArrayList<>();

  public BesonderheitBeiNominierungDerGewaehlten() {
  }

  public BesonderheitBeiNominierungDerGewaehlten(int index,
                                                 BesonderheitBeiNominierungDerGewaehltenTyp typ, List<String> parameters) {
    this.index = index;
    this.typ = typ;
    this.parameters = parameters;
  }

  public int getIndex() {
    return index;
  }

  public void setIndex(int index) {
    this.index = index;
  }

  public BesonderheitBeiNominierungDerGewaehltenTyp getTyp() {
    return typ;
  }

  public void setTyp(BesonderheitBeiNominierungDerGewaehltenTyp typ) {
    this.typ = typ;
  }

  public String getMsgKey() {
    return getTyp().toMsgKey();
  }

  /**
   * Die Parameter der Besonderheiten werden wie folgt übergeben: Bei Kandidaten der Name, bei P3-Listen die
   * Listennummer, bei Wahlkreisen einer P2-Liste die Gebietsnummern der Wahlkreise als Liste getrennt mit Komma und
   * "en".
   */
  public List<String> getParameters() {
    return parameters;
  }

  public void setParameters(List<String> parameters) {
    this.parameters = parameters;
  }

  @Override
  @Deprecated // Wozu?
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    BesonderheitBeiNominierungDerGewaehlten that = (BesonderheitBeiNominierungDerGewaehlten) o;
    return index == that.index && typ == that.typ && Objects.equals(parameters, that.parameters);
  }

  @Override
  @Deprecated // Wozu?
  public int hashCode() {
    return Objects.hash(index, typ, parameters);
  }

  @Override
  public String toString() {
    return "BesonderheitBeiNominierungDerGewaehlten{" + "index=" + index + ", typ=" + typ + ", parameters=" + parameters
            + '}';
  }
}
