From db615a895b644af038308ae71b680f1d93f78f70 Mon Sep 17 00:00:00 2001 From: mharmsen Date: Sat, 29 Oct 2011 04:43:21 +0000 Subject: Bugzilla Bug #737761 - Update Dogtag Packages for Fedora 16 git-svn-id: svn+ssh://svn.fedorahosted.org/svn/pki/tags/DOGTAG_9_0_FEDORA_15_16_17_20111028@2279 c9f7a03b-bd48-0410-a16d-cbbf54688b0b --- .../src/com/netscape/admin/certsrv/ug/UserTab.java | 375 +++++++++++++++++++++ 1 file changed, 375 insertions(+) create mode 100644 pki/base/console/src/com/netscape/admin/certsrv/ug/UserTab.java (limited to 'pki/base/console/src/com/netscape/admin/certsrv/ug/UserTab.java') diff --git a/pki/base/console/src/com/netscape/admin/certsrv/ug/UserTab.java b/pki/base/console/src/com/netscape/admin/certsrv/ug/UserTab.java new file mode 100644 index 000000000..ccf7ac5ae --- /dev/null +++ b/pki/base/console/src/com/netscape/admin/certsrv/ug/UserTab.java @@ -0,0 +1,375 @@ +// --- BEGIN COPYRIGHT BLOCK --- +// 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; version 2 of the License. +// +// 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., +// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +// +// (C) 2007 Red Hat, Inc. +// All rights reserved. +// --- END COPYRIGHT BLOCK --- +package com.netscape.admin.certsrv.ug; + +import com.netscape.admin.certsrv.*; +import com.netscape.admin.certsrv.connection.*; +import javax.swing.*; +import javax.swing.event.*; +import java.awt.event.*; +import java.awt.*; +import java.util.*; +import com.netscape.management.client.*; +import com.netscape.management.client.util.*; +import com.netscape.certsrv.common.*; + +/** + * User Tab - this UI component provides the user + * management functionality of the certificate server. + * + * @author Jack Pan-Chen + * @version $Revision$, $Date$ + * + * @see com.netscape.admin.certsrv.ug.CertImportDialog + * @see com.netscape.admin.certsrv.ug.CertManagementDialog + * @see com.netscape.admin.certsrv.ug.CertViewDialog + * @see com.netscape.admin.certsrv.ug.UserEditor + */ +public class UserTab extends CMSBaseUGTab { + + /*========================================================== + * variables + *==========================================================*/ + private static final String PANEL_NAME = "USERTAB"; + private AdminConnection mConnection; + + protected JScrollPane mScrollPane; + protected JTable mTable; //table + protected UserDataModel mDataModel; //table model + protected UserEditor mEditor=null; //keep single copy + protected UserEditor mAddEditor=null; //keep single copy + protected CertManagementDialog mCertEditor=null; //single copy + protected JButton mRefresh, mEdit, mAdd, mDelete, mHelp, mCert; + private final static String HELPINDEX = "usersgroups-certsrv-users-help"; + + /*========================================================== + * constructors + *==========================================================*/ + public UserTab(CMSBaseResourceModel model) { + super(PANEL_NAME, model); + mConnection = model.getServerInfo().getAdmin(); + mDataModel = new UserDataModel(); + mHelpToken = HELPINDEX; + } + + /*========================================================== + * public methods + *==========================================================*/ + + /** + * refresh the content of the tab + * IRefreshTab menthod + */ + public void refresh() { + //Debug.println("refresh() user tab"); + + mDataModel.removeAllRows(); + updateUser(); + setButtons(); + mTable.invalidate(); + mTable.validate(); + mScrollPane.invalidate(); + mScrollPane.validate(); + mScrollPane.repaint(1); + } + + /*========================================================== + * EVNET HANDLER METHODS + *==========================================================*/ + + //=== ACTIONLISTENER ===================== + public void actionPerformed(ActionEvent e) { + if (e.getSource().equals(mRefresh)) { + Debug.println("Refresh User"); + refresh(); + } else if (e.getSource().equals(mEdit)) { + if(mTable.getSelectedRow()< 0) + return; + + Debug.println("Edit User"); + String userName = (String) + mDataModel.getObjectValueAt(mTable.getSelectedRow()); + + mAddEditor = new UserEditor(mModel.getFrame(), mConnection, + false); + mAddEditor.showDialog(userName); + mAddEditor.dispose(); + refresh(); + } else if (e.getSource().equals(mAdd)) { + mAddEditor = new UserEditor(mModel.getFrame(), mConnection, true); + mAddEditor.showDialog(""); + if (mAddEditor.isUserAdded()) + refresh(); + mAddEditor.dispose(); + } else if (e.getSource().equals(mDelete)) { + Debug.println("Delete User"); + if(mTable.getSelectedRow()< 0) + return; + int i = showConfirmDialog("DELETE"); + if (i == JOptionPane.YES_OPTION) { + deleteUser(); + Debug.println("User Deleted"); + } + } else if (e.getSource().equals(mHelp)) { + helpCallback(); + } else if (e.getSource().equals(mCert)) { + String userName = (String) + mDataModel.getObjectValueAt(mTable.getSelectedRow()); + if (mCertEditor==null) + mCertEditor = new CertManagementDialog(mModel.getFrame(), mConnection); + mCertEditor.showDialog(userName); + Debug.println("Cert"); + //refresh(); + //XXX HELP + } + } + + //==== MOUSELISTENER ====================== + public void mouseClicked(MouseEvent e) { + //Debug.println("CertRepositoryPanel: mouseClicked() -"+e.toString()); + setButtons(); + + //we track the double click action on the table entry - View op + if(mTable.getSelectedRow() >= 0) { + if(e.getClickCount() == 2) { + Debug.println("Edit User"); + //editUser(); + } + } + } + + public void mouseReleased(MouseEvent e) { + setButtons(); + } + + /*========================================================== + * protected methods + *==========================================================*/ + + /** + * create the user action button panel + */ + protected JPanel createUserButtonPanel() { + //edit, add, delete, help buttons required + //actionlister to this object + mEdit = makeJButton("EDIT"); + mAdd = makeJButton("ADD"); + mDelete = makeJButton("DELETE"); + mCert = makeJButton("CERT"); + JButton[] buttons = {mAdd, mDelete, mEdit, mCert}; + JButtonFactory.resize( buttons ); + return CMSAdminUtil.makeJButtonVPanel( buttons ); + } + + protected JPanel createActionPanel() { + //edit, add, delete, help buttons required + //actionlister to this object + mRefresh = makeJButton("REFRESH"); + mHelp = makeJButton("HELP"); + //JButton[] buttons = { mRefresh, mHelp }; + JButton[] buttons = { mRefresh }; + return makeJButtonPanel( buttons, true); + } + + protected JPanel createListPanel() { + mListPanel = new JPanel(); + GridBagLayout gb = new GridBagLayout(); + GridBagConstraints gbc = new GridBagConstraints(); + mListPanel.setLayout(gb); + + //center table + mTable = new JTable(mDataModel); + mScrollPane = JTable.createScrollPaneForTable(mTable); + //mScrollPane.setBorder(CMSAdminUtil.makeTitledBorder(mResource,PANEL_NAME,"USERS")); + mScrollPane.setHorizontalScrollBarPolicy(mScrollPane.HORIZONTAL_SCROLLBAR_NEVER); + mScrollPane.setVerticalScrollBarPolicy(mScrollPane.VERTICAL_SCROLLBAR_ALWAYS); + mTable.setAutoscrolls(true); + mTable.sizeColumnsToFit(true); + mTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + mTable.getSelectionModel().addListSelectionListener(this); + mTable.addMouseListener(this); + mScrollPane.setBackground(Color.white); + setLabelCellRenderer(mTable,0); + + CMSAdminUtil.resetGBC(gbc); + gbc.anchor = gbc.NORTH; + gbc.fill = gbc.BOTH; + gbc.gridwidth = 1; + gbc.weightx = 1.0; + gbc.insets = EMPTY_INSETS; + gb.setConstraints(mScrollPane, gbc); + mListPanel.add(mScrollPane); + + JPanel buttonPanel = createUserButtonPanel(); + CMSAdminUtil.resetGBC(gbc); + gbc.anchor = gbc.NORTH; + gbc.gridwidth = gbc.REMAINDER; + gbc.gridheight = gbc.REMAINDER; + gbc.weightx = 0.0; + gbc.weighty = 1.0; + gbc.insets = EMPTY_INSETS; + gb.setConstraints(buttonPanel, gbc); + mListPanel.add(buttonPanel); + + refresh(); + + return mListPanel; + } + + //Set the first column's cellrender as label cell + protected void setLabelCellRenderer(JTable table, int index) { + table.getColumnModel().getColumn(index).setCellRenderer(new LabelCellRenderer(new JLabel())); + } + + /*========================================================== + * private methods + *==========================================================*/ + + /** + * set buttons - proactive verification + */ + private void setButtons() { + + //enable and diable buttons accordingly + if (mTable.getSelectionModel().isSelectionEmpty()) { + mDelete.setEnabled(false); + mEdit.setEnabled(false); + mCert.setEnabled(false); + return; + } + + if(mDataModel.getRowCount()< 0) { + mDelete.setEnabled(false); + mEdit.setEnabled(false); + mCert.setEnabled(false); + return; + } + + mDelete.setEnabled(true); + mEdit.setEnabled(true); + mCert.setEnabled(true); + + } + + //============================================= + // SEND REQUESTS TO THE SERVER SIDE + //============================================= + + private void updateUser() { + //send request and parse data + + NameValuePairs response; + mModel.progressStart(); + + try { + response = mConnection.search(DestDef.DEST_USER_ADMIN, + ScopeDef.SC_USERS, + new NameValuePairs()); + } catch (EAdminException e) { + //display error dialog + showErrorDialog(e.getMessage()); + mModel.progressStop(); + return; + } + + Debug.println(response.toString()); + + String responseValue = response.getValue("userInfo"); + + StringTokenizer tokenizer = new StringTokenizer(responseValue, ";"); + StringTokenizer subTokenizer = null; + + Vector store = new Vector(); + Hashtable table = new Hashtable(); + + while (tokenizer.hasMoreTokens()) { + String t = (String)tokenizer.nextToken(); + subTokenizer = new StringTokenizer(t, ":"); + int i=0; + String str1 = null; + String str2 = null; + while (subTokenizer.hasMoreTokens()) { + if (i == 0) { + str1 = (String)subTokenizer.nextToken(); + store.addElement(str1); + } else { + str2 = (String)subTokenizer.nextToken(); + table.put(str1, str2); + } + i++; + } + } + + String[] names = new String[store.size()]; + store.copyInto(names); + + if (names.length > 1) { + names = CMSAdminUtil.randomize(names); + CMSAdminUtil.quickSort(names, 0, names.length-1); + } + + for (int y=0; y< names.length ; y++) { + String s = (String)table.get(names[y]); + mDataModel.processData(names[y], s); + } + + if (mDataModel.getRowCount() >0) + mTable.setRowSelectionInterval(0,0); + + mModel.progressStop(); + } + + private void deleteUser() { + //get entry name + String userName = (String) + mDataModel.getObjectValueAt(mTable.getSelectedRow()); + + mModel.progressStart(); + //send comment to server for the removal of user + try { + mConnection.delete(DestDef.DEST_USER_ADMIN, + ScopeDef.SC_USERS, + userName); + } catch (EAdminException e) { + String str = e.toString(); + + if (str.indexOf("The user") == 0) { + int i = + JOptionPane.showConfirmDialog(new JFrame(), str, + "Information", JOptionPane.YES_NO_OPTION, + JOptionPane.INFORMATION_MESSAGE, + CMSAdminUtil.getImage(CMSAdminResources.IMAGE_INFO_ICON)); + if (i == JOptionPane.YES_OPTION) { + Debug.println("User Deleted"); + try { + mConnection.delete(DestDef.DEST_USER_ADMIN, + ScopeDef.SC_USERS, + userName+":true"); + } catch (EAdminException ee) { + showErrorDialog(ee.getMessage()); + } + } + } + } + + mModel.progressStop(); + //send comment to server and refetch the content + refresh(); + } + +} -- cgit