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

import static java.util.Objects.nonNull;

import de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiStatus;
import org.apache.deltaspike.core.api.scope.ConversationGroup;
import org.apache.deltaspike.core.api.scope.GroupedConversationScoped;

import de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiErgebniseingangsart;
import de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiFehlerart;
import de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiGebietsart;
import de.ivu.elect.jee.presentation.dynamicform.BooleanFilterKriterium;

@GroupedConversationScoped
@ConversationGroup(AbstractStimmeingabePlausiKonfigurationSearchParameters.class)
public class StimmeingabePlausiKonfigurationSearchParameters extends AbstractStimmeingabePlausiKonfigurationSearchParameters {

  private static final long serialVersionUID = 1L;

  private StimmeingabePlausiErgebniseingangsart ergebniseingangsart;

  private StimmeingabePlausiGebietsart gebietsart;

  private StimmeingabePlausiFehlerart fehlerart;

  private StimmeingabePlausiStatus status;

  private BooleanFilterKriterium stimmeingabePlausiKonfigurationDefaultOverriddenFilterKriterium;

  public StimmeingabePlausiKonfigurationSearchParameters() {
    super();

    this.ergebniseingangsart = StimmeingabePlausiErgebniseingangsart.VORLAEUFIG;
    this.gebietsart = StimmeingabePlausiGebietsart.URNENWAHLBEZIRK;
    this.fehlerart = null;
    this.status = null;
    this.stimmeingabePlausiKonfigurationDefaultOverriddenFilterKriterium = null;
  }

  public boolean hasErgebniseingangsart() {
    return nonNull(getErgebniseingangsart());
  }

  public StimmeingabePlausiErgebniseingangsart getErgebniseingangsart() {
    return ergebniseingangsart;
  }

  public void setErgebniseingangsart(StimmeingabePlausiErgebniseingangsart ergebniseingangsart) {
    this.ergebniseingangsart = ergebniseingangsart;
  }

  public boolean hasGebietsart() {
    return nonNull(getGebietsart());
  }

  public StimmeingabePlausiGebietsart getGebietsart() {
    return gebietsart;
  }

  public void setGebietsart(StimmeingabePlausiGebietsart gebietsart) {
    this.gebietsart = gebietsart;
  }

  public boolean hasFehlerart() {
    return nonNull(getFehlerart());
  }

  public StimmeingabePlausiFehlerart getFehlerart() {
    return fehlerart;
  }

  public void setFehlerart(StimmeingabePlausiFehlerart stimmeingabefehlerart) {
    this.fehlerart = stimmeingabefehlerart;
  }

  public boolean hasStatus() {
    return nonNull(getStatus());
  }

  public StimmeingabePlausiStatus getStatus() {
    return status;
  }

  public void setStatus(StimmeingabePlausiStatus status) {
    this.status = status;
  }

  public boolean hasStimmeingabePlausiKonfigurationDefaultOverriddenFilterKriterium() {
    return nonNull(getStimmeingabePlausiKonfigurationDefaultOverriddenFilterKriterium());
  }

  public BooleanFilterKriterium getStimmeingabePlausiKonfigurationDefaultOverriddenFilterKriterium() {
    return stimmeingabePlausiKonfigurationDefaultOverriddenFilterKriterium;
  }

  public void setStimmeingabePlausiKonfigurationDefaultOverriddenFilterKriterium(BooleanFilterKriterium stimmeingabePlausiKonfigurationDefaultOverriddenFilterKriterium) {
    this.stimmeingabePlausiKonfigurationDefaultOverriddenFilterKriterium = stimmeingabePlausiKonfigurationDefaultOverriddenFilterKriterium;
  }

  @Override
  public void reset() {
    ergebniseingangsart = StimmeingabePlausiErgebniseingangsart.VORLAEUFIG;
    gebietsart = StimmeingabePlausiGebietsart.URNENWAHLBEZIRK;
    fehlerart = null;
    status = null;
    stimmeingabePlausiKonfigurationDefaultOverriddenFilterKriterium = null;

    super.reset();
  }
}
