//$Header: /cvsroot-fuse/mec-as2/39/mendelson/comm/as2/cem/gui/DialogSendCEM.java,v 1.1 2012/04/18 14:10:20 heller Exp $
package de.mendelson.comm.as2.cem.gui;
import de.mendelson.comm.as2.cem.CEMInitiator;
import de.mendelson.util.security.cert.CertificateManager;
import de.mendelson.util.security.cert.KeystoreCertificate;
import de.mendelson.comm.as2.partner.Partner;
import de.mendelson.comm.as2.partner.PartnerAccessDB;
import de.mendelson.comm.as2.partner.gui.ListCellRendererPartner;
import de.mendelson.comm.as2.preferences.PreferencesAS2;
import de.mendelson.util.MecResourceBundle;
import de.mendelson.util.clientserver.BaseClient;
import de.mendelson.util.clientserver.clients.preferences.PreferencesClient;
import de.mendelson.util.security.BCCryptoHelper;
import de.mendelson.util.security.cert.KeystoreStorage;
import de.mendelson.util.security.cert.ListCellRendererCertificates;
import de.mendelson.util.security.cert.clientserver.KeystoreStorageImplClientServer;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import java.util.logging.Logger;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
/*
* Copyright (C) mendelson-e-commerce GmbH Berlin Germany
*
* This software is subject to the license agreement set forth in the license.
* Please read and agree to all terms before using this software.
* Other product and brand names are trademarks of their respective owners.
*/
/**
* Allows to select a partner and sends a certificate to him via your mail application
* @author S.Heller
* @version $Revision: 1.1 $
*/
public class DialogSendCEM extends JDialog {
private MecResourceBundle rb = null;
private CertificateManager certificateManagerEncSign;
private Connection configConnection;
private Connection runtimeConnection;
private Logger logger = Logger.getLogger("de.mendelson.as2.client");
public DialogSendCEM(JFrame parent, Connection configConnection, Connection runtimeConnection, BaseClient baseClient) {
this(parent, null, configConnection, runtimeConnection, baseClient);
}
public DialogSendCEM(JFrame parent, CertificateManager certificateManager, Connection configConnection,
Connection runtimeConnection,
BaseClient baseClient) {
super(parent, true);
//load the certificates if they arent passed here
if (certificateManager == null) {
PreferencesClient client = new PreferencesClient(baseClient);
char[] keystorePass = client.get(PreferencesAS2.KEYSTORE_PASS).toCharArray();
String keystoreName = client.get(PreferencesAS2.KEYSTORE);
try {
KeystoreStorage storage = new KeystoreStorageImplClientServer(
baseClient, keystoreName, keystorePass, BCCryptoHelper.KEYSTORE_PKCS12);
this.certificateManagerEncSign = new CertificateManager(this.logger);
this.certificateManagerEncSign.loadKeystoreCertificates(storage);
} catch (Exception e) {
this.logger.severe(e.getMessage());
throw new RuntimeException(e);
}
} else {
this.certificateManagerEncSign = certificateManager;
}
this.configConnection = configConnection;
this.runtimeConnection = runtimeConnection;
//load resource bundle
try {
this.rb = (MecResourceBundle) ResourceBundle.getBundle(
ResourceBundleDialogSendCEM.class.getName());
} catch (MissingResourceException e) {
throw new RuntimeException("Oops..resource bundle " + e.getClassName() + " not found.");
}
initComponents();
List<KeystoreCertificate> certificateList = this.certificateManagerEncSign.getKeyStoreCertificateList();
//clone the array
List<KeystoreCertificate> sortedCertificateList = new ArrayList<KeystoreCertificate>();
for (KeystoreCertificate cert : certificateList) {
if (cert.getIsKeyPair()) {
sortedCertificateList.add(cert);
}
}
Collections.sort(sortedCertificateList);
this.jComboBoxReceiver.removeAllItems();
this.jComboBoxInitiator.removeAllItems();
this.jComboBoxKeys.removeAllItems();
this.jComboBoxKeys.setRenderer(new ListCellRendererCertificates());
for (KeystoreCertificate cert : sortedCertificateList) {
this.jComboBoxKeys.addItem(cert);
}
this.jComboBoxInitiator.setRenderer(new ListCellRendererPartner());
PartnerAccessDB partnerAccess = new PartnerAccessDB(this.configConnection, this.runtimeConnection);
Partner[] initiatorList = partnerAccess.getLocalStations();
for (Partner partner : initiatorList) {
this.jComboBoxInitiator.addItem(partner);
}
this.jComboBoxReceiver.setRenderer(new ListCellRendererPartner());
Partner[] receiverList = partnerAccess.getNonLocalStations();
for (Partner partner : receiverList) {
this.jComboBoxReceiver.addItem(partner);
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(Calendar.YEAR, 1);
Date nextYear = calendar.getTime();
calendar.add(Calendar.YEAR, -1);
calendar.add(Calendar.DAY_OF_YEAR, 30);
Date thirtyDays = calendar.getTime();
this.jDateChooser.setSelectableDateRange(new Date(), nextYear);
this.jDateChooser.setDate(thirtyDays);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
jPanelMain = new javax.swing.JPanel();
jComboBoxKeys = new javax.swing.JComboBox();
jComboBoxReceiver = new javax.swing.JComboBox();
jDateChooser = new com.toedter.calendar.JDateChooser();
jLabelReceiver = new javax.swing.JLabel();
jLabelKeys = new javax.swing.JLabel();
jLabelActivationDate = new javax.swing.JLabel();
jPanelSpace = new javax.swing.JPanel();
jLabelInitiator = new javax.swing.JLabel();
jComboBoxInitiator = new javax.swing.JComboBox();
jPanelButton = new javax.swing.JPanel();
jButtonOk = new javax.swing.JButton();
jButtonCancel = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle(this.rb.getResourceString( "title"));
setModal(true);
setResizable(false);
getContentPane().setLayout(new java.awt.GridBagLayout());
jPanelMain.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
jPanelMain.setLayout(new java.awt.GridBagLayout());
jComboBoxKeys.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.ipadx = 4;
gridBagConstraints.ipady = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
jPanelMain.add(jComboBoxKeys, gridBagConstraints);
jComboBoxReceiver.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.ipadx = 4;
gridBagConstraints.ipady = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
jPanelMain.add(jComboBoxReceiver, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
jPanelMain.add(jDateChooser, gridBagConstraints);
jLabelReceiver.setText(this.rb.getResourceString( "label.receiver"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
jPanelMain.add(jLabelReceiver, gridBagConstraints);
jLabelKeys.setText(this.rb.getResourceString( "label.certificate"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
jPanelMain.add(jLabelKeys, gridBagConstraints);
jLabelActivationDate.setText(this.rb.getResourceString( "label.activationdate"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
jPanelMain.add(jLabelActivationDate, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 5;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
gridBagConstraints.weighty = 1.0;
jPanelMain.add(jPanelSpace, gridBagConstraints);
jLabelInitiator.setText(this.rb.getResourceString( "label.initiator"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(10, 5, 5, 5);
jPanelMain.add(jLabelInitiator, gridBagConstraints);
jComboBoxInitiator.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.ipadx = 4;
gridBagConstraints.ipady = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(10, 5, 5, 5);
jPanelMain.add(jComboBoxInitiator, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
getContentPane().add(jPanelMain, gridBagConstraints);
jPanelButton.setLayout(new java.awt.GridBagLayout());
jButtonOk.setText(this.rb.getResourceString( "button.ok"));
jButtonOk.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonOkActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
jPanelButton.add(jButtonOk, gridBagConstraints);
jButtonCancel.setText(this.rb.getResourceString( "button.cancel"));
jButtonCancel.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonCancelActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
jPanelButton.add(jButtonCancel, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
getContentPane().add(jPanelButton, gridBagConstraints);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-433)/2, (screenSize.height-247)/2, 433, 247);
}// </editor-fold>//GEN-END:initComponents
private void jButtonCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonCancelActionPerformed
this.setVisible(false);
this.dispose();
}//GEN-LAST:event_jButtonCancelActionPerformed
private void jButtonOkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOkActionPerformed
this.setVisible(false);
CEMInitiator cemInitiator = new CEMInitiator(this.configConnection,
this.runtimeConnection, this.certificateManagerEncSign);
Partner receiver = (Partner) this.jComboBoxReceiver.getSelectedItem();
Partner initiator = (Partner) this.jComboBoxInitiator.getSelectedItem();
KeystoreCertificate certificate = (KeystoreCertificate) this.jComboBoxKeys.getSelectedItem();
Date activationDate = this.jDateChooser.getDate();
//set time to 0:01 of this day
Calendar calendar = Calendar.getInstance();
calendar.setTime(activationDate);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 1);
calendar.set(Calendar.SECOND, 0);
JFrame parent = (JFrame) SwingUtilities.getAncestorOfClass(JFrame.class, this);
try {
cemInitiator.sendRequest(initiator, receiver,
certificate, true, true, false, calendar.getTime());
JOptionPane.showMessageDialog(parent,
this.rb.getResourceString("cem.request.success"),
this.rb.getResourceString("cem.request.title"),
JOptionPane.INFORMATION_MESSAGE);
} catch (Exception e) {
JOptionPane.showMessageDialog(parent,
this.rb.getResourceString("cem.request.failed", e.getMessage()),
this.rb.getResourceString("cem.request.title"),
JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
}
this.dispose();
}//GEN-LAST:event_jButtonOkActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButtonCancel;
private javax.swing.JButton jButtonOk;
private javax.swing.JComboBox jComboBoxInitiator;
private javax.swing.JComboBox jComboBoxKeys;
private javax.swing.JComboBox jComboBoxReceiver;
private com.toedter.calendar.JDateChooser jDateChooser;
private javax.swing.JLabel jLabelActivationDate;
private javax.swing.JLabel jLabelInitiator;
private javax.swing.JLabel jLabelKeys;
private javax.swing.JLabel jLabelReceiver;
private javax.swing.JPanel jPanelButton;
private javax.swing.JPanel jPanelMain;
private javax.swing.JPanel jPanelSpace;
// End of variables declaration//GEN-END:variables
}