modulo.administrativo.controlador.GrupoDeUsuariosControlador.java Source code

Java tutorial

Introduction

Here is the source code for modulo.administrativo.controlador.GrupoDeUsuariosControlador.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.Component;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import modulo.administrativo.modelo.dao.GrupoDeUsuariosDAO;
import modulo.administrativo.modelo.dao.PermissaoDoGrupoDeUsuariosDAO;
import modulo.administrativo.modelo.negocio.GrupoDeUsuarios;
import modulo.administrativo.modelo.negocio.PermissaoDoGrupoDeUsuarios;
import modulo.administrativo.visao.GrupoDeUsuariosBusca;
import static modulo.administrativo.visao.GrupoDeUsuariosBusca.form;
import modulo.administrativo.visao.GrupoDeUsuariosFormulario;
import static modulo.administrativo.visao.GrupoDeUsuariosFormulario.parent;
import modulo.cadastro.visao.CertificacaoBusca;
import modulo.sistema.controlador.Controlador;
import modulo.sistema.modelo.negocio.SOptionPane;
import modulo.sistema.visao.SistemaVisao;
import org.hibernate.criterion.Conjunction;
import org.hibernate.criterion.Disjunction;
import org.hibernate.criterion.MatchMode;
import static org.hibernate.criterion.Projections.id;
import org.hibernate.criterion.Restrictions;

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

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

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

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

            for (int i = 0; i < registros.size(); i++) {
                GrupoDeUsuarios gruposDeUsuarios = (GrupoDeUsuarios) registros.get(i);
                modelo.addRow(new Object[] { gruposDeUsuarios.getId(), gruposDeUsuarios.getNome() });

                // Verifica item a selecionar
                if (gruposDeUsuarios.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) {
        GrupoDeUsuariosBusca busca = (GrupoDeUsuariosBusca) super.getBusca();
        busca.form = new GrupoDeUsuariosFormulario(busca, true);
        this.atualizarGridPermissoes(busca.form);
        busca.form.setLocationRelativeTo(null);
        busca.form.setVisible(true);
    }

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

            Object grupoDeUsuarios = GrupoDeUsuariosDAO.getInstance().getById(new GrupoDeUsuarios(),
                    grupodeusuarios_id);

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

    @Override
    public void botaoExcluirActionPerformed(ActionEvent evt) {
        GrupoDeUsuariosBusca busca = (GrupoDeUsuariosBusca) 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) {
                GrupoDeUsuarios grupoDeUsuarios = new GrupoDeUsuarios();
                grupoDeUsuarios.setId(grupodeusuarios_id);
                GrupoDeUsuariosDAO.getInstance().remove(grupoDeUsuarios);

                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) {
        GrupoDeUsuariosBusca busca = (GrupoDeUsuariosBusca) super.getBusca();
        try {
            String campoBusca = busca.getCampoBusca().getText();

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

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

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

    @Override
    public void popularCampos(Object entity) {
        GrupoDeUsuariosFormulario formulario = (GrupoDeUsuariosFormulario) super.getFormulario();
        try {
            GrupoDeUsuarios grupoDeUsuarios = (GrupoDeUsuarios) entity;
            formulario.getId().setText(Integer.toString(grupoDeUsuarios.getId()));
            formulario.getNome().setText(grupoDeUsuarios.getNome());
            this.atualizarGridPermissoes(formulario);
        } catch (Exception err) {
            SOptionPane.showMessageDialog(formulario, err, "Erro!", JOptionPane.ERROR_MESSAGE);
        }
    }

    @Override
    public boolean validarCampos() {
        GrupoDeUsuariosFormulario formulario = (GrupoDeUsuariosFormulario) super.getFormulario();
        try {
            if (!(formulario.getNome().getText().length() > 0)) {
                throw new Exception("O campo 'Nome'  requerido!");
            }

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

    @Override
    public void botaoSalvarActionPerformed(ActionEvent evt) {
        GrupoDeUsuariosFormulario formulario = (GrupoDeUsuariosFormulario) super.getFormulario();
        try {
            if (this.validarCampos()) {
                GrupoDeUsuarios grupoDeUsuarios = new GrupoDeUsuarios();
                grupoDeUsuarios.setNome(formulario.getNome().getText());

                if (formulario.getId().getText().length() > 0) {
                    grupoDeUsuarios.setId(Integer.parseInt(formulario.getId().getText()));
                    GrupoDeUsuariosDAO.getInstance().merge(grupoDeUsuarios);
                } else {
                    GrupoDeUsuariosDAO.getInstance().persist(grupoDeUsuarios);
                }

                // Obter lista de permisses j registrada para o grupo
                Conjunction and = Restrictions.conjunction();
                and.add(Restrictions.eq("grupoDeUsuarios", grupoDeUsuarios));
                List findPermissoes = PermissaoDoGrupoDeUsuariosDAO.getInstance()
                        .findByCriteria(new PermissaoDoGrupoDeUsuarios(), and, Restrictions.disjunction());

                // Obter lista de permisses marcadas.
                DefaultTableModel modelo = (DefaultTableModel) formulario.getTabelaPermissoes().getModel();

                for (int c = 0; c < modelo.getRowCount(); c++) {
                    PermissaoDoGrupoDeUsuarios permissaoDoGrupoDeUsuarios = new PermissaoDoGrupoDeUsuarios();
                    permissaoDoGrupoDeUsuarios.setId((String) modelo.getValueAt(c, 0));
                    permissaoDoGrupoDeUsuarios.setGrupoDeUsuarios(grupoDeUsuarios);
                    permissaoDoGrupoDeUsuarios.setVisualizar((boolean) modelo.getValueAt(c, 3));
                    permissaoDoGrupoDeUsuarios.setInserir((boolean) modelo.getValueAt(c, 4));
                    permissaoDoGrupoDeUsuarios.setAtualizar((boolean) modelo.getValueAt(c, 5));
                    permissaoDoGrupoDeUsuarios.setExcluir((boolean) modelo.getValueAt(c, 6));
                    permissaoDoGrupoDeUsuarios.setAdmin((boolean) modelo.getValueAt(c, 7));

                    // Verifica se a permisso j est registrada para o grupo, se sim, atualiza, caso contrrio, insere.
                    boolean merge = false;
                    for (Object object : findPermissoes) {
                        PermissaoDoGrupoDeUsuarios permissao = (PermissaoDoGrupoDeUsuarios) object;
                        if (permissao.getId().equals(permissaoDoGrupoDeUsuarios.getId())) {
                            merge = true;
                            break;
                        }
                    }

                    if (merge) {
                        PermissaoDoGrupoDeUsuariosDAO.getInstance().merge(permissaoDoGrupoDeUsuarios);
                    } else {
                        PermissaoDoGrupoDeUsuariosDAO.getInstance().persist(permissaoDoGrupoDeUsuarios);
                    }
                }

                this.atualizarGrid(grupoDeUsuarios.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) {
        GrupoDeUsuariosFormulario formulario = (GrupoDeUsuariosFormulario) super.getFormulario();
        formulario.setVisible(false);
    }

    public void atualizarGridPermissoes(GrupoDeUsuariosFormulario formulario) {
        try {
            List<Object> permissoes = new ArrayList();

            if (formulario.getId().getText().length() > 0) {
                GrupoDeUsuarios grupoDeusuarios = new GrupoDeUsuarios();
                grupoDeusuarios.setId(Integer.parseInt(formulario.getId().getText()));

                Conjunction conjunction = Restrictions.conjunction();
                conjunction.add(Restrictions.eq("grupoDeUsuarios", grupoDeusuarios));

                permissoes = PermissaoDoGrupoDeUsuariosDAO.getInstance()
                        .findByCriteria(new PermissaoDoGrupoDeUsuarios(), conjunction, Restrictions.disjunction());
            }

            DefaultTableModel modelo = (DefaultTableModel) formulario.getTabelaPermissoes().getModel();
            modelo.setNumRows(0);

            SistemaVisao sistemaVisao = new SistemaVisao();
            JMenuBar menuSistema = sistemaVisao.getMenu();
            Component[] modulos = menuSistema.getComponents();

            // Percorre os mdulos.
            for (int m = 0; m < modulos.length; m++) {

                if (modulos[m] instanceof JMenu) {
                    JMenu modulo = (JMenu) modulos[m];
                    Component[] telas = modulo.getMenuComponents();

                    // Percorre as telas do mdulo.
                    for (int t = 0; t < telas.length; t++) {
                        if (telas[t] instanceof JMenuItem) {
                            // Por padro, todos itens desmarcados.
                            JMenuItem tela = (JMenuItem) telas[t];
                            boolean visualizar = false;
                            boolean inserir = false;
                            boolean atualizar = false;
                            boolean excluir = false;
                            boolean admin = false;

                            // Verifica se o grupo j possui registro na permisso, e popula conforme registros.
                            for (Object object : permissoes) {
                                PermissaoDoGrupoDeUsuarios permissaoDoGrupoDeUsuarios = (PermissaoDoGrupoDeUsuarios) object;

                                if (permissaoDoGrupoDeUsuarios.getId().equals(tela.getName())) {
                                    visualizar = permissaoDoGrupoDeUsuarios.isVisualizar();
                                    inserir = permissaoDoGrupoDeUsuarios.isInserir();
                                    atualizar = permissaoDoGrupoDeUsuarios.isAtualizar();
                                    excluir = permissaoDoGrupoDeUsuarios.isExcluir();
                                    admin = permissaoDoGrupoDeUsuarios.isAdmin();

                                    break;
                                }
                            }

                            // Popula a grid com os itens do menu, de seus respectivos mdulos.
                            modelo.addRow(new Object[] { tela.getName(), // ESTE  O ID DA TELA!!!
                                    modulo.getText(), tela.getText(), visualizar, inserir, atualizar, excluir,
                                    admin });
                        }
                    }
                }
            }
        } catch (Exception err) {
            SOptionPane.showMessageDialog(formulario, err, "Erro!", JOptionPane.ERROR_MESSAGE);
        }
    }

}