Diff for /FM2SQL/Attic/FM2SQL.java between versions 1.8 and 1.28

version 1.8, 2004/01/09 12:43:00 version 1.28, 2004/03/09 12:34:09
Line 1 Line 1
 import javax.swing.*;  import java.awt.Cursor;
 import javax.swing.event.*;  
 import javax.swing.table.TableModel;  
   
 import java.awt.event.*;  
 import java.awt.Dimension;  import java.awt.Dimension;
 import java.awt.*;  import java.awt.Font;
 import java.sql.*;  import java.awt.GridBagConstraints;
 import java.util.*;  import java.awt.GridBagLayout;
 import java.io.*;  import java.awt.Image;
   import java.awt.Insets;
   import java.awt.event.ActionEvent;
   import java.awt.event.ActionListener;
   import java.awt.event.ComponentAdapter;
   import java.awt.event.ComponentEvent;
   import java.awt.event.InputEvent;
   import java.awt.event.WindowAdapter;
   import java.awt.event.WindowEvent;
   import java.io.ByteArrayOutputStream;
   import java.io.File;
   import java.io.FileWriter;
   import java.io.PrintStream;
   import java.sql.SQLException;
   import java.sql.Statement;
   import java.util.Collections;
   import java.util.Iterator;
   import java.util.Vector;
   
   import javax.swing.Box;
   import javax.swing.BoxLayout;
   import javax.swing.ButtonGroup;
   import javax.swing.DefaultComboBoxModel;
   import javax.swing.DefaultListModel;
   import javax.swing.JButton;
   import javax.swing.JCheckBoxMenuItem;
   import javax.swing.JComboBox;
   import javax.swing.JDialog;
   import javax.swing.JFileChooser;
   import javax.swing.JFrame;
   import javax.swing.JLabel;
   import javax.swing.JList;
   import javax.swing.JMenu;
   import javax.swing.JMenuBar;
   import javax.swing.JMenuItem;
   import javax.swing.JOptionPane;
   import javax.swing.JPanel;
   import javax.swing.JPasswordField;
   import javax.swing.JProgressBar;
   import javax.swing.JScrollBar;
   import javax.swing.JScrollPane;
   import javax.swing.JSplitPane;
   import javax.swing.JTextArea;
   import javax.swing.JTextField;
   import javax.swing.KeyStroke;
   import javax.swing.ListSelectionModel;
   import javax.swing.event.TableModelEvent;
   import javax.swing.event.TableModelListener;
   import javax.swing.table.TableModel;
 /**  /**
  *   *
  * <br>   * <br>
Line 23  import java.io.*; Line 67  import java.io.*;
  */   */
 public class FM2SQL extends JFrame implements ActionListener, TableModelListener  public class FM2SQL extends JFrame implements ActionListener, TableModelListener
 {  {
     private JMenuItem delimiterItem;
     private JCheckBoxMenuItem convertItem;
     private JCheckBoxMenuItem appendItem;
     private JCheckBoxMenuItem updateItem;
     private JCheckBoxMenuItem deleteItem;
     
     int mode = -1;
     final static int ID_INDEX = 1;
     final static int SELECT_INDEX = 2;
     final static int CREATE_INDEX = 3;
     final static int LAYOUT_INDEX = 4;
     
     
    
   /**    /**
   * The database Bean instance.    * The database Bean instance.
   *    *
Line 35  public class FM2SQL extends JFrame imple Line 93  public class FM2SQL extends JFrame imple
   DBBean destBean;    DBBean destBean;
   
   /**    /**
    *  box - Tablenames  
    */  
   
   JComboBox box;  
   /**  
    *  tList - Tablenames to choose from     *  tList - Tablenames to choose from
    */     */
   
Line 47  public class FM2SQL extends JFrame imple Line 100  public class FM2SQL extends JFrame imple
   JList tListDest = new JList(new String[] { "no database connection", "", "" });    JList tListDest = new JList(new String[] { "no database connection", "", "" });
   
   /**    /**
    *  box2 - Layout names    *  sourceUrl - Database URL ComboBox
    */  
   
   JComboBox box2;  
   /**  
   *  box3 - Database URLs  
   */    */
   JComboBox box3;    JComboBox sourceURLBox;
   /**    /**
   *  box4 - Database URLs    *  destUrlBox - Database URL ComboBox
   */    */
   JComboBox box4;    JComboBox destURLBox;
   
   TableComponent table, tC;    TableComponent table, tC;
   Vector tables = new Vector();    Vector tables = new Vector();
Line 89  public class FM2SQL extends JFrame imple Line 137  public class FM2SQL extends JFrame imple
   int oldWidth = 0, oldHeight = 0;    int oldWidth = 0, oldHeight = 0;
   boolean resize = true;    boolean resize = true;
   static FileWriter logFile;    static FileWriter logFile;
       String delimiter = "";
   
   Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();    Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
   JFileChooser configExportFileChooser;    JFileChooser configExportFileChooser;
   JFileChooser configImportFileChooser;    JFileChooser configImportFileChooser;
Line 105  public class FM2SQL extends JFrame imple Line 155  public class FM2SQL extends JFrame imple
   }    }
   public void initializeGUI() throws Exception    public void initializeGUI() throws Exception
   {    {
     Image local = getToolkit().getImage(getClass().getResource("icons/fm.jpg"));      Image local = getToolkit().getImage(FM2SQL.class.getResource("icons/fm.jpg"));
     if (local != null);      if (local != null);
     setIconImage(local);      setIconImage(local);
     bean = new DBBean();      bean = new DBBean();
     destBean = new DBBean();      destBean = new DBBean();
     box2 = new JComboBox();      sourceURLBox = new JComboBox(new String[] { "jdbc:fmpro:http://141.14.237.74:8050", "jdbc:fmpro:http://localhost", "jdbc:postgresql://foxridge/test" });
     box3 = new JComboBox(new String[] { "jdbc:fmpro:http://141.14.237.74:8050", "jdbc:fmpro:http://localhost", "jdbc:postgresql://foxridge/test" });      sourceURLBox.setEditable(true);
     box3.setEditable(true);      sourceURLBox.setFont(new Font("Times New Roman",Font.PLAIN,14));
     box4 = new JComboBox(new String[] { "jdbc:postgresql://foxridge/test", "jdbc:postgresql://erebos/test1" });      destURLBox = new JComboBox(new String[] { "jdbc:postgresql://foxridge/test", "jdbc:postgresql://erebos/test1" });
     box4.setEditable(true);      destURLBox.setEditable(true);
     box4.addActionListener(this);      destURLBox.addActionListener(this);
       destURLBox.setFont(new Font("Times New Roman",Font.PLAIN,14));
     table = new TableComponent();      table = new TableComponent();
     box = new JComboBox(tables);      //box = new JComboBox(tables);
     box.addActionListener(this);     // box.addActionListener(this);
     box2.addActionListener(this);     // box2.addActionListener(this);
     box3.addActionListener(this);      sourceURLBox.addActionListener(this);
   
     contentPanel = new JPanel();      contentPanel = new JPanel();
     contentPanel.setLayout(new BoxLayout(contentPanel, BoxLayout.Y_AXIS));      contentPanel.setLayout(new BoxLayout(contentPanel, BoxLayout.Y_AXIS));
   
     box3.setMinimumSize(new Dimension(450, 20));      sourceURLBox.setMinimumSize(new Dimension(450, 25));
     box3.setMaximumSize(new Dimension(550, 20));      sourceURLBox.setMaximumSize(new Dimension(550, 25));
     box3.setPreferredSize(new Dimension(450, 20));      sourceURLBox.setPreferredSize(new Dimension(450, 25));
     box4.setMinimumSize(new Dimension(450, 20));      destURLBox.setMinimumSize(new Dimension(450, 25));
     box4.setMaximumSize(new Dimension(550, 20));      destURLBox.setMaximumSize(new Dimension(550, 25));
     box4.setPreferredSize(new Dimension(450, 20));      destURLBox.setPreferredSize(new Dimension(450, 25));
     paneDest = new JScrollPane(tListDest);      paneDest = new JScrollPane(tListDest);
    // tListDest.setPreferredSize(paneDest.getPreferredSize());     // tListDest.setPreferredSize(paneDest.getPreferredSize());
    // paneDest.setPreferredSize(new Dimension(350, 365));     // paneDest.setPreferredSize(new Dimension(350, 365));
Line 176  public class FM2SQL extends JFrame imple Line 227  public class FM2SQL extends JFrame imple
   
     gbc.anchor = GridBagConstraints.NORTHWEST;      gbc.anchor = GridBagConstraints.NORTHWEST;
     gbc.gridy = 1;      gbc.gridy = 1;
     topPanel.add(box3, gbc);      topPanel.add(sourceURLBox, gbc);
   
     topPanel2.add(box4, gbc);      topPanel2.add(destURLBox, gbc);
   
     //gbc.gridx=GridBagConstraints.RELATIVE;         //gbc.gridx=GridBagConstraints.RELATIVE;   
     //dataBasePanel.add(new JLabel("  select Tables to Convert  ", JLabel.LEFT));      //dataBasePanel.add(new JLabel("  select Tables to Convert  ", JLabel.LEFT));
Line 276  public class FM2SQL extends JFrame imple Line 327  public class FM2SQL extends JFrame imple
   
         if (oldWidth != getWidth() || oldHeight != getHeight())          if (oldWidth != getWidth() || oldHeight != getHeight())
         {          {
           table.sizeToFit(getWidth(), getHeight());            //table.sizeToFit(getWidth(), getHeight());
   
           Dimension dim = table.table.getPreferredSize();            Dimension dim = table.table.getPreferredSize();
           int size = contentPanel.getPreferredSize().height + new JScrollBar().getPreferredSize().height + new JMenuBar().getPreferredSize().height + 10;            int size = contentPanel.getPreferredSize().height + new JScrollBar().getPreferredSize().height + new JMenuBar().getPreferredSize().height + 10;
Line 310  public class FM2SQL extends JFrame imple Line 361  public class FM2SQL extends JFrame imple
           
         paneDest.validate();          paneDest.validate();
         // tC.tableScroller.setPreferredSize(getSize());          // tC.tableScroller.setPreferredSize(getSize());
           // @TODO new sizeToFit method for listPanel table!!!
         tC.sizeToFit(getWidth(), getHeight());          tC.sizeToFit(getWidth(), getHeight());
         ((JPanel) getContentPane()).revalidate();          ((JPanel) getContentPane()).revalidate();
         repaint();          repaint();
Line 389  public class FM2SQL extends JFrame imple Line 441  public class FM2SQL extends JFrame imple
     if (command == "comboBoxEdited")      if (command == "comboBoxEdited")
     {      {
       Object src = e.getSource();        Object src = e.getSource();
       if (src == box3)        if (src == sourceURLBox)
       {        {
         if (debug)          if (debug)
           System.out.println("hey" + box3.getSelectedItem());            System.out.println("hey" + sourceURLBox.getSelectedItem());
         Object insObj =box3.getSelectedItem();          Object insObj =sourceURLBox.getSelectedItem();
         ((DefaultComboBoxModel) box3.getModel()).removeElement(insObj);          ((DefaultComboBoxModel) sourceURLBox.getModel()).removeElement(insObj);
         
         ((DefaultComboBoxModel) box3.getModel()).insertElementAt(insObj, 0);          ((DefaultComboBoxModel) sourceURLBox.getModel()).insertElementAt(insObj, 0);
         box3.setSelectedItem(insObj);          sourceURLBox.setSelectedItem(insObj);
       } else if (src == box4)        } else if (src == destURLBox)
       {        {
         if (debug)          if (debug)
           System.out.println("hey" + box4.getSelectedItem());            System.out.println("hey" + destURLBox.getSelectedItem());
         //((DefaultComboBoxModel) box4.getModel()).insertElementAt(box4.getSelectedItem(), 0);          //((DefaultComboBoxModel) box4.getModel()).insertElementAt(box4.getSelectedItem(), 0);
         try          try
         {          {
           String selected = (String) box4.getSelectedItem();            String selected = (String) destURLBox.getSelectedItem();
           destBean.setConnection(selected);            destBean.setConnection(selected);
           Vector catalogs = destBean.getCatalogs();            Vector catalogs = destBean.getCatalogs();
           Vector urls = new Vector();            Vector urls = new Vector();
Line 413  public class FM2SQL extends JFrame imple Line 465  public class FM2SQL extends JFrame imple
           {            {
             urls.add(destBean.url.substring(0, destBean.url.lastIndexOf("/") + 1) + catalogs.get(i));              urls.add(destBean.url.substring(0, destBean.url.lastIndexOf("/") + 1) + catalogs.get(i));
           }            }
           box4.setModel(new DefaultComboBoxModel(urls));            destURLBox.setModel(new DefaultComboBoxModel(urls));
           box4.setSelectedItem(selected);            destURLBox.setSelectedItem(selected);
         } catch (Exception e5)          } catch (Exception e5)
         {          {
         }          }
Line 427  public class FM2SQL extends JFrame imple Line 479  public class FM2SQL extends JFrame imple
         //System.out.println("hallo " + (e.getSource() == box3));          //System.out.println("hallo " + (e.getSource() == box3));
   
         Object src = e.getSource();          Object src = e.getSource();
         if (src == box3&&!noUserUpdate)          if (src == sourceURLBox&&!noUserUpdate)
         {          {
           Thread thread = new Thread()            Thread thread = new Thread()
           {            {
Line 437  public class FM2SQL extends JFrame imple Line 489  public class FM2SQL extends JFrame imple
               try                try
               {                {
                 PasswordDialog dialog = new PasswordDialog(fmInstance, bean);                  PasswordDialog dialog = new PasswordDialog(fmInstance, bean);
                 dialog.setLocationRelativeTo(box3);                  dialog.setLocationRelativeTo(sourceURLBox);
                 dialog.thread = Thread.currentThread();                  dialog.thread = Thread.currentThread();
                 fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));                  fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
                 fmInstance.setEnabled(false);                  fmInstance.setEnabled(false);
                 dialog.setVisible(true);                  dialog.setVisible(true);
                 String url = box3.getSelectedItem().toString();                  String url = sourceURLBox.getSelectedItem().toString();
                 bean.url = (url != null) ? url : bean.url;                  bean.url = (url != null) ? url : bean.url;
                 bean.connection = null;                  bean.connection = null;
                 bean.getConnection();                  bean.getConnection();
Line 474  public class FM2SQL extends JFrame imple Line 526  public class FM2SQL extends JFrame imple
             }              }
           };            };
           thread.start();            thread.start();
         } else if (src == box4&&!noUserUpdate)          } else if (src == destURLBox&&!noUserUpdate)
         {          {
           Thread thread = new Thread()            Thread thread = new Thread()
           {            {
Line 485  public class FM2SQL extends JFrame imple Line 537  public class FM2SQL extends JFrame imple
               {                {
   
                 PasswordDialog dialog = new PasswordDialog(fmInstance, destBean);                  PasswordDialog dialog = new PasswordDialog(fmInstance, destBean);
                 dialog.setLocationRelativeTo(box4);                  dialog.setLocationRelativeTo(destURLBox);
                 dialog.thread = Thread.currentThread();                  dialog.thread = Thread.currentThread();
                 fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));                  fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
                                 fmInstance.setEnabled(false);                                  fmInstance.setEnabled(false);
                 dialog.setVisible(true);                  dialog.setVisible(true);
                 destBean.setConnection((String) box4.getSelectedItem());                  destBean.setConnection((String) destURLBox.getSelectedItem());
                 DefaultListModel model = new DefaultListModel();                  DefaultListModel model = new DefaultListModel();
                 Vector tables = destBean.getTableNames();                  Vector tables = destBean.getTableNames();
                 for (int j = 0; j < tables.size(); ++j)                  for (int j = 0; j < tables.size(); ++j)
Line 545  public class FM2SQL extends JFrame imple Line 597  public class FM2SQL extends JFrame imple
       {        {
       }        }
     }      }
       if (command.equals("Delimiter"))
       {
               new DelimiterDialog(fmInstance).setVisible(true); 
         //delimiter =  JOptionPane.showInputDialog(fmInstance,"Enter delimiter String",delimiter); 
         
       }
   
       if (command == "Convert Mode")
       {
         System.out.println("Convert Mode selected");
               convert.setText("Convert Tables");
               convert.setActionCommand("Convert Tables");
         convert.setToolTipText("Normal table conversion  existing table will be deleted");
         mode = Convert.DataBase.CONVERT_MODE;
       }
       if (command == "Append Mode")
       {
         System.out.println("Append Mode selected");
               convert.setText("Append Tables");
               convert.setActionCommand("Append Tables");
        convert.setToolTipText("Appends data to an existing table");
   
         mode = Convert.DataBase.APPEND_MODE; 
       }
       if (command == "Update Mode")
       {
         System.out.println("Update Mode selected");
               convert.setText("Update Tables");
               convert.setActionCommand("Update Tables");
         convert.setToolTipText("Updates data that has been changed in source");
         mode = Convert.DataBase.UPDATE_MODE; 
       }
       if (command == "Delete Mode")
       {
         System.out.println("Delete Mode selected");
         convert.setText("Delete Tables");
         convert.setActionCommand("Delete Tables");
         convert.setToolTipText("Deletes data that has been deleted in source");
         mode = Convert.DataBase.DELETE_MODE; 
       }
   
    //writing config     //writing config
     if (command.equals("save XML Config"))      if (command.equals("save XML Config"))
     {      {
Line 616  public class FM2SQL extends JFrame imple Line 709  public class FM2SQL extends JFrame imple
     }      }
               
             
     if (command.equals("Convert Tables"))      if (command.equals("Convert Tables")||command.equals("Append Tables"))
     {      {
   
       Thread thread = new Thread()        Thread thread = new Thread()
Line 631  public class FM2SQL extends JFrame imple Line 724  public class FM2SQL extends JFrame imple
       };        };
       thread.start();        thread.start();
     }      }
           if (command.equals("Update Tables"))
            {
   
                Thread thread = new Thread()
                {
                    public void run()
                    {
                        setEnabled(false);
                        update();
                        setEnabled(true);
                    }
   
                };
                thread.start();
            }
   
     if (command.equals("show Tables"))      if (command.equals("show Tables"))
     {      {
       Thread thread = new Thread()        Thread thread = new Thread()
Line 687  public class FM2SQL extends JFrame imple Line 796  public class FM2SQL extends JFrame imple
         
   }    }
   /**    /**
        * Updates the content of source to destination and makes new table if necessary
        */
   
     public void update() 
     {
       Vector vectors[] = getListFromTable();
       Convert.user = bean.user;
       Convert.passwd = bean.passwd;
       Convert.userDest = destBean.user;
       Convert.passwdDest = destBean.passwd;
       try
       {
         
         fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
         fmInstance.setEnabled(false);
         Convert.update(bean.url, destURLBox.getSelectedItem().toString(), vectors[0], vectors[1], vectors[2], vectors[3],vectors[4], mode);
   
         destBean.setConnection((String) destURLBox.getSelectedItem());
         DefaultListModel model = new DefaultListModel();
         tables = destBean.getTableNames();
         for (int j = 0; j < tables.size(); ++j)
           model.addElement(tables.get(j));
         if (debug)
           System.out.println("hallo" + tables + " ");
         tListDest.setModel(model);
         fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
       } catch (Exception e4)
       {
         ByteArrayOutputStream b = new ByteArrayOutputStream();
         PrintStream stream = new PrintStream(b);
         e4.printStackTrace(stream);
         showErrorDialog(b.toString(), "Update of table failed");
         fmInstance.setEnabled(true);
       }
   
     }
     /**
    * Copys the content of source to destination and makes new table if necessary     * Copys the content of source to destination and makes new table if necessary
    */     */
   public void convert()    public void convert()
Line 701  public class FM2SQL extends JFrame imple Line 847  public class FM2SQL extends JFrame imple
     {      {
       fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));        fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
       fmInstance.setEnabled(false);        fmInstance.setEnabled(false);
       Convert.convert(bean.url, box4.getSelectedItem().toString(), vectors[0], vectors[1],vectors[2],vectors[3]);        Convert.convert(bean.url, destURLBox.getSelectedItem().toString(), vectors[0], vectors[1],vectors[2],vectors[3],vectors[4],mode,delimiter);
         destBean.setConnection((String) destURLBox.getSelectedItem());
       destBean.setConnection((String) box4.getSelectedItem());  
       DefaultListModel model = new DefaultListModel();        DefaultListModel model = new DefaultListModel();
       tables = destBean.getTableNames();        tables = destBean.getTableNames();
       for (int j = 0; j < tables.size(); ++j)        for (int j = 0; j < tables.size(); ++j)
Line 727  public class FM2SQL extends JFrame imple Line 872  public class FM2SQL extends JFrame imple
     fmInstance.setEnabled(false);      fmInstance.setEnabled(false);
   
     Vector vectors[] = getListFromTable();      Vector vectors[] = getListFromTable();
     Convert.DataBase source = new Convert.DataBase(bean,vectors[0],vectors[1],vectors[2],vectors[3]);      if(convertItem.isSelected()) mode = Convert.DataBase.CONVERT_MODE;
     Convert.DataBase destination = new Convert.DataBase(destBean,new Vector(),new Vector(),new Vector(),new Vector());      else
              if(appendItem.isSelected()) mode = Convert.DataBase.APPEND_MODE;
           else
           if(updateItem.isSelected()) mode = Convert.DataBase.UPDATE_MODE;
       // TODO add id vector in table and write it out
       Convert.DataBase source = new Convert.DataBase(bean,vectors[0],vectors[1],vectors[2],vectors[3],vectors[4],mode);
       Convert.DataBase destination = new Convert.DataBase(destBean,new Vector(),new Vector(),new Vector(),new Vector(),new Vector(),-1);
       source.delimiter =delimiter;
     try      try
     {      {
       Convert.writeConfig(file,source,destination);        Convert.writeConfig(file,source,destination);
Line 761  public class FM2SQL extends JFrame imple Line 912  public class FM2SQL extends JFrame imple
       noUserUpdate = true;        noUserUpdate = true;
       destBean=destBase.bean;        destBean=destBase.bean;
       Object destObj =destBean.url;        Object destObj =destBean.url;
       ((DefaultComboBoxModel) box4.getModel()).removeElement(destObj);        ((DefaultComboBoxModel) destURLBox.getModel()).removeElement(destObj);
       ((DefaultComboBoxModel) box4.getModel()).insertElementAt(destObj,0);        ((DefaultComboBoxModel) destURLBox.getModel()).insertElementAt(destObj,0);
        box4.setSelectedItem(destObj);         destURLBox.setSelectedItem(destObj);
       databases.remove(destBase);        databases.remove(destBase);
       for (Iterator iter = databases.iterator(); iter.hasNext();)        for (Iterator iter = databases.iterator(); iter.hasNext();)
       {        {
         Convert.DataBase database = (Convert.DataBase) iter.next();          Convert.DataBase database = (Convert.DataBase) iter.next();
           
           if (database.mode == Convert.DataBase.CONVERT_MODE)
           {
             convertItem.setSelected(true);
             convert.setText("Convert Tables");
             convert.setActionCommand("Convert Tables");
             mode = Convert.DataBase.CONVERT_MODE;
           } else if (database.mode == Convert.DataBase.APPEND_MODE)
           {
             appendItem.setSelected(true);
             convert.setText("Append Tables");
             convert.setActionCommand("Append Tables");
             mode = Convert.DataBase.APPEND_MODE;
           } else if (database.mode == Convert.DataBase.UPDATE_MODE)
           {
             updateItem.setSelected(true);
             convert.setText("Update Tables");
             convert.setActionCommand("Update Tables");
             mode = Convert.DataBase.UPDATE_MODE;
           }
           delimiter=database.delimiter;
         database.bean.getConnection();          database.bean.getConnection();
              
         bean = database.bean;          bean = database.bean;
         Object obj =bean.url;          Object obj =bean.url;
         ((DefaultComboBoxModel) box3.getModel()).removeElement(obj);          ((DefaultComboBoxModel) sourceURLBox.getModel()).removeElement(obj);
         ((DefaultComboBoxModel) box3.getModel()).insertElementAt(obj,0);          ((DefaultComboBoxModel) sourceURLBox.getModel()).insertElementAt(obj,0);
         box3.setSelectedItem(obj);          sourceURLBox.setSelectedItem(obj);
         fillTable();          fillTable();
         Vector tables=database.bean.getTableNames();          Vector tables=database.bean.getTableNames();
         Collections.sort(tables,String.CASE_INSENSITIVE_ORDER);          Collections.sort(tables,String.CASE_INSENSITIVE_ORDER);
Line 784  public class FM2SQL extends JFrame imple Line 957  public class FM2SQL extends JFrame imple
           int index=tables.indexOf(table);            int index=tables.indexOf(table);
           if(index<0) throw new RuntimeException("Error table \""+table+"\" does no longer exist\n at server "+bean.url +"\n or you mispelled the tablename.");            if(index<0) throw new RuntimeException("Error table \""+table+"\" does no longer exist\n at server "+bean.url +"\n or you mispelled the tablename.");
           noDBUpdate = true;            noDBUpdate = true;
           tC.tableModel.setValueAt(new TableComponent.SQLCommand(database.selects.get(i).toString()),index,2);            tC.tableModel.setValueAt(new TableComponent.SQLCommand(database.selects.get(i).toString()),index,SELECT_INDEX);
                       
           String create =database.creates.get(i).toString();            String create =database.creates.get(i).toString();
           tC.tableModel.setValueAt(new TableComponent.SQLCommand(create.equals("") ? create:"           "+create),index,3);            tC.tableModel.setValueAt(new TableComponent.SQLCommand(create.equals("") ? create:"           "+create),index,CREATE_INDEX);
           Object comboBox=tC.tableModel.getValueAt(index,1);                      // tC.tableModel.setValueAt(new TableComponent.SQLCommand(bean.ids.get(i).toString()),index,ID_INDEX);
   
             Object comboBox=tC.tableModel.getValueAt(index,LAYOUT_INDEX);
             Object idcomboBox=tC.tableModel.getValueAt(index,ID_INDEX);
         
           indices[i] = index;            indices[i] = index;
           if(comboBox!=null) ((JComboBox)comboBox).setSelectedItem(database.layouts.get(i));              if(comboBox!=null) ((JComboBox)comboBox).setSelectedItem(database.layouts.get(i));  
             if(idcomboBox!=null)((JComboBox)idcomboBox).setSelectedItem(bean.ids.get(i));
           tC.tableModel.fireTableDataChanged();            tC.tableModel.fireTableDataChanged();
           noDBUpdate = false;            noDBUpdate = false;
           noUserUpdate = false;            noUserUpdate = false;
Line 983  public class FM2SQL extends JFrame imple Line 1162  public class FM2SQL extends JFrame imple
     } // to for      } // to for
     try      try
     {      {
       destBean.setConnection((String) box4.getSelectedItem());        destBean.setConnection((String) destURLBox.getSelectedItem());
       DefaultListModel model = new DefaultListModel();        DefaultListModel model = new DefaultListModel();
       tables = destBean.getTableNames();        tables = destBean.getTableNames();
       for (int j = 0; j < tables.size(); ++j)        for (int j = 0; j < tables.size(); ++j)
Line 1022  public class FM2SQL extends JFrame imple Line 1201  public class FM2SQL extends JFrame imple
         if(columnName.equals("select")||columnName.equals("Layouts"))          if(columnName.equals("select")||columnName.equals("Layouts"))
         {          {
           String table = model.getValueAt(row,0).toString();            String table = model.getValueAt(row,0).toString();
           String layout = (model.getValueAt(row,1)!=null) ?((JComboBox)model.getValueAt(row,1)).getSelectedItem().toString():"";            String layout = (model.getValueAt(row,LAYOUT_INDEX)!=null) ?((JComboBox)model.getValueAt(row,LAYOUT_INDEX)).getSelectedItem().toString():"";
           String query =  model.getValueAt(row,2).toString();            String query =  model.getValueAt(row,SELECT_INDEX).toString();
           String create = model.getValueAt(row,3).toString();            String create = model.getValueAt(row,CREATE_INDEX).toString();
             String id = (model.getValueAt(row,ID_INDEX)!=null) ?((JComboBox)model.getValueAt(row,ID_INDEX)).getSelectedItem().toString():"";
          
           System.out.println("table" +table+" layout "+layout+" query "+query);            System.out.println("table" +table+" layout "+layout+" query "+query);
           if(!create.equals(""))            if(!create.equals(""))
           {            {
             Object[] options = { "Yes","No"};              Object[] options = { "Yes","No"};
             int option=showDialog("Create Statement not empty! Do you want to overwrite?","create statement",options );               int option=showDialog("Create Statement not empty! Do you want to overwrite?","create statement",options ); 
             if(option==0)               if(option==0) 
             model.setValueAt(createStatement(table,destBean,layout,query),row,3);              model.setValueAt(createStatement(table,destBean,layout,query),row,CREATE_INDEX);
           }            }
             if (columnName.equals("Layouts"))
             {
               
               bean.makeQuery("select * from"+bean.getQC()+table+bean.getQC()+" layout "+bean.getQC()+layout+bean.getQC(),1);
                 
               Vector idVec = bean.getColumnNames();
               if (idVec == null)
                 idVec = new Vector();
               idVec.add(0, "");
               JComboBox box = ((JComboBox) model.getValueAt(row, ID_INDEX));
               box.setModel(new DefaultComboBoxModel(idVec));
               box.setSelectedItem(id);
             }
                 
         }          }
 /*        Statement stm = bean.getConnection().createStatement();  /*        Statement stm = bean.getConnection().createStatement();
Line 1065  public class FM2SQL extends JFrame imple Line 1258  public class FM2SQL extends JFrame imple
     JMenu menu = new JMenu("File");      JMenu menu = new JMenu("File");
      menu.setMnemonic('F');       menu.setMnemonic('F');
     JMenuItem item = new JMenuItem("open XML Config");      JMenuItem item = new JMenuItem("open XML Config");
           item.setToolTipText("opens a XML config file for batch conversion");
     item.setMnemonic('i');      item.setMnemonic('i');
     item.setAccelerator(KeyStroke.getKeyStroke('O',InputEvent.CTRL_DOWN_MASK));      item.setAccelerator(KeyStroke.getKeyStroke('O',InputEvent.CTRL_DOWN_MASK));
       
     item.addActionListener(fm);      item.addActionListener(fm);
     menu.add(item);      menu.add(item);
     item = new JMenuItem("save XML Config");      item = new JMenuItem("save XML Config");
           item.setToolTipText("saves the current selections in an XML config file for batch conversion");
     item.setAccelerator(KeyStroke.getKeyStroke('S',InputEvent.CTRL_DOWN_MASK));      item.setAccelerator(KeyStroke.getKeyStroke('S',InputEvent.CTRL_DOWN_MASK));
     item.setMnemonic('x');      item.setMnemonic('x');
         
Line 1078  public class FM2SQL extends JFrame imple Line 1273  public class FM2SQL extends JFrame imple
     menu.add(item);      menu.add(item);
     item = new JMenuItem("Quit");      item = new JMenuItem("Quit");
     item.setMnemonic('Q');      item.setMnemonic('Q');
           item.setToolTipText("Quits the application");
     item.setAccelerator(KeyStroke.getKeyStroke('Q',InputEvent.CTRL_DOWN_MASK));      item.setAccelerator(KeyStroke.getKeyStroke('Q',InputEvent.CTRL_DOWN_MASK));
     item.addActionListener(fm);      item.addActionListener(fm);
      menu.add(item);       menu.add(item);
Line 1086  public class FM2SQL extends JFrame imple Line 1282  public class FM2SQL extends JFrame imple
     menu = new JMenu("Options");      menu = new JMenu("Options");
     menu.setMnemonic('O');      menu.setMnemonic('O');
         
       ButtonGroup bgrp = new ButtonGroup();
       convertItem = new JCheckBoxMenuItem("Convert Mode");
           convertItem.setToolTipText("Normal table conversion  existing table will be deleted");
           convertItem.addActionListener(fm);
       
       bgrp.add(convertItem);
       
       menu.add(convertItem);
       menubar.add(menu);
    
           appendItem = new JCheckBoxMenuItem("Append Mode");
           appendItem.setToolTipText("Appends data to an existing table");
           appendItem.addActionListener(fm);
   
           bgrp.add(appendItem);
   
       menu.add(appendItem);
       menubar.add(menu);
   
           updateItem = new JCheckBoxMenuItem("Update Mode");
           updateItem.setToolTipText("Updates data in an existing table");
           updateItem.addActionListener(fm);
   
           bgrp.add(updateItem);
   
           menu.add(updateItem);
       deleteItem = new JCheckBoxMenuItem("Delete Mode");
       deleteItem.setToolTipText("Deletes data in an existing table \n that has been deleted in source table");
       deleteItem.addActionListener(fm);
   
       bgrp.add(deleteItem);
   
       menu.add(deleteItem);
   
           menubar.add(menu);
     item = new JMenuItem("show Driver features");      item = new JMenuItem("show Driver features");
       item.setToolTipText("shows the features of the selected driver");
     item.addActionListener(fm);      item.addActionListener(fm);
     menu.add(item);      menu.add(item);
     menubar.add(menu);      menubar.add(menu);
       delimiterItem = new JMenuItem("Delimiter");
       delimiterItem.setToolTipText("Delimiter for FM Arrayfields");
       delimiterItem.addActionListener(fm);
       menu.add(delimiterItem);
       menubar.add(menu);
       
     item.addActionListener(fm);   //   item.addActionListener(fm);
     menu.add(item);  //    menu.add(item);
       
     menubar.add(menu);      menubar.add(menu);
       
     menu.setBackground(fm.getBackground());      menu.setBackground(fm.getBackground());
     menubar.setBackground(fm.getBackground());      menubar.setBackground(fm.getBackground());
       convertItem.doClick();
     setJMenuBar(menubar);      setJMenuBar(menubar);
   }    }
   /**    /**
Line 1216  public class FM2SQL extends JFrame imple Line 1454  public class FM2SQL extends JFrame imple
     }      }
   
   }    }
       public static class DelimiterDialog extends JDialog
       {
           JLabel table = new JLabel("    ");
           JLabel status = new JLabel("    ");
           JLabel title = new JLabel("     ");
           JPanel content = new JPanel();
           JPanel titlePanel = new JPanel();
           JPanel delimiterPanel = new JPanel();
           JPanel buttonPanel = new JPanel();
           JTextField delimiter = new JTextField(10);
       
           JButton cancel = new JButton("Cancel");
           JButton ok = new JButton("Ok");
           Thread thread;
           public DelimiterDialog(JFrame frame)
           {
               super(frame);
               setTitle("Delimiter Editor");
               setModal(true);
               content = new JPanel(true);
               delimiter.setText(fmInstance.delimiter);
               ActionListener al = new ActionListener()
               {
                   public void actionPerformed(ActionEvent e)
                   {
                       fmInstance.delimiter=parseDelimiter(delimiter.getText());
                       setVisible(false);
                   }
   
               };
               this.addWindowListener(new WindowAdapter()
               {
                   public void windowClosing(WindowEvent e)
                   {
                       cancel.doClick();
                   }
               });
   
               //delimiter.setText(fmInstance.delimiter);
               delimiter.addActionListener(al);
               content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
               title = new JLabel("Enter Delimiter ");
               title.setHorizontalTextPosition(title.CENTER);
               titlePanel.add(title);
               buttonPanel.add(ok);
               buttonPanel.add(cancel);
               content.add(titlePanel);
               content.add(Box.createRigidArea(new java.awt.Dimension(0, 15)));
           
               content.add(new JLabel(""));
               content.add(delimiterPanel);
               content.add(buttonPanel);
               content.add(Box.createRigidArea(new java.awt.Dimension(0, 15)));
               
               delimiterPanel.add(new JLabel("Delimiter:  "));
               delimiterPanel.add(delimiter);
           getContentPane().add(titlePanel, "North");
               getContentPane().add(content, "Center");
               ok.addActionListener(al);
               cancel.addActionListener(new ActionListener()
               {
                   public void actionPerformed(ActionEvent e)
                   {
                       fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
                       fmInstance.setEnabled(true);
                       setVisible(false);
                   //  thread.stop();
                   }
   
               });
               pack();
         setLocationRelativeTo(fmInstance);
           }
       public String parseDelimiter(Object o)
       {
         String str = o.toString();
         StringBuffer sbuff = new StringBuffer();
         int length = str.length();
         for(int i = 0;i<length;++i)
         {
                   
                   if(str.charAt(i)=='\\')
           {
             System.out.println(str.charAt(i));
             if (str.charAt(i + 1) == 'r')
             {
               sbuff.append("\r");
             }
             if (str.charAt(i + 1) == 't')
             {
               sbuff.append("\t");
             }  
               if (str.charAt(i + 1) == 'n')
               {
                 sbuff.append("\n");
               } 
                 if (str.charAt(i + 1) == '\\')
                 {
                   sbuff.append("\\");
                 }
                       
                       if(i<length-1) ++i;
           
           } else sbuff.append(str.charAt(i));
               }
       
         return sbuff.toString();
       }
       }
   
   
   public static class PasswordDialog extends JDialog    public static class PasswordDialog extends JDialog
   {    {
     JLabel table = new JLabel("    ");      JLabel table = new JLabel("    ");
Line 1310  public class FM2SQL extends JFrame imple Line 1659  public class FM2SQL extends JFrame imple
     Vector tableNames = bean.getTableNames();      Vector tableNames = bean.getTableNames();
     Collections.sort(tableNames, String.CASE_INSENSITIVE_ORDER);      Collections.sort(tableNames, String.CASE_INSENSITIVE_ORDER);
     Vector[] data = new Vector[2];      Vector[] data = new Vector[2];
     data[1] = new Vector();      data[1] = new Vector(5);
     data[1].add("Table");      data[1].setSize(5)
     data[1].add("Layouts");      data[1].set(0," source Tablename  ");
         data[1].add("select");      data[1].set(LAYOUT_INDEX,"Layouts");
     data[1].add("create");          data[1].set(SELECT_INDEX,"select");
          data[1].set(CREATE_INDEX,"create");
       data[1].set(ID_INDEX," id ");
     data[0] = new Vector();      data[0] = new Vector();
   
     for (int i = 0; i < tableNames.size(); i++)      for (int i = 0; i < tableNames.size(); i++)
     {      {
       String name = tableNames.get(i).toString();        String name = tableNames.get(i).toString();
       Vector layouts = new Vector();        Vector layouts = new Vector();
         Vector idVec = new Vector();
      
       try        try
       {        {
           bean.makeQuery("select * from"+bean.getQC()+name+bean.getQC(),1);
         layouts = bean.getLayoutNames(name);          layouts = bean.getLayoutNames(name);
       } catch (SQLException e)        } catch (SQLException e)
       {        {
         layouts = new Vector();          layouts = new Vector();
       }        }
       Vector dataRow = new Vector();        
       dataRow.add(name);        idVec = bean.getColumnNames(); 
         if(idVec==null) idVec=new Vector();
         idVec.add(0,"");
         Vector dataRow = new Vector(5);
         
         dataRow.setSize(5);
         dataRow.set(0,name);
         
         dataRow.set(SELECT_INDEX,new TableComponent.SQLCommand("select * from " + bean.getQC() + name + bean.getQC()));
       if (!layouts.isEmpty())        if (!layouts.isEmpty())
         dataRow.add(new JComboBox(layouts));               dataRow.set(LAYOUT_INDEX,new JComboBox(layouts));
       else        else
         dataRow.add(null);               dataRow.set(LAYOUT_INDEX,null);
       dataRow.add(new TableComponent.SQLCommand("select * from "+bean.getQC()+name+bean.getQC()));       
             
         // create row
         dataRow.set(CREATE_INDEX,new TableComponent.SQLCommand(""));
         // id row
         dataRow.set(ID_INDEX,new TableComponent.IDComboBox(idVec));//new TableComponent.SQLCommand(""));
         bean.ids.add("");
         data[0].add(dataRow);          data[0].add(dataRow);
     dataRow.add(new TableComponent.SQLCommand(""));  
       //System.out.println(dataRow);        //System.out.println(dataRow);
     }      }
      
     tC.tableModel.setDataVector(data[0], data[1]);      tC.tableModel.setDataVector(data[0], data[1]);
      //@TODO new sizeToFit method needed
       //tC.sizeToFit(450, 250);
       Dimension dim=listPanel.getPreferredSize();
       tC.sizeToFit(dim.width,dim.height);
     tC.revalidate();      tC.revalidate();
     tC.tableModel.fireTableDataChanged();      tC.tableModel.fireTableDataChanged();
     noDBUpdate = false;      noDBUpdate = false;
Line 1349  public class FM2SQL extends JFrame imple Line 1719  public class FM2SQL extends JFrame imple
   }    }
   public Vector[] getListFromTable()    public Vector[] getListFromTable()
   {    {
     Vector[] vec = new Vector[4];      Vector[] vec = new Vector[5];
     vec[0] = new Vector();      vec[0] = new Vector();
     vec[1] = new Vector();      vec[1] = new Vector();
         vec[2] = new Vector();          vec[2] = new Vector();
     vec[3] = new Vector();      vec[3] = new Vector();
       vec[4] = new Vector();
     int[] rows = tC.table.getSelectedRows();      int[] rows = tC.table.getSelectedRows();
     for (int i = 0; i < rows.length; i++)      for (int i = 0; i < rows.length; i++)
     {      {
       //System.out.println(tC.tableModel.getValueAt(rows[i],1));        //System.out.println(tC.tableModel.getValueAt(rows[i],1));
       vec[0].add(tC.tableModel.getValueAt(rows[i], 0));        vec[0].add(tC.tableModel.getValueAt(rows[i], 0));
       JComboBox box = ((JComboBox) tC.tableModel.getValueAt(rows[i], 1));        JComboBox box = ((JComboBox) tC.tableModel.getValueAt(rows[i], LAYOUT_INDEX));
       String layoutName = (box != null) ? box.getSelectedItem().toString() : "";        String layoutName = (box != null) ? box.getSelectedItem().toString() : "";
         
         String idName = ((JComboBox)tC.tableModel.getValueAt(rows[i], ID_INDEX)).getSelectedItem().toString();
       vec[1].add(layoutName);        vec[1].add(layoutName);
       vec[2].add(tC.tableModel.getValueAt(rows[i], 2).toString());        vec[2].add(tC.tableModel.getValueAt(rows[i],SELECT_INDEX ).toString());
       vec[3].add(tC.tableModel.getValueAt(rows[i], 3).toString());        vec[3].add(tC.tableModel.getValueAt(rows[i], CREATE_INDEX).toString());
               vec[4].add(idName);
       
     }      }
     return vec;      return vec;
Line 1374  public class FM2SQL extends JFrame imple Line 1748  public class FM2SQL extends JFrame imple
     showTables1.setEnabled(state);      showTables1.setEnabled(state);
     convert.setEnabled(state);      convert.setEnabled(state);
     dropTables.setEnabled(state);      dropTables.setEnabled(state);
     box3.setEnabled(state);      sourceURLBox.setEnabled(state);
     box4.setEnabled(state);      destURLBox.setEnabled(state);
   
   }    }
   public TableComponent.SQLCommand createStatement(String table,DBBean beanDest,String layout,String query)  throws SQLException    public TableComponent.SQLCommand createStatement(String table,DBBean beanDest,String layout,String query)  throws SQLException
   {    {
     fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));      fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
                   
     if(beanDest.url.equals("")) beanDest.url=box4.getSelectedItem().toString();      if(beanDest.url.equals("")) beanDest.url=destURLBox.getSelectedItem().toString();
     StringBuffer command = new StringBuffer(50);      StringBuffer command = new StringBuffer(50);
     command.append("\n           CREATE TABLE ");      command.append("\n           CREATE TABLE ");
     command.append(beanDest.getQC());      command.append(beanDest.getQC());

Removed from v.1.8  
changed lines
  Added in v.1.28


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>