/** * Copyright (c) 2009 Juwi MacMillan Group GmbH * * 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 de.juwimm.cms.gui.admin.safeguard; import static de.juwimm.cms.common.Constants.rb; import java.awt.Color; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.log4j.Logger; import de.juwimm.cms.safeguard.vo.RealmJdbcValue; import de.juwimm.swing.DropDownHolder; import de.juwimm.swing.SortingListModel; /** * * @author <a href="mailto:carsten.schalm@juwimm.com">Carsten Schalm</a> * company Juwi|MacMillan Group Gmbh, Walsrode, Germany * @version $Id$ */ public final class PanSqlDbRealm extends AbstractSafeguardPanel { private static final long serialVersionUID = -4595155805594463415L; private static Logger log = Logger.getLogger(PanSqlDbRealm.class); private JPanel panData = null; private JLabel lblRealmId = null; private JLabel lblRealmIdDisplay = null; private JLabel lblRealmName = null; private JTextField txtRealmName = null; private JLabel lblJndiName = null; private JTextField txtJndiName = null; private JLabel lblSqlUser = null; private JTextField txtSqlUser = null; private JLabel lblSqlRole = null; private JTextField txtSqlRole = null; private PanChooseLoginPage panChooseLoginPage = null; private final Color backgroundTextFieldError = new Color(0xed4044); public PanSqlDbRealm() { super(); this.init(); this.setActive(false); } /** * This method initializes panData * * @return javax.swing.JPanel */ private JPanel getPanData() { if (panData == null) { this.panChooseLoginPage = new PanChooseLoginPage(); GridBagConstraints gridBagConstraints11 = new GridBagConstraints(); gridBagConstraints11.gridx = 3; gridBagConstraints11.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints11.insets = new java.awt.Insets(5, 5, 5, 5); gridBagConstraints11.gridy = 5; gridBagConstraints11.gridwidth = 3; gridBagConstraints11.weightx = 1.0; GridBagConstraints gridBagConstraints4 = new GridBagConstraints(); gridBagConstraints4.fill = java.awt.GridBagConstraints.NONE; gridBagConstraints4.gridy = 2; gridBagConstraints4.weightx = 1.0; gridBagConstraints4.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints4.insets = new java.awt.Insets(5, 5, 5, 5); gridBagConstraints4.gridx = 4; GridBagConstraints gridBagConstraints3 = new GridBagConstraints(); gridBagConstraints3.gridx = 3; gridBagConstraints3.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints3.insets = new java.awt.Insets(5, 5, 5, 5); gridBagConstraints3.gridy = 2; GridBagConstraints gridBagConstraints2 = new GridBagConstraints(); gridBagConstraints2.fill = java.awt.GridBagConstraints.NONE; gridBagConstraints2.gridy = 1; gridBagConstraints2.weightx = 1.0; gridBagConstraints2.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints2.insets = new java.awt.Insets(5, 5, 5, 5); gridBagConstraints2.gridx = 4; GridBagConstraints gridBagConstraints1 = new GridBagConstraints(); gridBagConstraints1.gridx = 3; gridBagConstraints1.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints1.insets = new java.awt.Insets(5, 5, 5, 5); gridBagConstraints1.gridy = 1; GridBagConstraints gridBagConstraints20 = new GridBagConstraints(); gridBagConstraints20.fill = java.awt.GridBagConstraints.NONE; gridBagConstraints20.gridy = 0; gridBagConstraints20.weightx = 1.0; gridBagConstraints20.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints20.insets = new java.awt.Insets(5, 5, 5, 5); gridBagConstraints20.gridx = 4; GridBagConstraints gridBagConstraints10 = new GridBagConstraints(); gridBagConstraints10.gridx = 3; gridBagConstraints10.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints10.insets = new java.awt.Insets(5, 5, 5, 5); gridBagConstraints10.gridy = 0; GridBagConstraints gridBagConstraints6 = new GridBagConstraints(); gridBagConstraints6.fill = java.awt.GridBagConstraints.NONE; gridBagConstraints6.gridy = 3; gridBagConstraints6.weightx = 1.0; gridBagConstraints6.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints6.insets = new java.awt.Insets(5, 5, 5, 5); gridBagConstraints6.gridx = 4; GridBagConstraints gridBagConstraints5 = new GridBagConstraints(); gridBagConstraints5.gridx = 3; gridBagConstraints5.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints5.insets = new java.awt.Insets(5, 5, 5, 5); gridBagConstraints5.gridy = 3; GridBagConstraints gridBagConstraints8 = new GridBagConstraints(); gridBagConstraints8.fill = java.awt.GridBagConstraints.NONE; gridBagConstraints8.gridy = 4; gridBagConstraints8.weightx = 1.0; gridBagConstraints8.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints8.insets = new java.awt.Insets(5, 5, 5, 5); gridBagConstraints8.gridx = 4; GridBagConstraints gridBagConstraints7 = new GridBagConstraints(); gridBagConstraints7.gridx = 3; gridBagConstraints7.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints7.insets = new java.awt.Insets(5, 5, 5, 5); gridBagConstraints7.gridy = 4; lblRealmId = new JLabel(rb.getString("panel.admin.tab.safeguard.panel.realmId")); lblRealmIdDisplay = new JLabel(""); lblRealmName = new JLabel(rb.getString("panel.admin.tab.safeguard.panel.realmName")); lblJndiName = new JLabel(rb.getString("panel.admin.tab.safeguard.panel.jdbc.jndiName")); lblSqlUser = new JLabel(rb.getString("panel.admin.tab.safeguard.panel.jdbc.statementUser")); lblSqlRole = new JLabel(rb.getString("panel.admin.tab.safeguard.panel.jdbc.statementRoles")); panData = new JPanel(); panData.setLayout(new GridBagLayout()); panData.add(lblRealmId, gridBagConstraints10); panData.add(lblRealmIdDisplay, gridBagConstraints20); panData.add(lblRealmName, gridBagConstraints1); panData.add(getTxtRealmName(), gridBagConstraints2); panData.add(lblJndiName, gridBagConstraints3); panData.add(getTxtJndiName(), gridBagConstraints4); panData.add(lblSqlUser, gridBagConstraints5); panData.add(getTxtSqlUser(), gridBagConstraints6); panData.add(lblSqlRole, gridBagConstraints7); panData.add(getTxtSqlRole(), gridBagConstraints8); panData.add(panChooseLoginPage, gridBagConstraints11); } return panData; } private void init() { this.add(getPanData(), this.getTopGridBagConstraints()); } @Override protected void deleteRealm() { if (!this.lstRealms.isSelectionEmpty()) { RealmJdbcValue currentRealm = (RealmJdbcValue) ((DropDownHolder) this.lstRealms.getSelectedValue()).getObject(); comm.deleteSqlDbRealm(currentRealm.getJdbcRealmId()); ((SortingListModel) this.lstRealms.getModel()).removeElementAt(this.lstRealms.getSelectedIndex()); } this.getTxtRealmName().setText(""); this.getTxtJndiName().setText(""); this.getTxtSqlUser().setText(""); this.getTxtSqlRole().setText(""); this.panChooseLoginPage.setLoginpage(null); this.panChooseLoginPage.setLoginPageViewComponentId(null); this.lblRealmIdDisplay.setText(""); this.lstRealms.clearSelection(); this.setActive(false); } @Override protected void addRealm() { this.getTxtRealmName().setText("[new Realm]"); this.getTxtJndiName().setText(""); this.getTxtSqlUser().setText(""); this.getTxtSqlRole().setText(""); this.panChooseLoginPage.setLoginpage(null); this.panChooseLoginPage.setLoginPageViewComponentId(null); this.lblRealmIdDisplay.setText(""); this.lstRealms.clearSelection(); this.setActive(true); } @Override protected void saveRealm() { RealmJdbcValue value = new RealmJdbcValue(); if (this.lblRealmIdDisplay.getText().equalsIgnoreCase("")) { value.setJdbcRealmId(new Integer(-1)); } else { value.setJdbcRealmId(Integer.valueOf(this.lblRealmIdDisplay.getText())); } value.setRealmName(this.getTxtRealmName().getText()); value.setJndiName(this.getTxtJndiName().getText()); value.setStatementUser(this.getTxtSqlUser().getText()); value.setStatementRolePerUser(this.getTxtSqlRole().getText()); value.setLoginPageId(this.panChooseLoginPage.getLoginPageViewComponentId()); if (validateSaveJdbc(value)) { if (value.getJdbcRealmId().intValue() == -1) { value.setJdbcRealmId(comm.addSqlDbRealmToSite(Integer.valueOf(comm.getSiteId()), value)); ((SortingListModel) this.lstRealms.getModel()).addElement(new DropDownHolder(value, value.getRealmName())); } else { comm.editSqlDbRealm(value); ((SortingListModel) this.lstRealms.getModel()).removeElementAt(this.lstRealms.getSelectedIndex()); ((SortingListModel) this.lstRealms.getModel()).addElement(new DropDownHolder(value, value.getRealmName())); } } } private boolean validateSaveJdbc(RealmJdbcValue jdbcValue) { boolean isValid = true; FocusListener focusListener = new FocusListener() { public void focusGained(FocusEvent e) { if (e.getSource() instanceof JTextField) { JTextField source = (JTextField) e.getSource(); resetInputHighlight(source); } } public void focusLost(FocusEvent e) { } }; if (jdbcValue.getRealmName() == null || jdbcValue.getRealmName().isEmpty()) { txtRealmName.setBackground(backgroundTextFieldError); txtRealmName.addFocusListener(focusListener); isValid = false; } return isValid; } private void resetInputHighlight(JTextField source) { if (source.getBackground().equals(backgroundTextFieldError)) { source.setBackground(Color.WHITE); } } private void resetInputsHighlight() { resetInputHighlight(txtRealmName); } @Override protected void listSelected() { if (lstRealms.getSelectedIndex() != -1) { RealmJdbcValue val = (RealmJdbcValue) ((DropDownHolder) lstRealms.getSelectedValue()).getObject(); getTxtRealmName().setText(val.getRealmName()); getTxtJndiName().setText(val.getJndiName()); getTxtSqlUser().setText(val.getStatementUser()); getTxtSqlRole().setText(val.getStatementRolePerUser()); this.lblRealmIdDisplay.setText(val.getJdbcRealmId().toString()); this.panChooseLoginPage.setLoginpage(val.getLoginPageId()); this.setActive(true); resetInputsHighlight(); } } @Override public void fillRealmList() { try { RealmJdbcValue[] val = comm.getSqlDbRealmsForSite(Integer.valueOf(comm.getSiteId())); SortingListModel listmodel = new SortingListModel(); if (val != null) { for (int i = 0; i < val.length; i++) { listmodel.addElement(new DropDownHolder(val[i], val[i].getRealmName())); } } this.lstRealms.setModel(listmodel); this.getTxtRealmName().setText(""); this.getTxtJndiName().setText(""); this.getTxtSqlUser().setText(""); this.getTxtSqlRole().setText(""); this.panChooseLoginPage.setLoginpage(null); this.panChooseLoginPage.setLoginPageViewComponentId(null); this.lblRealmIdDisplay.setText(""); this.lstRealms.clearSelection(); this.setActive(false); } catch (Exception ex) { log.warn("Error filling list of all JdbcRealms: " + ex.getMessage()); } } /** * This method initializes txtRealmName * * @return javax.swing.JTextField */ private JTextField getTxtRealmName() { if (txtRealmName == null) { txtRealmName = new JTextField(); txtRealmName.setPreferredSize(new java.awt.Dimension(200, 20)); } return txtRealmName; } /** * This method initializes txtJndiName * * @return javax.swing.JTextField */ private JTextField getTxtJndiName() { if (txtJndiName == null) { txtJndiName = new JTextField(); txtJndiName.setPreferredSize(new java.awt.Dimension(200, 20)); } return txtJndiName; } /** * This method initializes txtSqlUser * * @return javax.swing.JTextField */ private JTextField getTxtSqlUser() { if (txtSqlUser == null) { txtSqlUser = new JTextField(); txtSqlUser.setPreferredSize(new java.awt.Dimension(200, 20)); } return txtSqlUser; } /** * This method initializes txtSqlRole * * @return javax.swing.JTextField */ private JTextField getTxtSqlRole() { if (txtSqlRole == null) { txtSqlRole = new JTextField(); txtSqlRole.setPreferredSize(new java.awt.Dimension(200, 20)); } return txtSqlRole; } private void setActive(boolean enabled) { this.panChooseLoginPage.setEnabled(enabled); this.getTxtJndiName().setEnabled(enabled); this.getTxtRealmName().setEnabled(enabled); this.getTxtSqlRole().setEnabled(enabled); this.getTxtSqlUser().setEnabled(enabled); super.getBtnSaveRealm().setEnabled(enabled); super.getBtnDeleteRealm().setEnabled(enabled); } } // @jve:decl-index=0:visual-constraint="126,67"