/**
* CentralIT - CITCorpore.
*
* @author CentralIT
*/
package br.com.centralit.citcorpore.negocio;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import br.com.centralit.citcorpore.bean.CaracteristicaDTO;
import br.com.centralit.citcorpore.bean.ValorDTO;
import br.com.centralit.citcorpore.integracao.CaracteristicaDao;
import br.com.centralit.citcorpore.integracao.CaracteristicaTipoItemConfiguracaoDAO;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.citframework.excecao.LogicException;
import br.com.citframework.excecao.PersistenceException;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.CrudServiceImpl;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.UtilDatas;
/**
* EJB de Caracter�stica Service.
*
* @author valdoilo.damasceno
*
*/
public class CaracteristicaServiceEjb extends CrudServiceImpl implements CaracteristicaService {
private CaracteristicaDao dao;
@Override
protected CaracteristicaDao getDao() {
if (dao == null) {
dao = new CaracteristicaDao();
}
return dao;
}
@Override
public void create(final CaracteristicaDTO caracteristica, final HttpServletRequest request) throws ServiceException, LogicException {
/*
* Retirado da rotina para valida��o da pink elephant caracteristica.setSistema("N");
* Acrescentado novamente por apresentar erro ao gravar caracter�stica. No Oracle, campo n�o pode ser Null.
*/
caracteristica.setSistema("N");
caracteristica.setNome(caracteristica.getNome().replaceAll("[<>]", ""));
caracteristica.setTag(caracteristica.getTag().replaceAll("[<>]", ""));
caracteristica.setDataInicio(UtilDatas.getDataAtual());
caracteristica.setTipo("");
caracteristica.setIdEmpresa(WebUtil.getIdEmpresa(request));
super.create(caracteristica);
}
@Override
public void excluirCaracteristica(final CaracteristicaDTO caracteristica) throws ServiceException, Exception {
if (this.getCaracteristicaTipoItemConfiguracaoDao().existeAssociacaoComCaracteristica(caracteristica.getIdCaracteristica(), null)) {
throw new LogicException("Caracter�stica n�o pode ser exclu�da!");
} else {
caracteristica.setDataFim(UtilDatas.getDataAtual());
super.update(caracteristica);
}
}
@SuppressWarnings({ "unchecked"})
@Override
public Collection<CaracteristicaDTO> consultarCaracteristicasAtivas(final Integer idTipoItemConfiguracao) throws ServiceException {
try {
return this.getDao().consultarCaracteristicasAtivas(idTipoItemConfiguracao);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@SuppressWarnings({ "unchecked"})
@Override
public Collection<CaracteristicaDTO> consultarCaracteristicasAtivas(final Integer idTipoItemConfiguracao, final String[] arrCaracteristicas) throws ServiceException {
try {
return this.getDao().consultarCaracteristicasAtivas(idTipoItemConfiguracao, arrCaracteristicas);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
/*
* (non-Javadoc)
* @see br.com.centralit.citcorpore.negocio.CaracteristicaService# consultarCaracteristicasComValores(java.lang.Integer, java.lang.Integer)
*/
@Override
public Collection<CaracteristicaDTO> consultarCaracteristicasComValores(final Integer idTipoItemConfiguracao, final Integer idBaseItemConfiguracao) throws LogicException,
ServiceException, Exception {
final Collection<CaracteristicaDTO> caracteristicas = this.consultarCaracteristicasAtivas(idTipoItemConfiguracao);
for (final CaracteristicaDTO caracteristica : caracteristicas) {
final ValorDTO valor = this.getValorService().restore(idBaseItemConfiguracao, caracteristica.getIdCaracteristica());
if (valor != null && valor.getValorStr() != null) {
caracteristica.setValorString(valor.getValorStr());
}
}
return caracteristicas;
}
/*
* (non-Javadoc)
* @see br.com.centralit.citcorpore.negocio.CaracteristicaService# consultarCaracteristicasComValores(java.lang.Integer, java.lang.Integer)
*/
@Override
public Collection<CaracteristicaDTO> consultarCaracteristicasComValoresItemConfiguracao(final Integer idTipoItemConfiguracao, final Integer idItemConfiguracao)
throws LogicException, ServiceException, Exception {
final Collection<CaracteristicaDTO> caracteristicas = this.consultarCaracteristicasAtivas(idTipoItemConfiguracao);
if (caracteristicas != null) {
for (final CaracteristicaDTO caracteristica : caracteristicas) {
final ValorDTO valor = this.getValorService().restoreItemConfiguracao(idItemConfiguracao, caracteristica.getIdCaracteristica());
if (valor != null && valor.getValorStr() != null) {
caracteristica.setValorString(valor.getValorStr());
}
}
}
return caracteristicas;
}
@Override
public Collection<CaracteristicaDTO> consultarCaracteristicasComValoresItemConfiguracao(final Integer idTipoItemConfiguracao, final Integer idItemConfiguracao,
final String[] arr) throws LogicException, ServiceException, Exception {
final Collection<CaracteristicaDTO> caracteristicas = this.consultarCaracteristicasAtivas(idTipoItemConfiguracao, arr);
if (caracteristicas != null) {
for (final CaracteristicaDTO caracteristica : caracteristicas) {
final ValorDTO valor = this.getValorService().restoreItemConfiguracao(idItemConfiguracao, caracteristica.getIdCaracteristica());
if (valor != null && valor.getValorStr() != null) {
caracteristica.setValorString(valor.getValorStr());
}
}
}
return caracteristicas;
}
/**
* Retorna Service de Valor.
*
* @return ValorService
* @throws ServiceException
* @throws Exception
* @author valdoilo.damasceno
*/
public ValorService getValorService() throws ServiceException, Exception {
return (ValorService) ServiceLocator.getInstance().getService(ValorService.class, null);
}
/**
* Retorna DAO de CaracteristicaTipoItemConfiguracao.
*
* @return CaracteristicaTipoItemConfiguracaoDAO
* @author VMD
*/
public CaracteristicaTipoItemConfiguracaoDAO getCaracteristicaTipoItemConfiguracaoDao() {
return new CaracteristicaTipoItemConfiguracaoDAO();
}
@Override
public boolean verificarSeCaracteristicaExiste(final CaracteristicaDTO caracteristica) throws PersistenceException {
return this.getDao().verificarSeCaracteristicaExiste(caracteristica);
}
}