controller.ProdutoController.java Source code

Java tutorial

Introduction

Here is the source code for controller.ProdutoController.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package controller;

import java.awt.HeadlessException;
import java.math.BigDecimal;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.swing.JOptionPane;
import model.InterfaceProduto;
import model.Produto;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import util.HibernateUtil;

/**
 *
 * @author thales
 */
public abstract class ProdutoController {

    private Produto produto;

    public ProdutoController() {

    }

    public void salvarProduto() {
        SessionFactory sf = HibernateUtil.getSessionFactory();
        Session s = sf.openSession();
        Transaction tx = s.beginTransaction();

        try {
            s.save(this.produto);
            tx.commit();
            JOptionPane.showMessageDialog(null, "Produto Inserido com Sucesso!");
        } catch (HeadlessException e) {
            JOptionPane.showMessageDialog(null, "Erro ao inserir os dados: " + e.getMessage());
            tx.rollback();
        }

        s.close();

    }

    public void atualizarProduto() {
        SessionFactory sf = HibernateUtil.getSessionFactory();
        Session s = sf.openSession();
        Transaction tx = s.beginTransaction();

        try {
            s.merge(this.produto);
            tx.commit();
            JOptionPane.showMessageDialog(null, "Produto Atualizado com Sucesso!");
        } catch (HeadlessException e) {
            JOptionPane.showMessageDialog(null, "Erro ao atualizar os dados: " + e.getMessage());
            tx.rollback();
        }

        s.close();

    }

    public void deletarProduto() {
        SessionFactory sf = HibernateUtil.getSessionFactory();
        Session s = sf.openSession();
        Transaction tx = s.beginTransaction();

        try {
            s.delete(this.produto);
            tx.commit();
            JOptionPane.showMessageDialog(null, "Produto Deletado com Sucesso!");
        } catch (HeadlessException e) {
            JOptionPane.showMessageDialog(null, "Erro ao Deletar os dados: " + e.getMessage());
            tx.rollback();
        }

        s.close();

    }

    public Produto buscarUltimoProduto() {

        try {

            EntityManagerFactory factory = Persistence.createEntityManagerFactory("sistemarf-hPU");
            EntityManager em = factory.createEntityManager();
            Query q = em.createNamedQuery("Produto.findLastValue");
            q.setMaxResults(1);
            Produto p = (Produto) q.getSingleResult();

            em.close();
            factory.close();
            return p;

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Erro ao buscar o ultimo produto: " + e.getMessage());
        }
        return null;
    }

    public Produto buscarProduto(int id) {
        try {

            EntityManagerFactory factory = Persistence.createEntityManagerFactory("sistemarf-hPU");
            EntityManager em = factory.createEntityManager();
            Query q = em.createNamedQuery("Produto.findByIdProduto");
            q.setParameter("idProduto", id);
            q.setMaxResults(1);
            Produto p = (Produto) q.getSingleResult();

            em.close();
            factory.close();

            return p;

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Erro ao buscar um produto: " + e.getMessage());
        }
        return null;
    }

    public Produto criarProduto(String nome, String descricao) {
        Produto p = new Produto();
        p.setNome(nome);
        p.setDescricao(descricao);
        return p;
    }

    public List buscarTodosProdutos() {
        SessionFactory sf = HibernateUtil.getSessionFactory();
        Session s = sf.openSession();

        try {
            List<Produto> lista = s.createCriteria(Produto.class).list();
            s.close();

            return lista;

        } catch (HibernateException e) {
            JOptionPane.showMessageDialog(null, "Erro ao listar os dados: " + e.getMessage());
        }

        return null;
    }

    public abstract void salvarHerdeiro();

    public abstract void atualizarHerdeiro();

    public abstract void deletarHerdeiro();

    public abstract InterfaceProduto buscarHerdeiro(int id);

    public abstract List buscarTodosHerdeiros();

    /*
     * 
     * PH? -> Parametro do herdeiro
     * Doce -> Possui 2 | AluguelPeca -> Possui 1
     * Futuramente colocar uma imagem
    */
    public abstract void criarHerdeiro(Produto produto, int idProduto, BigDecimal ph1, Integer ph2);

    public Produto getProduto() {
        return produto;
    }

    public void setProduto(Produto produto) {
        this.produto = produto;
    }

}