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

import javax.inject.Inject;

import de.ivu.elect.business.person.entity.Beruf;
import de.ivu.elect.business.person.entity.QBeruf;

import java.util.ArrayList;
import java.util.Collection;

@javax.ejb.Stateless
public class BerufEdit extends AbstractBerufEdit {

  @Inject
  BerufUpdatedEvent berufUpdatedEvent;

  public void delete(Collection<Beruf> berufe) {
    for (Beruf beruf : new ArrayList<>(berufe)) {
      delete(beruf);
    }
  }

  @Override
  public void delete(Beruf entity) {
    String name = getOldValue(entity);

    super.delete(entity);

    berufUpdatedEvent.sendChangeEvent(name, null);
  }

  @Override
  public void save(Beruf entity) {
    String oldValue = getOldValue(entity);
    String newValue = entity.getName();

    super.save(entity);

    berufUpdatedEvent.sendChangeEvent(oldValue, newValue);
  }

  private String getOldValue(Beruf entity) {
    return (String) extendedDao.getQueryDsl().from(QBeruf.beruf).eq(QBeruf.beruf.id, entity.getPk().getId()).getQuery().select(QBeruf.beruf.name).fetchOne();

  }
}
