modulo.administrativo.controlador.UsuarioControlador.java Source code

Java tutorial

Introduction

Here is the source code for modulo.administrativo.controlador.UsuarioControlador.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 modulo.administrativo.controlador;

import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import modulo.administrativo.modelo.dao.GrupoDeUsuariosDAO;
import modulo.administrativo.modelo.dao.GrupoDoUsuarioDAO;
import modulo.administrativo.modelo.dao.UsuarioDAO;
import modulo.administrativo.modelo.negocio.GrupoDeUsuarios;
import modulo.administrativo.modelo.negocio.GrupoDoUsuario;
import modulo.administrativo.modelo.negocio.UserAccount;
import modulo.administrativo.visao.UsuarioBusca;
import static modulo.administrativo.visao.UsuarioBusca.form;
import modulo.administrativo.visao.UsuarioFormulario;
import static modulo.administrativo.visao.UsuarioFormulario.parent;
import modulo.sistema.controlador.Controlador;
import modulo.sistema.modelo.negocio.SOptionPane;
import org.hibernate.criterion.Conjunction;
import org.hibernate.criterion.Disjunction;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
import static sun.security.jgss.GSSUtil.login;

/**
 *
 * @author augusto
 */
public class UsuarioControlador extends Controlador {

    public UserAccount useraccount;
    List<Object> gruposDoUsuario;

    public UsuarioControlador(Object busca, Object formulario) {
        super(busca, formulario);
    }

    @Override
    public void atualizarGrid(int selecionar, List<Object> registros) {
        UsuarioBusca busca = (UsuarioBusca) super.getBusca();
        try {
            if (registros.isEmpty()) {
                registros = UsuarioDAO.getInstance().findAll(new UserAccount());
            }

            DefaultTableModel modelo = (DefaultTableModel) busca.getTabela().getModel();
            modelo.setNumRows(0);

            for (int i = 0; i < registros.size(); i++) {
                UserAccount usuario = (UserAccount) registros.get(i);
                modelo.addRow(new Object[] { usuario.getId(), usuario.getName(), usuario.getLogin(),
                        usuario.isActive() ? "SIM" : "NO" });

                // Verifica item a selecionar
                if (usuario.getId() == selecionar) {
                    busca.getTabela().addRowSelectionInterval(i, i);
                }
            }

            if (selecionar == -1) {
                busca.getBotaoEditar().setEnabled(false);
                busca.getBotaoExcluir().setEnabled(false);
            }

        } catch (Exception err) {
            SOptionPane.showMessageDialog(busca, err, "Erro!", JOptionPane.ERROR_MESSAGE);
        }
    }

    @Override
    public void botaoNovoActionPerformed(ActionEvent evt) {
        UsuarioBusca busca = (UsuarioBusca) super.getBusca();
        form = new UsuarioFormulario(busca, true);
        form.setLocationRelativeTo(null);
        form.setVisible(true);
    }

    @Override
    public void botaoEditarActionPerformed(ActionEvent evt) {
        UsuarioBusca busca = (UsuarioBusca) super.getBusca();
        try {
            int selected = busca.getTabela().getSelectedRow();
            Object registro = busca.getTabela().getValueAt(selected, 0);
            int usuario_id = Integer.parseInt(registro.toString());

            Object usuario = UsuarioDAO.getInstance().getById(new UserAccount(), usuario_id);

            form = new UsuarioFormulario(busca, true);
            form.popularCampos((UserAccount) usuario);
            form.setLocationRelativeTo(null);
            form.setVisible(true);
        } catch (Exception err) {
            SOptionPane.showMessageDialog(busca, err, "Erro!", JOptionPane.ERROR_MESSAGE);
        }
    }

    @Override
    public void botaoExcluirActionPerformed(ActionEvent evt) {
        UsuarioBusca busca = (UsuarioBusca) super.getBusca();
        try {
            int selected = busca.getTabela().getSelectedRow();
            Object registro = busca.getTabela().getValueAt(selected, 0);
            int grupodeusuarios_id = Integer.parseInt(registro.toString());

            int escolha = JOptionPane.showConfirmDialog(null,
                    "Voc tm certeza que deseja excluir este registro?", "Ateno!",
                    JOptionPane.YES_NO_OPTION);

            if (escolha == JOptionPane.YES_OPTION) {
                UserAccount usuario = new UserAccount();
                usuario.setId(grupodeusuarios_id);
                UsuarioDAO.getInstance().remove(usuario);

                this.atualizarGrid(-1, new ArrayList());
                JOptionPane.showMessageDialog(busca, "Registro excludo com sucesso!", "Sucesso!",
                        JOptionPane.INFORMATION_MESSAGE);
            }
        } catch (Exception err) {
            SOptionPane.showMessageDialog(busca, err, "Erro!", JOptionPane.ERROR_MESSAGE);
        }
    }

    @Override
    public void botaoBuscarActionPerformed(ActionEvent evt) {
        UsuarioBusca busca = (UsuarioBusca) super.getBusca();
        try {
            String campoBusca = busca.getCampoBusca().getText();

            Disjunction or = Restrictions.disjunction();
            or.add(Restrictions.ilike("login", campoBusca, MatchMode.ANYWHERE));
            or.add(Restrictions.ilike("name", campoBusca, MatchMode.ANYWHERE));

            try {
                or.add(Restrictions.eq("id", Integer.parseInt(campoBusca)));
            } catch (Exception err) {
            }

            List<Object> usuarios = UsuarioDAO.getInstance().findByCriteria(new UserAccount(),
                    Restrictions.conjunction(), or);
            this.atualizarGrid(-1, usuarios);
        } catch (Exception err) {
            SOptionPane.showMessageDialog(busca, err, "Erro!", JOptionPane.ERROR_MESSAGE);
        }
    }

    @Override
    public void popularCampos(Object entity) {
        UsuarioFormulario formulario = (UsuarioFormulario) super.getFormulario();
        UserAccount usuario = (UserAccount) entity;
        try {
            this.useraccount = usuario;
            formulario.getId().setText(Integer.toString(usuario.getId()));
            formulario.getNome().setText(usuario.getName());
            formulario.getLogin().setText(usuario.getLogin());
            formulario.getAtivo().setSelected(usuario.isActive());

            if (!Integer.toString(usuario.getId()).isEmpty()) {
                formulario.getNome().setEnabled(false);
                formulario.getLogin().setEnabled(false);
            }

            // Obter grupos de usurios, do usurio.
            Conjunction and = Restrictions.conjunction();
            and.add(Restrictions.eq("usuario", usuario));
            gruposDoUsuario = GrupoDoUsuarioDAO.getInstance().findByCriteria(new GrupoDoUsuario(), and,
                    Restrictions.disjunction());

            // Popula combobox de grupos de usurios, somente com os grupos no pertencentes ao usurio editado.
            formulario.getGrupoDeUsuarios().addItem("");
            List<Object> grupos = GrupoDeUsuariosDAO.getInstance().findAll(new GrupoDeUsuarios());

            for (int i = 0; i < grupos.size(); i++) {
                GrupoDeUsuarios grupo = (GrupoDeUsuarios) grupos.get(i);
                boolean possuiGrupo = false;

                for (int g = 0; g < gruposDoUsuario.size(); g++) {
                    // Somente adicionar, se no existir no list de gruposDoUsuario
                    GrupoDoUsuario grupoDoUsuario = (GrupoDoUsuario) gruposDoUsuario.get(g);

                    if (grupoDoUsuario.getGrupoDeUsuarios().getId() == grupo.getId()) {
                        possuiGrupo = true;
                        break;
                    }
                }

                if (!possuiGrupo) {
                    formulario.getGrupoDeUsuarios().addItem(grupo);
                }
            }

            // Popula tabela de grupos de usurios, com os grupos pertencentes ao usurio editado.
            DefaultTableModel modelo = (DefaultTableModel) formulario.getTabelaDeGrupos().getModel();
            for (int g = 0; g < gruposDoUsuario.size(); g++) {
                GrupoDoUsuario grupoDoUsuario = (GrupoDoUsuario) gruposDoUsuario.get(g);
                modelo.addRow(new Object[] { grupoDoUsuario.getGrupoDeUsuarios().getId(),
                        grupoDoUsuario.getGrupoDeUsuarios().getNome() });
            }
        } catch (Exception err) {
            SOptionPane.showMessageDialog(formulario, err, "Erro!", JOptionPane.ERROR_MESSAGE);
        }
    }

    @Override
    public boolean validarCampos() {
        UsuarioFormulario formulario = (UsuarioFormulario) super.getFormulario();
        try {
            if (!formulario.getSenha().getText().isEmpty() && formulario.getSenha().getText().length() < 8) {
                throw new Exception("O campo 'Senha' deve ter no mnimo 8 caracteres");
            }

            return true;
        } catch (Exception err) {
            SOptionPane.showMessageDialog(formulario, err, "Erro!", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }

    @Override
    public void botaoSalvarActionPerformed(ActionEvent evt) {
        UsuarioFormulario formulario = (UsuarioFormulario) super.getFormulario();
        try {
            if (this.validarCampos()) {
                useraccount.setName(formulario.getNome().getText());
                useraccount.setLogin(formulario.getLogin().getText());
                useraccount.setActive(formulario.getAtivo().isSelected());
                if (!formulario.getSenha().getText().isEmpty()) {
                    useraccount.setPassword(formulario.getSenha().getText());
                }
                UsuarioDAO.getInstance().merge(useraccount);

                // Deletar todos os grupos do usurio, e registr-los novamente.
                for (int g = 0; g < gruposDoUsuario.size(); g++) {
                    // Somente adicionar, se no existir no list de gruposDoUsuario
                    GrupoDoUsuario grupoDoUsuario = (GrupoDoUsuario) gruposDoUsuario.get(g);
                    GrupoDoUsuarioDAO.getInstance().remove(grupoDoUsuario);
                }

                DefaultTableModel modelo = (DefaultTableModel) formulario.getTabelaDeGrupos().getModel();
                for (int i = 0; i < modelo.getRowCount(); i++) {
                    GrupoDeUsuarios grupo = new GrupoDeUsuarios();
                    grupo.setId((int) modelo.getValueAt(i, 0));

                    GrupoDoUsuario grupoDoUsuario = new GrupoDoUsuario();
                    grupoDoUsuario.setUsuario(useraccount);
                    grupoDoUsuario.setGrupoDeUsuarios(grupo);

                    GrupoDoUsuarioDAO.getInstance().merge(grupoDoUsuario);
                }

                parent.atualizarGrid(useraccount.getId(), new ArrayList());
                JOptionPane.showMessageDialog(formulario, "Registro efetuado com sucesso!", "Sucesso!",
                        JOptionPane.INFORMATION_MESSAGE);

                formulario.setVisible(false);
            }
        } catch (Exception err) {
            SOptionPane.showMessageDialog(formulario, err, "Erro!", JOptionPane.ERROR_MESSAGE);
        }
    }

    @Override
    public void botaoCancelarActionPerformed(ActionEvent evt) {
        UsuarioFormulario formulario = (UsuarioFormulario) super.getFormulario();
        formulario.setVisible(false);
    }

    public void grupoDeUsuariosActionPerformed(java.awt.event.ActionEvent evt) {
        UsuarioFormulario formulario = (UsuarioFormulario) super.getFormulario();
        if (formulario.getGrupoDeUsuarios().getSelectedItem().toString().isEmpty()) {
            formulario.getBotaoAdicionarGrupo().setEnabled(false);
        } else {
            formulario.getBotaoAdicionarGrupo().setEnabled(true);
        }
    }

    public void botaoAdicionarGrupoActionPerformed(java.awt.event.ActionEvent evt) {
        UsuarioFormulario formulario = (UsuarioFormulario) super.getFormulario();
        try {
            GrupoDeUsuarios grupo = (GrupoDeUsuarios) formulario.getGrupoDeUsuarios().getSelectedItem();
            DefaultTableModel modelo = (DefaultTableModel) formulario.getTabelaDeGrupos().getModel();
            modelo.addRow(new Object[] { grupo.getId(), grupo.getNome() });
            formulario.getGrupoDeUsuarios().removeItem(grupo);
            formulario.getGrupoDeUsuarios().setSelectedItem("");
        } catch (Exception err) {
            SOptionPane.showMessageDialog(formulario, err, "Erro!", JOptionPane.ERROR_MESSAGE);
        }
    }

    public void botaoRemoverGrupoActionPerformed(java.awt.event.ActionEvent evt) {
        UsuarioFormulario formulario = (UsuarioFormulario) super.getFormulario();
        try {
            int selected = formulario.getTabelaDeGrupos().getSelectedRow();
            Object registro = formulario.getTabelaDeGrupos().getValueAt(selected, 0);
            int grupo_id = Integer.parseInt(registro.toString());

            Object grupo = GrupoDeUsuariosDAO.getInstance().getById(new GrupoDeUsuarios(), grupo_id);
            DefaultTableModel modelo = (DefaultTableModel) formulario.getTabelaDeGrupos().getModel();
            modelo.removeRow(selected);
            formulario.getGrupoDeUsuarios().addItem(grupo);
            formulario.getBotaoRemoverGrupo().setEnabled(false);
        } catch (Exception err) {
            SOptionPane.showMessageDialog(formulario, err, "Erro!", JOptionPane.ERROR_MESSAGE);
        }
    }

}