DepartamentoProdutoDAO + Model editar arquivo

0:00 / 0:00

Primeira edição da sequência UPDATE. O DAO ganha dois métodos: daoSingle (carregar um registro pelo ID) e daoUpdate (gravar alterações). O Model ganha o wrapper update(bean). Três adições mínimas que seguem exatamente o mesmo padrão do daoInsert / insert da sequência anterior.

CÓDIGO COMPLETO — DAO
package br.xt.app.departamento.produto;

import br.jasap.core.AppManager;
import br.jasap.dao.Query;
import br.jasap.util.JasapList;
import br.xt.AppsRootDAO;

public class DepartamentoProdutoDAO extends AppsRootDAO {

    public DepartamentoProdutoDAO() {
    }

    public DepartamentoProdutoDAO(AppManager manager) {
        setManager(manager);
        setDataBase(manager.getDataBase());
    }

    public void daoList(JasapList list) throws Exception {
        StringBuilder sql = new StringBuilder();
        sql.append("select a.* from " + DepartamentoProdutoBean.TABLE + " a <orderby>");

        Query query = getDataBase().getQuery(sql.toString());
        select().executeList(query, list);

        while (query.next()) {
            DepartamentoProdutoBean bean = new DepartamentoProdutoBean();
            query.populateBean(bean);
            list.getList().add(bean);
        }
        query.release();
    }

    public void daoInsert(DepartamentoProdutoBean bean) throws Exception {
        insert().execute(bean, DepartamentoProdutoBean.TABLE);
    }

    // ADICIONAR
    public void daoSingle(DepartamentoProdutoBean bean) throws Exception {
        select().execute(bean, DepartamentoProdutoBean.TABLE);
    }

    public void daoUpdate(DepartamentoProdutoBean bean) throws Exception {
        update().execute(bean, DepartamentoProdutoBean.TABLE);
    }
    // FIM

    public void daoDelete(DepartamentoProdutoBean bean) throws Exception {
        delete().execute(bean, DepartamentoProdutoBean.TABLE);
    }

}

Mudanças nesta sequência: os métodos daoSingle e daoUpdate (verde). Tudo o mais já existia das sequências anteriores (READ, DELETE, CREATE).

CÓDIGO COMPLETO — Model
package br.xt.app.departamento.produto;

import br.jasap.core.AppManager;

public class DepartamentoProdutoModel extends DepartamentoProdutoDAO {

    public DepartamentoProdutoModel(AppManager manager) {
        super(manager);
    }

    public void insert(DepartamentoProdutoBean bean) throws Exception {
        daoInsert(bean);
    }

    // ADICIONAR
    public void update(DepartamentoProdutoBean bean) throws Exception {
        daoUpdate(bean);
    }
    // FIM

}

Mudança nesta sequência: somente o método update (verde). O construtor e o insert já existiam das sequências anteriores.

O que daoSingle faz? — select().execute

Enquanto o daoList carrega vários registros com SQL manual, o daoSingle carrega um só — via reflection:

select().execute(bean, DepartamentoProdutoBean.TABLE);

O helper select() herdado de JasapDAO inspeciona o Bean, encontra o getter marcado com @DBInfo(pk=true) (getId_produto()), e monta automaticamente:

SELECT * FROM departamento.produto WHERE id_produto = ?

O ? é preenchido com o valor que já está no Bean (bean.getId_produto()). Depois de executar, o select().execute popula todos os campos do Bean com os dados do banco — nome, valor, quantidade, observações.

Pré-requisito: o Bean precisa ter o ID preenchido ANTES de chamar daoSingle. É por isso que o ShowUpdate faz proBean().setId_produto(...) primeiro.

Padrão dos 4 helpers — select / insert / update / delete

Com o daoUpdate e o daoSingle, o DAO agora tem os 4 helpers completos do JasapDAO:

HelperMétodo no DAOO que faz via reflection
select()daoSingleSELECT * WHERE pk = ? — carrega 1 registro
insert()daoInsertINSERT INTO ... VALUES (...) — cria registro
update()daoUpdateUPDATE ... SET ... WHERE pk = ? — altera registro
delete()daoDeleteDELETE FROM ... WHERE pk = ? — remove registro

Todos funcionam do mesmo jeito: inspecionam o Bean via @DBInfo, montam o SQL automaticamente, executam. O chamador só precisa preencher o Bean — o framework cuida do resto.

A diferença do daoList é que ele usa SQL manual (StringBuilder + Query) porque precisa de JOIN, WHERE dinâmico, ordenação e paginação — coisas que o helper simples não cobre.