package br.com.centralit.citcorpore.negocio;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import br.com.centralit.citcorpore.bean.ImagemItemConfiguracaoDTO;
import br.com.centralit.citcorpore.bean.ImagemItemConfiguracaoRelacaoDTO;
import br.com.centralit.citcorpore.bean.ItemConfiguracaoDTO;
import br.com.centralit.citcorpore.bean.ServicoDTO;
import br.com.centralit.citcorpore.integracao.ImagemItemConfiguracaoDao;
import br.com.centralit.citcorpore.integracao.ImagemItemConfiguracaoRelacaoDao;
import br.com.centralit.citcorpore.integracao.ItemConfiguracaoDao;
import br.com.centralit.citcorpore.integracao.ServicoDao;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.LogicException;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.CrudServiceImpl;
/**
*
* @author breno.guimaraes
*
*/
public class ImagemItemConfiguracaoServiceEjb extends CrudServiceImpl implements ImagemItemConfiguracaoService {
private ImagemItemConfiguracaoDao dao;
@Override
protected ImagemItemConfiguracaoDao getDao() {
if (dao == null) {
dao = new ImagemItemConfiguracaoDao();
}
return dao;
}
@Override
public IDto create(final IDto model) throws LogicException, ServiceException {
final ImagemItemConfiguracaoDTO imgDto = (ImagemItemConfiguracaoDTO) model;
System.out.println("Item n�o existe. Create.");
return super.create(imgDto);
}
@Override
public IDto restore(final IDto model) throws LogicException, ServiceException {
return null;
}
@Override
public void update(final IDto model) throws LogicException, ServiceException {
final ImagemItemConfiguracaoDTO imgDto = (ImagemItemConfiguracaoDTO) model;
System.out.println("Item j� existe. Update.");
super.update(imgDto);
}
@Override
public void delete(final IDto model) throws LogicException, ServiceException {
final ImagemItemConfiguracaoDTO imagem = (ImagemItemConfiguracaoDTO) model;
this.getDao().excluiIdPaiDeItensFilho(imagem.getIdImagemItemConfiguracao());
super.delete(model);
}
@Override
public Collection findByIdServico(final int idServico) throws LogicException, ServiceException {
return this.getDao().findByIdServico(idServico);
}
@Override
public Collection findByIdImagemItemConfiguracaoPai(final int id) throws LogicException, ServiceException {
return this.getDao().findByIdImagemItemConfiguracaoPai(id);
}
@Override
@SuppressWarnings({"unchecked", "rawtypes"})
public Collection findItensRelacionadosHierarquia(final Integer idItemCfg) throws Exception {
final ImagemItemConfiguracaoDao imagemItemConfiguracaoDao = new ImagemItemConfiguracaoDao();
final ImagemItemConfiguracaoRelacaoDao imagemItemConfiguracaoRel = new ImagemItemConfiguracaoRelacaoDao();
final ItemConfiguracaoDao itemConfiguracaoDao = new ItemConfiguracaoDao();
final Collection<ItemConfiguracaoDTO> colRetorno = new ArrayList<ItemConfiguracaoDTO>();
Collection<ImagemItemConfiguracaoDTO> col = imagemItemConfiguracaoDao.findByIdItemConfiguracao(idItemCfg);
if (col != null) {
for (final Object element : col) {
final ImagemItemConfiguracaoDTO imagemItemConfiguracaoDTO = (ImagemItemConfiguracaoDTO) element;
ItemConfiguracaoDTO itemConfiguracaoDTO = new ItemConfiguracaoDTO();
itemConfiguracaoDTO.setIdItemConfiguracao(imagemItemConfiguracaoDTO.getIdItemConfiguracao());
itemConfiguracaoDTO = (ItemConfiguracaoDTO) itemConfiguracaoDao.restore(itemConfiguracaoDTO);
if (itemConfiguracaoDTO != null) {
itemConfiguracaoDTO.setTipoVinculo("FILHO");
colRetorno.add(itemConfiguracaoDTO);
}
final Collection colRel = imagemItemConfiguracaoDao.findByIdImagemItemConfiguracaoPai(imagemItemConfiguracaoDTO.getIdImagemItemConfiguracao());
if (colRel != null) {
for (final Iterator it2 = colRel.iterator(); it2.hasNext();) {
final ImagemItemConfiguracaoDTO imagemItemConfiguracaoAux = (ImagemItemConfiguracaoDTO) it2.next();
ItemConfiguracaoDTO itemConfiguracaoAux = new ItemConfiguracaoDTO();
itemConfiguracaoAux.setIdItemConfiguracao(imagemItemConfiguracaoAux.getIdItemConfiguracao());
itemConfiguracaoAux = (ItemConfiguracaoDTO) itemConfiguracaoDao.restore(itemConfiguracaoAux);
if (itemConfiguracaoAux != null) {
itemConfiguracaoAux.setTipoVinculo("VINC");
colRetorno.add(itemConfiguracaoAux);
}
}
}
final Collection<ImagemItemConfiguracaoRelacaoDTO> colRelImagemItemConfiguracaoPai = imagemItemConfiguracaoRel
.findByIdImagemItemConfiguracaoPai(imagemItemConfiguracaoDTO.getIdImagemItemConfiguracao());
if (colRelImagemItemConfiguracaoPai != null) {
for (final ImagemItemConfiguracaoRelacaoDTO imgItemConfiguracaoRel : colRelImagemItemConfiguracaoPai) {
ImagemItemConfiguracaoDTO imagemItemConfiguracaoAux = new ImagemItemConfiguracaoDTO();
imagemItemConfiguracaoAux.setIdImagemItemConfiguracao(imgItemConfiguracaoRel.getIdImagemItemConfiguracao());
imagemItemConfiguracaoAux = (ImagemItemConfiguracaoDTO) imagemItemConfiguracaoDao.restore(imagemItemConfiguracaoAux);
if (imagemItemConfiguracaoAux != null && imagemItemConfiguracaoAux.getIdItemConfiguracao() != null) {
ItemConfiguracaoDTO itemConfiguracaoAux = new ItemConfiguracaoDTO();
itemConfiguracaoAux.setIdItemConfiguracao(imagemItemConfiguracaoAux.getIdItemConfiguracao());
itemConfiguracaoAux = (ItemConfiguracaoDTO) itemConfiguracaoDao.restore(itemConfiguracaoAux);
if (itemConfiguracaoAux != null) {
itemConfiguracaoAux.setTipoVinculo("VINC");
colRetorno.add(itemConfiguracaoAux);
}
}
}
}
}
}
col = itemConfiguracaoDao.findByIdItemConfiguracaoPai(idItemCfg);
if (col != null) {
for (final Object element : col) {
final ItemConfiguracaoDTO itemConfiguracaoDTO = (ItemConfiguracaoDTO) element;
if (itemConfiguracaoDTO != null) {
itemConfiguracaoDTO.setTipoVinculo("FILHO");
colRetorno.add(itemConfiguracaoDTO);
}
Collection colItensVinc = null;
if (itemConfiguracaoDTO != null) {
colItensVinc = this.findItensRelacionadosHierarquia(itemConfiguracaoDTO.getIdItemConfiguracao());
}
if (colItensVinc != null) {
colRetorno.addAll(colItensVinc);
}
}
}
return colRetorno;
}
@Override
public Collection findServicosRelacionadosHierarquia(final Integer idItemCfg) throws Exception {
final ImagemItemConfiguracaoDao imagemItemConfiguracaoDao = new ImagemItemConfiguracaoDao();
final ItemConfiguracaoDao itemConfiguracaoDao = new ItemConfiguracaoDao();
final ImagemItemConfiguracaoRelacaoDao imagemItemConfiguracaoRel = new ImagemItemConfiguracaoRelacaoDao();
final ServicoDao servicoDao = new ServicoDao();
Collection<ImagemItemConfiguracaoDTO> col = imagemItemConfiguracaoDao.findByIdItemConfiguracao(idItemCfg);
final Collection<ServicoDTO> colRetorno = new ArrayList<ServicoDTO>();
if (col != null) {
for (final Object element : col) {
final ImagemItemConfiguracaoDTO imagemItemConfiguracaoDTO = (ImagemItemConfiguracaoDTO) element;
ServicoDTO servicoDTO = new ServicoDTO();
servicoDTO.setIdServico(imagemItemConfiguracaoDTO.getIdServico());
servicoDTO = (ServicoDTO) servicoDao.restore(servicoDTO);
if (servicoDTO != null) {
colRetorno.add(servicoDTO);
}
final Collection colRel = imagemItemConfiguracaoDao.findByIdImagemItemConfiguracaoPai(imagemItemConfiguracaoDTO.getIdImagemItemConfiguracao());
if (colRel != null) {
for (final Iterator it2 = colRel.iterator(); it2.hasNext();) {
final ImagemItemConfiguracaoDTO imagemItemConfiguracaoAux = (ImagemItemConfiguracaoDTO) it2.next();
servicoDTO = new ServicoDTO();
servicoDTO.setIdServico(imagemItemConfiguracaoAux.getIdServico());
servicoDTO = (ServicoDTO) servicoDao.restore(servicoDTO);
if (servicoDTO != null) {
colRetorno.add(servicoDTO);
}
}
}
final Collection<ImagemItemConfiguracaoRelacaoDTO> colRelImagemItemConfiguracaoPai = imagemItemConfiguracaoRel
.findByIdImagemItemConfiguracaoPai(imagemItemConfiguracaoDTO.getIdImagemItemConfiguracao());
if (colRelImagemItemConfiguracaoPai != null) {
for (final ImagemItemConfiguracaoRelacaoDTO imgItemConfiguracaoRel : colRelImagemItemConfiguracaoPai) {
ImagemItemConfiguracaoDTO imagemItemConfiguracaoAux = new ImagemItemConfiguracaoDTO();
imagemItemConfiguracaoAux.setIdImagemItemConfiguracao(imgItemConfiguracaoRel.getIdImagemItemConfiguracao());
imagemItemConfiguracaoAux = (ImagemItemConfiguracaoDTO) imagemItemConfiguracaoDao.restore(imagemItemConfiguracaoAux);
if (imagemItemConfiguracaoAux != null && imagemItemConfiguracaoAux.getIdServico() != null) {
servicoDTO = new ServicoDTO();
servicoDTO.setIdServico(imagemItemConfiguracaoAux.getIdServico());
servicoDTO = (ServicoDTO) servicoDao.restore(servicoDTO);
if (servicoDTO != null) {
colRetorno.add(servicoDTO);
}
}
}
}
}
}
col = itemConfiguracaoDao.findByIdItemConfiguracaoPai(idItemCfg);
if (col != null) {
for (final Object element : col) {
final ItemConfiguracaoDTO itemConfiguracaoDTO = (ItemConfiguracaoDTO) element;
final Collection colItensVinc = this.findServicosRelacionadosHierarquia(itemConfiguracaoDTO.getIdItemConfiguracao());
if (colItensVinc != null) {
colRetorno.addAll(colItensVinc);
}
}
}
return colRetorno;
}
}