Package net.sourceforge.squirrel_sql.plugins.firebirdmanager.gui

Source Code of net.sourceforge.squirrel_sql.plugins.firebirdmanager.gui.FirebirdManagerUserManagerFrame$i18n

/*
* Copyright (C) 2008 Michael Romankiewicz
* microm at users.sourceforge.net
*
* This program 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 any later version.
*
* This program 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 program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/
package net.sourceforge.squirrel_sql.plugins.firebirdmanager.gui;

import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
import net.sourceforge.squirrel_sql.client.IApplication;
import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.DialogWidget;
import net.sourceforge.squirrel_sql.fw.util.StringManager;
import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
import net.sourceforge.squirrel_sql.fw.util.log.ILogger;
import net.sourceforge.squirrel_sql.fw.util.log.LoggerController;
import net.sourceforge.squirrel_sql.plugins.firebirdmanager.FirebirdManagerHelper;
import net.sourceforge.squirrel_sql.plugins.firebirdmanager.pref.FirebirdManagerPreferenceBean;
import net.sourceforge.squirrel_sql.plugins.firebirdmanager.pref.FirebirdManagerUsersPreferenceBean;
import net.sourceforge.squirrel_sql.plugins.firebirdmanager.pref.PreferencesManager;
import org.firebirdsql.gds.GDSException;
import org.firebirdsql.gds.IscSvcHandle;
import org.firebirdsql.management.FBUser;
import org.firebirdsql.management.FBUserManager;

import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.Vector;

public class FirebirdManagerUserManagerFrame extends DialogWidget
implements IFirebirdManagerFrame, ActionListener, KeyListener, ListSelectionListener {
  private static final long serialVersionUID = 7592543018317340170L;

  private final String CR = System.getProperty("line.separator", "\n");
    private final int TABLE_USERS_COL_USERNAME = 0;
    private final int TABLE_USERS_COL_USERID = 1;
    private final int TABLE_USERS_COL_GROUPID = 2;
    private final int TABLE_USERS_COL_FIRSTNAME = 3;
    private final int TABLE_USERS_COL_MIDDLENAME = 4;
    private final int TABLE_USERS_COL_LASTNAME = 5;
    private final int UNIQUE_USER = 0;
    private final int USERNAME_EXISTS = 1;
    private final int USERID_EXISTS = 2;
 
  // variables
  // ========================================================================
  // non visible
  // ------------------------------------------------------------------------
  // Logger for this class
    private final static ILogger log = LoggerController.createLogger(FirebirdManagerUserManagerFrame.class);

  private static final StringManager stringManager = StringManagerFactory
      .getStringManager(FirebirdManagerUserManagerFrame.class);
  // global references
  private FirebirdManagerPreferenceBean firebirdPreferencesBean;
  // session preferences
  private FirebirdManagerUsersPreferenceBean sessionPreferencesBean = null;
  // display mode
  private int mode = FirebirdManagerHelper.DISPLAY_MODE;
  // read map with users
  private Map<String,FBUser> mapUsers = null;
  // usermanager of jaybird
  private FBUserManager fbUserManager = new FBUserManager();
  // handle of connected server
  private IscSvcHandle iscSvcHandle = null;
  // table data objects
    private Vector<Vector<Object>> vecTableUsers = null;
    private Vector<String> vecTableUsersHeader = null;


  // visible (gui)
  // ------------------------------------------------------------------------
  private JButton btnNew = new JButton();
  private JButton btnEdit = new JButton();
  private JButton btnSave = new JButton();
  private JButton btnCancel = new JButton();
  private JButton btnDelete = new JButton();
  private JTextField jtextfieldManagerUsername = new JTextField();
  private JLabel lblManagerUsername = new JLabel();
  private JLabel lblManagerPassword = new JLabel();
  private JLabel lblManagerTitle = new JLabel();
  private JLabel lblServer = new JLabel();
  private JTextField jtextfieldServer = new JTextField();
  private JLabel lblPort = new JLabel();
  private JCheckBox jcheckboxConnectToServer = new JCheckBox();
  private JTextField jtextfieldPort = new JTextField();
  private JPasswordField jpasswordfieldManager = new JPasswordField();
  private JTable jtableUsers = new JTable(new DefaultTableModel());
  private JLabel lblUsername = new JLabel();
  private JLabel lblPassword1 = new JLabel();
  private JLabel lblPassword2 = new JLabel();
  private JLabel lblFirstName = new JLabel();
  private JTextField jtextfieldUsername = new JTextField();
  private JLabel lblUserId = new JLabel();
  private JLabel lblGroupId = new JLabel();
  private JTextField jtextfieldUserId = new JTextField();
  private JTextField jtextfieldGroupId = new JTextField();
  private JTextField jtextfieldFirstName = new JTextField();
  private JPasswordField jpasswordField1 = new JPasswordField();
  private JPasswordField jpasswordField2 = new JPasswordField();
  private JLabel lblMiddleName = new JLabel();
  private JTextField jtextfieldMiddleName = new JTextField();
  private JLabel lblLastName = new JLabel();
  private JTextField jtextfieldLastName = new JTextField();
   private IApplication _application;


   /**
     * Constructor
     * @param application
     */
  public FirebirdManagerUserManagerFrame(IApplication application) {
    super("Firebird manager - " + stringManager.getString("usermanager.title"), true, true, true, true, application);
      _application = application;

      initLayout();
   
    this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    this.setVisible(true);
    this.moveToFront();
  }

  private interface i18n {
    // Labels
    String LBL_BTN_NEW = stringManager.getString("global.lbl.btn.new");
    String LBL_BTN_EDIT = stringManager.getString("global.lbl.btn.edit");
    String LBL_BTN_SAVE = stringManager.getString("global.lbl.btn.save");
    String LBL_BTN_CANCEL = stringManager.getString("global.lbl.btn.cancel");
    String LBL_BTN_DELETE = stringManager.getString("global.lbl.btn.delete");
   
    String LBL_MANAGER_TITLE = stringManager.getString("usermanager.lbl.manager.title");
    String LBL_MANAGER_SERVER = stringManager.getString("usermanager.lbl.manager.server");
    String LBL_MANAGER_PORT = stringManager.getString("usermanager.lbl.manager.port");
    String LBL_MANAGER_CONECTED = stringManager.getString("usermanager.lbl.manager.connected");
    String LBL_MANAGER_USERNAME = stringManager.getString("usermanager.lbl.manager.username");
    String LBL_MANAGER_PASSWORD = stringManager.getString("usermanager.lbl.manager.password");
   
    String LBL_USERS_USERNAME = stringManager.getString("usermanager.lbl.username");
    String LBL_USERS_USERID = stringManager.getString("usermanager.lbl.userid");
    String LBL_USERS_GROUPID = stringManager.getString("usermanager.lbl.groupid");
    String LBL_USERS_PASSWORD = stringManager.getString("usermanager.lbl.password");
    String LBL_USERS_PASSWORD_CONFIRM = stringManager.getString("usermanager.lbl.password.confirm");
    String LBL_USERS_FIRSTNAME = stringManager.getString("usermanager.lbl.firstname");
    String LBL_USERS_MIDDLENAME = stringManager.getString("usermanager.lbl.middlename");
    String LBL_USERS_LASTNAME = stringManager.getString("usermanager.lbl.lastname");
   
    // Tooltips and questions
    String TOOLTIP_USERNAME = stringManager.getString("usermanager.tooltip.username");
    String TOOLTIP_PASSWORD = stringManager.getString("usermanager.tooltip.password");

    // Questions
    String QUESTION_TITLE_DELETE_USER = stringManager.getString("rolemanager.question.title.delete.user");
    String QUESTION_DELETE_USER = stringManager.getString("usermanager.question.delete.user");

    // Errors
    String ERROR_CANNOT_CONNECT_SERVER = stringManager.getString("usermanager.error.cannot.connect.server");
    String ERROR_CANNOT_DISCONNECT_SERVER = stringManager.getString("usermanager.error.cannot.disconnect.server");
    String ERROR_USERNAME_MISSING = stringManager.getString("usermanager.error.username.missing");
    String ERROR_USERNAME_MAXLENGTH = stringManager.getString("usermanager.error.username.maxlength");
    String ERROR_PASSWORD_MISSING = stringManager.getString("usermanager.error.password.missing");
    String ERROR_PASSWORD_DIFFERENCES = stringManager.getString("usermanager.error.passwords.differences");
    String ERROR_PASSWORD_MAXLENGTH = stringManager.getString("usermanager.error.password.maxlength");
    String ERROR_NO_NUMBER = stringManager.getString("usermanager.error.no.number");
   
    String ERROR_USERNAME_EXISTS = stringManager.getString("usermanager.error.username.exists");
    String ERROR_USERID_EXISTS = stringManager.getString("usermanager.error.userid.exists");
    String ERROR_SAVE_USER = stringManager.getString("usermanager.error.save.user");
    String ERROR_DELETE_USER = stringManager.getString("usermanager.error.delete.user");
  }

  private void initLayout() {
    this.getContentPane().setLayout(new BorderLayout());
    this.getContentPane().add(createPanel(), BorderLayout.CENTER);
   
    initVisualObjects();
    readPreferences();
  }
 
  public void setFocusToFirstEmptyInputField() {
    if (jtextfieldServer.getText().length() == 0) {
      jtextfieldServer.requestFocusInWindow();
    } else if (jtextfieldPort.getText().length() == 0) {
      jtextfieldPort.requestFocusInWindow();
    } else if (jtextfieldManagerUsername.getText().length() == 0) {
      jtextfieldManagerUsername.requestFocusInWindow();
    } else {
      jpasswordfieldManager.requestFocusInWindow();
    }
  }
 
  private JPanel createPanel() {
        JPanel jpanel1 = new JPanel();
        FormLayout formlayout1 = new FormLayout("FILL:5DLU:NONE,FILL:DEFAULT:NONE,FILL:3DLU:NONE,FILL:DEFAULT:NONE,FILL:3DLU:NONE,FILL:DEFAULT:NONE,FILL:3DLU:NONE,FILL:DEFAULT:NONE,FILL:3DLU:NONE,FILL:DEFAULT:NONE,FILL:3DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:3DLU:NONE","CENTER:5DLU:NONE,CENTER:DEFAULT:NONE,CENTER:12DLU:NONE,CENTER:DEFAULT:NONE,CENTER:5DLU:NONE,CENTER:DEFAULT:NONE,CENTER:5DLU:NONE");
        CellConstraints cc = new CellConstraints();
        jpanel1.setLayout(formlayout1);

        btnNew.setActionCommand("new");
        btnNew.setName("btnNew");
        btnNew.setText("new");
        jpanel1.add(btnNew,cc.xy(2,4));

        btnEdit.setActionCommand("edit");
        btnEdit.setName("btnEdit");
        btnEdit.setText("edit");
        jpanel1.add(btnEdit,cc.xy(4,4));

        btnSave.setActionCommand("save");
        btnSave.setName("btnSave");
        btnSave.setText("save");
        jpanel1.add(btnSave,cc.xy(6,4));

        btnCancel.setActionCommand("cancel");
        btnCancel.setName("btnCancel");
        btnCancel.setText("cancel");
        jpanel1.add(btnCancel,cc.xy(8,4));

        btnDelete.setActionCommand("delete");
        btnDelete.setName("btnDelete");
        btnDelete.setText("delete");
        jpanel1.add(btnDelete,cc.xy(10,4));

        jpanel1.add(createPanelConnectionData(),cc.xywh(2,2,11,1));
        jpanel1.add(createPanelUserEdit(),cc.xywh(2,6,11,1));
        return jpanel1;
  }
 
  public JPanel createPanelConnectionData() {
    JPanel jpanel1 = new JPanel();
    FormLayout formlayout1 = new FormLayout(
        "FILL:DEFAULT:NONE,FILL:3DLU:NONE,FILL:30DLU:GROW(1.0),FILL:3DLU:NONE,FILL:DEFAULT:NONE,FILL:3DLU:NONE,FILL:30DLU:NONE,FILL:3DLU:GROW(1.0)",
        "CENTER:DEFAULT:NONE,CENTER:5DLU:NONE,CENTER:DEFAULT:NONE,CENTER:5DLU:NONE,CENTER:DEFAULT:NONE");
    CellConstraints cc = new CellConstraints();
    jpanel1.setLayout(formlayout1);

    jtextfieldManagerUsername.setName("jtextfieldManagerUsername");
    jpanel1.add(jtextfieldManagerUsername, cc.xy(3, 5));

    lblManagerUsername.setName("lblManagerUsername");
    lblManagerUsername.setText("username");
    jpanel1.add(lblManagerUsername, cc.xy(1, 5));

    lblManagerPassword.setName("lblManagerPassword");
    lblManagerPassword.setText("password");
    jpanel1.add(lblManagerPassword, cc.xy(5, 5));

    lblManagerTitle.setName("lblManagerTitle");
    lblManagerTitle.setText("Connection parameter:");
    jpanel1.add(lblManagerTitle, cc.xywh(1, 1, 8, 1));

    lblServer.setName("lblServer");
    lblServer.setText("server");
    jpanel1.add(lblServer, cc.xy(1, 3));

    jtextfieldServer.setName("jtextfieldServer");
    jpanel1.add(jtextfieldServer, cc.xy(3, 3));

    lblPort.setName("lblPort");
    lblPort.setText("port");
    jpanel1.add(lblPort, cc.xy(5, 3));

    jtextfieldPort.setName("jtextfieldPort");
    jpanel1.add(jtextfieldPort, cc.xy(7, 3));

    jpasswordfieldManager.setName("jpasswordfieldManager");
    jpanel1.add(jpasswordfieldManager, cc.xywh(7, 5, 2, 1));

    jcheckboxConnectToServer.setActionCommand("connected to server");
    jcheckboxConnectToServer.setName("jcheckboxConnectToServer");
    jcheckboxConnectToServer.setText("connected to server");
    jcheckboxConnectToServer.setHorizontalAlignment(JCheckBox.RIGHT);
    jpanel1.add(jcheckboxConnectToServer, cc.xy(8, 3));

    return jpanel1;
  }
 

  public JPanel createPanelUserEdit() {
        JPanel jpanel1 = new JPanel();
        FormLayout formlayout1 = new FormLayout("FILL:DEFAULT:NONE,FILL:3DLU:NONE,FILL:30DLU:NONE,FILL:3DLU:NONE,FILL:DEFAULT:NONE,FILL:3DLU:NONE,FILL:30DLU:NONE,FILL:DEFAULT:GROW(1.0)","CENTER:DEFAULT:NONE,CENTER:5DLU:NONE,CENTER:DEFAULT:NONE,CENTER:5DLU:NONE,CENTER:DEFAULT:NONE,CENTER:5DLU:NONE,CENTER:DEFAULT:NONE,CENTER:5DLU:NONE,CENTER:DEFAULT:NONE,CENTER:5DLU:NONE,CENTER:DEFAULT:NONE,CENTER:5DLU:NONE,CENTER:DEFAULT:NONE,CENTER:5DLU:NONE,CENTER:DEFAULT:NONE");
        CellConstraints cc = new CellConstraints();
        jpanel1.setLayout(formlayout1);

        jtableUsers.setName("jtableUsers");
        JScrollPane jscrollpane1 = new JScrollPane();
        jscrollpane1.setViewportView(jtableUsers);
        jscrollpane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        jscrollpane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        jpanel1.add(jscrollpane1,cc.xywh(1,1,8,1));

        lblUsername.setName("lblUsername");
        lblUsername.setText("Username");
        jpanel1.add(lblUsername,cc.xy(1,3));

        lblPassword1.setName("lblPassword1");
        lblPassword1.setText("Password");
        jpanel1.add(lblPassword1,cc.xy(1,7));

        lblPassword2.setName("lblPassword2");
        lblPassword2.setText("Confirm password");
        jpanel1.add(lblPassword2,cc.xy(1,9));

        lblFirstName.setName("lblFirstName");
        lblFirstName.setText("Firstname");
        jpanel1.add(lblFirstName,cc.xy(1,11));

        lblMiddleName.setName("lblMiddleName");
        lblMiddleName.setText("Middle name");
        jpanel1.add(lblMiddleName,cc.xy(1,13));

        lblLastName.setName("lblLastName");
        lblLastName.setText("Last name");
        jpanel1.add(lblLastName,cc.xy(1,15));

        jtextfieldUsername.setName("jtextfieldUsername");
        jpanel1.add(jtextfieldUsername,cc.xywh(3,3,6,1));

        jpasswordField1.setName("jpasswordField1");
        jpanel1.add(jpasswordField1,cc.xywh(3,7,6,1));

        jpasswordField2.setName("jpasswordField2");
        jpanel1.add(jpasswordField2,cc.xywh(3,9,6,1));

        jtextfieldFirstName.setName("jtextfieldFirstName");
        jpanel1.add(jtextfieldFirstName,cc.xywh(3,11,6,1));

        jtextfieldMiddleName.setName("jtextfieldMiddleName");
        jpanel1.add(jtextfieldMiddleName,cc.xywh(3,13,6,1));

        jtextfieldLastName.setName("jtextfieldLastName");
        jpanel1.add(jtextfieldLastName,cc.xywh(3,15,6,1));

        lblUserId.setName("lblUserId");
        lblUserId.setText("user id");
        jpanel1.add(lblUserId,cc.xy(1,5));

        lblGroupId.setName("lblGroupId");
        lblGroupId.setText("group id");
        jpanel1.add(lblGroupId,cc.xy(5,5));

        jtextfieldUserId.setName("jtextfieldUserId");
        jpanel1.add(jtextfieldUserId,cc.xy(3,5));

        jtextfieldGroupId.setName("jtextfieldGroupId");
        jpanel1.add(jtextfieldGroupId,cc.xy(7,5));

        return jpanel1;
  }

 
 
 
 
  private void initVisualObjects() {
    btnNew.setText(i18n.LBL_BTN_NEW);
    btnNew.setIcon(FirebirdManagerHelper.loadIcon("new22x22.png"));
    btnNew.addActionListener(this);
    btnEdit.setText(i18n.LBL_BTN_EDIT);
    btnEdit.setIcon(FirebirdManagerHelper.loadIcon("edit22x22.png"));
    btnEdit.addActionListener(this);
    btnSave.setText(i18n.LBL_BTN_SAVE);
    btnSave.setIcon(FirebirdManagerHelper.loadIcon("save22x22.png"));
    btnSave.addActionListener(this);
    btnCancel.setText(i18n.LBL_BTN_CANCEL);
    btnCancel.setIcon(FirebirdManagerHelper.loadIcon("cancel22x22.png"));
    btnCancel.addActionListener(this);
    btnDelete.setText(i18n.LBL_BTN_DELETE);
    btnDelete.setIcon(FirebirdManagerHelper.loadIcon("delete22x22.png"));
    btnDelete.addActionListener(this);
   
    lblManagerTitle.setText(i18n.LBL_MANAGER_TITLE);
    lblServer.setText(i18n.LBL_MANAGER_SERVER);
    lblPort.setText(i18n.LBL_MANAGER_PORT);
    jcheckboxConnectToServer.setText(i18n.LBL_MANAGER_CONECTED);
    jcheckboxConnectToServer.addActionListener(this);
    lblManagerUsername.setText(i18n.LBL_MANAGER_USERNAME);
    lblManagerPassword.setText(i18n.LBL_MANAGER_PASSWORD);
    jpasswordfieldManager.addKeyListener(this);

    jtableUsers.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    jtableUsers.getSelectionModel().addListSelectionListener(this);
   
    lblUsername.setText(i18n.LBL_USERS_USERNAME);
    jtextfieldUsername.setToolTipText(i18n.TOOLTIP_USERNAME);
    lblUserId.setText(i18n.LBL_USERS_USERID);
    lblGroupId.setText(i18n.LBL_USERS_GROUPID);
    lblPassword1.setText(i18n.LBL_USERS_PASSWORD);
    jpasswordField1.setToolTipText(i18n.TOOLTIP_PASSWORD);
    lblPassword2.setText(i18n.LBL_USERS_PASSWORD_CONFIRM);
    jpasswordField2.setToolTipText(i18n.TOOLTIP_PASSWORD);
    lblFirstName.setText(i18n.LBL_USERS_FIRSTNAME);
    lblMiddleName.setText(i18n.LBL_USERS_MIDDLENAME);
    lblLastName.setText(i18n.LBL_USERS_LASTNAME);
   
    controlComponents(FirebirdManagerHelper.DISPLAY_MODE);
 
 
  /**
   * Set input fields with the last saved session preferences when exists
   * <br>or otherwise with the global preferences
   */
  private void readPreferences() {
    firebirdPreferencesBean = PreferencesManager.getGlobalPreferences();
    jtextfieldServer.setText(firebirdPreferencesBean.getServer());
    jtextfieldPort.setText(firebirdPreferencesBean.getPort());
    jtextfieldManagerUsername.setText(firebirdPreferencesBean.getUser());
   
    // preferences from the last session
    sessionPreferencesBean = (FirebirdManagerUsersPreferenceBean)PreferencesManager.loadPreferences(PreferencesManager.PREFERENCES_BEAN_USERS);
    if (sessionPreferencesBean.getUser().length() > 0)
      jtextfieldManagerUsername.setText(sessionPreferencesBean.getUser());
    if (sessionPreferencesBean.getServer().length() > 0)
      jtextfieldServer.setText(sessionPreferencesBean.getServer());
    if (sessionPreferencesBean.getPort().length() > 0)
      jtextfieldPort.setText(sessionPreferencesBean.getPort());
  }
 
  /**
   * Save the session preferences
   */
  private void saveSessionPreferences() {
    sessionPreferencesBean.setUser(jtextfieldManagerUsername.getText());
    sessionPreferencesBean.setServer(jtextfieldServer.getText());
    sessionPreferencesBean.setPort(jtextfieldPort.getText());
   
    PreferencesManager.savePreferences(sessionPreferencesBean, PreferencesManager.PREFERENCES_BEAN_USERS);
  }

  @SuppressWarnings("unchecked")
  private void readUsers() {
   
    try {
      mapUsers = (Map<String,FBUser>)fbUserManager.getUsers();
    } catch (Exception e) {
      log.error(e.getLocalizedMessage());
    }

    Collection<FBUser> listUsers = (Collection<FBUser>)mapUsers.values();
    vecTableUsers = new Vector<Vector<Object>>();
    Vector<Object> vecRow = null;
    for (Iterator iter = listUsers.iterator(); iter.hasNext();) {
      FBUser fbUser = (FBUser) iter.next();
      vecRow = new Vector<Object>();
      vecRow.add(fbUser.getUserName());
      vecRow.add(fbUser.getUserId());
      vecRow.add(fbUser.getGroupId());
      vecRow.add(fbUser.getFirstName());
      vecRow.add(fbUser.getMiddleName());
      vecRow.add(fbUser.getLastName());
      vecTableUsers.add(vecRow);
    }
   
    if (vecTableUsersHeader == null) {
      vecTableUsersHeader = new Vector<String>();
      vecTableUsersHeader.add(i18n.LBL_USERS_USERNAME);
      vecTableUsersHeader.add(i18n.LBL_USERS_USERID);
      vecTableUsersHeader.add(i18n.LBL_USERS_GROUPID);
      vecTableUsersHeader.add(i18n.LBL_USERS_FIRSTNAME);
      vecTableUsersHeader.add(i18n.LBL_USERS_MIDDLENAME);
      vecTableUsersHeader.add(i18n.LBL_USERS_LASTNAME);
    }

    ((DefaultTableModel)jtableUsers.getModel()).setDataVector(vecTableUsers, vecTableUsersHeader);
  }
 
 
  private void selectUser() {
    int row = jtableUsers.getSelectedRow();
   
    if (row > -1) {
      controlComponents(mode);
      jtextfieldUsername.setText((String)jtableUsers.getValueAt(row, TABLE_USERS_COL_USERNAME));
      jtextfieldUserId.setText("" + ((Integer)jtableUsers.getValueAt(row, TABLE_USERS_COL_USERID)).intValue());
      jtextfieldGroupId.setText("" + ((Integer)jtableUsers.getValueAt(row, TABLE_USERS_COL_GROUPID)).intValue());
      jtextfieldFirstName.setText((String)jtableUsers.getValueAt(row, TABLE_USERS_COL_FIRSTNAME));
      jtextfieldMiddleName.setText((String)jtableUsers.getValueAt(row, TABLE_USERS_COL_MIDDLENAME));
      jtextfieldLastName.setText((String)jtableUsers.getValueAt(row, TABLE_USERS_COL_LASTNAME));
    } else {
      initUserFields();
    }
  }
 
  private void initUserFields() {
    jtextfieldUsername.setText("");
    jtextfieldUserId.setText("0");
    jtextfieldGroupId.setText("0");
    jtextfieldFirstName.setText("");
    jtextfieldMiddleName.setText("");
    jtextfieldLastName.setText("");
    jpasswordField1.setText("");
    jpasswordField2.setText("");
  }
 

  // controlling
  // ------------------------------------------------------------------------
  private void controlComponents(int mode) {
    controlButton(mode);
    controlFields(mode);
   
    this.mode = mode;
  }

  private void controlButton(int mode) {
    int rowUser = jtableUsers.getSelectedRow();
    boolean sysdba = rowUser > -1
      && ((String)jtableUsers.getValueAt(rowUser, TABLE_USERS_COL_USERNAME)).equalsIgnoreCase("SYSDBA");

    btnNew.setEnabled(jcheckboxConnectToServer.isSelected()
        && mode == FirebirdManagerHelper.DISPLAY_MODE);
    btnEdit.setEnabled(jcheckboxConnectToServer.isSelected()
        && mode == FirebirdManagerHelper.DISPLAY_MODE
        && rowUser > -1);
    btnSave.setEnabled(jcheckboxConnectToServer.isSelected()
        && mode != FirebirdManagerHelper.DISPLAY_MODE);
    btnCancel.setEnabled(btnSave.isEnabled());
    btnDelete.setEnabled(btnEdit.isEnabled()
        && !sysdba);
  }

  private void controlFields(int mode) {
    boolean disconnected = iscSvcHandle == null;
    jtextfieldServer.setEnabled(disconnected);
    jtextfieldPort.setEnabled(disconnected);
    jtextfieldManagerUsername.setEnabled(disconnected);
    jpasswordfieldManager.setEnabled(disconnected);

    jtableUsers.setEnabled(mode == FirebirdManagerHelper.DISPLAY_MODE);

    jtextfieldUsername.setEnabled(mode == FirebirdManagerHelper.NEW_MODE);
    jtextfieldUserId.setEnabled(jtextfieldUsername.isEnabled());
    jtextfieldGroupId
        .setEnabled(mode != FirebirdManagerHelper.DISPLAY_MODE);
    jtextfieldFirstName.setEnabled(jtextfieldGroupId.isEnabled());
    jtextfieldMiddleName.setEnabled(jtextfieldGroupId.isEnabled());
    jtextfieldLastName.setEnabled(jtextfieldGroupId.isEnabled());
    jpasswordField1.setEnabled(jtextfieldGroupId.isEnabled());
    jpasswordField2.setEnabled(jtextfieldGroupId.isEnabled());
  }


  private void connectToServer() {
    if (iscSvcHandle == null) {
      fbUserManager.setHost(jtextfieldServer.getText());
      fbUserManager.setPort(FirebirdManagerHelper.convertStringToIntDef(jtextfieldPort.getText(), 3050));
      fbUserManager.setUser(jtextfieldManagerUsername.getText());
      fbUserManager.setPassword(new String(jpasswordfieldManager.getPassword()));
     
      try {
        iscSvcHandle = fbUserManager.attachServiceManager(fbUserManager.getGds());
        readUsers();
        controlComponents(mode);
        saveSessionPreferences();
      } catch (GDSException e) {
        JOptionPane.showMessageDialog(null, i18n.ERROR_CANNOT_CONNECT_SERVER);
        log.error(i18n.ERROR_CANNOT_CONNECT_SERVER);
        jcheckboxConnectToServer.setSelected(false);
      }
    }
  }
 
 
  private void disconnectFromServer() {
    if (iscSvcHandle != null) {
      try {
        fbUserManager.detachServiceManager(fbUserManager.getGds(), iscSvcHandle);
        iscSvcHandle = null;
        // init user list
        vecTableUsers = new Vector<Vector<Object>>();
        ((DefaultTableModel)jtableUsers.getModel()).setDataVector(vecTableUsers, vecTableUsersHeader);
        controlComponents(mode);
      } catch (GDSException e) {
        JOptionPane.showMessageDialog(null, i18n.ERROR_CANNOT_DISCONNECT_SERVER);
        log.error(i18n.ERROR_CANNOT_DISCONNECT_SERVER);
        jcheckboxConnectToServer.setSelected(true);
      }
    }
  }

 
  // user checks
  // ------------------------------------------------------------------------
  private boolean isInputOK() {
    StringBuffer bufError = new StringBuffer();
    boolean focusSet = false;
   
    if (jtextfieldUsername.getText().trim().length() == 0) {
      bufError.append(i18n.ERROR_USERNAME_MISSING + CR);
      jtextfieldUsername.requestFocusInWindow();
      focusSet = true;
    } else if (jtextfieldUsername.getText().trim().length() > 31) {
      bufError.append(i18n.ERROR_USERNAME_MAXLENGTH + CR);
      if (!focusSet) {
        jtextfieldUsername.requestFocusInWindow();
        focusSet = true;
      }
    }
    if (jtextfieldUserId.getText().length() > 0) {
      try {
        Integer.parseInt(jtextfieldUserId.getText());
      } catch (NumberFormatException e) {
        bufError.append(i18n.ERROR_NO_NUMBER + CR);
        if (!focusSet) {
          jtextfieldUserId.requestFocusInWindow();
          focusSet = true;
        }
      }
    }
    if (jtextfieldGroupId.getText().length() > 0) {
      try {
        Integer.parseInt(jtextfieldGroupId.getText());
      } catch (NumberFormatException e) {
        bufError.append(i18n.ERROR_NO_NUMBER + CR);
        if (!focusSet) {
          jtextfieldGroupId.requestFocusInWindow();
          focusSet = true;
        }
      }
    }
    boolean pwRequired = mode == FirebirdManagerHelper.NEW_MODE
      || jpasswordField1.getPassword().length > 0
      || jpasswordField2.getPassword().length > 0;
     
    if (pwRequired) {
      if (jpasswordField1.getPassword().length == 0) {
        bufError.append(i18n.ERROR_PASSWORD_MISSING + CR);
        if (!focusSet) {
          jpasswordField1.requestFocusInWindow();
          focusSet = true;
        }
      } else {
        if (jpasswordField2.getPassword().length == 0) {
          bufError.append(i18n.ERROR_PASSWORD_MISSING + CR);
          if (!focusSet) {
            jpasswordField2.requestFocusInWindow();
            focusSet = true;
          }
        } else {
          if (!new String(jpasswordField1.getPassword()).equals(new String(jpasswordField2.getPassword()))) {
            bufError.append(i18n.ERROR_PASSWORD_DIFFERENCES + CR);
            if (!focusSet) {
              jpasswordField1.requestFocusInWindow();
              focusSet = true;
            }
          } else if (new String(jpasswordField1.getPassword()).length() > 31) {
            bufError.append(i18n.ERROR_PASSWORD_MAXLENGTH + CR);
            if (!focusSet) {
              jpasswordField1.requestFocusInWindow();
              focusSet = true;
            }
          }
        }
      }
    }
   
    if (mode == FirebirdManagerHelper.NEW_MODE) {
      int uniqueUser = uniqueUser();
      if (uniqueUser > UNIQUE_USER) {
        if (uniqueUser == USERNAME_EXISTS) {
          bufError.append(i18n.ERROR_USERNAME_EXISTS + CR);
        } else if (uniqueUser == USERID_EXISTS) {
          bufError.append(i18n.ERROR_USERID_EXISTS + CR);
        }
        if (!focusSet) {
          jtextfieldUsername.requestFocusInWindow();
          focusSet = true;
        }
      }
    }
   
    if (bufError.length() != 0) {
      JOptionPane.showMessageDialog(_application.getMainFrame(), bufError.toString());
    }
   
    return bufError.length() == 0;
  }

 
  private int uniqueUser() {
    int userId = FirebirdManagerHelper.convertStringToIntDef(jtextfieldUserId.getText(), -1);
    for (int i = 0; i < jtableUsers.getRowCount(); i++) {
      if (jtextfieldUsername.getText().equalsIgnoreCase((String)jtableUsers.getValueAt(i, TABLE_USERS_COL_USERNAME))) {
        return USERNAME_EXISTS;
      } else if (userId > 0
          && userId == ((Integer)jtableUsers.getValueAt(i, TABLE_USERS_COL_USERID)).intValue()) {
        return USERID_EXISTS;
      }
    }
    return UNIQUE_USER;
  }
 

  private FBUser fillUser() {
    FBUser fbUser = new FBUser();
    fbUser.setUserName(jtextfieldUsername.getText().trim());
    fbUser.setUserId(FirebirdManagerHelper.convertStringToIntDef(jtextfieldUserId.getText(), 0));
    fbUser.setGroupId(FirebirdManagerHelper.convertStringToIntDef(jtextfieldGroupId.getText(), 0));
    if (mode == FirebirdManagerHelper.NEW_MODE
        || new String(jpasswordField1.getPassword()).trim().length() > 0) {
      fbUser.setPassword(new String(jpasswordField1.getPassword()).trim());
    }
    fbUser.setFirstName(jtextfieldFirstName.getText());
    fbUser.setMiddleName(jtextfieldMiddleName.getText());
    fbUser.setLastName(jtextfieldLastName.getText());
   
    return fbUser;
  }
 
  private boolean saveData() {
    if (isInputOK()) {
      try {
        if (mode == FirebirdManagerHelper.NEW_MODE) {
          fbUserManager.add(fillUser());
        } else {
          fbUserManager.update(fillUser());
        }
        readUsers();
        return true;
      } catch (Exception e) {
        JOptionPane.showMessageDialog(null, i18n.ERROR_SAVE_USER);
        log.error(i18n.ERROR_SAVE_USER + CR + e.getLocalizedMessage());
      }
    }
   
    return false;
  }
 
  private void deleteUser() {
    int row = jtableUsers.getSelectedRow();
    if (row > -1
        && JOptionPane.showConfirmDialog(null, i18n.QUESTION_DELETE_USER, i18n.QUESTION_TITLE_DELETE_USER,
            JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
      FBUser fbUser = mapUsers.get(jtextfieldUsername.getText());
      try {
        fbUserManager.delete(fbUser);
        readUsers();
      } catch (Exception e) {
        JOptionPane.showMessageDialog(null, i18n.ERROR_DELETE_USER);
        log.error(i18n.ERROR_DELETE_USER + CR + e.getLocalizedMessage());
      }
    }
  }
 
 
  // ########################################################################
  // ########## events
  // ########################################################################
  // ------------------------------------------------------------------------
  public void actionPerformed(ActionEvent e) {
    if (e.getSource() == btnNew) {
      initUserFields();
      controlComponents(FirebirdManagerHelper.NEW_MODE);
      jtextfieldUsername.requestFocusInWindow();
    } else if (e.getSource() == btnEdit) {
      controlComponents(FirebirdManagerHelper.EDIT_MODE);
      jtextfieldFirstName.requestFocusInWindow();
    } else if (e.getSource() == btnSave) {
      if (saveData()) {
        controlComponents(FirebirdManagerHelper.DISPLAY_MODE);
      }
    } else if (e.getSource() == btnCancel) {
      selectUser();
      controlComponents(FirebirdManagerHelper.DISPLAY_MODE);
    } else if (e.getSource() == btnDelete) {
      deleteUser();
    } else if (e.getSource() == jcheckboxConnectToServer) {
      if (jcheckboxConnectToServer.isSelected()) {
        connectToServer();
      } else {
        disconnectFromServer();
      }
    }
  }
 
 
  // ------------------------------------------------------------------------
    public void keyTyped(KeyEvent e) {
    }
    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_ENTER) {
          if (e.getSource() == jpasswordfieldManager
              && !jcheckboxConnectToServer.isSelected()) {
            jcheckboxConnectToServer.doClick();
          }
        }
    }
    public void keyReleased(KeyEvent e) {
    }


  // ------------------------------------------------------------------------
    public void valueChanged(ListSelectionEvent e) {
    if (!e.getValueIsAdjusting()
        && e.getSource() == jtableUsers.getSelectionModel()) {
      selectUser();
    }
  }

}
TOP

Related Classes of net.sourceforge.squirrel_sql.plugins.firebirdmanager.gui.FirebirdManagerUserManagerFrame$i18n

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.