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

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import javax.annotation.Nullable;
import javax.inject.Named;

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

import de.ivu.elect.business.gruppe.entity.Gruppe;
import de.ivu.elect.business.gruppe.entity.GruppeArt;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.jee.entity.customdata.EmptyCustomData;

@Named(GruppeSearchParameters.COMPONENT_NAME)
@GroupedConversationScoped
@ConversationGroup(AbstractGruppeSearchParameters.class)
public class GruppeSearchParameters extends AbstractGruppeSearchParameters {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "gruppeSearchParameters";

  private Wahl wahl;

  @Nullable
  private Gruppe gruppe;

  private final List<GruppeArt> gruppeArten = new ArrayList<>();

  public GruppeSearchParameters() {
    super();
  }

  public Wahl getWahl() {
    return wahl;
  }

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

  public void setGruppeArten(Collection<GruppeArt> gruppeArten) {
    this.gruppeArten.clear();
    this.gruppeArten.addAll(gruppeArten);
  }

  public Collection<GruppeArt> getGruppeArten() {
    return gruppeArten;
  }

  public Gruppe getGruppe() {
    if (gruppe == null) {
      gruppe = new Gruppe(EmptyCustomData.INSTANCE);
    }
    return gruppe;
  }

  @Override
  public void reset() {
    super.reset();
    gruppeArten.clear();
    gruppe = null;
  }

}
