diff options
Diffstat (limited to 'base/console/src/com/netscape/admin/certsrv/config/CMSCRLCachePanel.java')
-rw-r--r-- | base/console/src/com/netscape/admin/certsrv/config/CMSCRLCachePanel.java | 371 |
1 files changed, 371 insertions, 0 deletions
diff --git a/base/console/src/com/netscape/admin/certsrv/config/CMSCRLCachePanel.java b/base/console/src/com/netscape/admin/certsrv/config/CMSCRLCachePanel.java new file mode 100644 index 000000000..51da9c58c --- /dev/null +++ b/base/console/src/com/netscape/admin/certsrv/config/CMSCRLCachePanel.java @@ -0,0 +1,371 @@ +// --- 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.config; + +import com.netscape.management.client.util.*; +import com.netscape.certsrv.common.*; +import com.netscape.admin.certsrv.*; +import com.netscape.admin.certsrv.connection.*; +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; + +/** + * Panel Setting CRL Cache + * + * @author Andrew Wnuk + * @version $Revision$, $Date$ + */ +public class CMSCRLCachePanel extends CMSBaseTab { + + /*========================================================== + * variables + *==========================================================*/ + private static String PANEL_NAME = "CRLCACHE"; + + private JCheckBox mEnableCache; + + private JLabel mCacheFreqLabel; + private JTextField mCacheFreq; + private JLabel mCacheFreqMinLabel; + + private JLabel mEnableCacheRecoveryLabel; + private JCheckBox mEnableCacheRecovery; + + private JLabel mEnableCacheTestingLabel; + private JCheckBox mEnableCacheTesting; + + private Color mActiveColor; + private AdminConnection _admin; + private CMSBaseResourceModel _model; + private CMSTabPanel mParent; + private String mId = null; + private static final String HELPINDEX = + "configuration-ca-ldappublish-crl-help"; + private CMSCRLFormatPanel mCRLFormatPanel = null; + + /*========================================================== + * constructors + *==========================================================*/ + public CMSCRLCachePanel(CMSTabPanel parent) { + super(PANEL_NAME, parent); + _model = parent.getResourceModel(); + mParent = parent; + mHelpToken = HELPINDEX; + } + + public CMSCRLCachePanel(CMSTabPanel parent, String id) { + super(PANEL_NAME, parent); + _model = parent.getResourceModel(); + mParent = parent; + mHelpToken = HELPINDEX; + mId = id; + } + + /*========================================================== + * public methods + *==========================================================*/ + public void init() { + Debug.println("CRLCachePanel: init()"); + _admin = _model.getServerInfo().getAdmin(); + + GridBagLayout gb = new GridBagLayout(); + GridBagConstraints gbc = new GridBagConstraints(); + mCenterPanel.setLayout(gb); + + + //cache panel + JPanel cachePanel = new JPanel(); + cachePanel.setBorder(makeTitledBorder("CACHE")); + CMSAdminUtil.resetGBC(gbc); + gbc.anchor = gbc.NORTH; + gbc.gridwidth = gbc.REMAINDER; + gbc.gridheight = gbc.REMAINDER; + gbc.weightx = 1.0; + gbc.weighty = 1.0; + gb.setConstraints(cachePanel, gbc); + mCenterPanel.add(cachePanel); + + GridBagLayout gb3 = new GridBagLayout(); + cachePanel.setLayout(gb3); + + + // enable cache + CMSAdminUtil.resetGBC(gbc); + JLabel enableCacheLabel = makeJLabel("CACHE"); + gbc.anchor = gbc.EAST; + gbc.fill = gbc.NONE; + gbc.gridx = 0; + gbc.weightx = 0.0; + gbc.gridwidth = 1; + gbc.insets = new Insets(COMPONENT_SPACE,DIFFERENT_COMPONENT_SPACE,0,0); + cachePanel.add(enableCacheLabel, gbc); + + mEnableCache = makeJCheckBox(); + gbc.anchor = gbc.WEST; + gbc.gridx++; + gbc.weightx = 1.0; + gbc.gridwidth = gbc.REMAINDER; + gbc.insets = new Insets(COMPONENT_SPACE,COMPONENT_SPACE,0,COMPONENT_SPACE); + cachePanel.add(mEnableCache, gbc); + + + // how often to save cache + CMSAdminUtil.resetGBC(gbc); + mCacheFreqLabel = makeJLabel("INTERVAL"); + gbc.anchor = gbc.EAST; + gbc.fill = gbc.NONE; + gbc.gridx = 0; + gbc.weightx = 0.0; + gbc.gridwidth = 1; + gbc.insets = new Insets(COMPONENT_SPACE,DIFFERENT_COMPONENT_SPACE,0,0); + cachePanel.add(mCacheFreqLabel, gbc); + + mCacheFreq = makeJTextField(5); + gbc.anchor = gbc.WEST; + gbc.gridx++; + gbc.insets = new Insets(COMPONENT_SPACE,COMPONENT_SPACE,0,0); + cachePanel.add(mCacheFreq, gbc); + mActiveColor = mCacheFreq.getBackground(); + + mCacheFreqMinLabel = makeJLabel("MINUTES"); + gbc.anchor = gbc.WEST; + gbc.gridx++; + gbc.weightx = 1.0; + gbc.gridwidth = gbc.REMAINDER; + gbc.insets = new Insets(COMPONENT_SPACE,COMPONENT_SPACE,0,COMPONENT_SPACE); + cachePanel.add(mCacheFreqMinLabel, gbc); + + + // enable cache recovery + CMSAdminUtil.resetGBC(gbc); + mEnableCacheRecoveryLabel = makeJLabel("RECOVERY"); + gbc.anchor = gbc.EAST; + gbc.fill = gbc.NONE; + gbc.gridx = 0; + gbc.weightx = 0.0; + gbc.gridwidth = 1; + gbc.insets = new Insets(COMPONENT_SPACE,DIFFERENT_COMPONENT_SPACE,0,0); + cachePanel.add(mEnableCacheRecoveryLabel, gbc ); + + mEnableCacheRecovery = makeJCheckBox(); + gbc.anchor = gbc.WEST; + gbc.gridx++; + gbc.weightx = 1.0; + gbc.gridwidth = gbc.REMAINDER; + gbc.insets = new Insets(COMPONENT_SPACE,COMPONENT_SPACE,0,COMPONENT_SPACE); + cachePanel.add(mEnableCacheRecovery, gbc); + + // enable cache testing + CMSAdminUtil.resetGBC(gbc); + mEnableCacheTestingLabel = makeJLabel("TEST"); + gbc.anchor = gbc.EAST; + gbc.fill = gbc.NONE; + gbc.gridx = 0; + gbc.weightx = 0.0; + gbc.gridwidth = 1; + gbc.insets = new Insets(COMPONENT_SPACE,DIFFERENT_COMPONENT_SPACE,0,0); + cachePanel.add(mEnableCacheTestingLabel, gbc ); + + mEnableCacheTesting = makeJCheckBox(); + gbc.anchor = gbc.WEST; + gbc.gridx++; + gbc.weightx = 1.0; + gbc.gridwidth = gbc.REMAINDER; + gbc.insets = new Insets(COMPONENT_SPACE,COMPONENT_SPACE,0,COMPONENT_SPACE); + cachePanel.add(mEnableCacheTesting, gbc); + + int nTabs = mParent.mTabbedPane.getTabCount(); + for (int i = 0; i < nTabs; i++) { + Object p = mParent.mTabbedPane.getComponentAt(i); + if (p instanceof CMSCRLFormatPanel) { + mCRLFormatPanel = (CMSCRLFormatPanel)p; + } + } + + refresh(); + } + + public void refresh() { + _model.progressStart(); + NameValuePairs nvps = new NameValuePairs(); + nvps.put(Constants.PR_ENABLE_CACHE, ""); + nvps.put(Constants.PR_CACHE_FREQ, ""); + nvps.put(Constants.PR_CACHE_RECOVERY, ""); + nvps.put(Constants.PR_CACHE_TESTING, ""); + + try { + NameValuePairs val = null; + if (mId != null && mId.length() > 0) { + val = _admin.read(DestDef.DEST_CA_ADMIN, ScopeDef.SC_CRL, + mId, nvps); + } else { + val = _admin.read(DestDef.DEST_CA_ADMIN, ScopeDef.SC_CRL, + Constants.RS_ID_CONFIG, nvps); + } + + populate(val); + } catch (EAdminException e) { + showErrorDialog(e.toString()); + _model.progressStop(); + } + _model.progressStop(); + clearDirtyFlag(); + mParent.setOKCancel(); + enableFields(); + } + + public void populate(NameValuePairs nvps) { + String signingAlg = ""; + for (String name : nvps.keySet()) { + String value = nvps.get(name).trim(); + if (name.equals(Constants.PR_ENABLE_CACHE)) { + mEnableCache.setSelected(getBoolean(value, true)); + } else if (name.equals(Constants.PR_CACHE_FREQ)) { + mCacheFreq.setText(value); + } else if (name.equals(Constants.PR_CACHE_RECOVERY)) { + mEnableCacheRecovery.setSelected(getBoolean(value)); + } else if (name.equals(Constants.PR_CACHE_TESTING)) { + mEnableCacheTesting.setSelected(getBoolean(value)); + } + } + } + + public boolean getBoolean(String val) { + if (val.equals(Constants.TRUE)) + return true; + return false; + } + + public boolean getBoolean(String val, boolean defaultValue) { + if (val.equals(Constants.TRUE)) + return true; + else if (val.equals(Constants.FALSE)) + return false; + else + return defaultValue; + } + + /** + * Implementation for saving panel information + * @return true if save successful; otherwise, false. + */ + public boolean applyCallback() { + String cacheFreq = ""; + int iCacheFreq = 0; + + NameValuePairs nvps = new NameValuePairs(); + + + if (mEnableCache.isSelected()) + nvps.put(Constants.PR_ENABLE_CACHE, Constants.TRUE); + else + nvps.put(Constants.PR_ENABLE_CACHE, Constants.FALSE); + + cacheFreq = mCacheFreq.getText().trim(); + if (cacheFreq.equals("")) { + showMessageDialog("BLANKFIELD"); + return false; + } + try { + iCacheFreq = Integer.parseInt(cacheFreq); + } catch (NumberFormatException e) { + showMessageDialog("NUMBERFORMAT"); + return false; + } + if (iCacheFreq < 0) { + showMessageDialog("NUMBERFORMAT"); + return false; + } + nvps.put(Constants.PR_CACHE_FREQ, cacheFreq); + + + if (mEnableCacheRecovery.isSelected()) + nvps.put(Constants.PR_CACHE_RECOVERY, Constants.TRUE); + else + nvps.put(Constants.PR_CACHE_RECOVERY, Constants.FALSE); + + if (mEnableCacheTesting.isSelected()) + nvps.put(Constants.PR_CACHE_TESTING, Constants.TRUE); + else + nvps.put(Constants.PR_CACHE_TESTING, Constants.FALSE); + + _model.progressStart(); + + try { + if (mId != null && mId.length() > 0) { + _admin.modify(DestDef.DEST_CA_ADMIN, ScopeDef.SC_CRL, + mId, nvps); + } else { + _admin.modify(DestDef.DEST_CA_ADMIN, ScopeDef.SC_CRL, + Constants.RS_ID_CONFIG, nvps); + } + } catch (EAdminException e) { + showErrorDialog(e.toString()); + _model.progressStop(); + return false; + } + + _model.progressStop(); + clearDirtyFlag(); + return true; + } + + /** + * Implementation for reset values + * @return true if save successful; otherwise, false. + */ + public boolean resetCallback() { + refresh(); + return true; + } + + public void actionPerformed(ActionEvent e) { + if (e.getSource().equals(mEnableCache)) { + enableFields(); + } + super.actionPerformed(e); + } + + private void enableFields() { + boolean enable = mEnableCache.isSelected(); + Color color = (enable)? mActiveColor: getBackground(); + mCRLFormatPanel.setCacheEnabled(enable); + + mCacheFreqLabel.setEnabled(enable); + CMSAdminUtil.repaintComp(mCacheFreqLabel); + + CMSAdminUtil.enableJTextField(mCacheFreq, enable, color); + + mCacheFreqMinLabel.setEnabled(enable); + CMSAdminUtil.repaintComp(mCacheFreqMinLabel); + + mEnableCacheRecoveryLabel.setEnabled(enable); + CMSAdminUtil.repaintComp(mEnableCacheRecoveryLabel); + + mEnableCacheRecovery.setEnabled(enable); + CMSAdminUtil.repaintComp(mEnableCacheRecovery); + + mEnableCacheTestingLabel.setEnabled(enable); + CMSAdminUtil.repaintComp(mEnableCacheTestingLabel); + + mEnableCacheTesting.setEnabled(enable); + CMSAdminUtil.repaintComp(mEnableCacheTesting); + } +} + |