org.ut.biolab.medsavant.client.view.manage.AddRemoveDatabaseDialog.java Source code

Java tutorial

Introduction

Here is the source code for org.ut.biolab.medsavant.client.view.manage.AddRemoveDatabaseDialog.java

Source

/*
 *    Copyright 2011-2012 University of Toronto
 *
 *    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 org.ut.biolab.medsavant.client.view.manage;

import java.awt.Dialog;
import javax.swing.JDialog;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.ut.biolab.medsavant.MedSavantClient;
import org.ut.biolab.medsavant.client.settings.VersionSettings;
import org.ut.biolab.medsavant.client.util.ClientMiscUtils;
import org.ut.biolab.medsavant.client.view.dialog.ProgressDialog;
import org.ut.biolab.medsavant.client.view.util.DialogUtils;

/**
 * Dialog for adding and removing databases.  Actually, the real purpose of this dialog is just to retrieve the admin username and
 * password.
 *
 * @author mfiume
 */
public class AddRemoveDatabaseDialog extends JDialog {
    private static final Log LOG = LogFactory.getLog(AddRemoveDatabaseDialog.class);
    private final boolean removing;

    public AddRemoveDatabaseDialog(String host, String port, String dbName, String user, char[] pass,
            boolean removing) {
        super(DialogUtils.getFrontWindow(), Dialog.ModalityType.APPLICATION_MODAL);
        this.removing = removing;
        initComponents();

        setResizable(false);

        setLocationRelativeTo(getParent());
        hostField.setText(host);
        portField.setText(port);
        userField.setText(user);
        passwordField.setText(new String(pass));
        databaseField.setText(dbName);
        databaseField.requestFocus();

        if (removing) {
            okButton.setText("Remove");
            setTitle("Remove Database");
        }
        ClientMiscUtils.registerCancelButton(cancelButton);
    }

    /** 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() {

        okButton = new javax.swing.JButton();
        cancelButton = new javax.swing.JButton();
        javax.swing.JPanel detailsPanel = new javax.swing.JPanel();
        javax.swing.JLabel jLabel3 = new javax.swing.JLabel();
        hostField = new javax.swing.JTextField();
        javax.swing.JLabel jLabel4 = new javax.swing.JLabel();
        portField = new javax.swing.JTextField();
        javax.swing.JLabel jLabel5 = new javax.swing.JLabel();
        databaseField = new javax.swing.JTextField();
        javax.swing.JLabel jLabel6 = new javax.swing.JLabel();
        passwordField = new javax.swing.JPasswordField();
        javax.swing.JLabel jLabel7 = new javax.swing.JLabel();
        userField = new javax.swing.JTextField();

        setTitle("Create Database");
        setBackground(new java.awt.Color(217, 222, 229));

        okButton.setText("Create");
        okButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                okButtonActionPerformed(evt);
            }
        });

        cancelButton.setText("Cancel");
        cancelButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cancelButtonActionPerformed(evt);
            }
        });

        detailsPanel.setBackground(getBackground());
        detailsPanel.setOpaque(false);

        jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel3.setText("SERVER ADDRESS");

        hostField.setFont(new java.awt.Font("Lucida Grande", 0, 15)); // NOI18N
        hostField.setHorizontalAlignment(javax.swing.JTextField.CENTER);

        jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel4.setText("SERVER PORT");

        portField.setFont(new java.awt.Font("Lucida Grande", 0, 15)); // NOI18N
        portField.setHorizontalAlignment(javax.swing.JTextField.CENTER);

        jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel5.setText("DATABASE NAME");

        databaseField.setFont(new java.awt.Font("Lucida Grande", 0, 15)); // NOI18N
        databaseField.setHorizontalAlignment(javax.swing.JTextField.CENTER);

        jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel6.setText("ADMIN USERNAME");

        passwordField.setFont(new java.awt.Font("Lucida Grande", 0, 15)); // NOI18N
        passwordField.setHorizontalAlignment(javax.swing.JTextField.CENTER);

        jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel7.setText("ADMIN PASSWORD");

        userField.setFont(new java.awt.Font("Lucida Grande", 0, 15)); // NOI18N
        userField.setHorizontalAlignment(javax.swing.JTextField.CENTER);

        org.jdesktop.layout.GroupLayout detailsPanelLayout = new org.jdesktop.layout.GroupLayout(detailsPanel);
        detailsPanel.setLayout(detailsPanelLayout);
        detailsPanelLayout.setHorizontalGroup(detailsPanelLayout
                .createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(detailsPanelLayout.createSequentialGroup().addContainerGap().add(detailsPanelLayout
                        .createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                        .add(org.jdesktop.layout.GroupLayout.TRAILING, jLabel3,
                                org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 440, Short.MAX_VALUE)
                        .add(org.jdesktop.layout.GroupLayout.TRAILING, hostField,
                                org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 440, Short.MAX_VALUE)
                        .add(jLabel4, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 440, Short.MAX_VALUE)
                        .add(org.jdesktop.layout.GroupLayout.TRAILING, portField,
                                org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 440, Short.MAX_VALUE)
                        .add(jLabel5, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 440, Short.MAX_VALUE)
                        .add(databaseField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 440, Short.MAX_VALUE)
                        .add(jLabel6, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 440, Short.MAX_VALUE)
                        .add(jLabel7, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 440, Short.MAX_VALUE)
                        .add(passwordField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 440, Short.MAX_VALUE)
                        .add(org.jdesktop.layout.GroupLayout.TRAILING, userField,
                                org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 440, Short.MAX_VALUE))
                        .addContainerGap()));
        detailsPanelLayout
                .setVerticalGroup(detailsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                        .add(detailsPanelLayout.createSequentialGroup().addContainerGap().add(jLabel3)
                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                                .add(hostField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
                                        org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
                                        org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jLabel4)
                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                                .add(portField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
                                        org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
                                        org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jLabel5)
                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                                .add(databaseField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
                                        org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
                                        org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jLabel6)
                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                                .add(userField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
                                        org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
                                        org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(jLabel7)
                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                                .add(passwordField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
                                        org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
                                        org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(org.jdesktop.layout.GroupLayout.TRAILING,
                        layout.createSequentialGroup().addContainerGap(285, Short.MAX_VALUE).add(okButton)
                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED).add(cancelButton)
                                .addContainerGap())
                .add(detailsPanel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
                        org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE));

        layout.linkSize(new java.awt.Component[] { cancelButton, okButton },
                org.jdesktop.layout.GroupLayout.HORIZONTAL);

        layout.setVerticalGroup(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
                        .add(detailsPanel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
                                org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .add(18, 18, 18).add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                                .add(cancelButton).add(okButton))
                        .addContainerGap()));

        getRootPane().setDefaultButton(okButton);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
        String dbName = databaseField.getText();
        if (removing) {
            if (DialogUtils.askYesNo("Confirm",
                    "<html>Are you sure you want to remove <i>%s</i>?<br>This operation cannot be undone.",
                    dbName) == DialogUtils.YES) {
                try {
                    MedSavantClient.initializeRegistry(hostField.getText(), portField.getText());
                    MedSavantClient.SetupManager.removeDatabase(hostField.getText(),
                            Integer.parseInt(portField.getText()), databaseField.getText(), userField.getText(),
                            passwordField.getPassword());
                    setVisible(false);
                    DialogUtils.displayMessage("Database Removed", String.format(
                            "<html>Database <i>%s</i> successfully removed.</html>", databaseField.getText()));
                } catch (Exception ex) {
                    ClientMiscUtils.reportError("Database could not be removed: %s", ex);
                }
            }
        } else {
            new ProgressDialog("Creating Database",
                    String.format("<html>Creating database <i>%s</i>. Please wait.</html>", dbName)) {
                @Override
                public void run() {
                    try {
                        MedSavantClient.initializeRegistry(hostField.getText(), portField.getText());
                        MedSavantClient.SetupManager.createDatabase(hostField.getText(),
                                Integer.parseInt(portField.getText()), databaseField.getText(), userField.getText(),
                                passwordField.getPassword(), VersionSettings.getVersionString());
                        AddRemoveDatabaseDialog.this.setVisible(false);
                        DialogUtils.displayMessage("Database Created", String.format(
                                "<html>Database <i>%s</i> successfully created.</html>", databaseField.getText()));
                    } catch (Throwable ex) {
                        setVisible(false);
                        ex.printStackTrace();
                        ClientMiscUtils.reportError(
                                "Database could not be created: %s\nPlease check the settings and try again.", ex);
                    }
                }
            }.setVisible(true);
        }
    }//GEN-LAST:event_okButtonActionPerformed

    private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
        setVisible(false);
    }//GEN-LAST:event_cancelButtonActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton cancelButton;
    private javax.swing.JTextField databaseField;
    private javax.swing.JTextField hostField;
    private javax.swing.JButton okButton;
    private javax.swing.JPasswordField passwordField;
    private javax.swing.JTextField portField;
    private javax.swing.JTextField userField;
    // End of variables declaration//GEN-END:variables

    public String getHost() {
        return hostField.getText();
    }

    public int getPort() {
        return Integer.parseInt(portField.getText());
    }

    public String getDatabase() {
        return databaseField.getText();
    }
}