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

import javax.enterprise.event.Observes;
import javax.enterprise.event.Reception;

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

import de.ivu.elect.business.ergebnis.entity.DHondtQuotientPolitischeGruppe;
import de.ivu.elect.business.ergebnis.entity.Ergebnis;
import de.ivu.elect.business.gruppe.entity.EntityMitGruppe;
import de.ivu.elect.business.gruppe.entity.PolitischeGruppe;

@GroupedConversationScoped
@ConversationGroup(AbstractDHondtQuotientPolitischeGruppeSearchParameters.class)
public class DHondtQuotientPolitischeGruppeSearchParameters extends AbstractDHondtQuotientPolitischeGruppeSearchParameters implements EntityMitGruppe<PolitischeGruppe> {

  private static final long serialVersionUID = 1L;

  private DHondtQuotientPolitischeGruppe dHondtQuotient;

  public DHondtQuotientPolitischeGruppeSearchParameters() {
    super();
  }

  public boolean hasErgebnis() {
    return getErgebnis() != null;
  }

  public Ergebnis getErgebnis() {
    return getDHondtQuotient().getErgebnis();
  }

  public void setErgebnis(Ergebnis ergebnis) {
    getDHondtQuotient().setErgebnis(ergebnis);
  }

  public void onErgebnisSelectChangeEvent(@Observes(notifyObserver = Reception.IF_EXISTS) ErgebnisSelectChangeEvent event) {
    reset();
  }

  @Override
  public boolean hasGruppe() {
    return getGruppe() != null;
  }

  @Override
  public PolitischeGruppe getGruppe() {
    return getDHondtQuotient().getPolitischeGruppe();
  }

  @Override
  public void setGruppe(PolitischeGruppe politischeGruppe) {
    getDHondtQuotient().setPolitischeGruppe(politischeGruppe);
  }

  private DHondtQuotientPolitischeGruppe getDHondtQuotient() {
    if (dHondtQuotient == null) {
      dHondtQuotient = new DHondtQuotientPolitischeGruppe();
    }

    return dHondtQuotient;
  }

  @Override
  public void reset() {
    dHondtQuotient = null;

    super.reset();
  }
}
