
package de.ivu.elect.presentation.lokalisierung;

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

import javax.inject.Inject;

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 de.ivu.elect.business.lokalisierung.boundary.LokalisierungExtendedDAO;
import de.ivu.elect.business.lokalisierung.entity.Lokalisierung;
import de.ivu.elect.business.lokalisierung.entity.LokalisierungPK;

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

  private static final long serialVersionUID = 1L;

  @Inject
  protected GroupedConversation conversation;

  @Inject
  protected LokalisierungExtendedDAO dao;

  private List<LokalisierungPK> entityPKs;

  public List<LokalisierungPK> getEntityPKs() {
    return entityPKs;
  }

  public void setEntityPKs(List<LokalisierungPK> entityPKs) {
    this.entityPKs = entityPKs;
  }

  public void setEntities(List<Lokalisierung> entities) {

    ArrayList<LokalisierungPK> pks = new ArrayList<>(entities.size());
    for (Lokalisierung entity : entities) {
      pks.add(entity.getPk());
    }
    setEntityPKs(pks);

  }

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

  public List<Lokalisierung> getEntities() {
    if (isSelected()) {
      List<Lokalisierung> result = new ArrayList<>(getEntityPKs().size());
      for (LokalisierungPK lokalisierungPK : getEntityPKs()) {
        result.add(dao.findByPrimaryKey(lokalisierungPK));
      }
      return result;
    }

    return new ArrayList<>();
  }

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

  public void reset() {
    entityPKs = null;
  }

}
