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

version 1.28, 2004/03/09 12:34:09 version 1.40, 2004/06/23 10:00:06
Line 1 Line 1
   /*
    * FM2SQL.java -- Main program Filemaker to SQL Converter 
    * Copyright (C) 2003 Robert Gordesch (rogo@mpiwg-berlin.mpg.de
    * This program is free software; you can redistribute it and/or modify it
    * under the terms of the GNU General Public License as published by the Free
    * Software Foundation; either version 2 of the License, or (at your option)
    * any later version.  Please read license.txt for the full details. A copy of
    * the GPL may be found at http://www.gnu.org/copyleft/lgpl.html  You should
    * have received a copy of the GNU General Public License along with this
    * program; if not, write to the Free Software Foundation, Inc., 59 Temple
    * Place, Suite 330, Boston, MA 02111-1307 USA  Created on 15.09.2003 by
    * rogo  
    */
   
 import java.awt.Cursor;  import java.awt.Cursor;
 import java.awt.Dimension;  import java.awt.Dimension;
 import java.awt.Font;  import java.awt.Font;
Line 18  import java.io.FileWriter; Line 32  import java.io.FileWriter;
 import java.io.PrintStream;  import java.io.PrintStream;
 import java.sql.SQLException;  import java.sql.SQLException;
 import java.sql.Statement;  import java.sql.Statement;
   import java.text.ParseException;
 import java.util.Collections;  import java.util.Collections;
 import java.util.Iterator;  import java.util.Iterator;
 import java.util.Vector;  import java.util.Vector;
Line 72  public class FM2SQL extends JFrame imple Line 87  public class FM2SQL extends JFrame imple
   private JCheckBoxMenuItem appendItem;    private JCheckBoxMenuItem appendItem;
   private JCheckBoxMenuItem updateItem;    private JCheckBoxMenuItem updateItem;
   private JCheckBoxMenuItem deleteItem;    private JCheckBoxMenuItem deleteItem;
       private JCheckBoxMenuItem useNormanToUnicodeMapper;
   int mode = -1;    int mode = -1;
   final static int ID_INDEX = 1;    final static int STATUS_INDEX = 0;
   final static int SELECT_INDEX = 2;    final static int NAME_INDEX = 1;
   final static int CREATE_INDEX = 3;    final static int ID_INDEX = 2;
   final static int LAYOUT_INDEX = 4;    final static int SELECT_INDEX = 3;
     final static int CREATE_INDEX = 4;
     final static int LAYOUT_INDEX = 5;
       
       
     
Line 637  public class FM2SQL extends JFrame imple Line 654  public class FM2SQL extends JFrame imple
       convert.setToolTipText("Deletes data that has been deleted in source");        convert.setToolTipText("Deletes data that has been deleted in source");
       mode = Convert.DataBase.DELETE_MODE;         mode = Convert.DataBase.DELETE_MODE; 
     }      }
   if(command.equals("use NormanToUnicodeMapper"))
   {
     if(bean!=null) bean.setUseNormanToUnicodeMapper(useNormanToUnicodeMapper.isSelected());
   }
    //writing config     //writing config
     if (command.equals("save XML Config"))      if (command.equals("save XML Config"))
     {      {
Line 739  public class FM2SQL extends JFrame imple Line 759  public class FM2SQL extends JFrame imple
              };               };
              thread.start();               thread.start();
          }           }
       if (command.equals("Delete Tables"))
        {
   
          Thread thread = new Thread()
          {
            public void run()
            {
              setEnabled(false);
              delete();
              setEnabled(true);
            }
   
          };
          thread.start();
        }
   
     if (command.equals("show Tables"))      if (command.equals("show Tables"))
     {      {
Line 832  public class FM2SQL extends JFrame imple Line 867  public class FM2SQL extends JFrame imple
     }      }
   
   }    }
     public void delete() 
      {
        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.delete(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(), "Delete 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
    */     */
Line 877  public class FM2SQL extends JFrame imple Line 946  public class FM2SQL extends JFrame imple
         if(appendItem.isSelected()) mode = Convert.DataBase.APPEND_MODE;          if(appendItem.isSelected()) mode = Convert.DataBase.APPEND_MODE;
         else          else
         if(updateItem.isSelected()) mode = Convert.DataBase.UPDATE_MODE;          if(updateItem.isSelected()) mode = Convert.DataBase.UPDATE_MODE;
       else
       if(deleteItem.isSelected()) mode = Convert.DataBase.DELETE_MODE;
   
     // TODO add id vector in table and write it out      // 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 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);      Convert.DataBase destination = new Convert.DataBase(destBean,new Vector(),new Vector(),new Vector(),new Vector(),new Vector(),-1);
     source.delimiter =delimiter;      source.delimiter =delimiter;
       source.useNormanToUnicodeMapper=useNormanToUnicodeMapper.isSelected();
     try      try
     {      {
       Convert.writeConfig(file,source,destination);        Convert.writeConfig(file,source,destination);
Line 922  public class FM2SQL extends JFrame imple Line 995  public class FM2SQL extends JFrame imple
                   
         if (database.mode == Convert.DataBase.CONVERT_MODE)          if (database.mode == Convert.DataBase.CONVERT_MODE)
         {          {
           convertItem.setSelected(true);            convertItem.doClick();
           convert.setText("Convert Tables");  
           convert.setActionCommand("Convert Tables");  
           mode = Convert.DataBase.CONVERT_MODE;  
         } else if (database.mode == Convert.DataBase.APPEND_MODE)          } else if (database.mode == Convert.DataBase.APPEND_MODE)
         {          {
           appendItem.setSelected(true);            appendItem.doClick();
           convert.setText("Append Tables");  
           convert.setActionCommand("Append Tables");  
           mode = Convert.DataBase.APPEND_MODE;  
         } else if (database.mode == Convert.DataBase.UPDATE_MODE)          } else if (database.mode == Convert.DataBase.UPDATE_MODE)
         {          {
           updateItem.setSelected(true);            updateItem.doClick();
           convert.setText("Update Tables");          } else if (database.mode == Convert.DataBase.DELETE_MODE)
           convert.setActionCommand("Update Tables");          {
           mode = Convert.DataBase.UPDATE_MODE;            deleteItem.doClick();
         }          }
         delimiter=database.delimiter;          delimiter=database.delimiter;
         database.bean.getConnection();          database.bean.getConnection();
                         
         bean = database.bean;          bean = database.bean;
           if(bean.isUseNormanToUnicodeMapper()) useNormanToUnicodeMapper.setSelected(true);
         Object obj =bean.url;          Object obj =bean.url;
         ((DefaultComboBoxModel) sourceURLBox.getModel()).removeElement(obj);          ((DefaultComboBoxModel) sourceURLBox.getModel()).removeElement(obj);
         ((DefaultComboBoxModel) sourceURLBox.getModel()).insertElementAt(obj,0);          ((DefaultComboBoxModel) sourceURLBox.getModel()).insertElementAt(obj,0);
Line 967  public class FM2SQL extends JFrame imple Line 1035  public class FM2SQL extends JFrame imple
           Object idcomboBox=tC.tableModel.getValueAt(index,ID_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)
             {
               String layout = database.layouts.get(i).toString();
               ((JComboBox) comboBox).setSelectedItem(layout);
               if (layout != "")
               {
                 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) idcomboBox).setModel(new DefaultComboBoxModel(idVec));
               }
             
             }
           if(idcomboBox!=null)((JComboBox)idcomboBox).setSelectedItem(bean.ids.get(i));            if(idcomboBox!=null)((JComboBox)idcomboBox).setSelectedItem(bean.ids.get(i));
           tC.tableModel.fireTableDataChanged();            tC.tableModel.fireTableDataChanged();
           noDBUpdate = false;            noDBUpdate = false;
Line 977  public class FM2SQL extends JFrame imple Line 1060  public class FM2SQL extends JFrame imple
         // add Selections          // add Selections
         ListSelectionModel lm = tC.table.getSelectionModel();          ListSelectionModel lm = tC.table.getSelectionModel();
         for(int i=0;i<indices.length;++i)          for(int i=0;i<indices.length;++i)
           {
         lm.addSelectionInterval(indices[i],indices[i]);          lm.addSelectionInterval(indices[i],indices[i]);
                      tC.tableModel.setValueAt(Boolean.TRUE,indices[i],STATUS_INDEX);
           }    
        destBean.getConnection();         destBean.getConnection();
               
         DefaultListModel model = new DefaultListModel();          DefaultListModel model = new DefaultListModel();
Line 1008  public class FM2SQL extends JFrame imple Line 1093  public class FM2SQL extends JFrame imple
   }    }
   public boolean showTable(int list)    public boolean showTable(int list)
   {    {
     ProgressDialog dialog = new ProgressDialog(fm);      ProgressDialog dialog = new ProgressDialog(fm,bean);
     dialog.setTitle("Preparing tables to be displayed");      dialog.setTitle("Preparing tables to be displayed");
     dialog.thread = Thread.currentThread();      dialog.thread = Thread.currentThread();
     dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));      dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
Line 1200  public class FM2SQL extends JFrame imple Line 1285  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,NAME_INDEX).toString();
           String layout = (model.getValueAt(row,LAYOUT_INDEX)!=null) ?((JComboBox)model.getValueAt(row,LAYOUT_INDEX)).getSelectedItem().toString():"";            String layout = (model.getValueAt(row,LAYOUT_INDEX)!=null) ?((JComboBox)model.getValueAt(row,LAYOUT_INDEX)).getSelectedItem().toString():"";
           String query =  model.getValueAt(row,SELECT_INDEX).toString();            String query =  model.getValueAt(row,SELECT_INDEX).toString();
           String create = model.getValueAt(row,CREATE_INDEX).toString();            String create = model.getValueAt(row,CREATE_INDEX).toString();
Line 1226  public class FM2SQL extends JFrame imple Line 1311  public class FM2SQL extends JFrame imple
             JComboBox box = ((JComboBox) model.getValueAt(row, ID_INDEX));              JComboBox box = ((JComboBox) model.getValueAt(row, ID_INDEX));
             box.setModel(new DefaultComboBoxModel(idVec));              box.setModel(new DefaultComboBoxModel(idVec));
             box.setSelectedItem(id);              box.setSelectedItem(id);
               
              tC.tableModel.fireTableCellUpdated(row,ID_INDEX);
           }            }
                 
         }          }
Line 1315  public class FM2SQL extends JFrame imple Line 1402  public class FM2SQL extends JFrame imple
     bgrp.add(deleteItem);      bgrp.add(deleteItem);
   
     menu.add(deleteItem);      menu.add(deleteItem);
         useNormanToUnicodeMapper = new JCheckBoxMenuItem("use NormanToUnicodeMapper");
       useNormanToUnicodeMapper.setToolTipText("maps characters in norman encoding to unicode characters");
       useNormanToUnicodeMapper.addActionListener(fm);
       menu.add(useNormanToUnicodeMapper);
   
         menubar.add(menu);          menubar.add(menu);
     item = new JMenuItem("show Driver features");      item = new JMenuItem("show Driver features");
Line 1409  public class FM2SQL extends JFrame imple Line 1500  public class FM2SQL extends JFrame imple
     JProgressBar progress = new JProgressBar();      JProgressBar progress = new JProgressBar();
     JButton cancel = new JButton("Cancel");      JButton cancel = new JButton("Cancel");
     Thread thread;      Thread thread;
     public ProgressDialog(JFrame frame)      DBBean bean;
       public ProgressDialog(JFrame frame,DBBean bean)
     {      {
       super(frame);        super(frame);
         this.bean = bean; 
         
       content = new JPanel(true);        content = new JPanel(true);
       //content.setBorder(BorderFactory.createRaisedBevelBorder());        //content.setBorder(BorderFactory.createRaisedBevelBorder());
       content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));        content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
Line 1446  public class FM2SQL extends JFrame imple Line 1540  public class FM2SQL extends JFrame imple
           fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));            fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
                     fmInstance.setEnabled(true);                      fmInstance.setEnabled(true);
           setVisible(false);            setVisible(false);
             try
             {
               ProgressDialog.this.bean.getConnection().close();
             } catch (SQLException e1)
             {
               // TODO Auto-generated catch block
               e1.printStackTrace();
             } catch (Exception e1)
             {
               // TODO Auto-generated catch block
               e1.printStackTrace();
             }
           thread.stop();            thread.stop();
         }          }
       });        });
Line 1656  public class FM2SQL extends JFrame imple Line 1762  public class FM2SQL extends JFrame imple
   public void fillTable()    public void fillTable()
   {    {
     noDBUpdate = true;      noDBUpdate = true;
       bean.setUseNormanToUnicodeMapper(useNormanToUnicodeMapper.isSelected());
     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(5);      data[1] = new Vector(6);
     data[1].setSize(5)      data[1].setSize(6)
     data[1].set(0," source Tablename  ");      data[1].set(STATUS_INDEX," ");
       data[1].set(NAME_INDEX," source Tablename  ");
     data[1].set(LAYOUT_INDEX,"Layouts");      data[1].set(LAYOUT_INDEX,"Layouts");
         data[1].set(SELECT_INDEX,"select");          data[1].set(SELECT_INDEX,"select");
     data[1].set(CREATE_INDEX,"create");      data[1].set(CREATE_INDEX,"create");
Line 1685  public class FM2SQL extends JFrame imple Line 1793  public class FM2SQL extends JFrame imple
       idVec = bean.getColumnNames();         idVec = bean.getColumnNames(); 
       if(idVec==null) idVec=new Vector();        if(idVec==null) idVec=new Vector();
       idVec.add(0,"");        idVec.add(0,"");
       Vector dataRow = new Vector(5);        Vector dataRow = new Vector(6);
               
       dataRow.setSize(5);        dataRow.setSize(6);
       dataRow.set(0,name);        dataRow.set(STATUS_INDEX,Boolean.FALSE);
         dataRow.set(NAME_INDEX,name);
               
       dataRow.set(SELECT_INDEX,new TableComponent.SQLCommand("select * from " + bean.getQC() + name + bean.getQC()));        dataRow.set(SELECT_INDEX,new TableComponent.SQLCommand("select * from " + bean.getQC() + name + bean.getQC()));
       if (!layouts.isEmpty())        if (!layouts.isEmpty())
Line 1707  public class FM2SQL extends JFrame imple Line 1816  public class FM2SQL extends JFrame imple
       //System.out.println(dataRow);        //System.out.println(dataRow);
     }      }
         
       tC.booleanRenderer.renderFalseEmpty=true;
     tC.tableModel.setDataVector(data[0], data[1]);      tC.tableModel.setDataVector(data[0], data[1]);
    //@TODO new sizeToFit method needed     //@TODO new sizeToFit method needed
     //tC.sizeToFit(450, 250);      //tC.sizeToFit(450, 250);
Line 1725  public class FM2SQL extends JFrame imple Line 1835  public class FM2SQL extends JFrame imple
         vec[2] = new Vector();          vec[2] = new Vector();
     vec[3] = new Vector();      vec[3] = new Vector();
     vec[4] = new Vector();      vec[4] = new Vector();
       for(int i=0;i<tC.tableModel.getRowCount();++i)
       {
       }
     int[] rows = tC.table.getSelectedRows();      int[] rows = tC.table.getSelectedRows();
     for (int i = 0; i < rows.length; i++)      for (int i = 0; i < tC.tableModel.getRowCount(); i++)
       {
         if(((Boolean)tC.tableModel.getValueAt(i,STATUS_INDEX))==Boolean.FALSE)
     {      {
           System.out.println("skipped row "+i);
           continue; 
           }
     
       //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(i, NAME_INDEX));
       JComboBox box = ((JComboBox) tC.tableModel.getValueAt(rows[i], LAYOUT_INDEX));        JComboBox box = ((JComboBox) tC.tableModel.getValueAt(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();        String idName = ((JComboBox)tC.tableModel.getValueAt(i, ID_INDEX)).getSelectedItem().toString();
       vec[1].add(layoutName);        vec[1].add(layoutName);
       vec[2].add(tC.tableModel.getValueAt(rows[i],SELECT_INDEX ).toString());        vec[2].add(tC.tableModel.getValueAt(i,SELECT_INDEX ).toString());
       vec[3].add(tC.tableModel.getValueAt(rows[i], CREATE_INDEX).toString());        vec[3].add(tC.tableModel.getValueAt(i, CREATE_INDEX).toString());
             vec[4].add(idName);              vec[4].add(idName);
       
     }      }
Line 1752  public class FM2SQL extends JFrame imple Line 1871  public class FM2SQL extends JFrame imple
     destURLBox.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, ParseException
   {    {
     fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));      fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
                   

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


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