
package de.ivu.elect.business.wahlvorschlag.control;

import java.io.Serializable;

import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.persistence.NoResultException;
import javax.persistence.NonUniqueResultException;

import de.ivu.elect.business.wahlvorschlag.boundary.WahlvorschlagDAO;
import de.ivu.elect.business.wahlvorschlag.entity.Wahlvorschlag;
import de.ivu.elect.business.wahlvorschlag.entity.WahlvorschlagPK;
import de.ivu.elect.business.wahlvorschlag.entity.WahlvorschlagUK;

@Stateless
public class UniqueWahlvorschlagUkValidator implements Serializable {

  private static final long serialVersionUID = 1L;

  @Inject
  private WahlvorschlagDAO wahlvorschlagDao;

  public UniqueWahlvorschlagUkValidator() {
    super();
  }

  public boolean isUniqueWahlvorschlagUk(Wahlvorschlag entity) {
    return isUniqueWahlvorschlagUk(entity.getPk(), entity.getWahlvorschlagUK());
  }

  public boolean isUniqueWahlvorschlagUk(WahlvorschlagPK pk, WahlvorschlagUK uk) {
    try {
      return getWahlvorschlagByUk(uk).getPk().equals(pk);
    } catch (NonUniqueResultException nre) {
      return false;
    } catch (NoResultException ignored) {
      // Do nothing - be happy.
    }

    return true;
  }

  protected Wahlvorschlag getWahlvorschlagByUk(WahlvorschlagUK uk) {
    return wahlvorschlagDao.findByUK(uk);
  }

}
