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

import java.io.Serializable;
import java.util.List;

import javax.inject.Inject;

import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.gruppeimgebiet.boundary.GruppeImGebietDAO;
import de.ivu.elect.business.gruppeimgebiet.entity.GruppeImGebiet;

public class GruppeImGebietUniquePositionValidator implements Serializable {

  private static final long serialVersionUID = 1L;

  @Inject
  protected GruppeImGebietDAO gruppeImGebietDao;

  public GruppeImGebietUniquePositionValidator() {
    super();
  }

  public boolean isValid(GruppeImGebiet gruppeImGebiet) {
    return isValid(gruppeImGebiet.getGebiet(), gruppeImGebiet, gruppeImGebiet.getRelativePosition());
  }

  private boolean isValid(Gebiet gebiet, GruppeImGebiet gruppeImGebiet, Long position) {
    if (gebiet != null && position != null) {
      List<GruppeImGebiet> result = gruppeImGebietDao.findByGebietAndRelativePosition(gebiet, position);

      return result.isEmpty() || result.size() == 1 && result.get(0).equals(gruppeImGebiet);
    }

    return false;
  }
}
