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

import java.util.List;

import javax.ejb.Stateless;
import javax.inject.Inject;

import de.ivu.elect.business.gebietsbaum.entity.Gebietsart;
import de.ivu.elect.business.mandant.entity.Mandant;

@Stateless
public class GebietsartSearchHelper {

  @Inject
  private transient GebietsartDAO gebietsartDAO;

  @Inject
  private transient GebietsartExtendedDAO gebietsartExtendedDAO;

  public GebietsartSearchHelper() {
    super();
  }

  public Gebietsart attachGebietsartWithExtendedDAO(Mandant mandant, Gebietsart template) {
    return attach(mandant, gebietsartExtendedDAO, template);
  }

  public Gebietsart attachGebietsartWithTransactionalDAO(Mandant mandant, Gebietsart template) {
    return attach(mandant, gebietsartDAO, template);
  }

  private Gebietsart attach(Mandant mandant, AbstractGebietsartDAO dao, Gebietsart template) {
    String gebietsartName = template.getName();

    List<Gebietsart> result = dao.findByName(mandant, gebietsartName);

    if (result.size() == 1) {
      return result.get(0);
    }

    throw new IllegalStateException("EINE Gebietsart mit dem Namen '" + gebietsartName + "' erwartet! Es gab: " + result.size()+", mandant="+mandant);
  }
}
