
package de.ivu.elect.business.personenregister.boundary;

import de.ivu.elect.business.person.boundary.SearchParametersMitOrdnungsmerkmal;
import de.ivu.elect.business.personenregister.entity.PersonenregisterEinwohnerstatus;
import de.ivu.elect.business.wahl.entity.Wahltermin;

public class PersonenregisterByOrdnungsmerkmalSearchParameters extends AbstractPersonenregisterSearchParameters implements SearchParametersMitOrdnungsmerkmal {

  private static final long serialVersionUID = 1L;

  /**** !!!!!!!!!!!!! ***********/
  /* ELECT-11217 neue Suchparameter in equals und hashcode aufnehmen!! ***/
  /**** !!!!!!!!!!!!! ***********/

  private String ordnungsmerkmal;

  public PersonenregisterByOrdnungsmerkmalSearchParameters() {
    this( null, PersonenregisterEinwohnerstatus.AKTIV, "");
  }

  protected PersonenregisterByOrdnungsmerkmalSearchParameters(Wahltermin wahltermin, PersonenregisterEinwohnerstatus einwohnerstatus, String ordnungsmerkmal) {
    super(wahltermin, einwohnerstatus);

    // NOTE, dass die Setter explizit aufgerufen werden, um ggf. deren Spezialbehandlungen, cf. MesoByPersonendatenSearchParameters, durchzuführen!!!
    setOrdnungsmerkmal(ordnungsmerkmal);
  }

  @Override
  public String getOrdnungsmerkmal() {
    return ordnungsmerkmal;
  }

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

  @Override
  public de.ivu.elect.business.personenregister.entity.OrdnungsmerkmalProperty getOrdnungsmerkmalProperty() {
    return new de.ivu.elect.business.personenregister.entity.OrdnungsmerkmalProperty(this);
  }

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

    PersonenregisterByOrdnungsmerkmalSearchParameters that = (PersonenregisterByOrdnungsmerkmalSearchParameters) o;

    return ordnungsmerkmal != null ? ordnungsmerkmal.equals(that.ordnungsmerkmal) : that.ordnungsmerkmal == null;
  }

  @Override
  public int hashCode() {
    int result = super.hashCode();
    result = 31 * result + (ordnungsmerkmal != null ? ordnungsmerkmal.hashCode() : 0);
    return result;
  }
}
