ve.zoonosis.controller.seguridad.LoginController.java Source code

Java tutorial

Introduction

Here is the source code for ve.zoonosis.controller.seguridad.LoginController.java

Source

/*
 * Copyright 2016 angel.colina.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package ve.zoonosis.controller.seguridad;

import com.megagroup.Application;
import com.megagroup.componentes.MGrowl;
import com.megagroup.model.enums.MGrowlState;
import com.megagroup.utilidades.Logger;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.logging.Level;
import javax.swing.JMenuBar;
import org.apache.commons.lang3.StringUtils;
import org.jdesktop.xswingx.PromptSupport;
import ve.zoonosis.model.entidades.administracion.Usuario;
import ve.zoonosis.vistas.Index;
import ve.zoonosis.vistas.Template;
import ve.zoonosis.vistas.seguridad.Login;
import windows.Recursos;
import windows.RequestBuilder;
import windows.ScanWeek;
import windows.webservices.utilidades.MetodosDeEnvio;

/**
 *
 * @author angel.colina
 */
public class LoginController extends Login implements Runnable {

    private static final Logger LOG = Logger.getLogger(LoginController.class);
    private static Usuario usuario;
    private RequestBuilder rb;

    public LoginController() {
        this((Index) Application.getAPLICATION_FRAME());
    }

    public LoginController(Index index) {
        nombreUsuario.setPlaceHolder("Usuario");
        PromptSupport.setPrompt("Contrasea", contrasena);
        JMenuBar m = index.getJMenuBar();
        m.setVisible(false);
        iniciar.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                iniciarSesion();
            }
        });
        contrasena.addKeyListener(new KeyAdapter() {

            @Override
            public void keyPressed(KeyEvent e) {
                iniciarSesion(e);
            }

        });
        invitado.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                usuario = null;
                LOG.LOGGER.log(Level.INFO, "Usuario : Sesion de invitado");
                new ScanWeek().start();
                validarPermisos();
            }
        });
        nombreUsuario.requestFocus();
    }

    //METODOS PUBLICOS
    public static void cerrarSesion() {
        try {
            System.gc();
            Boolean b = new RequestBuilder("rest/seguridad/logout", new HashMap<String, Object>() {
                {
                    put("idUsuario", usuario.getId());
                }
            }, MetodosDeEnvio.POST).ejecutarJson(Boolean.class);
            if (true) {
                LOG.LOGGER.log(Level.INFO, "Usuario : cerro sesion");
                usuario = null;
                Index.cambiarPagina(new LoginController());
            }
        } catch (URISyntaxException ex) {
            LOG.LOGGER.log(Level.SEVERE, null, ex);
        }
        System.gc();
    }

    //METODOS PRIVADOS
    private void iniciarSesion(KeyEvent evt) {
        if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
            evt.consume();
            iniciarSesion();
        }
    }

    private void iniciarSesion() {
        iniciar.setCursor(Recursos.WAIT_CURSOR);
        iniciar.setEnabled(false);
        nombreUsuario.setEnabled(false);
        contrasena.setEnabled(false);
        new Thread(this).start();
    }

    private void alerta(String msj) {
        nombreUsuario.setEnabled(true);
        contrasena.setEnabled(true);
        if (!StringUtils.isEmpty(msj)) {
            MGrowl.showGrowl(MGrowlState.ERROR, msj);
        }
        iniciar.setCursor(Recursos.HAND_CURSOR);
        iniciar.setEnabled(true);
        Application.getAPLICATION_FRAME().setCursor(Recursos.DEFAULT_CURSOR);
    }

    @Override
    public void run() {
        usuario = null;

        if (StringUtils.isEmpty(nombreUsuario.getText())) {
            alerta("Por favor ingrese nombre de usuario.");
            return;
        } else if (StringUtils.isEmpty(contrasena.getText())) {
            alerta("Por favor ingrese la contrasea.");
            return;
        }
        String descripcion = "Error de Conexion";
        try {

            rb = new RequestBuilder("services/administracion/PersonaWs/BuscarUsuario.php",
                    new HashMap<String, Object>() {
                        {
                            put("usr", nombreUsuario.getText());
                            put("pass", contrasena.getText());
                        }
                    });

            usuario = (Usuario) rb.ejecutarJson(Usuario.class);
        } catch (URISyntaxException ex) {
            descripcion = "Caracteres invlidos";
        } catch (RuntimeException ex) {
            LOG.LOGGER.log(Level.WARNING, null, ex);
            alerta(null);
        }

        if (usuario == null && !StringUtils.isEmpty(descripcion)) {
            alerta(descripcion);
            return;
        }
        if (usuario != null && !usuario.getNombre().equalsIgnoreCase("error")) {
            LOG.LOGGER.log(Level.INFO, "Usuario : {0} inicia sesion", usuario.getNombre());
            new ScanWeek().start();
            validarPermisos();
            Application.getAPLICATION_FRAME().setCursor(Recursos.DEFAULT_CURSOR);
            return;
        }
        if (usuario != null) {
            alerta(usuario.getContrasena());
        }
    }

    private void validarPermisos() {
        JMenuBar m = Application.getAPLICATION_FRAME().getJMenuBar();
        m.setVisible(true);
        Index index = Application.getAPLICATION_FRAME();
        index.addListeners(usuario);
        Index.cambiarPagina(new Template());
    }

    public static Usuario getUsuario() {
        return usuario;
    }

}