package br.com.centralit.citcorpore.negocio;
import java.util.ArrayList;
import java.util.Collection;
import br.com.centralit.citcorpore.bean.CatalogoServicoDTO;
import br.com.centralit.citcorpore.bean.InfoCatalogoServicoDTO;
import br.com.centralit.citcorpore.bean.ServContratoCatalogoServDTO;
import br.com.centralit.citcorpore.integracao.CatalogoServicoDao;
import br.com.centralit.citcorpore.integracao.InfoCatalogoServicoDao;
import br.com.centralit.citcorpore.integracao.ServContratoCatalogoServDao;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.LogicException;
import br.com.citframework.excecao.PersistenceException;
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 CatalogoServicoServiceEjb extends CrudServiceImpl implements CatalogoServicoService {
private CatalogoServicoDao dao;
@Override
protected CatalogoServicoDao getDao() {
if (dao == null) {
dao = new CatalogoServicoDao();
}
return dao;
}
@Override
public IDto create(final IDto model) throws ServiceException, LogicException {
CatalogoServicoDTO catalogoServicoDto = (CatalogoServicoDTO) model;
final CatalogoServicoDao catalogoServicodao = this.getDao();
final ServContratoCatalogoServDao servContratoCatalogoServDao = new ServContratoCatalogoServDao();
final InfoCatalogoServicoDao infoCatalogoServicoDao = new InfoCatalogoServicoDao();
final TransactionControler tc = new TransactionControlerImpl(catalogoServicodao.getAliasDB());
try {
this.validaCreate(model);
catalogoServicodao.setTransactionControler(tc);
infoCatalogoServicoDao.setTransactionControler(tc);
servContratoCatalogoServDao.setTransactionControler(tc);
tc.start();
catalogoServicoDto = (CatalogoServicoDTO) catalogoServicodao.create(model);
if (catalogoServicoDto.getColServicoContrato() != null && !catalogoServicoDto.getColServicoContrato().isEmpty()) {
ServContratoCatalogoServDTO item = null;
// varre a lista de servi�os
for (int i = 0; i < catalogoServicoDto.getColServicoContrato().size(); i++) {
item = catalogoServicoDto.getColServicoContrato().get(i);
item.setIdCatalogoServico(catalogoServicoDto.getIdCatalogoServico());
// grava cada item da lista
servContratoCatalogoServDao.create(item);
}
}
if (catalogoServicoDto.getColInfoCatalogoServico() != null && !catalogoServicoDto.getColInfoCatalogoServico().isEmpty()) {
InfoCatalogoServicoDTO item = null;
// varre a lista de servi�os
for (int i = 0; i < catalogoServicoDto.getColInfoCatalogoServico().size(); i++) {
item = catalogoServicoDto.getColInfoCatalogoServico().get(i);
if (catalogoServicoDto.getIdCatalogoServico() != null) {
item.setIdCatalogoServico(catalogoServicoDto.getIdCatalogoServico());
}
if (catalogoServicoDto.getNomeInfoCatalogoServico() != null) {
item.setNomeInfoCatalogoServico(catalogoServicoDto.getNomeInfoCatalogoServico());
}
if (catalogoServicoDto.getDescInfoCatalogoServico() != null) {
item.setDescInfoCatalogoServico(catalogoServicoDto.getDescInfoCatalogoServico());
}
// grava cada item da lista
if (item.getIdInfoCatalogoServico() == null) {
infoCatalogoServicoDao.create(item);
} else {
infoCatalogoServicoDao.update(item);
}
}
}
tc.commit();
} catch (final Exception e) {
e.printStackTrace();
this.rollbackTransaction(tc, e);
} finally {
try {
tc.close();
} catch (final Exception e) {
e.printStackTrace();
}
}
return catalogoServicoDto;
}
@Override
public void update(final IDto model) throws ServiceException, LogicException {
final CatalogoServicoDTO catalogoServicoDto = (CatalogoServicoDTO) model;
final CatalogoServicoDao catalogoServicodao = this.getDao();
final ServContratoCatalogoServDao servContratoCatalogoServDao = new ServContratoCatalogoServDao();
final InfoCatalogoServicoDao infoCatalogoServicoDao = new InfoCatalogoServicoDao();
final TransactionControler tc = new TransactionControlerImpl(catalogoServicodao.getAliasDB());
try {
this.validaCreate(model);
catalogoServicodao.setTransactionControler(tc);
infoCatalogoServicoDao.setTransactionControler(tc);
servContratoCatalogoServDao.setTransactionControler(tc);
tc.start();
catalogoServicodao.update(catalogoServicoDto);
servContratoCatalogoServDao.deleteByIdServContratoCatalogo(catalogoServicoDto);
if (catalogoServicoDto.getColServicoContrato() != null && !catalogoServicoDto.getColServicoContrato().isEmpty()) {
ServContratoCatalogoServDTO item = null;
// varre a lista de servi�os
for (int i = 0; i < catalogoServicoDto.getColServicoContrato().size(); i++) {
item = catalogoServicoDto.getColServicoContrato().get(i);
item.setIdCatalogoServico(catalogoServicoDto.getIdCatalogoServico());
// grava cada item da lista
servContratoCatalogoServDao.create(item);
}
}
infoCatalogoServicoDao.deleteByIdInfoCatalogo(catalogoServicoDto);
if (catalogoServicoDto.getColInfoCatalogoServico() != null && !catalogoServicoDto.getColInfoCatalogoServico().isEmpty()) {
InfoCatalogoServicoDTO item = null;
// varre a lista de servi�os
for (int i = 0; i < catalogoServicoDto.getColInfoCatalogoServico().size(); i++) {
item = catalogoServicoDto.getColInfoCatalogoServico().get(i);
item.setIdCatalogoServico(catalogoServicoDto.getIdCatalogoServico());
// grava cada item da lista
infoCatalogoServicoDao.create(item);
}
}
tc.commit();
} catch (final Exception e) {
e.printStackTrace();
this.rollbackTransaction(tc, e);
} finally {
try {
tc.close();
} catch (final Exception e) {
e.printStackTrace();
}
}
}
@Override
public IDto restore(final IDto model) throws ServiceException, LogicException {
CatalogoServicoDTO catalogoServicoDto = null;
final CatalogoServicoDao dao = this.getDao();
try {
catalogoServicoDto = (CatalogoServicoDTO) dao.restore(model);
final ServContratoCatalogoServDTO servContratoCatalogoServDTO = new ServContratoCatalogoServDTO();
// SERVCONTRATOCATALOGOSERVICO
servContratoCatalogoServDTO.setIdCatalogoServico(catalogoServicoDto.getIdCatalogoServico());
catalogoServicoDto.setColServicoContrato(new ArrayList(this.getServContratoCatalogoServDao().findByIdCatalogo(servContratoCatalogoServDTO)));
final InfoCatalogoServicoDTO infoCatalogoServicoDTO = new InfoCatalogoServicoDTO();
infoCatalogoServicoDTO.setIdCatalogoServico(catalogoServicoDto.getIdCatalogoServico());
catalogoServicoDto.setColInfoCatalogoServico(new ArrayList(this.getInfoCatalogoServicoDao().findByIdInfoCatalogo(infoCatalogoServicoDTO)));
} catch (final Exception e) {
e.printStackTrace();
throw new ServiceException(e);
}
return catalogoServicoDto;
}
private InfoCatalogoServicoDao infoCatalogoServicoDao;
private ServContratoCatalogoServDao servContratoCatalogoServDao;
private ServContratoCatalogoServDao getServContratoCatalogoServDao() {
if (servContratoCatalogoServDao == null) {
servContratoCatalogoServDao = new ServContratoCatalogoServDao();
}
return servContratoCatalogoServDao;
}
private InfoCatalogoServicoDao getInfoCatalogoServicoDao() {
if (infoCatalogoServicoDao == null) {
infoCatalogoServicoDao = new InfoCatalogoServicoDao();
}
return infoCatalogoServicoDao;
}
@Override
public Collection<CatalogoServicoDTO> listAllCatalogos() throws ServiceException, Exception {
return this.getDao().listAllCatalogos();
}
@Override
public boolean verificaSeCatalogoExiste(final CatalogoServicoDTO catalogoServicoDTO) throws PersistenceException, ServiceException {
return this.getDao().verificaSeCatalogoExiste(catalogoServicoDTO);
}
@Override
public Collection<CatalogoServicoDTO> listByIdContrato(final Integer idContrato) throws ServiceException, Exception {
return this.getDao().listByIdContrato(idContrato);
}
}