/**
  * Lista os nomes da empresa.
  *
  * @param idEmpresa
  * @return
  * @throws Exception
  */
 public Collection listByEmpresa(Integer idEmpresa) throws Exception {
   List list = new ArrayList();
   list.add(new Order("nomeCategoriaServico"));
   CategoriaServicoDTO obj = new CategoriaServicoDTO();
   obj.setIdEmpresa(idEmpresa);
   return super.find(obj, list);
 }
  /**
   * Retorna lista de Categoria Serviço setado idPai e idFilho.
   *
   * @return Collection
   * @throws Exception
   */
  public List<CategoriaServicoDTO> listCategoriasServicoidPaiFilho(CategoriaServicoDTO bean)
      throws Exception {

    List condicao = new ArrayList();
    List ordenacao = new ArrayList();
    condicao.add(new Condition("nomeCategoriaServico", "=", bean.getNomeCategoriaServico()));
    condicao.add(new Condition("idCategoriaServicoPai", "=", bean.getIdCategoriaServicoPai()));
    return (List<CategoriaServicoDTO>) super.findByCondition(condicao, ordenacao);
  }
  /**
   * Retorna lista de Categoria Serviço por nome.
   *
   * @return Collection
   * @throws Exception
   */
  public Collection findByNomeCategoria(CategoriaServicoDTO categoriaServicoDTO) throws Exception {
    List condicao = new ArrayList();
    List ordenacao = new ArrayList();

    condicao.add(
        new Condition("nomeCategoriaServico", "=", categoriaServicoDTO.getNomeCategoriaServico()));
    ordenacao.add(new Order("nomeCategoriaServico"));

    return super.findByCondition(condicao, ordenacao);
  }
  /**
   * Verifica se categoria informada já existe.
   *
   * @param categoriaServicoDTO
   * @return true - existe; false - não existe;
   * @throws PersistenceException
   */
  public boolean verificarSeCategoriaExiste(CategoriaServicoDTO categoriaServicoDTO)
      throws PersistenceException {
    StringBuffer sql = new StringBuffer();
    List parametros = new ArrayList();

    sql.append("SELECT nomecategoriaservico FROM categoriaservico ");
    sql.append("WHERE datafim is null AND nomecategoriaservico like ?");

    parametros.add(categoriaServicoDTO.getNomeCategoriaServico());

    List categorias = execSQL(sql.toString(), parametros.toArray());

    if (categorias != null && !categorias.isEmpty()) {
      return true;
    } else {
      return false;
    }
  }
  /**
   * Verifica se Categoria possui Serviço associado
   *
   * @param categoriaServico
   * @return - <b>True:</b> Possui filho. - <b>False: </b>Não possui.
   * @throws PersistenceException
   */
  public boolean verificarSeCategoriaPossuiServico(CategoriaServicoDTO categoriaServico)
      throws PersistenceException {
    StringBuffer sql = new StringBuffer();
    List parametros = new ArrayList();

    sql.append("SELECT DISTINCT servico.nomeservico FROM categoriaservico ");
    sql.append(
        "INNER JOIN servico ON categoriaservico.idcategoriaservico = servico.idcategoriaservico ");
    sql.append("WHERE categoriaservico.idcategoriaservico = ?");
    parametros.add(categoriaServico.getIdCategoriaServico());

    List categoriasEncontradas = execSQL(sql.toString(), parametros.toArray());

    if (categoriasEncontradas != null && !categoriasEncontradas.isEmpty()) {
      return true;
    } else {
      return false;
    }
  }
  /**
   * Verifica se Categoria possui filho.
   *
   * @param categoriaServico
   * @return - <b>True:</b> Possui filho. - <b>False: </b>Não possui.
   * @throws PersistenceException
   */
  public boolean verificarSeCategoriaPossuiFilho(CategoriaServicoDTO categoriaServico)
      throws PersistenceException {
    StringBuffer sql = new StringBuffer();
    List parametros = new ArrayList();

    sql.append(
        "SELECT DISTINCT categoriafilho.nomecategoriaservico FROM categoriaservico categoriapai ");
    sql.append(
        "INNER JOIN categoriaservico categoriafilho ON categoriapai.idcategoriaservico = categoriafilho.idcategoriaservicopai ");
    sql.append("WHERE categoriapai.idcategoriaservico = ? AND categoriafilho.datafim IS NULL");
    parametros.add(categoriaServico.getIdCategoriaServico());

    List filhos = execSQL(sql.toString(), parametros.toArray());

    if (filhos != null && !filhos.isEmpty()) {
      return true;
    } else {
      return false;
    }
  }