Olá pessoal, tudo certo?
Bem, tenho uma dataTable populada com uma lista de Objetos. Cada objeto, claro, possui vários atributos e um deles é a situação do empréstimo. Quando é setado a situação do empréstimo como Devolvido (“D”), queria que ele não aparecesse no datatable, a menos que o usuário fosse pesquisar nos filtros de consulta.
Minha dúvida é como e onde posso fazer essa validação ( se faço no xhtml mesmo ou faço no meu bean). Abaixo o dataTable.
<p:dataTableid="tabela1"value="#{emprestimosxExemplaresJsfBean.emprestimosxexemplaresList}"var="var"><p:columnheaderText="Usuário"sortBy="#{var.emxexCodemprest.empCodusuario.usuNome}">#{var.emxexCodemprest.empCodusuario.usuNome}
</p:column><p:columnheaderText="Exemplar"sortBy="#{var.emxexCodexemplar.exeExemplar}">#{var.emxexCodexemplar.exeExemplar}-#{var.emxexCodexemplar.exeacervo.aceTitulo}
</p:column><p:columnheaderText="Data do Empréstimo"sortBy="#{var.emxexCodemprest.empDtempr}"><h:outputTextvalue="#{var.emxexCodemprest.empDtempr}"/></p:column><p:columnheaderText="Situacão"sortBy="#{var.emxexSituacaoCompleta}"><h:outputTextvalue="#{var.emxexSituacaoCompleta}"/>//situaçãodoempréstimo
</p:column><p:columnheaderText="Ação"><p:commandButtonid="confirm2"disabled="#{var.emxexDtdev != null}"update="@form"value="Devolver"action="#{emprestimosxExemplaresJsfBean.devolveExemplares()}"image="exit"><f:setPropertyActionListenertarget="#{emprestimosxExemplaresJsfBean.empxex}"value="#{var}"/></p:commandButton></p:column></p:dataTable>
Beleza, eu tenho nele um método devolveExemplares(). Poderia me ajudar a fazer essa validação?
Abaixo o método:
publicvoiddevolveExemplares()throwsException{try{if(empxex.getEmxexDtdev()==null){longdias=DateUtil.daysBetween(empxex.getEmxexDtparadev(),newDate());IntegerdiasDeAtraso=(int)dias;// typecast long/intBigDecimalclcMultaDias=BigDecimal.ZERO;if(diasDeAtraso>0){BigDecimalvalorMulta=BigDecimal.ZERO;if(empxex.getEmxexCodemprest().getEmpCodusuario().getUsuCategoria().equals("A")){valorMulta=empxex.getEmxexCodemprest().getEmpCodbiblio().getBibVlrmulaluno();}if(empxex.getEmxexCodemprest().getEmpCodusuario().getUsuCategoria().equals("N")){valorMulta=empxex.getEmxexCodemprest().getEmpCodbiblio().getBibVlrmulnormal();}if(empxex.getEmxexCodemprest().getEmpCodusuario().getUsuCategoria().equals("F")){valorMulta=empxex.getEmxexCodemprest().getEmpCodbiblio().getBibVlrmulfunc();}if(empxex.getEmxexCodemprest().getEmpCodusuario().getUsuCategoria().equals("P")){valorMulta=empxex.getEmxexCodemprest().getEmpCodbiblio().getBibVlrmulprof();}clcMultaDias=valorMulta.multiply(BigDecimal.valueOf(diasDeAtraso.longValue()));empxex.setEmxexVlrmulta(clcMultaDias);warn("Exemplar em atraso. Multa de R$"+clcMultaDias);}else{empxex.setEmxexVlrmulta(clcMultaDias);diasDeAtraso=0;info("Exemplar Devolvido com sucesso.");}empxex.setEmxexMultapaga("N");empxex.setEmxexDiasmulta(diasDeAtraso);empxex.setEmxexDtdev(newDate());empxex.setEmxexSituacao("D");salvaObjeto(empxex);e.atualizaExeSituacao(empxex.getEmxexCodexemplar(),"D");}else{warn("Exemplar já devolvido.");}}catch(Exceptionexception){fatal("Erro Grave!! ("+exception.getMessage()+")");throwexception;}}
R
Ricardo_Favero_Junio
Eu poderia fazer dentro desse método devolveExemplares() ?
drsmachado
Na verdade, você faz onde quiser.
O método mais adequado seria colocar uma cláusula na consulta ao banco de dados que retornasse todas as linhas em que a dita coluna esteja com valor diferente de ‘D’ (<> ‘D’).
Isso te pouparia o trabalho de iterar sobre a lista e analisar, item a item, se este valor é igual ou diferente de ‘D’.
Porém, se você não quiser mexer com o banco, pode criar um for no método que carrega a lista que preenche a datatable.
R
Ricardo_Favero_Junio
Bem, vou ter que fazer com iterator…Vou testar aqui e ver oque sai. Depois posto o código…
Vlw ae…
R
Ricardo_Favero_Junio
drsmachado:
Na verdade, você faz onde quiser.
O método mais adequado seria colocar uma cláusula na consulta ao banco de dados que retornasse todas as linhas em que a dita coluna esteja com valor diferente de ‘D’ (<> ‘D’).
Isso te pouparia o trabalho de iterar sobre a lista e analisar, item a item, se este valor é igual ou diferente de ‘D’.
Porém, se você não quiser mexer com o banco, pode criar um for no método que carrega a lista que preenche a datatable.
Bom dia, bem no meu domínio tenho o seguinte código:
Porém, quando seleciona todos ele dá erro, mesmo debugando não consegui descobrir. Os empréstimos devolvidos e os Emprestados estão passando nas suas listas normal. Só queria aogra fazer com que só os emprestados fossem aparecer na dataTable e quando clicar em Todos me listar todos os empréstimos.
Poderia ajudar? Vlw
V
Valeio_Bezerra
O correto mesmo seria filtrar pelo banco, mas seguro, mais pratico e fácil.
R
Ricardo_Favero_Junio
Aí vai de cada um, sei lá. No meu caso, como é o usuário que faz o filtro, tive que fazer sem utilizar esse método.
V
Valeio_Bezerra
Mesmo sendo o usuário fazendo o filtro, você tem muito mais a ganhar pesquisando no banco.
Por exemplo, se durante o vai e vem do filtro desse usuário, alguém faz um empréstimo e muda o status para ‘D’, o registro ainda vai ficar aparecendo lá.