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

import javax.inject.Inject;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import de.ivu.elect.business.gebietsbaum.boundary.GebietDAO;
import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.gruppe.boundary.GruppeDAO;
import de.ivu.elect.business.gruppe.entity.Gruppe;
import de.ivu.elect.business.gruppeimgebiet.entity.GruppeImGebiet;

public class GruppeImGebietCreate extends AbstractGruppeImGebietCreate {

  private static final Logger LOG = LoggerFactory.getLogger(GruppeImGebietCreate.class);

  @Inject
  private transient GruppeDAO gruppeDao;

  @Inject
  private transient GebietDAO gebietDao;

  @Override
  public void save(GruppeImGebiet gruppeImGebiet) {
    save(gruppeImGebiet.getGebiet(), gruppeImGebiet.getGruppe(), gruppeImGebiet);
  }

  protected void save(Gebiet gebiet, Gruppe gruppe, GruppeImGebiet gruppeImGebiet) {
    try {
      gruppeImGebiet.setGruppe(attach(gruppe));
      gruppeImGebiet.setGebiet(attach(gebiet));
    } catch (Exception e) {
      LOG.warn("gebiet: " + gebiet + ", gruppe: " + gruppe + ", e: " + e.getMessage());
      throw e;
    }

    super.save(gruppeImGebiet);
  }

  protected Gruppe attach(Gruppe gruppe) {
    return gruppeDao.attach(gruppe);
  }

  protected Gebiet attach(Gebiet gebiet) {
    return gebietDao.attach(gebiet);
  }
}
