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

import javax.annotation.Nullable;

import org.apache.deltaspike.core.api.scope.ConversationGroup;
import org.apache.deltaspike.core.api.scope.GroupedConversationScoped;

import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.statistik.entity.StatistikKennzeichen;
import de.ivu.elect.business.statistik.entity.StatistikKennzeichenSearchGebietauswahl;
import de.ivu.elect.business.statistik.entity.StatistikLauf;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.jee.entity.customdata.EmptyCustomData;

/**
 *  on 30.01.2017.
 */

@GroupedConversationScoped
@ConversationGroup(AbstractStatistikKennzeichenSearchParameters.class)
public class StatistikKennzeichenSearchParameters extends AbstractStatistikKennzeichenSearchParameters {

  public static final Wahl ALLE_WAHLEN;

  static {
    ALLE_WAHLEN = new Wahl(EmptyCustomData.INSTANCE);
    ALLE_WAHLEN.setId(Long.MIN_VALUE);
  }


  StatistikLauf statistikLauf;

  StatistikKennzeichen statistikKennzeichen;

  Gebiet gebiet;

  Wahl wahl;

  public Wahl getWahl() {
    return wahl;
  }

  public void setWahl(Wahl wahl) {
    this.wahl = wahl;
  }

  StatistikKennzeichenSearchGebietauswahl gebietauswahl = StatistikKennzeichenSearchGebietauswahl.UNTERGEORDNETE_GEBIETE_KUMULIEREN;

  public StatistikLauf getStatistikLauf() {
    return statistikLauf;
  }

  public void setStatistikLauf(StatistikLauf statistikLauf) {
    this.statistikLauf = statistikLauf;
  }

  public Gebiet getGebiet() {
    return gebiet;
  }

  public void setGebiet(Gebiet gebiet) {
    this.gebiet = gebiet;
  }

  public StatistikKennzeichenSearchGebietauswahl getGebietauswahl() {
    return gebietauswahl;
  }

  public void setGebietauswahl(StatistikKennzeichenSearchGebietauswahl gebietauswahl) {
    this.gebietauswahl = gebietauswahl;
  }

  public StatistikKennzeichen getStatistikKennzeichen() {
    if (statistikKennzeichen == null) {
      statistikKennzeichen = new StatistikKennzeichen();
    }
    return statistikKennzeichen;
  }

  @Override
  public void reset() {
    super.reset();
    statistikLauf = null;
    statistikKennzeichen = null;
    gebiet = null;
    wahl = null;
    gebietauswahl = StatistikKennzeichenSearchGebietauswahl.UNTERGEORDNETE_GEBIETE_KUMULIEREN;
  }

  @Nullable
  @Override
  protected Long getDefaultLimit() {
    return 30000L; // warum auch immer... ;)
  }
}
