Package es.emergya.ui.plugins.admin

Source Code of es.emergya.ui.plugins.admin.AdminUsers

/*
* Copyright (C) 2010, Emergya (http://www.emergya.es)
*
* @author <a href="mailto:jlrodriguez@emergya.es">Juan Luís Rodríguez</a>
* @author <a href="mailto:marias@emergya.es">María Arias</a>
*
* This file is part of GoFleet
*
* This software is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
*
* As a special exception, if you link this library with other files to
* produce an executable, this library does not by itself cause the
* resulting executable to be covered by the GNU General Public License.
* This exception does not however invalidate any other reasons why the
* executable file might be covered by the GNU General Public License.
*/
package es.emergya.ui.plugins.admin;

import java.awt.event.ActionEvent;
import java.util.Calendar;
import java.util.LinkedList;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTable;

import org.gofleet.context.GoWired;
import org.gofleet.internacionalization.I18n;

import es.emergya.actions.UsuarioAdmin;
import es.emergya.bbdd.bean.Usuario;
import es.emergya.cliente.constants.LogicConstants;
import es.emergya.consultas.RolConsultas;
import es.emergya.consultas.UsuarioConsultas;
import es.emergya.tools.MD5;
import es.emergya.ui.base.plugins.Option;
import es.emergya.ui.base.plugins.PluginEvent;
import es.emergya.ui.base.plugins.PluginEventHandler;
import es.emergya.ui.base.plugins.PluginType;
import es.emergya.ui.plugins.AdminPanel;
import es.emergya.ui.plugins.AdminPanel.FiltrarAction;
import es.emergya.ui.plugins.AdminPanel.NoFiltrarAction;
import es.emergya.ui.plugins.admin.aux1.SummaryAction;

public class AdminUsers extends Option {

  private static final long serialVersionUID = 4179510944298692626L;
  private static String ICON = "tittlemanage_icon_usuarios";
  AdminPanel usuarios;
  private Usuario lastExample = new Usuario();

  @GoWired
  public I18n i18n;

  /**
   * @return the i18n
   */
  public I18n getI18n() {
    return i18n;
  }

  /**
   * @param i18n
   *            the i18n to set
   */
  public void setI18n(I18n i18n) {
    this.i18n = i18n;
  }

  public AdminUsers() {
    super("", PluginType.getType("ADMIN"), 1, "subtab_icon_usuarios", null);
    setTitle(i18n.getString("Users.users"));
    usuarios = new AdminPanel(i18n.getString("admin.usuarios.titulo"),
        LogicConstants.getIcon(ICON), this);
    usuarios.setNewAction(getSummaryAction(null));
    usuarios.addColumnWidth(6, 65);
    final List<String> allNames = new LinkedList<String>();
    allNames.add("");
    allNames.addAll(RolConsultas.getAllNames());
    usuarios.generateTable(
        new String[] {
            i18n.getString("admin.usuarios.tabla.titulo.nombreUsuario"),
            i18n.getString("admin.usuarios.tabla.titulo.nombre"),
            i18n.getString("admin.usuarios.tabla.titulo.apellidos"),
            i18n.getString("admin.usuarios.tabla.titulo.rol"),
            i18n.getString("admin.usuarios.tabla.titulo.admin"),
            i18n.getString("admin.usuarios.tabla.titulo.habilitado"),
            i18n.getString("admin.usuarios.tabla.titulo.ficha"),
            i18n.getString("admin.usuarios.tabla.titulo.eliminar") },
        new String[][] { {}, {}, {}, allNames.toArray(new String[0]),
            { "", "Si", "No" },
            { "", "Habilitado", "Deshabilitado" } },
        getNoFiltrarAction(), getFiltrarAction());
    usuarios.setTableData(getAll(new Usuario()));

    usuarios.setErrorCause(i18n.getString("Users.errorCause"));
    this.add(usuarios);
  }

  @Override
  public void refresh(PluginEvent event) {
    super.refresh(event);
    usuarios.setTableData(getAll(lastExample));
    final List<String> allNames = new LinkedList<String>();
    allNames.add("");
    allNames.addAll(RolConsultas.getAllNames());
    usuarios.setFilter(4, allNames.toArray(new String[0]));
  }

  @Override
  public boolean needsUpdating() {
    final Calendar lastUpdated2 = UsuarioConsultas.lastUpdated();
    if (lastUpdated2 == null && this.usuarios.getTotalSize() != 0) {
      return true;
    }

    return lastUpdated2.after(super.lastUpdated);
  }

  private Object[][] getAll(Usuario example) {
    lastExample = example;
    List<Usuario> usuario = UsuarioConsultas.getByExample(example);

    int showed = usuario.size();
    int total = UsuarioConsultas.getTotal();
    this.usuarios.setCuenta(showed, total);

    Object[][] res = new Object[showed][];
    int i = 0;
    for (final Usuario u : usuario) {
      res[i] = new Object[8];
      res[i][0] = u.getNombreUsuario();
      res[i][1] = u.getNombre();
      res[i][2] = u.getApellidos();
      if (u.getRoles() != null) {
        res[i][3] = u.getRoles().getNombre();
      } else {
        res[i][3] = "";
      }
      res[i][4] = u.getAdministrador();
      res[i][5] = u.getHabilitado();
      res[i][6] = getSummaryAction(u);
      res[i++][7] = getDeleteAction(u);
    }

    return res;
  }

  private NoFiltrarAction getNoFiltrarAction() {
    return usuarios.new NoFiltrarAction() {

      private static final long serialVersionUID = 4759277490129941299L;

      @Override
      protected void applyFilter() {
        final Usuario example = new Usuario();
        usuarios.setTableData(getAll(example));
      }
    };
  }

  private FiltrarAction getFiltrarAction() {
    return usuarios.new FiltrarAction() {

      private static final long serialVersionUID = -5214957218008037443L;

      @Override
      protected void applyFilter(JTable filters) {
        final Usuario example = new Usuario();

        Object valueAt = filters.getValueAt(0, 1);
        if (valueAt == null || valueAt.toString().trim().length() == 0) {
          valueAt = "%";
        }
        example.setNombreUsuario(valueAt.toString());

        valueAt = filters.getValueAt(0, 2);
        if (valueAt != null && valueAt.toString().trim().length() > 0) {
          example.setNombre(valueAt.toString());
        }

        valueAt = filters.getValueAt(0, 3);
        if (valueAt != null && valueAt.toString().trim().length() > 0) {
          example.setApellidos(valueAt.toString());
        }

        valueAt = filters.getValueAt(0, 4);
        if (valueAt != null && valueAt.toString().trim().length() > 0) {
          example.setRoles(RolConsultas.findByName(valueAt.toString()));
        }

        valueAt = filters.getValueAt(0, 5);
        if (valueAt != null && valueAt.toString().trim().length() > 0) {
          example.setAdministrador(valueAt.equals("Si"));
        }

        valueAt = filters.getValueAt(0, 6);
        if (valueAt != null && valueAt.toString().trim().length() > 0) {
          example.setHabilitado(valueAt.equals("Habilitado"));
        }

        usuarios.setTableData(getAll(example));
      }
    };
  }

  protected SummaryAction getSummaryAction(final Usuario u) {
    SummaryAction action = new SummaryAction(u) {

      private static final long serialVersionUID = 8020702886946636903L;
      final AdminPanel.SaveOrUpdateAction<Usuario> guardar = usuarios.new SaveOrUpdateAction<Usuario>(
          u) {

        private static final long serialVersionUID = 7447779346943341404L;

        @Override
        public void actionPerformed(ActionEvent e) {

          final String password = new String(
              contrasenya.getPassword());
          final String string = new String(repetir.getPassword());
          if (textfieldCabecera.getText().trim().isEmpty()) {
            JOptionPane.showMessageDialog(super.frame,
                "El nombre de usuario es obligatorio.");
            // } else if (nombre.getText().trim().isEmpty()) {
            // JOptionPane.showMessageDialog(super.frame,
            // "El nombre es obligatorio.");
            // } else if (apellidos.getText().trim().isEmpty()) {
            // JOptionPane.showMessageDialog(super.frame,
            // "El apellido del usuario es obligatorio.");
          } else if (isNew && password.trim().isEmpty()) {
            JOptionPane.showMessageDialog(super.frame,
                "Las contraseñas son un campo obligatorio");
          } else if (!password.equals(string)) {
            JOptionPane.showMessageDialog(super.frame,
                "Las contraseñas no coinciden");
          } else if ((original == null || original.getId() == null)
              && UsuarioConsultas.alreadyExists(textfieldCabecera
                  .getText())) {
            JOptionPane
                .showMessageDialog(super.frame,
                    "Ya existe un usuario con ese nombre de usuario.");
          } else if (UsuarioConsultas.isLastAdmin(textfieldCabecera
              .getText().trim())
              && (!administrador.isSelected() || !habilitado
                  .isSelected())) {
            JOptionPane
                .showMessageDialog(
                    super.frame,
                    "El usuario tiene que ser administrador "
                        + "porque no hay ningún otro administrador.");
          } else if (cambios) {
            int i = JOptionPane.showConfirmDialog(super.frame,
                "¿Desea guardar los cambios?", "Guardar",
                JOptionPane.YES_NO_CANCEL_OPTION);

            if (i == JOptionPane.YES_OPTION) {

              if (original == null) {
                original = new Usuario();
                original.setVehiculosVisibles(true);
                original.setPersonasVisibles(true);
                original.setIncidenciasVisibles(true);

              }

              original.setInfoAdicional(textfieldPie.getText());
              original.setNombreUsuario(textfieldCabecera
                  .getText());
              original.setApellidos(apellidos.getText());
              original.setNombre(nombre.getText());
              original.setHabilitado(habilitado.isSelected());
              original.setAdministrador(administrador
                  .isSelected());
              original.setRoles(RolConsultas.findByName(rol
                  .getSelectedItem().toString()));
              if (!password.trim().isEmpty()) {
                original.setPassword(MD5.generate(password));
              }

              UsuarioAdmin.saveOrUpdate(original);
              PluginEventHandler.fireChange(AdminUsers.this);

              cambios = false;
              original = null;

              usuarios.setTableData(getAll(new Usuario()));

              closeFrame();
            } else if (i == JOptionPane.NO_OPTION) {
              closeFrame();
            }
          } else {
            closeFrame();
          }
        }
      };

      @Override
      protected JFrame getSummaryDialog() {

        final String label_cabecera = "Nombre Usuario:";
        final String label_pie = "Info Adicional:";
        final String titulo;
        final String cabecera;
        if (u == null) {
          titulo = i18n
              .getString("admin.usuarios.ficha.tituloVentana.nuevo");
          cabecera = i18n
              .getString("admin.usuarios.ficha.cabecera.nuevo");
        } else {
          titulo = i18n
              .getString("admin.usuarios.ficha.tituloVentana.existente");
          cabecera = i18n
              .getString("admin.usuarios.ficha.cabecera.existente");
        }
        // if (d == null)
        d = generateSimpleDialog(label_cabecera, label_pie, titulo,
            guardar,
            LogicConstants.getIcon("tittleficha_icon_usuario"),
            cabecera);
        d.setResizable(false);

        if (u != null && u.getId() != null) {
          textfieldCabecera.setText(u.getNombreUsuario());
          // textfieldCabecera.setEnabled(false);
          textfieldCabecera.setEditable(false);
          textfieldPie.setText(u.getInfoAdicional());
          if (u.getRoles() != null) {
            rol.setSelectedItem(u.getRoles().getNombre());
          }
          habilitado.setSelected(u.getHabilitado());
          administrador.setSelected(u.getAdministrador());
          nombre.setText(u.getNombre());
          apellidos.setText(u.getApellidos());
        } else {
          textfieldCabecera.setText("");
          textfieldCabecera.setEnabled(true);
          textfieldPie.setText("");
          rol.setSelectedItem("");
          habilitado.setSelected(true);
          administrador.setSelected(false);
          nombre.setText("");
          apellidos.setText("");
        }
        contrasenya.setText("");
        repetir.setText("");
        cambios = false;
        return d;
      }
    };

    return action;
  }

  protected AdminPanel.DeleteAction<Usuario> getDeleteAction(Usuario u) {
    AdminPanel.DeleteAction<Usuario> action = usuarios.new DeleteAction<Usuario>(
        u) {

      private static final long serialVersionUID = -8564650177805502871L;

      @Override
      protected boolean delete(boolean show_alert) {
        if (UsuarioConsultas
            .isLastAdmin(this.target.getNombreUsuario())) {
          if (show_alert) {
            JOptionPane
                .showMessageDialog(AdminUsers.this,
                    "No se pudo borrar el usuario porque es el último administrador.");
          }
          return false;
        }
        if (!UsuarioAdmin.delete(this.target)) {
          if (show_alert) {
            JOptionPane
                .showMessageDialog(
                    AdminUsers.this,
                    "No se pudo borrar el usuario. Probablemente esté conectado en alguna estación fija.");
          }
          return false;
        }
        return true;
      }
    };

    return action;
  }

  @Override
  public void reboot() {
    getNoFiltrarAction().actionPerformed(null);
    this.usuarios.unckeckAll();
  }
}
TOP

Related Classes of es.emergya.ui.plugins.admin.AdminUsers

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.