sistemaVendas.CadastroProduto.java Source code

Java tutorial

Introduction

Here is the source code for sistemaVendas.CadastroProduto.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 sistemaVendas;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import javax.swing.JDesktopPane;
import javax.swing.JInternalFrame;
import javax.swing.JOptionPane;
import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;

/**
 *
 * @author BRUNO
 */
public class CadastroProduto extends javax.swing.JInternalFrame {

    CadastroTipo cadastroTipoProduto;
    /**
     * Creates new form CadastroProduto
     */
    JDesktopPane tela;

    public CadastroProduto(JDesktopPane telas) {
        tela = telas;
        initComponents();
        int idAtual = idVerificador();
        String id = String.valueOf(idAtual);
        txtIdProduto.setText(id);
        preencherComboBox();
    }

    public void preencherComboBox() {
        File bancoTipos = new File(diretorio, "BDtipoProduto.xml");
        try {
            SAXBuilder builder = new SAXBuilder();
            doc = builder.build(bancoTipos);
            root = (Element) doc.getRootElement();
            List<Element> tipos = root.getChildren();

            for (int i = 0; i < tipos.size(); i++) {
                Element tipo = tipos.get(i);
                cbxTipoProduto.addItem(tipo.getText());
            }
        } catch (JDOMException | IOException e) {
        }
    }

    public void atualizarComboBox() {
        cbxTipoProduto.removeAllItems();
        preencherComboBox();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        lblIDProduto = new javax.swing.JLabel();
        lblNomeProduto = new javax.swing.JLabel();
        txtNomeProduto = new javax.swing.JTextField();
        txtIdProduto = new javax.swing.JTextField();
        lblTipoProduto = new javax.swing.JLabel();
        lblQtdeEstoque = new javax.swing.JLabel();
        lblPrecoUnitProduto = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        txtDescricao = new javax.swing.JTextArea();
        txtQtdeEstoque = new javax.swing.JTextField();
        ftxtPrecoUnitProduto = new javax.swing.JFormattedTextField();
        btnCancelarProduto = new javax.swing.JButton();
        btnOkProduto = new javax.swing.JButton();
        cbxTipoProduto = new javax.swing.JComboBox();
        btnCadastroTipoProduto = new javax.swing.JButton();

        setClosable(true);
        setTitle("Cadastro de Produtos");

        lblIDProduto.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        lblIDProduto.setText("ID:");

        lblNomeProduto.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        lblNomeProduto.setText("Nome:");

        txtNomeProduto.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N

        txtIdProduto.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        txtIdProduto.setEnabled(false);

        lblTipoProduto.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        lblTipoProduto.setText("Tipo do Produto:");

        lblQtdeEstoque.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        lblQtdeEstoque.setText("Qtde Estoque:");

        lblPrecoUnitProduto.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        lblPrecoUnitProduto.setText("Preo Unitrio:");

        txtDescricao.setColumns(20);
        txtDescricao.setRows(5);
        txtDescricao.setBorder(javax.swing.BorderFactory.createTitledBorder("Descrio"));
        jScrollPane1.setViewportView(txtDescricao);

        txtQtdeEstoque.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N

        ftxtPrecoUnitProduto.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(
                new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0.00"))));

        btnCancelarProduto.setIcon(new javax.swing.ImageIcon(getClass().getResource("/img/cancel.png"))); // NOI18N
        btnCancelarProduto.setText("Cancelar");
        btnCancelarProduto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarProdutoActionPerformed(evt);
            }
        });

        btnOkProduto.setIcon(new javax.swing.ImageIcon(getClass().getResource("/img/ok.png"))); // NOI18N
        btnOkProduto.setText("OK");
        btnOkProduto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnOkProdutoActionPerformed(evt);
            }
        });

        btnCadastroTipoProduto.setText("Cadastrar Tipo do Produto");
        btnCadastroTipoProduto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCadastroTipoProdutoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup().addGap(38, 38, 38)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(layout.createSequentialGroup().addComponent(lblIDProduto)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(txtIdProduto, javax.swing.GroupLayout.PREFERRED_SIZE, 30,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addContainerGap())
                                .addGroup(layout
                                        .createSequentialGroup().addComponent(lblNomeProduto)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(txtNomeProduto).addContainerGap())
                                .addGroup(layout.createSequentialGroup()
                                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 260,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(
                                                javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addGroup(layout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                .addGroup(layout.createSequentialGroup()
                                                        .addComponent(btnCadastroTipoProduto)
                                                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                Short.MAX_VALUE))
                                                .addGroup(layout.createSequentialGroup().addComponent(btnOkProduto)
                                                        .addGap(18, 18, 18).addComponent(btnCancelarProduto)
                                                        .addGap(0, 0, Short.MAX_VALUE))))
                                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                                        .addComponent(lblTipoProduto)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(cbxTipoProduto, javax.swing.GroupLayout.PREFERRED_SIZE, 145,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(lblQtdeEstoque)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(txtQtdeEstoque, javax.swing.GroupLayout.PREFERRED_SIZE, 51,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGap(18, 18, 18).addComponent(lblPrecoUnitProduto)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(ftxtPrecoUnitProduto, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                84, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGap(0, 0, Short.MAX_VALUE)))));
        layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup().addGap(69, 69, 69)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(lblIDProduto).addComponent(txtIdProduto,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(lblNomeProduto).addComponent(txtNomeProduto,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(lblTipoProduto).addComponent(lblQtdeEstoque)
                                .addComponent(lblPrecoUnitProduto)
                                .addComponent(txtQtdeEstoque, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(ftxtPrecoUnitProduto, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(cbxTipoProduto, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(27, 27, 27).addComponent(btnCadastroTipoProduto).addGap(9, 9, 9)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 132,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 39, Short.MAX_VALUE)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(btnOkProduto).addComponent(btnCancelarProduto))
                        .addGap(23, 23, 23)));

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btnCancelarProdutoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarProdutoActionPerformed
        this.dispose();
    }//GEN-LAST:event_btnCancelarProdutoActionPerformed

    private void btnCadastroTipoProdutoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCadastroTipoProdutoActionPerformed
        cadastroTipoProduto = new CadastroTipo(tela, this);
        tela.add(cadastroTipoProduto);
        cadastroTipoProduto.setVisible(true);
    }//GEN-LAST:event_btnCadastroTipoProdutoActionPerformed

    File diretorio = new File("Bancos de Dados");
    File arquivo = new File(diretorio, "BancoProduto.xml");
    Document doc;
    Element root;

    private void btnOkProdutoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOkProdutoActionPerformed
        if (criarXml()) {
            JOptionPane.showMessageDialog(null, "DADOS SALVOS COM SUCESSO!", "Sucesso",
                    JOptionPane.INFORMATION_MESSAGE);
            txtNomeProduto.setText("");
            cbxTipoProduto.setSelectedIndex(0);
            txtQtdeEstoque.setText("");
            ftxtPrecoUnitProduto.setText("");
            txtDescricao.setText("");
            int idAtual = idVerificador();
            String id = String.valueOf(idAtual);
            txtIdProduto.setText(id);
        } else {
            JOptionPane.showMessageDialog(null, "ERRO NA GRAVAO DO ARQUIVO!", "ERRO",
                    JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_btnOkProdutoActionPerformed

    public boolean criarXml() {

        String nome = txtNomeProduto.getText().toUpperCase();
        String tipoProduto = (String) cbxTipoProduto.getSelectedItem();
        String qtde = txtQtdeEstoque.getText();
        String precoUnit = ftxtPrecoUnitProduto.getText();
        String descricao = txtDescricao.getText();
        int id = 1;

        if (!arquivo.exists()) {
            root = new Element("BancoProduto");
            doc = new Document(root);
        }
        try {
            if (arquivo.exists()) {
                SAXBuilder builder = new SAXBuilder();
                doc = builder.build(arquivo);
                root = (Element) doc.getRootElement();
                id = idVerificador();
            }
        } catch (IOException | JDOMException e) {
            return false;
        }

        Element produto = new Element("produto");
        Attribute idd = new Attribute("id", "" + id);
        produto.setAttribute(idd);

        Element name = new Element("nome");
        name.setText(nome);
        Attribute tipo = new Attribute("tipo", tipoProduto);
        name.setAttribute(tipo);

        Element descricaoXml = new Element("descrio");
        descricaoXml.setText(descricao);
        Element precoUnitario = new Element("preoUnitrio");
        precoUnitario.setText(precoUnit);
        Element qtdeXml = new Element("qtde");
        qtdeXml.setText(qtde);

        produto.addContent(name);
        produto.addContent(descricaoXml);
        produto.addContent(precoUnitario);
        produto.addContent(qtdeXml);

        root.addContent(produto);

        try {
            XMLOutputter xout = new XMLOutputter(Format.getPrettyFormat());
            OutputStream out = new FileOutputStream(new File(diretorio, "BancoProduto.xml"));
            xout.output(doc, out);
            out.close();

        } catch (IOException e) {
            return false;
        }

        return true;
    }

    private int idVerificador() {
        int idAtual = 0;
        Document aux;
        File diretorio = new File("Bancos de Dados");
        File arquivo = new File(diretorio, "BancoProduto.xml");
        SAXBuilder carrega = new SAXBuilder();
        if (!(arquivo.exists())) {
            root = new Element("BancoProduto");
            doc = new Document(root);
            return idAtual = 1;
        }
        try {
            aux = carrega.build(arquivo);
            Element rootaux = (Element) aux.getRootElement();
            List<Element> produtos = rootaux.getChildren();
            for (int i = 0; i < produtos.size(); i++) {
                Element produto = produtos.get(i);
                idAtual = Integer.parseInt(produto.getAttributeValue("id"));
            }
        } catch (JDOMException | IOException e) {
        }
        return idAtual + 1;
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnCadastroTipoProduto;
    private javax.swing.JButton btnCancelarProduto;
    private javax.swing.JButton btnOkProduto;
    private javax.swing.JComboBox cbxTipoProduto;
    private javax.swing.JFormattedTextField ftxtPrecoUnitProduto;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel lblIDProduto;
    private javax.swing.JLabel lblNomeProduto;
    private javax.swing.JLabel lblPrecoUnitProduto;
    private javax.swing.JLabel lblQtdeEstoque;
    private javax.swing.JLabel lblTipoProduto;
    private javax.swing.JTextArea txtDescricao;
    private javax.swing.JTextField txtIdProduto;
    private javax.swing.JTextField txtNomeProduto;
    private javax.swing.JTextField txtQtdeEstoque;
    // End of variables declaration//GEN-END:variables
}