/**
* CentralIT - CITSmart
*/
package br.com.centralit.citcorpore.negocio;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import br.com.centralit.citcorpore.bean.CategoriaServicoDTO;
import br.com.centralit.citcorpore.integracao.CategoriaServicoDao;
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.util.UtilStrings;
@SuppressWarnings({"rawtypes", "unchecked"})
public class CategoriaServicoServiceEjb extends CrudServiceImpl implements CategoriaServicoService {
private CategoriaServicoDao dao;
@Override
protected CategoriaServicoDao getDao() {
if (dao == null) {
dao = new CategoriaServicoDao();
}
return dao;
}
@Override
public Collection listCategoriasAtivas() throws Exception {
return this.getDao().listCategoriasAtivas();
}
public Collection list(final List ordenacao) throws LogicException, ServiceException {
return null;
}
public Collection list(final String ordenacao) throws LogicException, ServiceException {
return null;
}
@Override
public boolean verificarSeCategoriaPossuiServicoOuSubCategoria(final CategoriaServicoDTO categoriaServico) throws PersistenceException, ServiceException {
if (this.getDao().verificarSeCategoriaPossuiFilho(categoriaServico) || this.getDao().verificarSeCategoriaPossuiServico(categoriaServico)) {
return true;
} else {
return false;
}
}
@Override
public boolean verificarSeCategoriaExiste(final CategoriaServicoDTO categoriaServicoDTO) throws PersistenceException, ServiceException {
return this.getDao().verificarSeCategoriaExiste(categoriaServicoDTO);
}
@Override
public Collection listHierarquia() throws Exception {
final Collection colFinal = new ArrayList();
try {
final Collection col = this.getDao().findSemPai();
if (col != null) {
for (final Iterator it = col.iterator(); it.hasNext();) {
final CategoriaServicoDTO dto = (CategoriaServicoDTO) it.next();
dto.setNivel(0);
colFinal.add(dto);
final Collection colAux = this.getCollectionHierarquia(dto.getIdCategoriaServico(), 0);
if (colAux != null && colAux.size() > 0) {
colFinal.addAll(colAux);
}
}
}
return colFinal;
} catch (final Exception e) {
throw new ServiceException(e);
}
}
public Collection getCollectionHierarquia(final Integer idUnidade, final Integer nivel) throws Exception {
final Collection col = this.getDao().findByIdPai(idUnidade);
final Collection colFinal = new ArrayList();
if (col != null) {
for (final Iterator it = col.iterator(); it.hasNext();) {
final CategoriaServicoDTO dto = (CategoriaServicoDTO) it.next();
dto.setNivel(nivel + 1);
colFinal.add(dto);
final Collection colAux = this.getCollectionHierarquia(dto.getIdCategoriaServico(), dto.getNivel());
if (colAux != null && colAux.size() > 0) {
colFinal.addAll(colAux);
}
}
}
return colFinal;
}
@Override
public List<CategoriaServicoDTO> listCategoriaHierarquia(final CategoriaServicoDTO categoriaServicoDTO, final List<CategoriaServicoDTO> listCategoriaHierarquia)
throws Exception {
CategoriaServicoDTO bean = new CategoriaServicoDTO();
listCategoriaHierarquia.add(categoriaServicoDTO);
if (categoriaServicoDTO.getIdCategoriaServicoPai() != null) {
bean.setIdCategoriaServico(categoriaServicoDTO.getIdCategoriaServicoPai());
bean = (CategoriaServicoDTO) this.getDao().restore(bean);
if (bean.getIdCategoriaServicoPai() != null) {
this.listCategoriaHierarquia(bean, listCategoriaHierarquia);
} else {
listCategoriaHierarquia.add(bean);
}
}
return listCategoriaHierarquia;
}
@Override
public String verificaIdCategoriaServico(final HashMap mapFields) throws Exception {
List<CategoriaServicoDTO> listaCategoriaServico = null;
final String id = mapFields.get("IDCATEGORIASERVICO").toString().trim();
if (id == null || id.equals("")) {
return "0";
}
if (UtilStrings.soContemNumeros(id)) {
final Integer idCategoriaServico = Integer.parseInt(id);
listaCategoriaServico = this.getDao().findByIdCategoriaServico(idCategoriaServico);
} else {
listaCategoriaServico = this.getDao().findByNomeCategoria(id);
}
if (listaCategoriaServico != null && listaCategoriaServico.size() > 0) {
return String.valueOf(listaCategoriaServico.get(0).getIdCategoriaServico());
} else {
return "0";
}
}
}