View.JInternalFrameCadastroAluno2.java Source code

Java tutorial

Introduction

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

import DAO.AlunoJpaController;
import DataBase.Aluno;
import academiavisual.FormPrincipal;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.swing.JOptionPane;
import com.google.common.base.Charsets;
import com.google.common.hash.Hashing;

/**
 *
 * @author Luccas
 */
public class JInternalFrameCadastroAluno2 extends javax.swing.JInternalFrame {

    /**
     * Creates new form JInternalFrameCadastroAluno2
     */
    public JInternalFrameCadastroAluno2() {
        initComponents();
        abaConsulta();
        System.out.println("AlunoList Class : " + alunoList.getClass().getName());
        System.out.println("Size: " + alunoList.size());
    }

    /**
     * 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() {
        bindingGroup = new org.jdesktop.beansbinding.BindingGroup();

        entityManagerAluno = java.beans.Beans.isDesignTime() ? null
                : javax.persistence.Persistence.createEntityManagerFactory("AcademiaVisualPU")
                        .createEntityManager();
        alunoQuery = java.beans.Beans.isDesignTime() ? null
                : entityManagerAluno.createQuery("SELECT a FROM Aluno a");
        alunoList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList()
                : alunoQuery.getResultList();
        jTabbedPaneAluno = new javax.swing.JTabbedPane();
        jPanelConsultaAluno = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTableAluno = new javax.swing.JTable();
        jLabelProcurarAluno = new javax.swing.JLabel();
        jTextFieldProcurarAluno = new javax.swing.JTextField();
        jComboBoxProcurarAluno = new javax.swing.JComboBox();
        jButtonProcurarAluno = new javax.swing.JButton();
        jPanelAlterarAluno = new javax.swing.JPanel();
        jLabelNomeAluno = new javax.swing.JLabel();
        jLabelCpfAluno = new javax.swing.JLabel();
        jLabelDataNascimentoAluno = new javax.swing.JLabel();
        jLabelPesoAluno = new javax.swing.JLabel();
        jLabelAlturaAluno = new javax.swing.JLabel();
        jLabelEnderecoAluno = new javax.swing.JLabel();
        jLabelLoginAluno = new javax.swing.JLabel();
        jLabelSenhaAluno = new javax.swing.JLabel();
        jLabelEmailAluno = new javax.swing.JLabel();
        jLabelValidadeAluno = new javax.swing.JLabel();
        jTextFieldNomeAluno = new javax.swing.JTextField();
        jTextFieldPesoAluno = new javax.swing.JTextField();
        jTextFieldAlturaAluno = new javax.swing.JTextField();
        jTextFieldEnderecoAluno = new javax.swing.JTextField();
        jTextFieldLoginAluno = new javax.swing.JTextField();
        jTextFieldEmailAluno = new javax.swing.JTextField();
        jPasswordFieldSenhaAluno = new javax.swing.JPasswordField();
        jLabelIdAluno = new javax.swing.JLabel();
        jTextFieldIdAluno = new javax.swing.JTextField();
        jCheckBoxSenhaAluno = new javax.swing.JCheckBox();
        jFormattedTextFieldDataAluno = new javax.swing.JFormattedTextField();
        jFormattedTextFieldValidadeAluno = new javax.swing.JFormattedTextField();
        jFormattedTextFieldUltimaEntradaAluno = new javax.swing.JFormattedTextField();
        jLabel1 = new javax.swing.JLabel();
        jFormattedTextFieldCpfAluno = new javax.swing.JFormattedTextField();
        jButtonInserirAluno = new javax.swing.JButton();
        jButtonAlterarAluno = new javax.swing.JButton();
        jButtonExcluirAluno = new javax.swing.JButton();
        jButtonFecharAluno = new javax.swing.JButton();
        jButtonCancelarAluno = new javax.swing.JButton();
        jButtonConfirmarAluno = new javax.swing.JButton();

        setTitle("Cadastro Aluno");
        addInternalFrameListener(new javax.swing.event.InternalFrameListener() {
            public void internalFrameActivated(javax.swing.event.InternalFrameEvent evt) {
            }

            public void internalFrameClosed(javax.swing.event.InternalFrameEvent evt) {
            }

            public void internalFrameClosing(javax.swing.event.InternalFrameEvent evt) {
            }

            public void internalFrameDeactivated(javax.swing.event.InternalFrameEvent evt) {
            }

            public void internalFrameDeiconified(javax.swing.event.InternalFrameEvent evt) {
            }

            public void internalFrameIconified(javax.swing.event.InternalFrameEvent evt) {
            }

            public void internalFrameOpened(javax.swing.event.InternalFrameEvent evt) {
                formInternalFrameOpened(evt);
            }
        });

        org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings
                .createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, alunoList,
                        jTableAluno);
        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${id}"));
        columnBinding.setColumnName("Id");
        columnBinding.setColumnClass(Integer.class);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${nome}"));
        columnBinding.setColumnName("Nome");
        columnBinding.setColumnClass(String.class);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${endereco}"));
        columnBinding.setColumnName("Endereco");
        columnBinding.setColumnClass(String.class);
        columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${dataNascimento}"));
        columnBinding.setColumnName("Data Nascimento");
        columnBinding.setColumnClass(java.util.Date.class);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${altura}"));
        columnBinding.setColumnName("Altura");
        columnBinding.setColumnClass(Float.class);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${peso}"));
        columnBinding.setColumnName("Peso");
        columnBinding.setColumnClass(Float.class);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${validade}"));
        columnBinding.setColumnName("Validade");
        columnBinding.setColumnClass(java.util.Date.class);
        bindingGroup.addBinding(jTableBinding);
        jTableBinding.bind();
        jScrollPane1.setViewportView(jTableAluno);

        jLabelProcurarAluno.setText("Opo De Busca");

        jComboBoxProcurarAluno.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Id", "Nome" }));

        jButtonProcurarAluno.setText("Buscar");
        jButtonProcurarAluno.setMaximumSize(new java.awt.Dimension(75, 23));
        jButtonProcurarAluno.setMinimumSize(new java.awt.Dimension(75, 23));
        jButtonProcurarAluno.setPreferredSize(new java.awt.Dimension(75, 23));
        jButtonProcurarAluno.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonProcurarAlunoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanelConsultaAlunoLayout = new javax.swing.GroupLayout(jPanelConsultaAluno);
        jPanelConsultaAluno.setLayout(jPanelConsultaAlunoLayout);
        jPanelConsultaAlunoLayout.setHorizontalGroup(jPanelConsultaAlunoLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 683, Short.MAX_VALUE)
                .addGroup(jPanelConsultaAlunoLayout.createSequentialGroup().addContainerGap()
                        .addComponent(jLabelProcurarAluno)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jComboBoxProcurarAluno, javax.swing.GroupLayout.PREFERRED_SIZE, 92,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jTextFieldProcurarAluno, javax.swing.GroupLayout.PREFERRED_SIZE, 160,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jButtonProcurarAluno, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
        jPanelConsultaAlunoLayout.setVerticalGroup(jPanelConsultaAlunoLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanelConsultaAlunoLayout.createSequentialGroup()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 244, Short.MAX_VALUE)
                        .addGap(18, 18, 18)
                        .addGroup(jPanelConsultaAlunoLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabelProcurarAluno)
                                .addComponent(jTextFieldProcurarAluno, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jButtonProcurarAluno, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jComboBoxProcurarAluno, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addContainerGap()));

        jTabbedPaneAluno.addTab("Consulta", jPanelConsultaAluno);

        jLabelNomeAluno.setText("Nome:");

        jLabelCpfAluno.setText("CPF:");

        jLabelDataNascimentoAluno.setText("Data Nascimento:");

        jLabelPesoAluno.setText("Peso:");

        jLabelAlturaAluno.setText("Altura:");

        jLabelEnderecoAluno.setText("Endereco:");

        jLabelLoginAluno.setText("Login:");

        jLabelSenhaAluno.setText("Senha:");

        jLabelEmailAluno.setText("Email:");

        jLabelValidadeAluno.setText("Validade:");

        jLabelIdAluno.setText("ID:");

        jTextFieldIdAluno.setEnabled(false);

        jCheckBoxSenhaAluno.setText("Trocar Senha P.A.");

        jFormattedTextFieldDataAluno.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(
                new javax.swing.text.DateFormatter(new java.text.SimpleDateFormat("yyyy/M/d"))));
        jFormattedTextFieldDataAluno.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jFormattedTextFieldDataAlunoMouseClicked(evt);
            }
        });

        jFormattedTextFieldValidadeAluno.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(
                new javax.swing.text.DateFormatter(new java.text.SimpleDateFormat("yyyy/M/d"))));
        jFormattedTextFieldValidadeAluno.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jFormattedTextFieldValidadeAlunoMouseClicked(evt);
            }
        });

        jFormattedTextFieldUltimaEntradaAluno.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(
                new javax.swing.text.DateFormatter(new java.text.SimpleDateFormat("yyyy/M/d"))));
        jFormattedTextFieldUltimaEntradaAluno.setEnabled(false);
        jFormattedTextFieldUltimaEntradaAluno.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jFormattedTextFieldUltimaEntradaAlunoMouseClicked(evt);
            }
        });

        jLabel1.setText("Ultima Entrada:");

        try {
            jFormattedTextFieldCpfAluno.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(
                    new javax.swing.text.MaskFormatter("###.###.###-##")));
        } catch (java.text.ParseException ex) {
            ex.printStackTrace();
        }

        javax.swing.GroupLayout jPanelAlterarAlunoLayout = new javax.swing.GroupLayout(jPanelAlterarAluno);
        jPanelAlterarAluno.setLayout(jPanelAlterarAlunoLayout);
        jPanelAlterarAlunoLayout.setHorizontalGroup(jPanelAlterarAlunoLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanelAlterarAlunoLayout.createSequentialGroup().addContainerGap()
                        .addGroup(jPanelAlterarAlunoLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                .addComponent(jLabelEnderecoAluno).addComponent(jLabelCpfAluno)
                                .addComponent(jLabelNomeAluno).addComponent(jLabelDataNascimentoAluno)
                                .addComponent(jLabelPesoAluno).addComponent(jLabelLoginAluno)
                                .addComponent(jLabelEmailAluno).addComponent(jLabelValidadeAluno)
                                .addComponent(jLabelIdAluno).addComponent(jLabel1))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanelAlterarAlunoLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(jTextFieldNomeAluno)
                                .addComponent(jTextFieldEmailAluno, javax.swing.GroupLayout.Alignment.TRAILING)
                                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelAlterarAlunoLayout
                                        .createSequentialGroup()
                                        .addComponent(jTextFieldPesoAluno, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                128, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(jLabelAlturaAluno)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(jTextFieldAlturaAluno, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                146, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addComponent(jFormattedTextFieldDataAluno)
                                .addComponent(jFormattedTextFieldValidadeAluno)
                                .addComponent(jFormattedTextFieldCpfAluno).addComponent(jTextFieldEnderecoAluno)
                                .addGroup(jPanelAlterarAlunoLayout.createSequentialGroup()
                                        .addGroup(jPanelAlterarAlunoLayout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                .addComponent(jFormattedTextFieldUltimaEntradaAluno,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE, 113,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addComponent(jTextFieldIdAluno,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE, 65,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addGroup(jPanelAlterarAlunoLayout.createSequentialGroup()
                                                        .addComponent(jTextFieldLoginAluno,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE, 116,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                                        .addPreferredGap(
                                                                javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                        .addComponent(jLabelSenhaAluno)
                                                        .addPreferredGap(
                                                                javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                        .addComponent(jPasswordFieldSenhaAluno,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE, 163,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE)))
                                        .addGap(0, 0, Short.MAX_VALUE)))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jCheckBoxSenhaAluno).addGap(144, 144, 144)));
        jPanelAlterarAlunoLayout.setVerticalGroup(jPanelAlterarAlunoLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanelAlterarAlunoLayout.createSequentialGroup().addContainerGap()
                        .addGroup(jPanelAlterarAlunoLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabelIdAluno).addComponent(jTextFieldIdAluno,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanelAlterarAlunoLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabelNomeAluno).addComponent(jTextFieldNomeAluno,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanelAlterarAlunoLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabelCpfAluno).addComponent(jFormattedTextFieldCpfAluno,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanelAlterarAlunoLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabelDataNascimentoAluno).addComponent(jFormattedTextFieldDataAluno,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanelAlterarAlunoLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabelPesoAluno)
                                .addComponent(jTextFieldPesoAluno, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jTextFieldAlturaAluno, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jLabelAlturaAluno))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(jPanelAlterarAlunoLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabelEnderecoAluno).addComponent(jTextFieldEnderecoAluno,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(jPanelAlterarAlunoLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabelLoginAluno)
                                .addComponent(jTextFieldLoginAluno, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jLabelSenhaAluno)
                                .addComponent(jPasswordFieldSenhaAluno, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jCheckBoxSenhaAluno))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(jPanelAlterarAlunoLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jTextFieldEmailAluno, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jLabelEmailAluno))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(jPanelAlterarAlunoLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabelValidadeAluno).addComponent(jFormattedTextFieldValidadeAluno,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanelAlterarAlunoLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jFormattedTextFieldUltimaEntradaAluno,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jLabel1))
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

        jTabbedPaneAluno.addTab("Alterar", jPanelAlterarAluno);

        jButtonInserirAluno.setText("Inserir");
        jButtonInserirAluno.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonInserirAlunoActionPerformed(evt);
            }
        });

        jButtonAlterarAluno.setText("Alterar");
        jButtonAlterarAluno.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonAlterarAlunoActionPerformed(evt);
            }
        });

        jButtonExcluirAluno.setText("Excluir");
        jButtonExcluirAluno.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonExcluirAlunoActionPerformed(evt);
            }
        });

        jButtonFecharAluno.setText("Fechar");
        jButtonFecharAluno.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonFecharAlunoActionPerformed(evt);
            }
        });

        jButtonCancelarAluno.setText("Cancelar");
        jButtonCancelarAluno.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonCancelarAlunoActionPerformed(evt);
            }
        });

        jButtonConfirmarAluno.setText("Confirmar");
        jButtonConfirmarAluno.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonConfirmarAlunoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jTabbedPaneAluno)
                .addGroup(layout.createSequentialGroup().addContainerGap().addComponent(jButtonInserirAluno)
                        .addGap(18, 18, 18).addComponent(jButtonAlterarAluno).addGap(18, 18, 18)
                        .addComponent(jButtonExcluirAluno).addGap(18, 18, 18).addComponent(jButtonConfirmarAluno)
                        .addGap(18, 18, 18).addComponent(jButtonCancelarAluno)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jButtonFecharAluno).addContainerGap()));
        layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup().addComponent(jTabbedPaneAluno)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jButtonInserirAluno).addComponent(jButtonAlterarAluno)
                                .addComponent(jButtonExcluirAluno).addComponent(jButtonFecharAluno)
                                .addComponent(jButtonCancelarAluno).addComponent(jButtonConfirmarAluno))
                        .addContainerGap()));

        bindingGroup.bind();

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

    //Bind automtico no funiona como o esperado. Os mtodos abaixo circulam este problema.
    /**
     * Popula os textField da aba Alterar.
     *
     * @param a Fonte dos dados para o textField, caso seja null os campos sero
     * esvaziados.
     */
    private void popularCamposAlterar(Aluno a) {
        if (a == null) {
            jTextFieldAlturaAluno.setText("");
            jTextFieldEmailAluno.setText("");
            jTextFieldEnderecoAluno.setText("");
            jTextFieldIdAluno.setText("");
            jTextFieldLoginAluno.setText("");
            jTextFieldNomeAluno.setText("");
            jTextFieldPesoAluno.setText("");
            jFormattedTextFieldCpfAluno.setValue(null);
            jFormattedTextFieldDataAluno.setValue(null);
            jFormattedTextFieldUltimaEntradaAluno.setValue(null);
            jFormattedTextFieldValidadeAluno.setValue(null);
            jPasswordFieldSenhaAluno.setText("");
        } else {
            jTextFieldAlturaAluno.setText(Float.toString(a.getAltura()));
            jTextFieldEmailAluno.setText(a.getEmail());
            jTextFieldEnderecoAluno.setText(a.getEndereco());
            jTextFieldIdAluno.setText(Integer.toString(a.getId()));
            jTextFieldLoginAluno.setText(a.getLogin());
            jTextFieldNomeAluno.setText(a.getNome());
            jTextFieldPesoAluno.setText(Float.toString(a.getPeso()));
            jFormattedTextFieldCpfAluno.setValue(a.getCpf());
            jFormattedTextFieldDataAluno.setValue(a.getDataNascimento());
            jFormattedTextFieldUltimaEntradaAluno.setValue(a.getUltimaEntrada());
            jFormattedTextFieldValidadeAluno.setValue(a.getValidade());
            jPasswordFieldSenhaAluno.setText(a.getSenha());
        }
    }

    /**
     * Aps a edio do objeto pega dados da aba Alterar e coloca no objeto.
     *
     * @param a Objeto a ser populado.
     */
    private void popularObjeto(Aluno a) {
        //TODO: Garantir que @param no  nulo
        /*O campo ID  gerado pelo banco de dados*/
        a.setAltura(Float.parseFloat(jTextFieldAlturaAluno.getText()));
        a.setCpf((String) jFormattedTextFieldCpfAluno.getValue());
        a.setDataNascimento((Date) jFormattedTextFieldDataAluno.getValue());
        a.setEmail(jTextFieldEmailAluno.getText());
        a.setEndereco(jTextFieldEnderecoAluno.getText());
        //a.setId(Integer.parseInt(jTextFieldIdAluno.getText()));//E se for NULL?
        a.setLogin(jTextFieldLoginAluno.getText());
        a.setNome(jTextFieldNomeAluno.getText());
        a.setPeso(Float.parseFloat(jTextFieldPesoAluno.getText()));
        a.setSenha(Hashing.sha256().hashString(jPasswordFieldSenhaAluno.getText(), Charsets.UTF_8).toString());
        a.setUltimaEntrada((Date) jFormattedTextFieldUltimaEntradaAluno.getValue());
        a.setValidade((Date) jFormattedTextFieldValidadeAluno.getValue());

    }

    /**
     * Entra na Aba de Consulta
     */
    private void abaConsulta() {
        jTabbedPaneAluno.setSelectedIndex(0);
        jTabbedPaneAluno.setEnabledAt(0, true);
        jTabbedPaneAluno.setEnabledAt(1, false);
        jButtonConfirmarAluno.setEnabled(false);
        jButtonCancelarAluno.setEnabled(false);
        jButtonInserirAluno.setEnabled(true);
        jButtonAlterarAluno.setEnabled(true);
        jButtonExcluirAluno.setEnabled(true);
    }

    /**
     * Entra na Aba de Alterar
     */
    private void abaAlterar() {
        jTabbedPaneAluno.setSelectedIndex(1);
        jTabbedPaneAluno.setEnabledAt(1, true);
        jTabbedPaneAluno.setEnabledAt(0, false);
        jButtonInserirAluno.setEnabled(false);
        jButtonAlterarAluno.setEnabled(false);
        jButtonExcluirAluno.setEnabled(false);
        jButtonConfirmarAluno.setEnabled(true);
        jButtonCancelarAluno.setEnabled(true);

    }

    /**
     * Valida os campos de acordo com as normas:
     * <ul>
     * <li> EMAIL: vlido, no nulo e menor que 40;
     * <li> NOME: no nulo e menor que 40;
     * <li> CPF: Estar no formato nnn.nnn.nnn-nn -> n = nmero qualquer TODO:
     * Validao!
     * <li> LOGIN: serm menor que 40 e nico( realizado consulta no banco de
     * dados);
     * <li> PASSWORD: deve ser maior que 6, menor que 15 e no nulo;
     * <li> ENDEREO: Campo no dever ser nulo e menor que 40 caracteres.
     * </ul>
     *
     * @return <b>true</b> caso passe na validao, <b>false</b> caso contrrio.
     */
    private boolean validacaoDeCampos() {
        boolean valido = true;
        String msgErro = "";
        String campo;

        //Checa o campo EMAIL:
        Pattern p = Pattern.compile("^[\\w-]+(\\.[\\w-]+)*@([\\w-]+\\.)+[a-zA-Z]{2,7}$");
        Matcher m = p.matcher(jTextFieldEmailAluno.getText());
        campo = jTextFieldEmailAluno.getText();
        if ((!m.find()) || ("".equals(campo)) || (campo.length() > 40)) {
            valido = false;
            msgErro += "Email invlido. O campo deve ser vlido, no nulo e menor que 40 caracteres\n";
            jTextFieldEmailAluno.setText(""); //Limpa o campo de email
        }

        //Checa o campo Nome
        campo = jTextFieldNomeAluno.getText();
        if (("".equals(campo)) || (campo.length() > 40)) {
            valido = false;
            msgErro += "Nome invlido. O campo deve no deve ser nulo e deve ser menor que 40 caracteres\n";
            jTextFieldNomeAluno.setText("");// Limpa o campo de nome
        }

        //Checa o campo CPF
        campo = jFormattedTextFieldCpfAluno.getText();
        if (campo.replaceAll("[^0123456789]", "").length() != 11) {
            valido = false;
            msgErro += "CPF invlido. O campo deve ter apenas nmeros e deve ser na forma 123.123.123-99\n";
            jFormattedTextFieldCpfAluno.setValue(null);
            ; //Limpa campo CPF
        }

        //Checa o campo login
        campo = jTextFieldLoginAluno.getText();
        if ((campo.length() < 10) && !("".equals(campo))) {
            //Campo possivelmente vlido
            //Checar unicidade
            //INFO: Cdigo Legado modificado.
            if ((flagAnterior == INSERIR) || (!campo.equals(alunoAlterar.getLogin()))) {
                try {
                    EntityManagerFactory emf = Persistence.createEntityManagerFactory("AcademiaVisualPU");
                    AlunoJpaController alunoJpaController = new AlunoJpaController(emf);
                    Aluno resultado = (Aluno) alunoJpaController.findLogin(campo);
                    if (resultado != null) {
                        //Encontrou um login identico
                        valido = false;
                        msgErro += "Login invlido. O campo deve ser nico\n";
                        jTextFieldLoginAluno.setText("");
                    }
                } catch (Exception e) {
                    //TODO: Definir melhor qual tipo de exceo  lanada
                    e.printStackTrace();
                }
            }
        } else {
            valido = false;
            msgErro += "Login invlido. O campo no deve ser nulo e deve ser menor que 10 caracteres\n";
            jTextFieldNomeAluno.setText("");
        }

        //Checa o campo password
        campo = String.valueOf(jPasswordFieldSenhaAluno.getPassword());
        if ((campo.length() < 6) || (campo.length() > 15)) {
            valido = false;
            msgErro += "Senha invlida. O campo deve ter pelo menos 6 caracteres, mas no mais que 15\n";
            jPasswordFieldSenhaAluno.setText("");
        }

        //Checa o campo endereo
        campo = jTextFieldEnderecoAluno.getText();
        if (("".equals(campo)) || (campo.length() > 40)) {
            valido = false;
            msgErro += "Endereo invlido. O campo deve no deve ser nulo e deve ser menor que 40 caracteres\n";
            jTextFieldEnderecoAluno.setText("");
        }
        if (!valido) {
            JOptionPane.showMessageDialog(null, msgErro, "Campos Errados!", JOptionPane.ERROR_MESSAGE);
        }
        return valido;
    }

    private int flagAnterior; //Define qual boto foi clicado
    private Aluno aluno; //Enderea objetos criados

    private void jButtonProcurarAlunoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonProcurarAlunoActionPerformed
        String[] sql = { "", "SELECT a FROM Aluno a WHERE a.nome LIKE :nome ",
                "SELECT a FROM Aluno a WHERE a.cpf = :cpf ",
                "SELECT a FROM Aluno a WHERE a.validade = :validade " };
        try {
            Query query = null;
            if (jTextFieldProcurarAluno.getText().length() > 0) {
                if (jComboBoxProcurarAluno.getSelectedIndex() == 0) {
                    query = entityManagerAluno.createNamedQuery("Aluno.findById");
                    query.setParameter("id", Long.valueOf(jTextFieldProcurarAluno.getText()));
                }
                if (jComboBoxProcurarAluno.getSelectedIndex() == 1) {
                    query = entityManagerAluno.createQuery(sql[1]);
                    query.setParameter("nome", '%' + jTextFieldProcurarAluno.getText() + '%');
                }
            } else {
                query = alunoQuery;
            }
            alunoList.clear();
            alunoList.addAll(query.getResultList());
            jTableAluno.updateUI();
            jTableAluno.repaint();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(this, e);
        }
    }//GEN-LAST:event_jButtonProcurarAlunoActionPerformed

    private void jFormattedTextFieldDataAlunoMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jFormattedTextFieldDataAlunoMouseClicked
        jFormattedTextFieldDataAluno.setText("");
    }//GEN-LAST:event_jFormattedTextFieldDataAlunoMouseClicked

    private void jFormattedTextFieldValidadeAlunoMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jFormattedTextFieldValidadeAlunoMouseClicked
        jFormattedTextFieldValidadeAluno.setText("");
    }//GEN-LAST:event_jFormattedTextFieldValidadeAlunoMouseClicked

    private void jFormattedTextFieldUltimaEntradaAlunoMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jFormattedTextFieldUltimaEntradaAlunoMouseClicked
        jFormattedTextFieldUltimaEntradaAluno.setText("");

    }//GEN-LAST:event_jFormattedTextFieldUltimaEntradaAlunoMouseClicked

    private void jButtonInserirAlunoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonInserirAlunoActionPerformed
        flagAnterior = INSERIR;
        popularCamposAlterar(null);
        jFormattedTextFieldUltimaEntradaAluno.setValue(new Date());
        abaAlterar();

    }//GEN-LAST:event_jButtonInserirAlunoActionPerformed

    private void jButtonAlterarAlunoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAlterarAlunoActionPerformed
        if (!alunoList.isEmpty() && jTableAluno.getSelectedRow() != -1) {
            flagAnterior = ALTERAR;
            alunoAlterar = alunoList.get(jTableAluno.getSelectedRow());
            popularCamposAlterar(alunoAlterar);
            abaAlterar();
        } else {
            JOptionPane.showMessageDialog(null, "Excluso cancelada !");
        }
    }//GEN-LAST:event_jButtonAlterarAlunoActionPerformed

    private void jButtonExcluirAlunoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonExcluirAlunoActionPerformed
        if (!alunoList.isEmpty() && jTableAluno.getSelectedRow() != -1) {
            int option = JOptionPane.showConfirmDialog(this,
                    "Verifique com ateno os dados que deseja excluir!\n"
                            + "Clique em sim se esse for mesmo o aluno que deseja excluir.\n"
                            + "Clique em cancelar para voltar.");
            if (option == JOptionPane.YES_OPTION) {
                try {
                    /*
                     EXCLUIR O USUARIO DE TODOS AS TABELAS QUE UTILIZAM O MESMO !
                     Acho que no  necessrio -- Luccas.
                     */
                    alunoList.get(jTableAluno.getSelectedRow()).excluir();
                    alunoList.remove(jTableAluno.getSelectedRow());
                    jTableAluno.updateUI();
                    jTableAluno.repaint();
                } catch (Exception e) {
                    JOptionPane.showMessageDialog(null, e);
                }
            } else {
                JOptionPane.showMessageDialog(null, "Excluso cancelada !");
            }
        } else {
            JOptionPane.showMessageDialog(null, "Selecione um aluno !");
        }
    }//GEN-LAST:event_jButtonExcluirAlunoActionPerformed

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

    private void jButtonCancelarAlunoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonCancelarAlunoActionPerformed
        abaConsulta();
    }//GEN-LAST:event_jButtonCancelarAlunoActionPerformed

    private void jButtonConfirmarAlunoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonConfirmarAlunoActionPerformed
        boolean atualizacaoFeita = false; /*Indica que a atualizao/insero foi feita com sucesso,
                                          mantendo a aba de alterao focada.
                                          */

        if (flagAnterior == INSERIR) {
            //Verifica se os campos esto corretos antes de modific-los.
            if (validacaoDeCampos()) {
                aluno = new Aluno(); //Cria um aluno vazio
                popularObjeto(aluno); //Popula o objeto
                //Insere o objeto no banco de dados
                aluno.incluir();
                /*Coisas do bind: Para adicionar elemento por ultimo na tabela inserir na penultima posio
                 tipo: list.size() - 1 -> No faz sentido, mas  assim que o bind funciona...
                 */
                alunoList.add(alunoList.size() - 1, aluno);
                jTableAluno.repaint();
                atualizacaoFeita = true;
            }
        }
        if (flagAnterior == ALTERAR) {
            //Verifica se os campos esto corretos para atualiz-los
            if (validacaoDeCampos()) {
                popularObjeto(alunoAlterar);
                //altera o aluno no banco de dados
                alunoAlterar.alterar();
                jTableAluno.repaint();
                atualizacaoFeita = true;
            }
        }
        if (atualizacaoFeita) {
            abaConsulta();
        }

    }//GEN-LAST:event_jButtonConfirmarAlunoActionPerformed

    private void formInternalFrameOpened(javax.swing.event.InternalFrameEvent evt) {//GEN-FIRST:event_formInternalFrameOpened
        try {
            if (TelaInicial.verificarAdministrador()) {
                jButtonInserirAluno.setEnabled(false);
                jButtonAlterarAluno.setEnabled(false);
                jButtonExcluirAluno.setEnabled(false);
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
        }
    }//GEN-LAST:event_formInternalFrameOpened

    //Flags para identificar que boto foi clicado anteriormente.
    private final int INSERIR = 1;
    private final int ALTERAR = 2;
    //Aluno para ser alterado
    private Aluno alunoAlterar;
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private java.util.List<DataBase.Aluno> alunoList;
    private javax.persistence.Query alunoQuery;
    private javax.persistence.EntityManager entityManagerAluno;
    private javax.swing.JButton jButtonAlterarAluno;
    private javax.swing.JButton jButtonCancelarAluno;
    private javax.swing.JButton jButtonConfirmarAluno;
    private javax.swing.JButton jButtonExcluirAluno;
    private javax.swing.JButton jButtonFecharAluno;
    private javax.swing.JButton jButtonInserirAluno;
    private javax.swing.JButton jButtonProcurarAluno;
    private javax.swing.JCheckBox jCheckBoxSenhaAluno;
    private javax.swing.JComboBox jComboBoxProcurarAluno;
    private javax.swing.JFormattedTextField jFormattedTextFieldCpfAluno;
    private javax.swing.JFormattedTextField jFormattedTextFieldDataAluno;
    private javax.swing.JFormattedTextField jFormattedTextFieldUltimaEntradaAluno;
    private javax.swing.JFormattedTextField jFormattedTextFieldValidadeAluno;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabelAlturaAluno;
    private javax.swing.JLabel jLabelCpfAluno;
    private javax.swing.JLabel jLabelDataNascimentoAluno;
    private javax.swing.JLabel jLabelEmailAluno;
    private javax.swing.JLabel jLabelEnderecoAluno;
    private javax.swing.JLabel jLabelIdAluno;
    private javax.swing.JLabel jLabelLoginAluno;
    private javax.swing.JLabel jLabelNomeAluno;
    private javax.swing.JLabel jLabelPesoAluno;
    private javax.swing.JLabel jLabelProcurarAluno;
    private javax.swing.JLabel jLabelSenhaAluno;
    private javax.swing.JLabel jLabelValidadeAluno;
    private javax.swing.JPanel jPanelAlterarAluno;
    private javax.swing.JPanel jPanelConsultaAluno;
    private javax.swing.JPasswordField jPasswordFieldSenhaAluno;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTabbedPane jTabbedPaneAluno;
    private javax.swing.JTable jTableAluno;
    private javax.swing.JTextField jTextFieldAlturaAluno;
    private javax.swing.JTextField jTextFieldEmailAluno;
    private javax.swing.JTextField jTextFieldEnderecoAluno;
    private javax.swing.JTextField jTextFieldIdAluno;
    private javax.swing.JTextField jTextFieldLoginAluno;
    private javax.swing.JTextField jTextFieldNomeAluno;
    private javax.swing.JTextField jTextFieldPesoAluno;
    private javax.swing.JTextField jTextFieldProcurarAluno;
    private org.jdesktop.beansbinding.BindingGroup bindingGroup;
    // End of variables declaration//GEN-END:variables
}