package de.ivu.elect.business.ergebnis.entity;

import java.io.Serializable;

import de.ivu.elect.business.sitzberechnung.control.wahlbeteiligung.BerechnungWahlbeteiligungMittelwertGewichtungsart;

public class ErgebnisdatenWahlbeteiligungCacheKey implements Serializable {

  private final BerechnungWahlbeteiligungMittelwertGewichtungsart berechnungWahlbeteiligungMittelwertGewichtungsart;

  private final double defaultRuecklaufquote;

  private final int anzahlNachkommastellen;

  public ErgebnisdatenWahlbeteiligungCacheKey(BerechnungWahlbeteiligungMittelwertGewichtungsart berechnungWahlbeteiligungMittelwertGewichtungsart, double defaultRuecklaufquote, int anzahlNachkommastellen) {
    this.berechnungWahlbeteiligungMittelwertGewichtungsart = berechnungWahlbeteiligungMittelwertGewichtungsart;
    this.defaultRuecklaufquote = defaultRuecklaufquote;
    this.anzahlNachkommastellen = anzahlNachkommastellen;
  }

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

    ErgebnisdatenWahlbeteiligungCacheKey that = (ErgebnisdatenWahlbeteiligungCacheKey) o;

    if (Double.compare(that.defaultRuecklaufquote, defaultRuecklaufquote) != 0) return false;
    if (anzahlNachkommastellen != that.anzahlNachkommastellen) return false;
    return berechnungWahlbeteiligungMittelwertGewichtungsart == that.berechnungWahlbeteiligungMittelwertGewichtungsart;
  }

  @Override
  public int hashCode() {
    int result;
    long temp;
    result = berechnungWahlbeteiligungMittelwertGewichtungsart != null ? berechnungWahlbeteiligungMittelwertGewichtungsart.hashCode() : 0;
    temp = Double.doubleToLongBits(defaultRuecklaufquote);
    result = 31 * result + (int) (temp ^ (temp >>> 32));
    result = 31 * result + anzahlNachkommastellen;
    return result;
  }
}
