DepartamentoProdutoDAO editar arquivo

0:00 / 0:00

Primeira edição da sequência DELETE. O DAO, que até agora só tinha o daoList, ganha UM método a mais: daoDelete. Uma única linha de lógica que usa o framework pra executar um DELETE pelo ID.

CÓDIGO COMPLETO
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 daoDelete(DepartamentoProdutoBean bean) throws Exception {
        delete().execute(bean, DepartamentoProdutoBean.TABLE);
    }

}

Mudança nesta sequência: somente o método daoDelete (verde). Tudo o mais já existia da sequência CRUD READ.

Como o framework sabe a coluna do WHERE?

Via reflection. O delete().execute(bean, TABLE) inspeciona o Bean procurando um getter com a anotação @DBInfo(pk=true). Encontra o getId_produto(). A partir daí, monta automaticamente:

DELETE FROM departamento.produto WHERE id_produto = ?

E passa o valor de bean.getId_produto() como parâmetro. O chamador (DeleteFromList no próximo arquivo) só precisa criar uma ficha em branco e colocar o ID nela — todo o resto é o framework.

Tratamento de erro — throws Exception

O DAO NÃO captura exceções aqui. Dois erros comuns deixam subir:

  • SQLConstraintException — quando outra tabela tem uma FK apontando pra este registro. A DeleteFromList captura especificamente pra mostrar Toast amigável.
  • Outros erros (conexão caiu, query inválida) — sobem pro ErrorFilter global que mostra tela amigável.

Divisão clara: DAO só fala com o banco, tratamento fica com quem chama.