package br.com.centralit.citcorpore.negocio;
import java.util.List;
import br.com.centralit.citcorpore.bean.MidiaSoftwareChaveDTO;
import br.com.centralit.citcorpore.bean.MidiaSoftwareDTO;
import br.com.centralit.citcorpore.integracao.MidiaSoftwareChaveDao;
import br.com.centralit.citcorpore.integracao.MidiaSoftwareDAO;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.LogicException;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.integracao.TransactionControler;
import br.com.citframework.integracao.TransactionControlerImpl;
import br.com.citframework.service.CrudServiceImpl;
public class MidiaSoftwareServiceEjb extends CrudServiceImpl implements MidiaSoftwareService {
private MidiaSoftwareDAO dao;
@Override
protected MidiaSoftwareDAO getDao() {
if (dao == null) {
dao = new MidiaSoftwareDAO();
}
return dao;
}
@Override
public IDto create(final IDto model) throws ServiceException, LogicException {
MidiaSoftwareDTO midiaSoftwareDTO = (MidiaSoftwareDTO) model;
final MidiaSoftwareDAO dao = this.getDao();
final MidiaSoftwareChaveDao midiaSoftwareChaveDao = new MidiaSoftwareChaveDao();
final TransactionControler tc = new TransactionControlerImpl(dao.getAliasDB());
try {
midiaSoftwareChaveDao.setTransactionControler(tc);
tc.start();
midiaSoftwareDTO = (MidiaSoftwareDTO) dao.create(model);
if (midiaSoftwareDTO.getMidiaSoftwareChaves() != null && !midiaSoftwareDTO.getMidiaSoftwareChaves().isEmpty()) {
for (final MidiaSoftwareChaveDTO midiaSoftwareChaveDTO : midiaSoftwareDTO.getMidiaSoftwareChaves()) {
midiaSoftwareChaveDTO.setIdMidiaSoftware(midiaSoftwareDTO.getIdMidiaSoftware());
midiaSoftwareChaveDao.create(midiaSoftwareChaveDTO);
}
}
tc.commit();
tc.close();
} catch (final Exception e) {
e.printStackTrace();
this.rollbackTransaction(tc, e);
}
return midiaSoftwareDTO;
}
@Override
public void update(final IDto model) throws ServiceException, LogicException {
final MidiaSoftwareDTO midiaSoftwareDTO = (MidiaSoftwareDTO) model;
final MidiaSoftwareDAO dao = this.getDao();
final MidiaSoftwareChaveDao midiaSoftwareChaveDao = new MidiaSoftwareChaveDao();
final TransactionControler tc = new TransactionControlerImpl(dao.getAliasDB());
try {
midiaSoftwareChaveDao.setTransactionControler(tc);
tc.start();
dao.update(midiaSoftwareDTO);
midiaSoftwareChaveDao.deleteByIdMidiaSoftware(midiaSoftwareDTO.getIdMidiaSoftware());
if (midiaSoftwareDTO.getMidiaSoftwareChaves() != null && !midiaSoftwareDTO.getMidiaSoftwareChaves().isEmpty()) {
for (final MidiaSoftwareChaveDTO midiaSoftwareChaveDTO : midiaSoftwareDTO.getMidiaSoftwareChaves()) {
midiaSoftwareChaveDTO.setIdMidiaSoftware(midiaSoftwareDTO.getIdMidiaSoftware());
midiaSoftwareChaveDao.create(midiaSoftwareChaveDTO);
}
}
tc.commit();
tc.close();
} catch (final Exception e) {
e.printStackTrace();
this.rollbackTransaction(tc, e);
}
}
@Override
public IDto restore(final IDto model) throws ServiceException, LogicException {
MidiaSoftwareDTO midiaSoftwareDTO = null;
try {
midiaSoftwareDTO = (MidiaSoftwareDTO) this.getDao().restore(model);
final MidiaSoftwareChaveDTO midiaSoftwareChaveDTO = new MidiaSoftwareChaveDTO();
midiaSoftwareChaveDTO.setIdMidiaSoftware(midiaSoftwareDTO.getIdMidiaSoftware());
midiaSoftwareDTO.setMidiaSoftwareChaves((List<MidiaSoftwareChaveDTO>) new MidiaSoftwareChaveDao().findByMidiaSoftware(midiaSoftwareDTO.getIdMidiaSoftware()));
} catch (final Exception e) {
e.printStackTrace();
throw new ServiceException(e);
}
return midiaSoftwareDTO;
}
@Override
public boolean consultarMidiasAtivas(final MidiaSoftwareDTO midiaSoftware) throws Exception {
return this.getDao().consultarMidiasAtivas(midiaSoftware);
}
}