Cursor não atualiza registros no banco - JSF + ICEFces

3 respostas
S

Boa noite pessoal.

Estou desenvolvendo um sistema em JSF + Icefaces.

Exibo os dados na pagina através de um metodo List e um dos campos fica passivel de edição. Criei no meu bean um cursor para atualizar os dados exibidos na alterados na pagina. O problema é que quando salvo os dados, apenas parte das informações submetidas são atualizadas no meu banco de dados.

Criei então um metodo de log na minha classe DAO para tentar ver se era algum problema relacionado a data e inclui a chamada a este método dentro do cursor. Verifiquei que as datas estão ok, e que todos os registros da página passam pelo cursor (pois foram geradas linhas de log), mas mesmo assim meus registros não são atualizados.

Vocês tem idéia do que pode estar causando o problema?

Abaixo, meu código:

Classe DAO

package sigaeweb.DAO;

import sigaeweb.db.DataBaseUtil;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;
import sigaeweb.db.RelCardapioTensino;
import sigaeweb.db.UsuarioSis;

/**
 *
 * @author Viviane
 */
public class RelCardapioTensinoDAO extends DataBaseUtil {

        private static final long serialVersionUID = 1L;
        private CardapioDAO cardDAO = new CardapioDAO();
        private TipoEnsinoDAO tensDAO = new TipoEnsinoDAO();
        private TipoCardapioDAO tcarDAO = new TipoCardapioDAO();
        private PeriodoEscolaDAO pescDAO = new PeriodoEscolaDAO();
        private PeriodoCardapioDAO pecarDAO = new PeriodoCardapioDAO();
        private UsuarioSis usis;

    public RelCardapioTensinoDAO() {
        super();
    }

    public boolean delete(RelCardapioTensino rcet) throws ClassNotFoundException, SQLException {
        PreparedStatement ps = (PreparedStatement) getPreparedStatement ("DELETE SIGAE.REL_CARDAPIO_TENSINO WHERE ID_TIPO_ENSINO = ? AND DATA = ? AND ID_PERIODO = ?");
        ps.setInt(1, rcet.getTipoEnsino().getIdTipoEnsino());
        ps.setDate(2, new java.sql.Date (rcet.getData().getTime()));
        ps.setInt(3, rcet.getPeriodoEscola().getIdPeriodo());
        ps.setInt(4, rcet.getPeriodoCardapio().getIdPeriodoCard());
        int toReturn = ps.executeUpdate();
        ps.close();
        return toReturn > 0;
    }

    public List<RelCardapioTensino> getAllRelCardapioEscTE() throws ClassNotFoundException, SQLException {
        List<RelCardapioTensino> toReturn = new LinkedList<RelCardapioTensino>();
        ResultSet rs = getStatement().executeQuery("SELECT * FROM SIGAE.REL_CARDAPIO_TENSINO");
        while (rs.next()) {
            RelCardapioTensino rcet = new RelCardapioTensino();
            populateRelCardapioEscTE(rcet, rs);
            toReturn.add(rcet);
        }
        return toReturn;
    }

    public RelCardapioTensino getById(int idTens, java.sql.Date data, int idPer, int idPerCard) throws SQLException, ClassNotFoundException {
        PreparedStatement ps = (PreparedStatement) getPreparedStatement("SELECT * FROM SIGAE.REL_CARDAPIO_TENSINO WHERE AND ID_TIPO_ENSINO = ? AND DATA = ? AND ID_PERIODO = ? AND ID_PERIODO_CARD = ?");
        ps.setInt(1, idTens);
        ps.setDate(2, data);
        ps.setInt(3, idPer);
        ps.setInt(4, idPerCard);
        ResultSet rs = ps.executeQuery();
        if (!rs.next()) return null;
        RelCardapioTensino toReturn = new RelCardapioTensino();
        populateRelCardapioEscTE(toReturn, rs);
        rs.close();
        ps.close();
        return toReturn;
    }

    private void populateRelCardapioEscTE(RelCardapioTensino rcet, ResultSet rs) throws SQLException, ClassNotFoundException {
        rcet.setCardapio(cardDAO.getById(rs.getInt("ID_CARDAPIO")));
        rcet.setTipoEnsino(tensDAO.getById(rs.getInt("ID_TIPO_ENSINO")));
        rcet.setTipoCardapio(tcarDAO.getById(rs.getInt("ID_TIPO_CARDAPIO")));
        rcet.setPeriodoEscola(pescDAO.getById(rs.getInt("ID_PERIODO")));
        rcet.setPeriodoCardapio(pecarDAO.getById(rs.getInt("ID_PERIODO_CARD")));
        rcet.setData(rs.getDate("DATA"));
    }

    public boolean set(RelCardapioTensino rcce) throws ClassNotFoundException, SQLException {
        PreparedStatement ps = (PreparedStatement) getPreparedStatement("UPDATE SIGAE.REL_CARDAPIO_TENSINO SET ID_CARDAPIO = ? WHERE ID_TIPO_CARDAPIO = ? AND ID_TIPO_ENSINO = ? AND DATA = ? AND ID_PERIODO = ? AND ID_PERIODO_CARD = ?");
        ps.setInt(1, rcce.getCardapio().getIdCardapio());
        ps.setInt(2, rcce.getCardapio().getTipoCardapio().getIdTipoCardapio());
        ps.setInt(3, rcce.getTipoEnsino().getIdTipoEnsino());
        ps.setDate(4, new java.sql.Date(rcce.getData().getTime()));
        ps.setInt(5, rcce.getPeriodoEscola().getIdPeriodo());
        ps.setInt(6, rcce.getPeriodoCardapio().getIdPeriodoCard());
        int toReturn = ps.executeUpdate();
        ps.close();
        return toReturn > 0;
    }

    public List<RelCardapioTensino> getRelCardapioTensinoByPcard(int idPerCard) throws ClassNotFoundException, SQLException {
        List<RelCardapioTensino> toReturn = new LinkedList<RelCardapioTensino>();
        PreparedStatement ps = (PreparedStatement) getPreparedStatement("SELECT * FROM SIGAE.REL_CARDAPIO_TENSINO WHERE ID_PERIODO_CARD = ?");
        ps.setInt(1, idPerCard);
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {
            RelCardapioTensino rcet = new RelCardapioTensino();
            populateRelCardapioEscTE(rcet, rs);
            toReturn.add(rcet);
        }
        return toReturn;
    }

    public boolean addLog(RelCardapioTensino rcce) throws ClassNotFoundException, SQLException {
        PreparedStatement ps = (PreparedStatement) getPreparedStatement ("INSERT INTO SIGAE.LOG_PROCESSO (DATA, USUARIO, TEXT) " +
                "SELECT SYSDATE, " +
                "       'SIGAE', " +
                "       'ID_CARDAPIO:' || ? || '-' || " +
                "       'ID_TIPO_CARDAPIO:' || ? || '-' || " +
                "       'ID_TIPO_ENSINO:' || ? || '-' || " +
                "       'DATA:' || ? || '-' || " +
                "       'PERIODO_ESCOLA:' || ? || '-' || " +
                "       'PERIODO_CARDAPIO:' || ? " +
                "FROM DUAL");
        //ps.setInt(1, card.getIdCardapio());
        //ps.setString(1, usis.getUserSys());
        ps.setInt(1, rcce.getCardapio().getIdCardapio());
        ps.setInt(2, rcce.getCardapio().getTipoCardapio().getIdTipoCardapio());
        ps.setInt(3, rcce.getTipoEnsino().getIdTipoEnsino());
        ps.setDate(4, new java.sql.Date(rcce.getData().getTime()));
        ps.setInt(5, rcce.getPeriodoEscola().getIdPeriodo());
        ps.setInt(6, rcce.getPeriodoCardapio().getIdPeriodoCard());
        int toReturn = ps.executeUpdate();
        ps.close();
        return toReturn > 0;
    }

}

Management Bean

package sigaeweb.ManagedBeans;

import sigaeweb.DAO.RelCardapioTensinoDAO;
import sigaeweb.db.RelCardapioTensino;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;
import javax.faces.model.SelectItem;
import sigaeweb.DAO.CardapioDAO;
import sigaeweb.db.Cardapio;
import sigaeweb.db.PeriodoCardapio;

public class RelCardapioTensinoFace {

    private RelCardapioTensinoDAO rceteDAO = new RelCardapioTensinoDAO();
    private CardapioDAO cardDAO = new CardapioDAO();
    private RelCardapioTensino selectedRelCardapioTensino;
    private List<RelCardapioTensino> relCardapioTensino;
    private PeriodoCardapio periodoCard;

    public RelCardapioTensinoFace() {
        System.out.println("RelCardapioTensino Face");
    }

    public String voltar() {
        selectedRelCardapioTensino = null;
        return "gotoListPeriodoCardapio";
    }

    public String finishEditRelCardapioTensino () throws SQLException, ClassNotFoundException {
        int index = 0;
        for (index = 0; index < relCardapioTensino.size(); index++) {
            selectedRelCardapioTensino = relCardapioTensino.get(index);
            rceteDAO.set(selectedRelCardapioTensino);
            rceteDAO.addLog(selectedRelCardapioTensino);
        }
        // Limpa o cache
        relCardapioTensino = null;
        return "gotoEditRelEscolaCensoEscolar";
    }

    public List<RelCardapioTensino> getRelCardapioTensinoByPecard() throws ClassNotFoundException, SQLException {
        relCardapioTensino = null;
        if (relCardapioTensino == null){
            relCardapioTensino = rceteDAO.getRelCardapioTensinoByPcard(periodoCard.getIdPeriodoCard());
        }
        return relCardapioTensino;
    }

    public RelCardapioTensino getSelectedRelCardapioTensino() {
        return selectedRelCardapioTensino;
    }

    public void setSelectedRelCardapioTensino(RelCardapioTensino selectedRelCardapioTensino) {
        this.selectedRelCardapioTensino = selectedRelCardapioTensino;
    }

    public List<SelectItem> getListCardapio() throws ClassNotFoundException, SQLException {
        List<SelectItem> toReturn = new LinkedList<SelectItem>();
        for (Cardapio ali: cardDAO.getAllCardapio()) {
            toReturn.add(new SelectItem(ali,ali.getCardapio()));
        }
        return toReturn;
    }

    public PeriodoCardapio getPeriodoCard() {
        return periodoCard;
    }

    public void setPeriodoCard(PeriodoCardapio periodoCard) {
        this.periodoCard = periodoCard;
    }

}

Pagina

<?xml version="1.0" encoding="UTF-8"?>
<!--
    Document   : SIGAEWeb1
    Created on : 24/02/2010, 11:42:41
    Author     : jose
-->
<jsp:root xmlns:ui="http://java.sun.com/jsf/facelets" version="2.1" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:ice="http://www.icesoft.com/icefaces/component">
<jsp:directive.page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"/>
<f:view>
<html>
<head>
    <title>SIGAE - ajustar cardapio do periodo</title>
</head>

<body  bgcolor="#E6FEFF">
    <ui:include src="menu.jspx"></ui:include>
        <br/><br/><br/>
        <div style="font-family: Arial, Helvetica, sans-serif; font-size: 14pt;" align="center">AJUSTE DE CARDAPIOS DO PERIODO</div><br/><br/>
  <ice:form>
        <ice:messages/>
        <div style="font-family: Arial, Helvetica, sans-serif; font-size: 11pt;" align="center">
            <ice:commandButton action="#{RelCardapioTensinoFace.voltar}" value="Cancelar">
            </ice:commandButton>
            <ice:commandButton action="#{RelCardapioTensinoFace.finishEditRelCardapioTensino}" value="Salvar"/><br/><br/>

            <ice:dataTable style="font-family: Arial, Helvetica, sans-serif; font-size: 11pt;" bgcolor="white" border="1" var="item" value="#{RelCardapioTensinoFace.relCardapioTensinoByPecard}">
                <ice:column>
                    <f:facet name="header">
                        <ice:outputText value="tipo ensino"/>
                    </f:facet>
                        <ice:outputText value="#{item.tipoEnsino.tipoEnsino}" style="font-family: Arial, Helvetica, sans-serif; font-size: 11pt"/>
                </ice:column>
                <ice:column>
                    <f:facet name="header">
                        <ice:outputText value="periodo escola"/>
                    </f:facet>
                        <ice:outputText value="#{item.periodoEscola.periodo}"/>
                </ice:column>
                <ice:column>
                    <f:facet name="header">
                        <ice:outputText value="periodo escola"/>
                    </f:facet>
                        <ice:outputText value="#{item.tipoCardapio.tipoCardapio}"/>
                </ice:column>
                <ice:column>
                    <f:facet name="header">
                        <ice:outputText value="data"/>
                    </f:facet>
                    <ice:outputText value="#{item.data}">
                        <f:convertDateTime/>
                    </ice:outputText>
                </ice:column>
                <ice:column>
                    <f:facet name="header">
                        <ice:outputText value="cardapio"/>
                    </f:facet>
                    <ice:selectOneMenu value="#{item.cardapio}">
                        <f:selectItems value="#{RelCardapioTensinoFace.listCardapio}"/>
                        <f:converter converterId="CardapioConversor"/>
                    </ice:selectOneMenu>
                </ice:column>
            </ice:dataTable>
        </div>
    </ice:form>
</body>
</html>
</f:view>
</jsp:root>

3 Respostas

S

Boa noite Pessoal.

Alguém tem idéia de como resolver este problema?

att:
José Luiz

S

Boa tarde Pessoal.

Alguem tem idéia de como solucionar este problema???

Att:
José Luiz

S

???

Criado 31 de agosto de 2010
Ultima resposta 29 de set. de 2010
Respostas 3
Participantes 1