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

import de.ivu.elect.business.wahlrechtspruefung.entity.Wahlrechtspruefung;

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

import javax.inject.Inject;

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

@GroupedConversationScoped
@ConversationGroup(WahlrechtspruefungConversationStore.class)
public class WahlrechtspruefungConversationStore implements java.io.Serializable {

  private static final long serialVersionUID = 1L;

  @Inject
  protected transient GroupedConversation conversation;

  @Inject
  protected transient WahlrechtspruefungExtendedDAO dao;

  private   de.ivu.elect.business.wahlrechtspruefung.entity.WahlrechtspruefungPK
entityPK;

  public   de.ivu.elect.business.wahlrechtspruefung.entity.WahlrechtspruefungPK
 getEntityPK() {
    return entityPK;
  }

  public void setEntityPK(  de.ivu.elect.business.wahlrechtspruefung.entity.WahlrechtspruefungPK
   entityPK) {
    this.entityPK = entityPK;
  }

  public boolean isSelected() {
    return getEntityPK() != null;
  }

  public Wahlrechtspruefung getEntity() {
    if (isSelected()) {
      return dao.findByPrimaryKey(getEntityPK());
    }

    return null;
  }

  public void close() {
    conversation.close();
  }


// ELECT-2231    ELECT-2250      ELECT-2267
/*
* conversationStore sind von der zur Bearbeitung ausgewählten Wahl abhängig.
*/
public void onWahlSelectChangeEvent(@Observes(notifyObserver = Reception.IF_EXISTS) de.ivu.elect.business.wahl.boundary.WahlSelectChangeEvent event) {
close();
}

/*
* conversationStore sind vom zur Bearbeitung ausgewählten Wahltermin abhängig.
*/
public void onWahlterminSelectChangeEvent(
@Observes(notifyObserver = Reception.IF_EXISTS) de.ivu.elect.business.wahl.boundary.WahlterminSelectChangeEvent event) {
close();
}

}
