package de.ivu.elect.was.sitzberechnung.entity;

import de.ivu.elect.business.gruppe.entity.PolitischeGruppe;
import de.ivu.elect.business.wahlvorschlag.entity.Liste;
import de.ivu.elect.business.wahlvorschlag.entity.NlListe;
import de.ivu.elect.sitzberechnung.osv.exchange.Stel;

import java.util.List;

public class SitzberechnungStel implements Stel {

  private final PolitischeGruppe politischeGruppe;

  private final Integer stelNummer;
  private final List<Liste> listenDesStels;

  public SitzberechnungStel(PolitischeGruppe politischeGruppe, Integer stelNummer, List<Liste> listenDesStels) {
    this.politischeGruppe = politischeGruppe;
    this.stelNummer = stelNummer;
    this.listenDesStels = listenDesStels;
  }

  @Override
  public String getKey() {
    return NlListe.createStelKey(politischeGruppe.getPk(), stelNummer);
  }

  public List<Liste> getListenDesStels() {
    return listenDesStels;
  }

  @Override
  public String toString() {
    return "SitzberechnungStel{" +
            "politischeGruppe=" + politischeGruppe +
            ", stelNummer='" + stelNummer + '\'' +
            ", listenDesStels=" + listenDesStels +
            '}';
  }

  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;

    SitzberechnungStel that = (SitzberechnungStel) o;

    if (!politischeGruppe.equals(that.politischeGruppe)) return false;
    return stelNummer.equals(that.stelNummer);
  }

  @Override
  public int hashCode() {
    int result = politischeGruppe.hashCode();
    result = 31 * result + stelNummer.hashCode();
    return result;
  }
}
