/** * Obtém a hierarquia superior da opção desejada (incluindo ela) * * @param objAtributoTalentoOpcao Opção de atributo de talento desejada * @return List Contendo os registros * @throws CDException se ocorrer algum erro relacionado ao negócio */ public List obterAtributoTalentoOpcaoHierarquiaSuperior( AtributoTalentoOpcao objAtributoTalentoOpcao) throws CDException { if (log.isDebugEnabled()) { log.debug("Entrada no metodo"); } // Instancia DAO e obtém o registro pela chave AtributoTalentoOpcaoDAO objAtributoTalentoOpcaoDAO = new AtributoTalentoOpcaoDAO(); AtributoTalentoOpcaoFacade objAtributoTalentoOpcaoFacade = new AtributoTalentoOpcaoFacade(); List lstAtributoTalentoOpcoesHierarquiaSuperior = new ArrayList(); try { objAtributoTalentoOpcao = (AtributoTalentoOpcao) objAtributoTalentoOpcaoDAO.obterPelaChave( String.valueOf(objAtributoTalentoOpcao.getIdentificador())); lstAtributoTalentoOpcoesHierarquiaSuperior = objAtributoTalentoOpcaoFacade.obterHierarquiaSuperior(objAtributoTalentoOpcao); lstAtributoTalentoOpcoesHierarquiaSuperior.add(objAtributoTalentoOpcao); } catch (Exception daoe) { CDException.dispararExcecao(daoe); } finally { DAO.desconectar(); } return lstAtributoTalentoOpcoesHierarquiaSuperior; }
/** * Obtém uma opção de talento a partir da chave * * @param strChave Chave do registro a ser obtido * @return AtributoTalentoOpcao POJO representando o registro obtido * @throws CDException se ocorrer algum erro relacionado ao negócio */ public AtributoTalentoOpcao obterAtributoTalentoOpcaoPelaChave(String strChave) throws CDException { if (log.isDebugEnabled()) { log.debug("Entrada no metodo"); } // Instancia DAO e obtém o registro pela chave AtributoTalentoOpcaoDAO objAtributoTalentoOpcaoDAO = new AtributoTalentoOpcaoDAO(); AtributoTalentoOpcao objAtributoTalentoOpcao = null; try { objAtributoTalentoOpcao = (AtributoTalentoOpcao) objAtributoTalentoOpcaoDAO.obterPelaChave(strChave); } catch (Exception daoe) { CDException.dispararExcecao(daoe); } finally { DAO.desconectar(); } return objAtributoTalentoOpcao; }
private void incluirValoracoes(Talento objTalento, List lstAtributosTalentoValorados) throws CDException { // Declarações CategoriaAtributoTalentoDAO objCategoriaAtributoTalentoDAO = new CategoriaAtributoTalentoDAO(); AtributoTalentoOpcaoDAO objAtributoTalentoOpcaoDAO = new AtributoTalentoOpcaoDAO(); AtributoTalentoValoradoDAO objAtributoTalentoValoradoDAO = new AtributoTalentoValoradoDAO(); try { // Inclui valorações Iterator itrAtributosTalentoValorados = lstAtributosTalentoValorados.iterator(); while (itrAtributosTalentoValorados.hasNext()) { // Obtém valoração AtributoTalentoValorado objAtributoTalentoValorado = (AtributoTalentoValorado) itrAtributosTalentoValorados.next(); // INICIO - Lucene no Banco de Talentos if (objAtributoTalentoValorado.getValoracao() == null || "".equals(objAtributoTalentoValorado.getValoracao())) { continue; } // FIM - Lucene no Banco de Talentos // Seta talento objAtributoTalentoValorado.setTalento(objTalento); // Obtém categoria/atributo relacionado CategoriaAtributoTalento objCategoriaAtributoTalento = (CategoriaAtributoTalento) objCategoriaAtributoTalentoDAO.obterPelaChave( String.valueOf( objAtributoTalentoValorado .getCategoriaAtributoTalento() .getIdentificador())); // INICIO - Lucene no Banco de Talentos objAtributoTalentoValorado.setCategoriaAtributoTalento(objCategoriaAtributoTalento); // Obtem o AtributoTalento correspondente a CategoriaAtributoTalento porque sera necessario // usar no Lucene depois // objCategoriaAtributoTalentoDAO.inicializarAtributoTalento(objAtributoTalentoValorado.getCategoriaAtributoTalento()); // O codigo acima tambem nao funcionou, mas neste caso pode ser porque nem mesmo o id de // AtributoTalento estava na classe CategoriaAtributoTalento // Para resolver alterei o mapeamento e tornei o atributo AtributoTalento não lazy na classe // CategoriaAtributoTalento // FIM - Lucene no Banco de Talentos // Verifica o nome do atributo de talento String strNomeCampo; if (objCategoriaAtributoTalento.getApelido() == null || "".equals(objCategoriaAtributoTalento.getApelido())) { strNomeCampo = objCategoriaAtributoTalento.getAtributoTalento().getNome(); } else { // TODO Analisar se deve prevalecer o código do Christian que está abaixo // strNomeCampo = objAtributoTalentoValorado.getCategoriaAtributoTalento().getApelido(); strNomeCampo = objCategoriaAtributoTalento.getApelido(); } // Trata atributo virtual if (GerenciadorAtributoVirtual.isAtributoVirtual( objCategoriaAtributoTalento.getAtributoTalento().getNome())) { // se for um atributo virtual já tem que ir direto para inclusão } // Verifica se a categoria/atributo recebido tem opções, e se tiver, cria o objeto // AtributoTalentoOpcao // e o relaciona, se não tiver, valida o tipo de dado else if ("U" .equals( objCategoriaAtributoTalento .getAtributoTalento() .getTipoHTML() .getMultiplicidade()) || "M" .equals( objCategoriaAtributoTalento .getAtributoTalento() .getTipoHTML() .getMultiplicidade())) { if (objAtributoTalentoValorado.getValoracao() != null && !"".equals(objAtributoTalentoValorado.getValoracao())) { AtributoTalentoOpcao objAtributoTalentoOpcao = new AtributoTalentoOpcao(); objAtributoTalentoOpcao.setIdentificador( Integer.valueOf(objAtributoTalentoValorado.getValoracao())); objAtributoTalentoOpcao = (AtributoTalentoOpcao) objAtributoTalentoOpcaoDAO.obterPelaChave( String.valueOf(objAtributoTalentoOpcao.getIdentificador())); objAtributoTalentoValorado.setAtributoTalentoOpcao(objAtributoTalentoOpcao); objAtributoTalentoValorado.setValoracao(objAtributoTalentoOpcao.getDescricao()); } } else { // Valida o tipo de dado if ("T".equals(objCategoriaAtributoTalento.getAtributoTalento().getTipoDado())) { if (objCategoriaAtributoTalento.getAtributoTalento().getMascara() != null && !"".equals(objCategoriaAtributoTalento.getAtributoTalento().getMascara()) && objAtributoTalentoValorado.getValoracao() != null && !"".equals(objAtributoTalentoValorado.getValoracao())) { if (!ExpressaoRegular.validar( objCategoriaAtributoTalento.getAtributoTalento().getMascara(), objAtributoTalentoValorado.getValoracao())) { throw new CDException("O atributo " + strNomeCampo + " deve ser numérico"); } } } if ("N".equals(objCategoriaAtributoTalento.getAtributoTalento().getTipoDado())) { if (objAtributoTalentoValorado.getValoracao() != null && !"".equals(objAtributoTalentoValorado.getValoracao()) && !Numero.validarNumero(objAtributoTalentoValorado.getValoracao())) { throw new CDException("O atributo " + strNomeCampo + " deve ser numérico"); } } if ("D".equals(objCategoriaAtributoTalento.getAtributoTalento().getTipoDado())) { if (objAtributoTalentoValorado.getValoracao() != null && !"".equals(objAtributoTalentoValorado.getValoracao()) && (objAtributoTalentoValorado.getValoracao().trim().length() != 10 || !DataNova.validarData(objAtributoTalentoValorado.getValoracao()))) { throw new CDException("O atributo " + strNomeCampo + " deve ser uma data válida"); } } } // Inclui valoração objAtributoTalentoValoradoDAO.incluir(objAtributoTalentoValorado); // INICIO - Lucene no Banco de Talentos // Trata insercao no Lucene // Se der algum problema, a transacao no banco vai continuar e um log com o // erro no Lucene será gerado IndexaTalento idx = null; try { // Tenta excluir campos do tipo "D"ata e "N"umero // Nem sempre o tipo de dado esta preenchido if (objAtributoTalentoValorado .getCategoriaAtributoTalento() .getAtributoTalento() .getTipoDado() == null || "T" .equals( objAtributoTalentoValorado .getCategoriaAtributoTalento() .getAtributoTalento() .getTipoDado())) { // Incluir no Lucene idx = IndexaTalento.getInstance(); idx.addTalento( objTalento.getPessoa().getIdentificador().toString(), objAtributoTalentoValorado.getValoracao()); } } catch (IOException e) { if (log.isErrorEnabled()) { log.error(e); } } finally { if (idx != null) { try { idx.close(); } catch (Exception e) { } } } // FIM - Lucene no Banco de Talentos } } catch (Exception daoe) { DAO.desfazerTransacao(); CDException.dispararExcecao(daoe); } finally { DAO.desconectar(); } }