Package net.sourceforge.squirrel_sql.plugins.mysql.action

Source Code of net.sourceforge.squirrel_sql.plugins.mysql.action.CreateTableCommand

package net.sourceforge.squirrel_sql.plugins.mysql.action;

/*
* Copyright (C) 2003 Arun Kapilan.P
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.DefaultListModel;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;

import net.sourceforge.squirrel_sql.client.session.ISession;
import net.sourceforge.squirrel_sql.fw.sql.ISQLConnection;
import net.sourceforge.squirrel_sql.fw.sql.SQLUtilities;
import net.sourceforge.squirrel_sql.fw.util.ICommand;
import net.sourceforge.squirrel_sql.fw.util.StringManager;
import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
import net.sourceforge.squirrel_sql.plugins.mysql.MysqlPlugin;
import net.sourceforge.squirrel_sql.plugins.mysql.util.FieldDetails;

/**
* CreateTableCommand.java Created on June 15, 2003, 2:44 PM
*
* @author Arun Kapilan.P
*/
public class CreateTableCommand extends JDialog implements ICommand
{
  private static final long serialVersionUID = 1L;

  private static final StringManager s_stringMgr =
    StringManagerFactory.getStringManager(CreateTableCommand.class);

  private javax.swing.JButton btAdd;

  private javax.swing.JButton btRemove;

  private javax.swing.JButton btCancel;

  private javax.swing.JButton btCreateTable;

  private javax.swing.JComboBox cbFieldType;

  private javax.swing.JComboBox cbTableType;

  private javax.swing.JCheckBox chAuto;

  private javax.swing.JCheckBox chBinary;

  private javax.swing.JCheckBox chIndex;

  private javax.swing.JCheckBox chNotNull;

  private javax.swing.JCheckBox chPrimary;

  private javax.swing.JCheckBox chUnique;

  private javax.swing.JCheckBox chUnsigned;

  private javax.swing.JCheckBox chZeroFill;

  private javax.swing.JList listFields;

  private javax.swing.JLabel lbDefault;

  private javax.swing.JLabel lbFieldLength;

  private javax.swing.JLabel lbFieldProp;

  private javax.swing.JLabel lbFieldType;

  private javax.swing.JLabel lbFields;

  private javax.swing.JLabel lbTableName;

  private javax.swing.JLabel lbTableType;

  private javax.swing.JTextField tfDefault;

  private javax.swing.JTextField tfFieldLength;

  private javax.swing.JTextField tfFieldName;

  private javax.swing.JTextField tfTableName;

  private javax.swing.JDialog jd;

  // private DBUtils dbUtils;
  protected String SQLCommandRoot = "CREATE TABLE ";

  protected String SQLCommand = "";

  /** Logger for this class. */
  // private final static ILogger s_log =
  // LoggerController.createLogger(CreateMysqlTableScriptCommand.class);
  /** Current session. */
  private ISession _session;

  /** Current plugin. */

  private final MysqlPlugin _plugin;

  public CreateTableCommand(ISession session, MysqlPlugin plugin)
  {
    super();
    _session = session;
    _plugin = plugin;
  }

  public void execute()
  {
    initComponents();
  }

  /**
   * 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.
   */
  private void initComponents()
  {
    lbTableName = new javax.swing.JLabel();
    tfTableName = new javax.swing.JTextField();
    lbTableType = new javax.swing.JLabel();
    cbTableType = new javax.swing.JComboBox();
    lbFields = new javax.swing.JLabel();
    tfFieldName = new javax.swing.JTextField();
    btAdd = new javax.swing.JButton();
    lbFieldProp = new javax.swing.JLabel();
    lbFieldType = new javax.swing.JLabel();
    cbFieldType = new javax.swing.JComboBox();
    lbFieldLength = new javax.swing.JLabel();
    tfFieldLength = new javax.swing.JTextField();
    lbDefault = new javax.swing.JLabel();
    tfDefault = new javax.swing.JTextField();
    chPrimary = new javax.swing.JCheckBox();
    chIndex = new javax.swing.JCheckBox();
    chUnique = new javax.swing.JCheckBox();
    chBinary = new javax.swing.JCheckBox();
    chNotNull = new javax.swing.JCheckBox();
    chUnsigned = new javax.swing.JCheckBox();
    chAuto = new javax.swing.JCheckBox();
    chZeroFill = new javax.swing.JCheckBox();
    listFields = new javax.swing.JList(new DefaultListModel());
    btCreateTable = new javax.swing.JButton();
    btRemove = new javax.swing.JButton();
    btCancel = new javax.swing.JButton();
    jd = new JDialog(_session.getApplication().getMainFrame(),
    // i18n[mysql.createTableComm=Create Table...]
      s_stringMgr.getString("mysql.createTableComm"));
    jd.getContentPane().setLayout(null);

    addWindowListener(new java.awt.event.WindowAdapter()
    {
      public void windowClosing(java.awt.event.WindowEvent evt)
      {
        closeDialog(evt);
      }
    });

    // i18n[mysql.tableNamelbl=Table Name:]
    lbTableName.setText(s_stringMgr.getString("mysql.tableNamelbl"));
    jd.getContentPane().add(lbTableName);
    lbTableName.setBounds(20, 30, 70, 16);

    tfTableName.setText("TableName");
    jd.getContentPane().add(tfTableName);
    tfTableName.setBounds(120, 30, 100, 20);

    lbTableType.setFont(new java.awt.Font("Dialog", 0, 12));
    lbTableType.setText("Table Type:");
    jd.getContentPane().add(lbTableType);
    lbTableType.setBounds(20, 60, 70, 16);

    cbTableType.setFont(new java.awt.Font("Dialog", 0, 12));
    cbTableType.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "<Automatic>", "ISAM",
        "MyISAM", "MERGE", "InnoDb", "HEAP", "BDB" }));
    jd.getContentPane().add(cbTableType);
    cbTableType.setBounds(120, 60, 100, 20);

    lbFields.setText("Fields:");
    lbFields.setBorder(new javax.swing.border.EmptyBorder(new java.awt.Insets(1, 1, 1, 1)));
    jd.getContentPane().add(lbFields);
    lbFields.setBounds(10, 120, 40, 18);

    tfFieldName.setText("FieldName");
    tfFieldName.addFocusListener(new java.awt.event.FocusAdapter()
    {
      public void focusGained(java.awt.event.FocusEvent evt)
      {
        tfFieldNameFocusGained(evt);
      }
    });
    jd.getContentPane().add(tfFieldName);
    tfFieldName.setBounds(10, 150, 110, 20);

    btAdd.setFont(new java.awt.Font("Dialog", 0, 12));
    // i18n[mysql.createAdd=Add]
    btAdd.setText(s_stringMgr.getString("mysql.createAdd"));
    btAdd.addActionListener(new java.awt.event.ActionListener()
    {
      public void actionPerformed(java.awt.event.ActionEvent evt)
      {
        btAddActionPerformed(evt);
      }
    });

    jd.getContentPane().add(btAdd);
    btAdd.setBounds(130, 150, 80, 26);

    // i18n[mysql.fieldProps=Field Properties:]
    lbFieldProp.setText(s_stringMgr.getString("mysql.fieldProps"));
    lbFieldProp.setBorder(new javax.swing.border.EmptyBorder(new java.awt.Insets(1, 1, 1, 1)));
    jd.getContentPane().add(lbFieldProp);
    lbFieldProp.setBounds(220, 150, 100, 20);

    lbFieldType.setFont(new java.awt.Font("Dialog", 0, 12));
    lbFieldType.setText("Type");
    jd.getContentPane().add(lbFieldType);
    lbFieldType.setBounds(220, 190, 41, 16);

    cbFieldType.setFont(new java.awt.Font("Dialog", 0, 12));
    cbFieldType.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "TINYINT", "SMALLINT",
        "MEDIUMINT", "INT", "BIGINT", "FLOAT", "DOUBLE", "DECIMAL", "DATE", "DATETIME", "TIMESTAMP",
        "TIME", "YEAR", "CHAR", "VARCHAR", "TINYBLOB", "TINYTEXT", "TEXT", "BLOB", "MEDIUMBLOB",
        "MEDIUMTEXT", "LONGBLOB", "LONGTEXT", "ENUM", "SET" }));
    cbFieldType.addActionListener(new java.awt.event.ActionListener()
    {
      public void actionPerformed(java.awt.event.ActionEvent evt)
      {
        cbFieldTypeActionPerformed(evt);
      }
    });
    jd.getContentPane().add(cbFieldType);
    cbFieldType.setBounds(300, 190, 110, 20);

    lbFieldLength.setFont(new java.awt.Font("Dialog", 0, 12));
    // i18n[mysql.lengtSet=Length/Set]
    lbFieldLength.setText(s_stringMgr.getString("mysql.lengtSet"));
    jd.getContentPane().add(lbFieldLength);
    lbFieldLength.setBounds(220, 220, 70, 16);

    jd.getContentPane().add(tfFieldLength);
    tfFieldLength.setBounds(300, 220, 110, 20);

    lbDefault.setFont(new java.awt.Font("Dialog", 0, 12));
    // i18n[mysql.defaultValue=Default Value]
    lbDefault.setText(s_stringMgr.getString("mysql.defaultValue"));
    jd.getContentPane().add(lbDefault);
    lbDefault.setBounds(220, 250, 80, 16);

    jd.getContentPane().add(tfDefault);
    tfDefault.setBounds(300, 250, 110, 20);

    chPrimary.setFont(new java.awt.Font("Dialog", 0, 12));
    chPrimary.setText("Primary");
    chPrimary.addItemListener(new java.awt.event.ItemListener()
    {
      public void itemStateChanged(java.awt.event.ItemEvent evt)
      {
        chPrimaryItemStateChanged(evt);
      }
    });
    jd.getContentPane().add(chPrimary);
    chPrimary.setBounds(220, 290, 67, 20);

    chIndex.setFont(new java.awt.Font("Dialog", 0, 12));
    chIndex.setText("Index");
    jd.getContentPane().add(chIndex);
    chIndex.setBounds(290, 290, 54, 20);

    chUnique.setFont(new java.awt.Font("Dialog", 0, 12));
    chUnique.setText("Unique");
    jd.getContentPane().add(chUnique);
    chUnique.setBounds(350, 290, 65, 20);

    chBinary.setFont(new java.awt.Font("Dialog", 0, 12));
    chBinary.setText("Binary");
    jd.getContentPane().add(chBinary);
    chBinary.setBounds(220, 320, 70, 20);

    chNotNull.setFont(new java.awt.Font("Dialog", 0, 12));
    chNotNull.setText("Not Null");
    jd.getContentPane().add(chNotNull);
    chNotNull.setBounds(290, 320, 70, 20);

    chUnsigned.setFont(new java.awt.Font("Dialog", 0, 12));
    chUnsigned.setText("Unsigned");
    jd.getContentPane().add(chUnsigned);
    chUnsigned.setBounds(360, 320, 80, 20);

    chAuto.setFont(new java.awt.Font("Dialog", 0, 12));
    chAuto.setText("Auto Increment");
    jd.getContentPane().add(chAuto);
    chAuto.setBounds(220, 350, 110, 20);

    chZeroFill.setFont(new java.awt.Font("Dialog", 0, 12));
    chZeroFill.setText("Zero Fill");
    jd.getContentPane().add(chZeroFill);
    chZeroFill.setBounds(330, 350, 69, 20);

    listFields.addListSelectionListener(new javax.swing.event.ListSelectionListener()
    {
      public void valueChanged(javax.swing.event.ListSelectionEvent evt)
      {
        listFieldsValueChanged(evt);
      }
    });
    JScrollPane scrollPane = new JScrollPane(listFields);
    jd.getContentPane().add(scrollPane);
    scrollPane.setBounds(10, 190, 110, 150);

    btCreateTable.setFont(new java.awt.Font("Dialog", 0, 12));
    // i18n[mysql.createTableBtn=Create table]
    btCreateTable.setText(s_stringMgr.getString("mysql.createTableBtn"));
    btCreateTable.addActionListener(new java.awt.event.ActionListener()
    {
      public void actionPerformed(java.awt.event.ActionEvent evt)
      {
        btCreateTableActionPerformed(evt);
      }
    });
    jd.getContentPane().add(btCreateTable);

    btCreateTable.setBounds(221, 380, 110, 26);
    btRemove.setFont(new java.awt.Font("Dialog", 0, 12));
    // i18n[mysql.btRemove=Remove]
    btRemove.setText(s_stringMgr.getString("mysql.btRemove"));
    btRemove.addActionListener(new java.awt.event.ActionListener()
    {
      public void actionPerformed(java.awt.event.ActionEvent evt)
      {
        btRemoveActionPerformed(evt);
      }
    });
    jd.getContentPane().add(btRemove);
    btRemove.setBounds(130, 190, 80, 26);

    btCancel.setFont(new java.awt.Font("Dialog", 0, 12));
    // i18n[mysql.btCancel=Cancel]
    btCancel.setText(s_stringMgr.getString("mysql.btCancel"));
    btCancel.addActionListener(new java.awt.event.ActionListener()
    {
      public void actionPerformed(java.awt.event.ActionEvent evt)
      {
        btCancelActionPerformed(evt);
      }
    });

    jd.getContentPane().add(btCancel);
    btCancel.setBounds(340, 380, 73, 26);

    jd.pack();
    jd.setSize(450, 450);
    jd.setLocation(100, 100);
    jd.setVisible(true);

  }

  // Set the attributes for the fields in the class FieldDetails
  private void btAddActionPerformed(java.awt.event.ActionEvent evt)
  {
    FieldDetails fd = new FieldDetails();

    fd.setFieldName(tfFieldName.getText());
    fd.setFieldLength(tfFieldLength.getText());
    fd.setFieldType((String) cbFieldType.getSelectedItem());
    fd.setDefault(tfDefault.getText());
    fd.setPrimary(chPrimary.isSelected());
    fd.setUnique(chUnique.isSelected());
    fd.setIndex(chIndex.isSelected());
    fd.setBinary(chBinary.isSelected());
    fd.setNotNull(chNotNull.isSelected());
    fd.setUnisigned(chUnsigned.isSelected());
    fd.setAutoIncrement(chAuto.isSelected());
    fd.setZeroFill(chZeroFill.isSelected());
    DefaultListModel listModel = (DefaultListModel) listFields.getModel();
    listModel.addElement(fd);

  }

  // Display the field attributes when selected in the list
  private void listFieldsValueChanged(

  javax.swing.event.ListSelectionEvent evt)
  {

    int index = listFields.getSelectedIndex();
    DefaultListModel listModel = (DefaultListModel) listFields.getModel();
    FieldDetails fd = (FieldDetails) listModel.elementAt(index);

    tfFieldName.setText(fd.getFieldName());
    cbFieldType.setSelectedItem(fd.getFieldType());
    tfFieldLength.setText(fd.getFieldLength());
    tfDefault.setText(fd.getDefault());
    chPrimary.setSelected(fd.IsPrimary());
    chUnique.setSelected(fd.IsUnique());
    chIndex.setSelected(fd.IsIndex());
    chBinary.setSelected(fd.IsBinary());
    chNotNull.setSelected(fd.IsNotNull());
    chUnsigned.setSelected(fd.IsUnisigned());
    chAuto.setSelected(fd.IsAutoIncrement());
    chZeroFill.setSelected(fd.IsZeroFill());

  }

  private void btCreateTableActionPerformed(java.awt.event.ActionEvent evt)
  {
    ISQLConnection con = _session.getSQLConnection();
    String query = getQuery();
    Statement stmt = null;
    try
    {
      stmt = con.createStatement();
      stmt.execute(query);
      _session.getSessionInternalFrame().getObjectTreeAPI().refreshTree();
      jd.setVisible(false);
      jd.dispose();
      JOptionPane.showMessageDialog(null,
      // i18n[mysql.msgTableCreated=Table {0} created]
        s_stringMgr.getString("mysql.msgTableCreated", tfTableName.getText()));
    }
    catch (SQLException ex)
    {
      _session.showErrorMessage(ex);

    } finally {
      SQLUtilities.closeStatement(stmt);
    }
  }

  private void chPrimaryItemStateChanged(java.awt.event.ItemEvent evt)
  {
    if (chPrimary.isSelected()) chNotNull.setSelected(true);

  }

  private void cbFieldTypeActionPerformed(java.awt.event.ActionEvent evt)
  {
    tfFieldLength.setText("5");

    if (cbFieldType.getSelectedItem().equals("VARCHAR"))
    {
      chBinary.setEnabled(true);
      chUnsigned.setEnabled(false);
      chZeroFill.setEnabled(false);
    }
    else
    {
      chUnsigned.setEnabled(false);
      chZeroFill.setEnabled(false);
    }
    if (cbFieldType.getSelectedItem().equals("INT"))
    {
      chBinary.setEnabled(false);
      chUnsigned.setEnabled(true);
      chZeroFill.setEnabled(true);
    }
  }

  // Reset the checkbox selected index false when fieldname gains focus
  private void tfFieldNameFocusGained(java.awt.event.FocusEvent evt)
  {
    cbFieldType.setSelectedIndex(0);
    chAuto.setSelected(false);
    chBinary.setSelected(false);
    chIndex.setSelected(false);
    chNotNull.setSelected(false);
    chPrimary.setSelected(false);
    chUnique.setSelected(false);
    chUnsigned.setSelected(false);
    chZeroFill.setSelected(false);
  }

  /** Closes the dialog */
  private void closeDialog(java.awt.event.WindowEvent evt)
  {
    setVisible(false);
    dispose();
  }

  // Remove the Fields added to the list
  private void btRemoveActionPerformed(java.awt.event.ActionEvent evt)
  {
    int index = listFields.getSelectedIndex();
    DefaultListModel listModel = (DefaultListModel) listFields.getModel();
    listModel.remove(index);
    listFields.invalidate();
  }

  private void btCancelActionPerformed(java.awt.event.ActionEvent evt)
  {
    jd.setVisible(false);
    jd.dispose();
    jd.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
  }

  public String getQuery()
  {

    DefaultListModel listModel = (DefaultListModel) listFields.getModel();
    SQLCommand = "(";
    String[] rowData = new String[listModel.getSize()];
    for (int i = 0; i < rowData.length; i++)
      rowData[i] = "";
    for (int i = 0; i < rowData.length; i++)
    {
      FieldDetails fd = (FieldDetails) listModel.elementAt(i);
      rowData[i] += fd.getFieldName();
      rowData[i] += " ";
      rowData[i] += fd.getFieldType();
      rowData[i] += "(";
      rowData[i] += fd.getFieldLength();
      rowData[i] += ")";
      if (fd.IsUnisigned()) rowData[i] += " UNSIGNED ";
      if (fd.IsBinary()) rowData[i] += " BINARY ";
      if (fd.IsZeroFill()) rowData[i] += " ZEROFILL ";
      if (fd.getDefault().length() > 0) rowData[i] += " DEFAULT '" + fd.getDefault() + "'";
      if (fd.IsNotNull()) rowData[i] += " NOT NULL ";
      if (fd.IsAutoIncrement()) rowData[i] += "AUTO_INCREMENT ";
      if (fd.IsPrimary()) rowData[i] += ", PRIMARY KEY(" + fd.getFieldName() + ")";
      if (fd.IsUnique()) rowData[i] += ", UNIQUE(" + fd.getFieldName() + ")";
      if (fd.IsIndex()) rowData[i] += ", INDEX(" + fd.getFieldName() + ")";

    }
    for (int i = 0; i < rowData.length; i++)
    {
      SQLCommand += rowData[i];
      if (i < (rowData.length - 1)) SQLCommand += ", ";

    }
    SQLCommand += ")";
    if (cbTableType.getSelectedIndex() > 0) SQLCommand += " TYPE = " + cbTableType.getSelectedItem() + " ;";
    SQLCommandRoot += tfTableName.getText();
    SQLCommand = SQLCommandRoot + SQLCommand;
    return (SQLCommand);
  }

}
TOP

Related Classes of net.sourceforge.squirrel_sql.plugins.mysql.action.CreateTableCommand

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.