package br.com.centralit.citcorpore.negocio;
import br.com.centralit.citcorpore.bean.CaracteristicaMonitDTO;
import br.com.centralit.citcorpore.bean.MonitoramentoAtivosDTO;
import br.com.centralit.citcorpore.bean.NotificacaoGrupoMonitDTO;
import br.com.centralit.citcorpore.bean.NotificacaoUsuarioMonitDTO;
import br.com.centralit.citcorpore.bean.ScriptMonitDTO;
import br.com.centralit.citcorpore.integracao.CaracteristicaMonitDAO;
import br.com.centralit.citcorpore.integracao.MonitoramentoAtivosDAO;
import br.com.centralit.citcorpore.integracao.NotificacaoGrupoMonitDAO;
import br.com.centralit.citcorpore.integracao.NotificacaoUsuarioMonitDAO;
import br.com.centralit.citcorpore.integracao.ScriptMonitDAO;
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;
import br.com.citframework.util.UtilDatas;
/**
* @author euler.ramos
*
*/
public class MonitoramentoAtivosServiceEjb extends CrudServiceImpl implements MonitoramentoAtivosService {
private MonitoramentoAtivosDAO dao;
@Override
protected MonitoramentoAtivosDAO getDao() {
if (dao == null) {
dao = new MonitoramentoAtivosDAO();
}
return dao;
}
@Override
public IDto create(final IDto model) throws ServiceException, LogicException {
MonitoramentoAtivosDTO monitoramentoAtivosDTO = (MonitoramentoAtivosDTO) model;
final MonitoramentoAtivosDAO monitoramentoAtivosDAO = this.getDao();
final NotificacaoUsuarioMonitDAO notificacaoUsuariosDao = new NotificacaoUsuarioMonitDAO();
final NotificacaoGrupoMonitDAO notificacaoGruposDao = new NotificacaoGrupoMonitDAO();
final CaracteristicaMonitDAO caracteristicaMonitDao = new CaracteristicaMonitDAO();
final ScriptMonitDAO scriptMonitDao = new ScriptMonitDAO();
final TransactionControler tc = new TransactionControlerImpl(monitoramentoAtivosDAO.getAliasDB());
try {
notificacaoUsuariosDao.setTransactionControler(tc);
notificacaoGruposDao.setTransactionControler(tc);
caracteristicaMonitDao.setTransactionControler(tc);
scriptMonitDao.setTransactionControler(tc);
tc.start();
monitoramentoAtivosDTO.setDataInicio(UtilDatas.getDataAtual());
monitoramentoAtivosDTO = (MonitoramentoAtivosDTO) monitoramentoAtivosDAO.create(monitoramentoAtivosDTO);
// Registra caracteristica se existir...
this.persisteCaracteristica(monitoramentoAtivosDTO, caracteristicaMonitDao);
// Registra script se existir...
this.persisteScript(monitoramentoAtivosDTO, scriptMonitDao);
// Registra notifica��o para usu�rio se existir...
this.persisteUsuariosNotificacao(monitoramentoAtivosDTO, notificacaoUsuariosDao);
// Registra notifica��o para grupo se existir...
this.persisteGruposNotificacao(monitoramentoAtivosDTO, notificacaoGruposDao);
tc.commit();
tc.close();
} catch (final Exception e) {
this.rollbackTransaction(tc, e);
}
return monitoramentoAtivosDTO;
}
@Override
public void update(final IDto model) throws ServiceException, LogicException {
final MonitoramentoAtivosDTO monitoramentoAtivosDTO = (MonitoramentoAtivosDTO) model;
if (monitoramentoAtivosDTO.getIdMonitoramentoAtivos() != null) {
final MonitoramentoAtivosDAO monitoramentoAtivosDAO = this.getDao();
final NotificacaoUsuarioMonitDAO notificacaoUsuariosDao = new NotificacaoUsuarioMonitDAO();
final NotificacaoGrupoMonitDAO notificacaoGruposDao = new NotificacaoGrupoMonitDAO();
final CaracteristicaMonitDAO caracteristicaMonitDao = new CaracteristicaMonitDAO();
final ScriptMonitDAO scriptMonitDao = new ScriptMonitDAO();
final TransactionControler tc = new TransactionControlerImpl(monitoramentoAtivosDAO.getAliasDB());
try {
notificacaoUsuariosDao.setTransactionControler(tc);
notificacaoGruposDao.setTransactionControler(tc);
caracteristicaMonitDao.setTransactionControler(tc);
scriptMonitDao.setTransactionControler(tc);
tc.start();
monitoramentoAtivosDAO.updateNotNull(monitoramentoAtivosDTO);
// Registra caracteristica se existir...
caracteristicaMonitDao.deleteByIdMonitoramentoAtivos(monitoramentoAtivosDTO.getIdMonitoramentoAtivos());
this.persisteCaracteristica(monitoramentoAtivosDTO, caracteristicaMonitDao);
// Registra script se existir...
scriptMonitDao.deleteByIdMonitoramentoAtivos(monitoramentoAtivosDTO.getIdMonitoramentoAtivos());
this.persisteScript(monitoramentoAtivosDTO, scriptMonitDao);
// Registra notifica��o para usu�rio se existir...
notificacaoUsuariosDao.deleteByIdMonitoramentoAtivos(monitoramentoAtivosDTO.getIdMonitoramentoAtivos());
this.persisteUsuariosNotificacao(monitoramentoAtivosDTO, notificacaoUsuariosDao);
// Registra notifica��o para grupo se existir...
notificacaoGruposDao.deleteByIdMonitoramentoAtivos(monitoramentoAtivosDTO.getIdMonitoramentoAtivos());
this.persisteGruposNotificacao(monitoramentoAtivosDTO, notificacaoGruposDao);
tc.commit();
tc.close();
} catch (final Exception e) {
this.rollbackTransaction(tc, e);
}
}
}
@Override
public void delete(final IDto model) throws ServiceException, LogicException {
final MonitoramentoAtivosDTO monitoramentoAtivosDTO = (MonitoramentoAtivosDTO) model;
if (monitoramentoAtivosDTO.getIdMonitoramentoAtivos() != null) {
try {
monitoramentoAtivosDTO.setDataFim(UtilDatas.getDataAtual());
this.getDao().updateNotNull(monitoramentoAtivosDTO);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
}
public void persisteCaracteristica(final MonitoramentoAtivosDTO monitoramentoAtivosDTO, final CaracteristicaMonitDAO caracteristicaMonitDao) throws Exception {
if (monitoramentoAtivosDTO != null && monitoramentoAtivosDTO.getTipoRegra() != null && monitoramentoAtivosDTO.getTipoRegra().equalsIgnoreCase("c")) {
if (monitoramentoAtivosDTO.getIdCaracteristica() != null) {
final CaracteristicaMonitDTO caracteristicaMonitDto = new CaracteristicaMonitDTO();
caracteristicaMonitDto.setIdMonitoramentoAtivos(monitoramentoAtivosDTO.getIdMonitoramentoAtivos());
caracteristicaMonitDto.setIdCaracteristica(monitoramentoAtivosDTO.getIdCaracteristica());
caracteristicaMonitDto.setDataInicio(UtilDatas.getDataAtual());
caracteristicaMonitDao.create(caracteristicaMonitDto);
}
}
}
public void persisteScript(final MonitoramentoAtivosDTO monitoramentoAtivosDTO, final ScriptMonitDAO scriptMonitDao) throws Exception {
if (monitoramentoAtivosDTO != null && monitoramentoAtivosDTO.getTipoRegra() != null && monitoramentoAtivosDTO.getTipoRegra().equalsIgnoreCase("s")) {
if (monitoramentoAtivosDTO.getScript() != null) {
final ScriptMonitDTO scriptMonitDto = new ScriptMonitDTO();
scriptMonitDto.setIdMonitoramentoAtivos(monitoramentoAtivosDTO.getIdMonitoramentoAtivos());
scriptMonitDto.setScript(monitoramentoAtivosDTO.getScript());
scriptMonitDto.setDataInicio(UtilDatas.getDataAtual());
scriptMonitDao.create(scriptMonitDto);
}
}
}
public void persisteUsuariosNotificacao(final MonitoramentoAtivosDTO monitoramentoAtivosDTO, final NotificacaoUsuarioMonitDAO notificacaoUsuariosDao) throws Exception {
if (monitoramentoAtivosDTO != null && monitoramentoAtivosDTO.getEnviarEmail() != null && monitoramentoAtivosDTO.getEnviarEmail().equalsIgnoreCase("y")) {
if (monitoramentoAtivosDTO.getUsuariosNotificacao() != null && monitoramentoAtivosDTO.getUsuariosNotificacao().length > 0) {
for (final Integer usuario : monitoramentoAtivosDTO.getUsuariosNotificacao()) {
final NotificacaoUsuarioMonitDTO notificacaoUsuarioDto = new NotificacaoUsuarioMonitDTO();
notificacaoUsuarioDto.setIdMonitoramentoAtivos(monitoramentoAtivosDTO.getIdMonitoramentoAtivos());
notificacaoUsuarioDto.setIdUsuario(usuario);
notificacaoUsuarioDto.setDataInicio(UtilDatas.getDataAtual());
notificacaoUsuariosDao.create(notificacaoUsuarioDto);
}
}
}
}
public void persisteGruposNotificacao(final MonitoramentoAtivosDTO monitoramentoAtivosDTO, final NotificacaoGrupoMonitDAO notificacaoGruposDao) throws Exception {
if (monitoramentoAtivosDTO != null && monitoramentoAtivosDTO.getEnviarEmail() != null && monitoramentoAtivosDTO.getEnviarEmail().equalsIgnoreCase("y")) {
if (monitoramentoAtivosDTO.getGruposNotificacao() != null && monitoramentoAtivosDTO.getGruposNotificacao().length > 0) {
for (final Integer grupo : monitoramentoAtivosDTO.getGruposNotificacao()) {
final NotificacaoGrupoMonitDTO notificacaoGrupoDto = new NotificacaoGrupoMonitDTO();
notificacaoGrupoDto.setIdMonitoramentoAtivos(monitoramentoAtivosDTO.getIdMonitoramentoAtivos());
notificacaoGrupoDto.setIdGrupo(grupo);
notificacaoGrupoDto.setDataInicio(UtilDatas.getDataAtual());
notificacaoGruposDao.create(notificacaoGrupoDto);
}
}
}
}
@Override
public MonitoramentoAtivosDTO obterMonitorametoAtivoDaCaracteristica(final Integer idTipoItemConfiguracao, final Integer idCaracteristica) throws Exception {
return this.getDao().obterMonitorametoAtivoDaCaracteristica(idTipoItemConfiguracao, idCaracteristica);
}
@Override
public MonitoramentoAtivosDTO obterMonitorametoAtivoDoTipoItemConfiguracao(final Integer idTipoItemConfiguracao) throws Exception {
return this.getDao().obterMonitorametoAtivoDoTipoItemConfiguracao(idTipoItemConfiguracao);
}
}