Diff for /FM2SQL/Attic/Convert.java between versions 1.78 and 1.79

version 1.78, 2004/09/22 11:14:10 version 1.79, 2004/10/12 18:46:52
Line 1 Line 1
 /*  /*
  * Convert.java -- Converter class -  Filemaker to SQL Converter    * Convert.java -- Converter class - Filemaker to SQL Converter Copyright (C)
  * Copyright (C) 2003 Robert Gordesch (rogo@mpiwg-berlin.mpg.de   * 2003 Robert Gordesch (rogo@mpiwg-berlin.mpg.de) This program is free
  * This program is free software; you can redistribute it and/or modify it   * software; you can redistribute it and/or modify it under the terms of the GNU
  * under the terms of the GNU General Public License as published by the Free   * General Public License as published by the Free Software Foundation; either
  * Software Foundation; either version 2 of the License, or (at your option)   * version 2 of the License, or (at your option) any later version. Please read
  * any later version.  Please read license.txt for the full details. A copy of   * license.txt for the full details. A copy of the GPL may be found at
  * the GPL may be found at http://www.gnu.org/copyleft/lgpl.html  You should   * http://www.gnu.org/copyleft/lgpl.html You should have received a copy of the
  * have received a copy of the GNU General Public License along with this   * GNU General Public License along with this program; if not, write to the Free
  * program; if not, write to the Free Software Foundation, Inc., 59 Temple   * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
  * Place, Suite 330, Boston, MA 02111-1307 USA  Created on 15.09.2003 by   * USA Created on 15.09.2003 by rogo
  * rogo    
  */   */
   
 import java.awt.Cursor;  import java.awt.Cursor;
Line 48  import com.exploringxml.xml.Xparse; Line 47  import com.exploringxml.xml.Xparse;
   
 class Convert  class Convert
 {  {
   /**Helper class for index creation      /**
        * Helper class for index creation
        * 
    * @author rogo     * @author rogo
    *     *
    */     */
Line 65  class Convert Line 66  class Convert
         {          {
           buff.append(element).append(", ");            buff.append(element).append(", ");
           count++;            count++;
         } else                  }
                   else
           buff.append(element);            buff.append(element);
   
       }        }
Line 73  class Convert Line 75  class Convert
       return buff.toString();        return buff.toString();
     }      }
   }    }
   
   static DBBean bean = new DBBean();    static DBBean bean = new DBBean();
   
   static DBBean beanDest = new DBBean();    static DBBean beanDest = new DBBean();
   
   static String user = "", passwd = "e1nste1n";    static String user = "", passwd = "e1nste1n";
   
   static String userDest = "postgres", passwdDest = "rogo";    static String userDest = "postgres", passwdDest = "rogo";
   
   static boolean batchRun = false;    static boolean batchRun = false;
   
   static Vector databases = new Vector();    static Vector databases = new Vector();
   
   final static int numHits = 5000;    final static int numHits = 5000;
   
   final static int numIntervalls = 4;    final static int numIntervalls = 4;
   
   static boolean debug = true;    static boolean debug = true;
   
   public static void main(String args[])    public static void main(String args[])
   {    {
     /*    try          /*
         {           * try { //byte[] b = "ö".getBytes("UTF-8"); //
           //byte[] b = "ö".getBytes("UTF-8");           * System.out.println("QueryString " +b[0]+" "+b[1]+(new
         //  System.out.println("QueryString " +b[0]+" "+b[1]+(new String(b).getBytes()[0])+" "+new String(b).getBytes()[1]);           * String(b).getBytes()[0])+" "+new String(b).getBytes()[1]);
         //System.out.println(new String(b,"UTF-8"));           * //System.out.println(new String(b,"UTF-8")); } catch
         } catch (UnsupportedEncodingException e)           * (UnsupportedEncodingException e) { e.printStackTrace(); }
         {           */
           e.printStackTrace();  
         }*/  
     FileOutputStream file = null;      FileOutputStream file = null;
     if (args.length != 1)      if (args.length != 1)
     {      {
Line 103  class Convert Line 112  class Convert
     try      try
     {      {
       file = new FileOutputStream("./log.txt");        file = new FileOutputStream("./log.txt");
     } catch (FileNotFoundException e1)          }
           catch (FileNotFoundException e1)
     {      {
       e1.printStackTrace();        e1.printStackTrace();
     }      }
Line 120  class Convert Line 130  class Convert
     System.out.println("Finished!");      System.out.println("Finished!");
     //convert("jdbc:fmpro:http://141.14.237.74:8050","jdbc:postgresql://erebos/test",null,null);      //convert("jdbc:fmpro:http://141.14.237.74:8050","jdbc:postgresql://erebos/test",null,null);
   }    }
   
   public static void convertBatch(DBBean source, DBBean destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids, int mode, String delimiter) throws Exception    public static void convertBatch(DBBean source, DBBean destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids, int mode, String delimiter) throws Exception
   {    {
     bean = source;      bean = source;
Line 160  class Convert Line 171  class Convert
           //result = bean.getQueryData(query, null, 0);            //result = bean.getQueryData(query, null, 0);
           bean.getConnection();            bean.getConnection();
           bean.makeQuery(query, 0);            bean.makeQuery(query, 0);
         } catch (Exception e)                  }
                   catch (Exception e)
         {          {
           System.out.println(e.getMessage());            System.out.println(e.getMessage());
           e.printStackTrace();            e.printStackTrace();
Line 185  class Convert Line 197  class Convert
             stm.executeUpdate("drop table " + beanDest.getQC() + names.get(tbIndex) + beanDest.getQC());              stm.executeUpdate("drop table " + beanDest.getQC() + names.get(tbIndex) + beanDest.getQC());
             tables.remove((String) names.get(tbIndex));              tables.remove((String) names.get(tbIndex));
             System.out.println("dropped table " + names.get(tbIndex));              System.out.println("dropped table " + names.get(tbIndex));
           } else if (tables.indexOf(convertText(names.get(tbIndex).toString())) >= 0)                      }
                       else if (tables.indexOf(convertText(names.get(tbIndex).toString())) >= 0)
           {            {
             stm.executeUpdate("drop table " + beanDest.getQC() + convertText((String) names.get(tbIndex)) + beanDest.getQC());              stm.executeUpdate("drop table " + beanDest.getQC() + convertText((String) names.get(tbIndex)) + beanDest.getQC());
             tables.remove(convertText((String) names.get(tbIndex)));              tables.remove(convertText((String) names.get(tbIndex)));
Line 209  class Convert Line 222  class Convert
               for (int i = 0; i < columnNames.size() - 1; ++i)                for (int i = 0; i < columnNames.size() - 1; ++i)
               {                {
                 type = bean.metaData.getColumnTypeName(i + 1);                  type = bean.metaData.getColumnTypeName(i + 1);
                 //   System.out.println(i+" "+result[1].get(i)+" "+type);                                  //   System.out.println(i+" "+result[1].get(i)+"
                                   // "+type);
                 type = (type.equals("NUMBER")) ? "INT4" : type;                  type = (type.equals("NUMBER")) ? "INT4" : type;
                 type = (type.equals("CONTAINER")) ? "TEXT" : type;                  type = (type.equals("CONTAINER")) ? "TEXT" : type;
   
Line 220  class Convert Line 234  class Convert
               type = (type.equals("CONTAINER")) ? "TEXT" : type;                type = (type.equals("CONTAINER")) ? "TEXT" : type;
               command.append(beanDest.getQC() + convertText((String) columnNames.get(columnNames.size() - 1)) + beanDest.getQC() + " " + type);                command.append(beanDest.getQC() + convertText((String) columnNames.get(columnNames.size() - 1)) + beanDest.getQC() + " " + type);
               command.append(" )");                command.append(" )");
             } else                          }
                           else
               command = new StringBuffer().append(creates.get(tbIndex).toString());                command = new StringBuffer().append(creates.get(tbIndex).toString());
   
             System.out.println(command);              System.out.println(command);
Line 264  class Convert Line 279  class Convert
         } // to for loop              } // to for loop    
   
       }        }
     } catch (Exception e)          }
           catch (Exception e)
     {      {
       System.out.println("Error while connecting to database " + e);        System.out.println("Error while connecting to database " + e);
       //dialog.setVisible(false);        //dialog.setVisible(false);
Line 283  class Convert Line 299  class Convert
   
     //  dialog.setVisible(false);       //  dialog.setVisible(false); 
   }    }
   
   public static String formatFileMakerArray(List list, String delimiter)    public static String formatFileMakerArray(List list, String delimiter)
   {    {
     StringBuffer formattedString = new StringBuffer();      StringBuffer formattedString = new StringBuffer();
Line 294  class Convert Line 311  class Convert
     }      }
     return formattedString.toString();      return formattedString.toString();
   }    }
   
   /**    /**
    * Method for SQL UPDATE     * Method for SQL UPDATE
        * 
    * @param source     * @param source
    * @param destination     * @param destination
    * @param names     * @param names
Line 308  class Convert Line 327  class Convert
    */     */
   public static void update(String source, String destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids, int mode) throws Exception    public static void update(String source, String destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids, int mode) throws Exception
   {    {
   
     FM2SQL.ProgressDialog dialog = null;      FM2SQL.ProgressDialog dialog = null;
     if (FM2SQL.fmInstance != null)      if (FM2SQL.fmInstance != null)
     {      {
Line 337  class Convert Line 357  class Convert
       // Collections.sort(names);        // Collections.sort(names);
       int tbIndex = 1;        int tbIndex = 1;
   
       // System.out.println("Start at "+names.indexOf("archimedes_facsimiles"));              // System.out.println("Start at
               // "+names.indexOf("archimedes_facsimiles"));
       for (tbIndex = 0; tbIndex < names.size(); ++tbIndex)        for (tbIndex = 0; tbIndex < names.size(); ++tbIndex)
       {        {
         Vector[] result = null;          Vector[] result = null;
Line 358  class Convert Line 379  class Convert
             System.out.println("added layout  " + query);              System.out.println("added layout  " + query);
   
           }            }
                       if (dialog != null)
                       {
           dialog.title.setText("Getting table data ...");            dialog.title.setText("Getting table data ...");
           dialog.table.setText(names.get(tbIndex).toString());            dialog.table.setText(names.get(tbIndex).toString());
           dialog.status.setText("Table " + (tbIndex + 1) + " of " + names.size());            dialog.status.setText("Table " + (tbIndex + 1) + " of " + names.size());
           dialog.show();            dialog.show();
                       }
           bean.getConnection();            bean.getConnection();
           bean.makeQuery(query, 0);            bean.makeQuery(query, 0);
         } catch (Exception e)  
                   }
                   catch (Exception e)
         {          {
           continue;            continue;
         }          }
         // determine destTableName from createStatement or from source table name                  // determine destTableName from createStatement or from source
                   // table name
         if (!creates.get(tbIndex).equals(""))          if (!creates.get(tbIndex).equals(""))
         {          {
           String create = creates.get(tbIndex).toString().toLowerCase();            String create = creates.get(tbIndex).toString().toLowerCase();
Line 377  class Convert Line 404  class Convert
           destTableName = create.substring(fromIndex, toIndex).replaceAll(beanDest.getQC(), "").trim();            destTableName = create.substring(fromIndex, toIndex).replaceAll(beanDest.getQC(), "").trim();
           System.out.println("destTable " + destTableName);            System.out.println("destTable " + destTableName);
   
         } else                  }
                   else
           destTableName = convertText(names.get(tbIndex).toString());            destTableName = convertText(names.get(tbIndex).toString());
   
         //beanDest.setConnection("jdbc:postgresql://erebos/test3");          //beanDest.setConnection("jdbc:postgresql://erebos/test3");
Line 422  class Convert Line 450  class Convert
           j++;            j++;
           //print rows            //print rows
           Object obj = null;            Object obj = null;
           /* for(int k=0;k<row.size()-1;++k)                      /*
            {                       * for(int k=0;k <row.size()-1;++k) { obj = row.get(k);
                 obj = row.get(k);                       * //System.out.println("row "+obj+" "+k); if(obj!=null&&!(obj
                 //System.out.println("row "+obj+" "+k);                       * instanceof ArrayList))
              if(obj!=null&&!(obj instanceof ArrayList))                       * command.append("'"+convertUml(obj.toString())+"',"); else
              command.append("'"+convertUml(obj.toString())+"',");                        * if(obj!=null&& obj instanceof ArrayList)
              else if(obj!=null&&   obj instanceof ArrayList)                       * command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"',");
              command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"',");                        * else command.append("NULL,"); } obj = row.get(row.size() - 1); if
              else command.append("NULL,");                       * (obj != null && !(obj instanceof ArrayList))
            }                       * command.append("'"+convertUml(obj.toString())+"')"); else
            obj = row.get(row.size() - 1);                       * if(obj!=null&& obj instanceof ArrayList)
            if (obj != null && !(obj instanceof ArrayList))                       * command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"')");
            command.append("'"+convertUml(obj.toString())+"')");                        * //command.append(obj.toString()+")"); else command.append("NULL)");
             else  
             if(obj!=null&&   obj instanceof ArrayList)  
              command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"')");         //command.append(obj.toString()+")");  
              else command.append("NULL)");  
             */              */
           //command.append("'"+row.get(row.size()-1)+"')");             //command.append("'"+row.get(row.size()-1)+"')"); 
           //command.append(" )");            //command.append(" )");
           //  for(int k=0;k<row.size();++k)            //  for(int k=0;k<row.size();++k)
   
           // System.out.println();            // System.out.println();
           //   System.out.println(command+" "+j+" "+row.size()+" "+  ((Vector)result2[0].get(j)).size());                      //   System.out.println(command+" "+j+" "+row.size()+" "+
                       // ((Vector)result2[0].get(j)).size());
           // System.out.println(command);            // System.out.println(command);
           for (int k = 0; k < row.size(); ++k)            for (int k = 0; k < row.size(); ++k)
           {            {
Line 465  class Convert Line 489  class Convert
           //stm.executeUpdate(command.toString());            //stm.executeUpdate(command.toString());
           if (dialog != null)            if (dialog != null)
             dialog.progress.setValue((int) (((double) (j + 1) / (double) rowCount) * 100.0));              dialog.progress.setValue((int) (((double) (j + 1) / (double) rowCount) * 100.0));
           // System.out.println( (int)(((double)(j+1)/(double)result[0].size())*100.0)+" "+result[0].size()+" "+j);                      // System.out.println(
                       // (int)(((double)(j+1)/(double)result[0].size())*100.0)+"
                       // "+result[0].size()+" "+j);
           command = null;            command = null;
         } // to for loop              } // to for loop    
   
       }        }
     } catch (Exception e)          }
           catch (Exception e)
     {      {
       System.out.println("Error while connecting to database " + e);        System.out.println("Error while connecting to database " + e);
       if (dialog != null)        if (dialog != null)
Line 495  class Convert Line 522  class Convert
     }      }
   
   }    }
   /**  
    *   transfers the specified array of tables  to the destination database  
       and creates the table if it does not exist if it exists and mode is not append the table is dropped  
       
       /**
        * transfers the specified array of tables to the destination database and
        * creates the table if it does not exist if it exists and mode is not append
        * the table is dropped
        * 
    * @param source     * @param source
    * @param destination     * @param destination
    * @param names     * @param names
Line 552  class Convert Line 581  class Convert
       // Collections.sort(names);        // Collections.sort(names);
       int tbIndex = 1;        int tbIndex = 1;
   
       // System.out.println("Start at "+names.indexOf("archimedes_facsimiles"));              // System.out.println("Start at
               // "+names.indexOf("archimedes_facsimiles"));
       for (tbIndex = 0; tbIndex < names.size(); ++tbIndex)        for (tbIndex = 0; tbIndex < names.size(); ++tbIndex)
       {        {
         Vector[] result = null;          Vector[] result = null;
Line 573  class Convert Line 603  class Convert
   
           }            }
           //  if ( layout!= "")            //  if ( layout!= "")
           //     query += " layout " + bean.getQC() + layout + bean.getQC();                      //   query += " layout " + bean.getQC() + layout +
                       // bean.getQC();
           if (dialog != null)            if (dialog != null)
           {            {
             dialog.title.setText("Reading table data ...");              dialog.title.setText("Reading table data ...");
Line 586  class Convert Line 617  class Convert
           bean.makeQuery(query, 50);            bean.makeQuery(query, 50);
           idField = ids.get(tbIndex).toString();            idField = ids.get(tbIndex).toString();
   
         } catch (Exception e)                  }
                   catch (Exception e)
         {          {
           System.out.println(e);            System.out.println(e);
           continue;            continue;
Line 605  class Convert Line 637  class Convert
         stm = beanDest.getConnection().createStatement();          stm = beanDest.getConnection().createStatement();
         // System.exit(0);          // System.exit(0);
   
         // determine destTableName from createStatement or from source table name                  // determine destTableName from createStatement or from source
                   // table name
         ConversionProperties prop = getFieldNamesAndDestTableName(creates.get(tbIndex).toString(), query, names.get(tbIndex).toString());          ConversionProperties prop = getFieldNamesAndDestTableName(creates.get(tbIndex).toString(), query, names.get(tbIndex).toString());
         destTableName = prop.destTableName;          destTableName = prop.destTableName;
         fieldNames = prop.fieldNames;          fieldNames = prop.fieldNames;
Line 620  class Convert Line 653  class Convert
   
           }            }
           /*            /*
           if(destTableName.equals(""))                       * if(destTableName.equals("")) if (tables.indexOf(names.get(tbIndex)) >=
           if (tables.indexOf(names.get(tbIndex)) >= 0)                       * 0) { stm.executeUpdate("drop table " + beanDest.getQC() +
           {                       * names.get(tbIndex) + beanDest.getQC()); tables.remove((String)
             stm.executeUpdate("drop table " + beanDest.getQC() + names.get(tbIndex) + beanDest.getQC());                       * names.get(tbIndex)); System.out.println("dropped table" +
             tables.remove((String) names.get(tbIndex));                       * names.get(tbIndex)); } else if
             System.out.println("dropped table" + names.get(tbIndex));                       * (tables.indexOf(convertText(names.get(tbIndex).toString())) >= 0) {
           } else if (tables.indexOf(convertText(names.get(tbIndex).toString())) >= 0)                       * stm.executeUpdate("drop table " + beanDest.getQC() +
           {                       * convertText((String) names.get(tbIndex)) + beanDest.getQC());
             stm.executeUpdate("drop table " + beanDest.getQC() + convertText((String) names.get(tbIndex)) + beanDest.getQC());                       * tables.remove(convertText((String) names.get(tbIndex)));
             tables.remove(convertText((String) names.get(tbIndex)));                       * System.out.println("dropped table" + names.get(tbIndex)); }
             System.out.println("dropped table" + names.get(tbIndex));  
           }  
           */            */
           if ((tables.indexOf(destTableName) < 0)) //&& tables.indexOf(names.get(tbIndex)) < 0 && tables.indexOf(convertText(names.get(tbIndex).toString())) < 0   )                      if ((tables.indexOf(destTableName) < 0)) //&&
                       // tables.indexOf(names.get(tbIndex))
                       // < 0 &&
                       // tables.indexOf(convertText(names.get(tbIndex).toString()))
                       // < 0 )
           {            {
   
             if (creates.get(tbIndex).equals("") || creates.get(tbIndex).toString().toLowerCase().indexOf("create") < 0)              if (creates.get(tbIndex).equals("") || creates.get(tbIndex).toString().toLowerCase().indexOf("create") < 0)
Line 651  class Convert Line 686  class Convert
               for (int i = 0; i < columnNames.size() - 1; ++i)                for (int i = 0; i < columnNames.size() - 1; ++i)
               {                {
                 type = bean.metaData.getColumnTypeName(i + 1);                  type = bean.metaData.getColumnTypeName(i + 1);
                 //   System.out.println(i+" "+result[1].get(i)+" "+type);                                  //   System.out.println(i+" "+result[1].get(i)+"
                                   // "+type);
                 type = (type.equals("NUMBER")) ? "INT4" : type;                  type = (type.equals("NUMBER")) ? "INT4" : type;
                 type = (type.equals("CONTAINER")) ? "TEXT" : type;                  type = (type.equals("CONTAINER")) ? "TEXT" : type;
   
Line 666  class Convert Line 702  class Convert
               // System.out.println(command);                // System.out.println(command);
               //  System.exit(0);                //  System.exit(0);
               //command.append(DBBean.getQC());                   //command.append(DBBean.getQC());   
             } else                          }
                           else
               command = new StringBuffer().append(creates.get(tbIndex).toString().toLowerCase());                command = new StringBuffer().append(creates.get(tbIndex).toString().toLowerCase());
             stm.executeUpdate(command.toString());              stm.executeUpdate(command.toString());
   
Line 682  class Convert Line 719  class Convert
   
         command.append("INSERT  INTO ");          command.append("INSERT  INTO ");
         command.append(beanDest.getQC());          command.append(beanDest.getQC());
         command.append(destTableName); //convertText((String) names.get(tbIndex)));                  command.append(destTableName); //convertText((String)
                   // names.get(tbIndex)));
         command.append(beanDest.getQC());          command.append(beanDest.getQC());
         command.append(" (");          command.append(" (");
         for (int i = 0; i < fieldNames.length; i++)          for (int i = 0; i < fieldNames.length; i++)
Line 706  class Convert Line 744  class Convert
         int endIndex = -1;          int endIndex = -1;
         String tempQuery = query;          String tempQuery = query;
         String tempID = bean.getQC() + idField + bean.getQC();          String tempID = bean.getQC() + idField + bean.getQC();
         // if id_field not do incremental conversion else do it all at once                  // if id_field not do incremental conversion else do it all at
                   // once
         if (!idField.equals(""))          if (!idField.equals(""))
         {          {
           long startTime = System.currentTimeMillis();            long startTime = System.currentTimeMillis();
Line 777  class Convert Line 816  class Convert
           }            }
           long endTime = System.currentTimeMillis();            long endTime = System.currentTimeMillis();
           System.out.println("Time for incremental convert elapsed " + (endTime - startTime));            System.out.println("Time for incremental convert elapsed " + (endTime - startTime));
         } else                  }
                   else
         {          {
           // read and write all in one big chunk            // read and write all in one big chunk
           long startTime = System.currentTimeMillis();            long startTime = System.currentTimeMillis();
Line 789  class Convert Line 829  class Convert
   
         }          }
       }        }
     } catch (Exception e)          }
           catch (Exception e)
     {      {
       System.out.println("Error while connecting to database " + e);        System.out.println("Error while connecting to database " + e);
       if (dialog != null)        if (dialog != null)
Line 802  class Convert Line 843  class Convert
         stream.print(command + "\n\n");          stream.print(command + "\n\n");
         e.printStackTrace(stream);          e.printStackTrace(stream);
         FM2SQL.showErrorDialog(b.toString(), "Error occured !");          FM2SQL.showErrorDialog(b.toString(), "Error occured !");
       } else              }
               else
       {        {
         e.printStackTrace();          e.printStackTrace();
   
Line 815  class Convert Line 857  class Convert
       dialog.setVisible(false);        dialog.setVisible(false);
     }      }
   }    }
   
   /**    /**
    * Writes data to the destination table      * Writes data to the destination table 
    * @param dialog  progress dialog       * 
        * @param dialog
        *          progress dialog
    * @param command      * @param command 
    * @param j       data index for progress bar       * @param j
    * @param pstm    prepared statement       *          data index for progress bar
    * @param rowCount number of datasets       * @param pstm
        *          prepared statement
        * @param rowCount
        *          number of datasets
    * @return   command     * @return   command
    * @throws Exception     * @throws Exception
    * @throws SQLException     * @throws SQLException
Line 833  class Convert Line 881  class Convert
     {      {
       j++;        j++;
       // row = (Vector) result[0].get(j);        // row = (Vector) result[0].get(j);
       /*   command = new StringBuffer();              /*
                      * command = new StringBuffer();
            command.append("INSERT  INTO ");               * 
            command.append(beanDest.getQC());               * command.append("INSERT INTO "); command.append(beanDest.getQC());
            command.append(convertText((String) names.get(tbIndex)));               * command.append(convertText((String) names.get(tbIndex)));
            command.append(beanDest.getQC());               * command.append(beanDest.getQC()); command.append(" values ( ");
            command.append(" values ( ");  
         */          */
       //print rows        //print rows
       Object obj = null;        Object obj = null;
       /* for(int k=0;k<row.size()-1;++k)              /*
        {               * for(int k=0;k <row.size()-1;++k) { obj = row.get(k);
           obj = row.get(k);               * //System.out.println("row "+obj+" "+k); if(obj!=null&&!(obj instanceof
           //System.out.println("row "+obj+" "+k);               * ArrayList)) command.append("'"+convertUml(obj.toString())+"',"); else
          if(obj!=null&&!(obj instanceof ArrayList))               * if(obj!=null&& obj instanceof ArrayList)
          command.append("'"+convertUml(obj.toString())+"',");                * command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"',");
          else if(obj!=null&&   obj instanceof ArrayList)               * else command.append("NULL,"); } obj = row.get(row.size() - 1); if (obj !=
          command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"',");                * null && !(obj instanceof ArrayList))
          else command.append("NULL,");               * command.append("'"+convertUml(obj.toString())+"')"); else
        }               * if(obj!=null&& obj instanceof ArrayList)
        obj = row.get(row.size() - 1);               * command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"')");
        if (obj != null && !(obj instanceof ArrayList))               * //command.append(obj.toString()+")"); else command.append("NULL)");
        command.append("'"+convertUml(obj.toString())+"')");   
         else  
         if(obj!=null&&   obj instanceof ArrayList)  
          command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"')");         //command.append(obj.toString()+")");  
          else command.append("NULL)");  
         */          */
       //command.append("'"+row.get(row.size()-1)+"')");         //command.append("'"+row.get(row.size()-1)+"')"); 
       //command.append(" )");        //command.append(" )");
       //  for(int k=0;k<row.size();++k)        //  for(int k=0;k<row.size();++k)
   
       // System.out.println();        // System.out.println();
       //   System.out.println(command+" "+j+" "+row.size()+" "+  ((Vector)result2[0].get(j)).size());              //   System.out.println(command+" "+j+" "+row.size()+" "+
               // ((Vector)result2[0].get(j)).size());
       // System.out.println(command);        // System.out.println(command);
       for (int k = 0; k < row.size(); ++k)        for (int k = 0; k < row.size(); ++k)
       {        {
Line 879  class Convert Line 921  class Convert
         if (obj instanceof Double)          if (obj instanceof Double)
         {          {
           pstm.setDouble(k + 1, ((Double) obj).doubleValue());            pstm.setDouble(k + 1, ((Double) obj).doubleValue());
         } else if (!str.equals("NULL"))                  }
                   else if (!str.equals("NULL"))
           pstm.setString(k + 1, str);            pstm.setString(k + 1, str);
         else          else
           pstm.setNull(k + 1, Types.NULL);            pstm.setNull(k + 1, Types.NULL);
Line 888  class Convert Line 931  class Convert
       //stm.executeUpdate(command.toString());        //stm.executeUpdate(command.toString());
       if (dialog != null)        if (dialog != null)
         dialog.progress.setValue((int) (((double) (j + 1) / (double) rowCount) * 100.0));          dialog.progress.setValue((int) (((double) (j + 1) / (double) rowCount) * 100.0));
       // System.out.println( (int)(((double)(j+1)/(double)result[0].size())*100.0)+" "+result[0].size()+" "+j);              // System.out.println(
               // (int)(((double)(j+1)/(double)result[0].size())*100.0)+"
               // "+result[0].size()+" "+j);
       command = null;        command = null;
     } // to while loop          } // to while loop    
     return command;      return command;
Line 896  class Convert Line 941  class Convert
   
   /**    /**
    *  removes special characters from the input string as well as .fp5      *  removes special characters from the input string as well as .fp5 
    * @param newName String to change       * 
        * @param newName
        *          String to change
    * @return     * @return
    */     */
   public static String convertText(String newName)    public static String convertText(String newName)
Line 917  class Convert Line 964  class Convert
       {        {
         alterMe.setCharAt(j, '_');          alterMe.setCharAt(j, '_');
         //    if(j<length-1) j=j+1;          //    if(j<length-1) j=j+1;
       } else if (alterMe.charAt(j) == '_')              }
               else if (alterMe.charAt(j) == '_')
       {        {
   
         if (alterMe.charAt(j + 1) == '_')          if (alterMe.charAt(j + 1) == '_')
           alterMe.deleteCharAt(j);            alterMe.deleteCharAt(j);
         length = length - 1;          length = length - 1;
         //  if(j<length-1) j=j+1;          //  if(j<length-1) j=j+1;
       } else if (alterMe.charAt(j) == 'ä')              }
               else if (alterMe.charAt(j) == 'ä')
       {        {
         alterMe.setCharAt(j, 'a');          alterMe.setCharAt(j, 'a');
         alterMe.insert(j + 1, "e");          alterMe.insert(j + 1, "e");
         length = length + 1;          length = length + 1;
         if (j < length - 1)          if (j < length - 1)
           j = j + 1;            j = j + 1;
       } else if (alterMe.charAt(j) == 'ö')              }
               else if (alterMe.charAt(j) == 'ö')
       {        {
         alterMe.setCharAt(j, 'o');          alterMe.setCharAt(j, 'o');
         alterMe.insert(j + 1, "e");          alterMe.insert(j + 1, "e");
         length = length + 1;          length = length + 1;
         if (j < length - 1)          if (j < length - 1)
           j = j + 1;            j = j + 1;
       } else if (alterMe.charAt(j) == 'ü')              }
               else if (alterMe.charAt(j) == 'ü')
       {        {
         alterMe.setCharAt(j, 'u');          alterMe.setCharAt(j, 'u');
         alterMe.insert(j + 1, "e");          alterMe.insert(j + 1, "e");
         length = length + 1;          length = length + 1;
         if (j < length - 1)          if (j < length - 1)
           j = j + 1;            j = j + 1;
       } else if (alterMe.charAt(j) == 'ß')              }
               else if (alterMe.charAt(j) == 'ß')
       {        {
         alterMe.setCharAt(j, 's');          alterMe.setCharAt(j, 's');
         alterMe.insert(j + 1, "s");          alterMe.insert(j + 1, "s");
         length = length + 1;          length = length + 1;
         if (j < length - 1)          if (j < length - 1)
           j = j + 1;            j = j + 1;
       } else if (alterMe.charAt(j) == ':')              }
               else if (alterMe.charAt(j) == ':')
       {        {
         if (j < length - 1)          if (j < length - 1)
         {          {
Line 967  class Convert Line 1020  class Convert
           if (j < length - 1)            if (j < length - 1)
             j = j + 1;              j = j + 1;
         }          }
       } else if (alterMe.charAt(j) == '-')              }
               else if (alterMe.charAt(j) == '-')
       {        {
         alterMe.setCharAt(j, '_');          alterMe.setCharAt(j, '_');
   
       } else if (alterMe.charAt(j) == '?')              }
               else if (alterMe.charAt(j) == '?')
       {        {
         // changed ? to _ because of update statement          // changed ? to _ because of update statement
         alterMe.setCharAt(j, '_');          alterMe.setCharAt(j, '_');
         // length = length + 1;          // length = length + 1;
         // j=j+1;          // j=j+1;
         System.out.println(alterMe);          System.out.println(alterMe);
       } else if (alterMe.charAt(j) == '.')              }
               else if (alterMe.charAt(j) == '.')
       {        {
         if (j == length - 1)          if (j == length - 1)
         {          {
           alterMe.delete(j, j);            alterMe.delete(j, j);
           length--;            length--;
         } else                  }
                   else
           alterMe.setCharAt(j, '_');            alterMe.setCharAt(j, '_');
       }        }
   
Line 992  class Convert Line 1049  class Convert
     }      }
     return alterMe.toString();      return alterMe.toString();
   }    }
   
   /**    /**
    * Converts > and < in an entity (&gt; or &lt;)     * Converts > and < in an entity (&gt; or &lt;)
        * 
    * @param newName     * @param newName
    * @return     * @return
    */     */
Line 1014  class Convert Line 1073  class Convert
         if (j < length - 1)          if (j < length - 1)
           j = j + 1;            j = j + 1;
   
       } else if (alterMe.charAt(j) == '<')              }
               else if (alterMe.charAt(j) == '<')
       {        {
         alterMe.setCharAt(j, '&');          alterMe.setCharAt(j, '&');
         alterMe.insert(j + 1, "lt;");          alterMe.insert(j + 1, "lt;");
Line 1027  class Convert Line 1087  class Convert
     }      }
     return alterMe.toString();      return alterMe.toString();
   }    }
   
   /**    /**
    * Masks the single quote character '-->\'     * Masks the single quote character '-->\'
        * 
    * @param newName     * @param newName
    * @return     * @return
    */     */
Line 1049  class Convert Line 1111  class Convert
         if (j < length - 1)          if (j < length - 1)
           j = j + 1;            j = j + 1;
       }        }
       /*   else              /*
          if (alterMe.charAt(j) == '"')               * else if (alterMe.charAt(j) == '"') { alterMe.setCharAt(j, '\\');
          {               * alterMe.insert(j + 1, "\""); length = length + 1; if(j <length-1)
          alterMe.setCharAt(j, '\\');               * j=j+1; } else if (alterMe.charAt(j) == '>') { alterMe.setCharAt(j,
          alterMe.insert(j + 1, "\"");               * '\\'); alterMe.insert(j + 1, ">"); length = length + 1; if(j <length-1)
          length = length + 1;               * j=j+1; } else if (alterMe.charAt(j) == ' <') { alterMe.setCharAt(j,
          if(j<length-1) j=j+1;               * '\\'); alterMe.insert(j + 1, " <"); length = length + 1; if(j
          }               * <length-1) j=j+1; } else if (alterMe.charAt(j) == '?') {
         else               * alterMe.setCharAt(j, '\\'); alterMe.insert(j + 1, "?"); length = length +
         if (alterMe.charAt(j) == '>')               * 1; if(j <length-1) j=j+1; } else if (alterMe.charAt(j) == '&') {
          {               * alterMe.setCharAt(j, '\\'); alterMe.insert(j + 1, "&"); length = length +
          alterMe.setCharAt(j, '\\');               * 1; if(j <length-1) j=j+1; } else if (alterMe.charAt(j) == '=') {
          alterMe.insert(j + 1, ">");               * alterMe.setCharAt(j, '\\'); alterMe.insert(j + 1, "="); length = length +
          length = length + 1;               * 1; if(j <length-1) j=j+1; } else if (alterMe.charAt(j) == ',') {
          if(j<length-1) j=j+1;               * alterMe.setCharAt(j, '\\'); alterMe.insert(j + 1, ","); length = length +
          }               * 1; if(j <length-1) j=j+1; } else if (alterMe.charAt(j) == '.') {
         else               * alterMe.setCharAt(j, '\\'); alterMe.insert(j + 1, "."); length = length +
         if (alterMe.charAt(j) == '<')               * 1; if(j <length-1) j=j+1; } else if (alterMe.charAt(j) == '[') {
          {               * alterMe.setCharAt(j, '\\'); alterMe.insert(j + 1, "."); length = length +
          alterMe.setCharAt(j, '\\');               * 1; if(j <length-1) j=j+1; } else if (alterMe.charAt(j) == ']') {
          alterMe.insert(j + 1, "<");               * alterMe.setCharAt(j, '\\'); alterMe.insert(j + 1, "."); length = length +
          length = length + 1;               * 1; if(j <length-1) j=j+1; } else if (alterMe.charAt(j) == '%') {
          if(j<length-1) j=j+1;               * alterMe.setCharAt(j, '\\'); alterMe.insert(j + 1, "%"); length = length +
          }               * 1; if(j <length-1) j=j+1; }
        else               */
        if (alterMe.charAt(j) == '?')  
          {  
          alterMe.setCharAt(j, '\\');  
          alterMe.insert(j + 1, "?");  
          length = length + 1;  
          if(j<length-1) j=j+1;  
          }  
        else  
        if (alterMe.charAt(j) == '&')  
          {  
          alterMe.setCharAt(j, '\\');  
          alterMe.insert(j + 1, "&");  
          length = length + 1;  
          if(j<length-1) j=j+1;  
          }  
        else  
        if (alterMe.charAt(j) == '=')  
          {  
          alterMe.setCharAt(j, '\\');  
          alterMe.insert(j + 1, "=");  
          length = length + 1;  
          if(j<length-1) j=j+1;  
          }  
        else  
        if (alterMe.charAt(j) == ',')  
          {  
          alterMe.setCharAt(j, '\\');  
          alterMe.insert(j + 1, ",");  
          length = length + 1;  
          if(j<length-1) j=j+1;  
          }  
        else  
        if (alterMe.charAt(j) == '.')  
          {  
          alterMe.setCharAt(j, '\\');  
          alterMe.insert(j + 1, ".");  
          length = length + 1;  
          if(j<length-1) j=j+1;  
          }  
        else  
        if (alterMe.charAt(j) == '[')  
          {  
          alterMe.setCharAt(j, '\\');  
          alterMe.insert(j + 1, ".");  
          length = length + 1;  
          if(j<length-1) j=j+1;  
          }  
       else  
        if (alterMe.charAt(j) == ']')  
          {  
          alterMe.setCharAt(j, '\\');  
          alterMe.insert(j + 1, ".");  
          length = length + 1;  
          if(j<length-1) j=j+1;  
          }  
       else  
        if (alterMe.charAt(j) == '%')  
          {  
          alterMe.setCharAt(j, '\\');  
          alterMe.insert(j + 1, "%");  
          length = length + 1;  
          if(j<length-1) j=j+1;  
          }*/  
       ++j;        ++j;
     }      }
     return alterMe.toString();      return alterMe.toString();
   }    }
   
   /**    /**
    * parses the input xml file for batch conversion       * parses the input xml file for batch conversion called from readXMLFile *
    * called from readXMLFile       * 
    * * @param sb       * @param sb
    */     */
   public static void parseXMLConfig(StringBuffer sb)    public static void parseXMLConfig(StringBuffer sb)
   {    {
Line 1166  class Convert Line 1166  class Convert
   
     try      try
     {      {
       Node tempNode = root.find("convert/source", new int[] { 1, 1 });              Node tempNode = root.find("convert/source", new int[]
               {1, 1});
       if (tempNode == null)        if (tempNode == null)
         throw new Error("parse error source tag missing");          throw new Error("parse error source tag missing");
       System.out.println(tempNode.name);        System.out.println(tempNode.name);
Line 1182  class Convert Line 1183  class Convert
         ids = new Vector();          ids = new Vector();
         indexListVec = new Vector();          indexListVec = new Vector();
         // parse dataBase          // parse dataBase
         Node node = root.find("convert/source/database/url", new int[] { 1, 1, i, 1 });                  Node node = root.find("convert/source/database/url", new int[]
         Node node1 = root.find("convert/source/database/user", new int[] { 1, 1, i, 1, 1 });                  {1, 1, i, 1});
         Node node2 = root.find("convert/source/database/password", new int[] { 1, 1, i, 1, 1 });                  Node node1 = root.find("convert/source/database/user", new int[]
         Node node3 = root.find("convert/source/database", new int[] { 1, 1, i });                  {1, 1, i, 1, 1});
         Node nodeMode = root.find("convert/source/database/mode", new int[] { 1, 1, i, 1, 1 });                  Node node2 = root.find("convert/source/database/password", new int[]
         Node delimiterNode = root.find("convert/source/database/delimiter", new int[] { 1, 1, i, 1, 1 });                  {1, 1, i, 1, 1});
         Node useNormanToUnicodeMapper = root.find("convert/source/database/usenormantounicodemapper", new int[] { 1, 1, i, 1, 1 });                  Node node3 = root.find("convert/source/database", new int[]
                   {1, 1, i});
                   Node nodeMode = root.find("convert/source/database/mode", new int[]
                   {1, 1, i, 1, 1});
                   Node delimiterNode = root.find("convert/source/database/delimiter", new int[]
                   {1, 1, i, 1, 1});
                   Node useNormanToUnicodeMapper = root.find("convert/source/database/usenormantounicodemapper", new int[]
                   {1, 1, i, 1, 1});
   
         if (node3 == null)          if (node3 == null)
           throw new Error("parse error database tag missing");            throw new Error("parse error database tag missing");
Line 1239  class Convert Line 1247  class Convert
   
         for (int j = 1; j <= length2; ++j)          for (int j = 1; j <= length2; ++j)
         {          {
           Node node4 = root.find("convert/source/database/table", new int[] { 1, 1, i, j });                      Node node4 = root.find("convert/source/database/table", new int[]
           Node node5 = root.find("convert/source/database/table/select", new int[] { 1, 1, i, j, 1 });                      {1, 1, i, j});
           Node node6 = root.find("convert/source/database/table/create", new int[] { 1, 1, i, j, 1 });                      Node node5 = root.find("convert/source/database/table/select", new int[]
                       {1, 1, i, j, 1});
                       Node node6 = root.find("convert/source/database/table/create", new int[]
                       {1, 1, i, j, 1});
           if (node4 != null)            if (node4 != null)
             System.out.println(node4.name + " " + node4.attributes.get("layout").equals(""));              System.out.println(node4.name + " " + node4.attributes.get("layout").equals(""));
           if (node5 != null)            if (node5 != null)
Line 1250  class Convert Line 1261  class Convert
             System.out.println(node6.name + " " + node6.getCharacters());              System.out.println(node6.name + " " + node6.getCharacters());
           if (node4 == null)            if (node4 == null)
             throw new Error("parse error table tag missing");              throw new Error("parse error table tag missing");
           // if(node5==null) throw new Error("parse error select tag missing");                      // if(node5==null) throw new Error("parse error select tag
           // if(node6==null) throw new Error("parse error create tag missing");                      // missing");
                       // if(node6==null) throw new Error("parse error create tag
                       // missing");
           String name = (String) node4.attributes.get("name");            String name = (String) node4.attributes.get("name");
           String layout = (String) node4.attributes.get("layout");            String layout = (String) node4.attributes.get("layout");
           String id = (String) node4.attributes.get("id");            String id = (String) node4.attributes.get("id");
Line 1291  class Convert Line 1304  class Convert
       }        }
       DBBean database = new DBBean();        DBBean database = new DBBean();
       // parse dataBase        // parse dataBase
       Node node = root.find("convert/destination/database/url", new int[] { 1, 1, 1, 1 });              Node node = root.find("convert/destination/database/url", new int[]
       Node node1 = root.find("convert/destination/database/user", new int[] { 1, 1, 1, 1, 1 });              {1, 1, 1, 1});
       Node node2 = root.find("convert/destination/database/password", new int[] { 1, 1, 1, 1, 1 });              Node node1 = root.find("convert/destination/database/user", new int[]
               {1, 1, 1, 1, 1});
               Node node2 = root.find("convert/destination/database/password", new int[]
               {1, 1, 1, 1, 1});
       String url = node.getCharacters();        String url = node.getCharacters();
       String user = node1.getCharacters();        String user = node1.getCharacters();
       String password = node2.getCharacters();        String password = node2.getCharacters();
Line 1307  class Convert Line 1323  class Convert
         if (mode == DataBase.CONVERT_MODE || mode == DataBase.APPEND_MODE)          if (mode == DataBase.CONVERT_MODE || mode == DataBase.APPEND_MODE)
           convertBatch(db.bean, database, db.tables, db.layouts, db.selects, db.creates, db.ids, mode, db.delimiter);            convertBatch(db.bean, database, db.tables, db.layouts, db.selects, db.creates, db.ids, mode, db.delimiter);
         else if (mode == DataBase.UPDATE_MODE)          else if (mode == DataBase.UPDATE_MODE)
                   {
                       Convert.user = db.bean.user;
                       Convert.passwd = db.bean.passwd;
                       userDest = database.user;
                       passwdDest = database.passwd;
   
           update(db.bean.url, database.url, db.tables, db.layouts, db.selects, db.creates, db.ids, mode);            update(db.bean.url, database.url, db.tables, db.layouts, db.selects, db.creates, db.ids, mode);
                   }
         else if (mode == DataBase.SYNCHRONIZE_MODE)          else if (mode == DataBase.SYNCHRONIZE_MODE)
         {          {
           Convert.user = db.bean.user;            Convert.user = db.bean.user;
Line 1320  class Convert Line 1343  class Convert
       }        }
       // printContents(node3);        // printContents(node3);
       //   FM2SQL.fmInstance=new FM2SQL();        //   FM2SQL.fmInstance=new FM2SQL();
     } catch (Exception e)          }
           catch (Exception e)
     {      {
   
       e.printStackTrace();        e.printStackTrace();
Line 1331  class Convert Line 1355  class Convert
       beanDest.closeAllConnections();        beanDest.closeAllConnections();
     }      }
   }    }
   
   public static Vector getXMLConfig(String xmlFile)    public static Vector getXMLConfig(String xmlFile)
   {    {
     StringBuffer sb = null;      StringBuffer sb = null;
Line 1349  class Convert Line 1374  class Convert
         // System.out.print((char)c);          // System.out.print((char)c);
       }        }
   
     } catch (Exception e)          }
           catch (Exception e)
     {      {
       e.printStackTrace();        e.printStackTrace();
     }      }
Line 1370  class Convert Line 1396  class Convert
     int mode = -1;      int mode = -1;
     try      try
     {      {
       Node tempNode = root.find("convert/source", new int[] { 1, 1 });              Node tempNode = root.find("convert/source", new int[]
               {1, 1});
       if (tempNode == null)        if (tempNode == null)
         throw new Error("parse error source tag missing");          throw new Error("parse error source tag missing");
       System.out.println(tempNode.name);        System.out.println(tempNode.name);
Line 1385  class Convert Line 1412  class Convert
         creates = new Vector();          creates = new Vector();
         ids = new Vector();          ids = new Vector();
         // parse dataBase          // parse dataBase
         Node node = root.find("convert/source/database/url", new int[] { 1, 1, i, 1 });                  Node node = root.find("convert/source/database/url", new int[]
         Node node1 = root.find("convert/source/database/user", new int[] { 1, 1, i, 1, 1 });                  {1, 1, i, 1});
         Node node2 = root.find("convert/source/database/password", new int[] { 1, 1, i, 1, 1 });                  Node node1 = root.find("convert/source/database/user", new int[]
         Node node3 = root.find("convert/source/database", new int[] { 1, 1, i });                  {1, 1, i, 1, 1});
         Node nodeMode = root.find("convert/source/database/mode", new int[] { 1, 1, i, 1, 1 });                  Node node2 = root.find("convert/source/database/password", new int[]
         Node delimiterNode = root.find("convert/source/database/delimiter", new int[] { 1, 1, i, 1, 1 });                  {1, 1, i, 1, 1});
         Node useNormanToUnicodeMapper = root.find("convert/source/database/usenormantounicodemapper", new int[] { 1, 1, i, 1, 1 });                  Node node3 = root.find("convert/source/database", new int[]
                   {1, 1, i});
                   Node nodeMode = root.find("convert/source/database/mode", new int[]
                   {1, 1, i, 1, 1});
                   Node delimiterNode = root.find("convert/source/database/delimiter", new int[]
                   {1, 1, i, 1, 1});
                   Node useNormanToUnicodeMapper = root.find("convert/source/database/usenormantounicodemapper", new int[]
                   {1, 1, i, 1, 1});
   
         if (delimiterNode != null)          if (delimiterNode != null)
           delimiter = delimiterNode.getCharacters();            delimiter = delimiterNode.getCharacters();
Line 1440  class Convert Line 1474  class Convert
   
         for (int j = 1; j <= length2; ++j)          for (int j = 1; j <= length2; ++j)
         {          {
           Node node4 = root.find("convert/source/database/table", new int[] { 1, 1, i, j });                      Node node4 = root.find("convert/source/database/table", new int[]
           Node node5 = root.find("convert/source/database/table/select", new int[] { 1, 1, i, j, 1 });                      {1, 1, i, j});
           Node node6 = root.find("convert/source/database/table/create", new int[] { 1, 1, i, j, 1 });                      Node node5 = root.find("convert/source/database/table/select", new int[]
                       {1, 1, i, j, 1});
                       Node node6 = root.find("convert/source/database/table/create", new int[]
                       {1, 1, i, j, 1});
           if (node4 != null)            if (node4 != null)
             System.out.println(node4.name + " " + node4.attributes.get("layout").equals(""));              System.out.println(node4.name + " " + node4.attributes.get("layout").equals(""));
           if (node5 != null)            if (node5 != null)
Line 1451  class Convert Line 1488  class Convert
             System.out.println(node6.name + " " + node6.getCharacters());              System.out.println(node6.name + " " + node6.getCharacters());
           if (node4 == null)            if (node4 == null)
             throw new Error("parse error table tag missing");              throw new Error("parse error table tag missing");
           // if(node5==null) throw new Error("parse error select tag missing");                      // if(node5==null) throw new Error("parse error select tag
           // if(node6==null) throw new Error("parse error create tag missing");                      // missing");
                       // if(node6==null) throw new Error("parse error create tag
                       // missing");
           String name = (String) node4.attributes.get("name");            String name = (String) node4.attributes.get("name");
           String layout = (String) node4.attributes.get("layout");            String layout = (String) node4.attributes.get("layout");
           String id = (String) node4.attributes.get("id");            String id = (String) node4.attributes.get("id");
Line 1486  class Convert Line 1525  class Convert
       }        }
       DBBean database = new DBBean();        DBBean database = new DBBean();
       // parse dataBase        // parse dataBase
       Node node = root.find("convert/destination/database/url", new int[] { 1, 1, 1, 1 });              Node node = root.find("convert/destination/database/url", new int[]
       Node node1 = root.find("convert/destination/database/user", new int[] { 1, 1, 1, 1, 1 });              {1, 1, 1, 1});
       Node node2 = root.find("convert/destination/database/password", new int[] { 1, 1, 1, 1, 1 });              Node node1 = root.find("convert/destination/database/user", new int[]
               {1, 1, 1, 1, 1});
               Node node2 = root.find("convert/destination/database/password", new int[]
               {1, 1, 1, 1, 1});
       String url = node.getCharacters();        String url = node.getCharacters();
       String user = node1.getCharacters();        String user = node1.getCharacters();
       String password = node2.getCharacters();        String password = node2.getCharacters();
Line 1497  class Convert Line 1539  class Convert
       database.setUserAndPasswd(user.trim(), password.trim());        database.setUserAndPasswd(user.trim(), password.trim());
       databases.add(new DataBase(database, null, null, null, null, null, 0));        databases.add(new DataBase(database, null, null, null, null, null, 0));
       //databases.add(database);        //databases.add(database);
       /*    for (Iterator iter = databases.iterator(); iter.hasNext();)              /*
          {               * for (Iterator iter = databases.iterator(); iter.hasNext();) { DataBase
            DataBase db = (DataBase) iter.next();               * db = (DataBase) iter.next();
            convertBatch(db.bean,database,db.tables,db.layouts,db.selects,db.creates);               * convertBatch(db.bean,database,db.tables,db.layouts,db.selects,db.creates); }
                          */
          }*/  
       // printContents(node3);        // printContents(node3);
       //   FM2SQL.fmInstance=new FM2SQL();        //   FM2SQL.fmInstance=new FM2SQL();
     } catch (Exception e)          }
           catch (Exception e)
     {      {
       // TODO Auto-generated catch block        // TODO Auto-generated catch block
       e.printStackTrace();        e.printStackTrace();
Line 1527  class Convert Line 1569  class Convert
           length++;            length++;
       }        }
   
       // System.out.println(((Node)tempNode.contents.v.elementAt(i)).attributes+" "+i);              // System.out.println(((Node)tempNode.contents.v.elementAt(i)).attributes+"
               // "+i);
     }      }
     return length;      return length;
   }    }
   
   private static void printContents(Node root)    private static void printContents(Node root)
   {    {
   
Line 1547  class Convert Line 1591  class Convert
       // System.out.println(n.type);        // System.out.println(n.type);
     }      }
   }    }
   
   /**    /**
    * reads the specified xml file     * reads the specified xml file
        * 
    * @param xmlFile     * @param xmlFile
    */     */
   public static void readXMLFile(String xmlFile)    public static void readXMLFile(String xmlFile)
Line 1561  class Convert Line 1607  class Convert
       {        {
         URL url = new URL(xmlFile);          URL url = new URL(xmlFile);
         stream = url.openStream();          stream = url.openStream();
       } else              }
               else
         // read XML Metadata from a file          // read XML Metadata from a file
         stream = new FileInputStream(xmlFile);          stream = new FileInputStream(xmlFile);
       InputStreamReader isr = new InputStreamReader(stream, "UTF-8");        InputStreamReader isr = new InputStreamReader(stream, "UTF-8");
Line 1575  class Convert Line 1622  class Convert
         // System.out.print((char)c);          // System.out.print((char)c);
       }        }
       parseXMLConfig(sb);        parseXMLConfig(sb);
     } catch (Exception e)          }
           catch (Exception e)
     {      {
       e.printStackTrace();        e.printStackTrace();
     }      }
   }    }
   
   /**    /**
      * Helper class for Conversion etc       * Helper class for Conversion etc Holds the some data
      * Holds the some data       * 
      * @author rogo       * @author rogo
      *       *
      */       */
Line 1590  class Convert Line 1639  class Convert
   public static class ConversionProperties    public static class ConversionProperties
   {    {
     String destTableName;      String destTableName;
   
     String[] fieldNames;      String[] fieldNames;
   
     public ConversionProperties()      public ConversionProperties()
     {      {
     }      }
   
     public ConversionProperties(String destTableName, String[] fieldNames)      public ConversionProperties(String destTableName, String[] fieldNames)
     {      {
       this.destTableName = destTableName;        this.destTableName = destTableName;
Line 1602  class Convert Line 1654  class Convert
     }      }
   
   }    }
   
   /**    /**
    * Helper class for XML-File parsing       * Helper class for XML-File parsing Holds the parsed data
    * Holds the parsed data       * 
    * @author rogo     * @author rogo
    *     *
    */     */
   public static class DataBase    public static class DataBase
   {    {
     DBBean bean;      DBBean bean;
   
     Vector creates;      Vector creates;
   
     Vector selects;      Vector selects;
   
     Vector layouts;      Vector layouts;
   
     Vector tables;      Vector tables;
   
     Vector ids;      Vector ids;
   
     String delimiter = "//";      String delimiter = "//";
   
     /**      /**
      * maps table name to index fields       * maps table name to index fields
      */       */
     Hashtable htIndex = new Hashtable();      Hashtable htIndex = new Hashtable();
   
     boolean useNormanToUnicodeMapper = false;      boolean useNormanToUnicodeMapper = false;
   
     final static int CONVERT_MODE = 1;      final static int CONVERT_MODE = 1;
   
     final static int APPEND_MODE = 2;      final static int APPEND_MODE = 2;
   
     final static int UPDATE_MODE = 3;      final static int UPDATE_MODE = 3;
   
     final static int DELETE_MODE = 4;      final static int DELETE_MODE = 4;
   
     final static int SYNCHRONIZE_MODE = 5;      final static int SYNCHRONIZE_MODE = 5;
   
     int mode = -1;      int mode = -1;
Line 1642  class Convert Line 1707  class Convert
       this.mode = mode;        this.mode = mode;
       this.bean.setIDVector(ids);        this.bean.setIDVector(ids);
     }      }
   
     /**      /**
      * @param indexListVec       * @param indexListVec
      */       */
Line 1652  class Convert Line 1718  class Convert
         fillIndexList((String) tables.get(i), (String) indexListVec.get(i));          fillIndexList((String) tables.get(i), (String) indexListVec.get(i));
       }        }
     }      }
   
     /**      /**
      * writes the data contained in this object to the buffered writer           * writes the data contained in this object to the buffered writer *
      * * @param buffr           * 
            * @param buffr
      * @throws Exception       * @throws Exception
      */       */
     public void exportToXML(BufferedWriter buffr) throws Exception      public void exportToXML(BufferedWriter buffr) throws Exception
Line 1711  class Convert Line 1779  class Convert
   
       htIndex.put(table, indexList);        htIndex.put(table, indexList);
     }      }
   
     public String toString()      public String toString()
     {      {
       return bean.url + " " + tables;        return bean.url + " " + tables;
     }      }
   
   }    }
   
   public static String convertToUTF8(Object command)    public static String convertToUTF8(Object command)
   {    {
     String str = null;      String str = null;
     try      try
     {      {
       str = new String(command.toString().getBytes("UTF-8"));        str = new String(command.toString().getBytes("UTF-8"));
     } catch (UnsupportedEncodingException e)          }
           catch (UnsupportedEncodingException e)
     {      {
       // TODO Auto-generated catch block        // TODO Auto-generated catch block
       e.printStackTrace();        e.printStackTrace();
     }      }
     return str;      return str;
   }    }
   
   public static void writeConfig(String file, DataBase source, DataBase destination) throws Exception    public static void writeConfig(String file, DataBase source, DataBase destination) throws Exception
   {    {
     if (!file.toLowerCase().endsWith(".xml"))      if (!file.toLowerCase().endsWith(".xml"))
Line 1751  class Convert Line 1823  class Convert
     buffw.write("</convert>\n");      buffw.write("</convert>\n");
     buffw.close();      buffw.close();
   }    }
   
   public static void delete(String source, String destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids, int mode) throws Exception    public static void delete(String source, String destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids, int mode) throws Exception
   {    {
     FM2SQL.ProgressDialog dialog = null;      FM2SQL.ProgressDialog dialog = null;
Line 1782  class Convert Line 1855  class Convert
       // Collections.sort(names);        // Collections.sort(names);
       int tbIndex = 1;        int tbIndex = 1;
   
       // System.out.println("Start at "+names.indexOf("archimedes_facsimiles"));              // System.out.println("Start at
               // "+names.indexOf("archimedes_facsimiles"));
       for (tbIndex = 0; tbIndex < names.size(); ++tbIndex)        for (tbIndex = 0; tbIndex < names.size(); ++tbIndex)
       {        {
         Vector[] result = null;          Vector[] result = null;
Line 1816  class Convert Line 1890  class Convert
           bean.makeQuery(query, 50);            bean.makeQuery(query, 50);
           idField = ids.get(tbIndex).toString();            idField = ids.get(tbIndex).toString();
   
         } catch (Exception e)                  }
                   catch (Exception e)
         {          {
           continue;            continue;
         }          }
         // determine destTableName from createStatement or from source table name                  // determine destTableName from createStatement or from source
                   // table name
         if (!creates.get(tbIndex).equals(""))          if (!creates.get(tbIndex).equals(""))
         {          {
           String create = creates.get(tbIndex).toString().toLowerCase();            String create = creates.get(tbIndex).toString().toLowerCase();
Line 1829  class Convert Line 1905  class Convert
           destTableName = create.substring(fromIndex, toIndex).replaceAll(beanDest.getQC(), "").trim();            destTableName = create.substring(fromIndex, toIndex).replaceAll(beanDest.getQC(), "").trim();
           System.out.println("destTable " + destTableName);            System.out.println("destTable " + destTableName);
   
         } else                  }
                   else
           destTableName = convertText(names.get(tbIndex).toString());            destTableName = convertText(names.get(tbIndex).toString());
   
         // for id kram          // for id kram
Line 1845  class Convert Line 1922  class Convert
         String tempQuery = query;          String tempQuery = query;
         String destQuery = query.replaceAll(names.get(tbIndex).toString(), destTableName);          String destQuery = query.replaceAll(names.get(tbIndex).toString(), destTableName);
         String tempQueryDest = destQuery;          String tempQueryDest = destQuery;
         // remove extra query parts destQuery.substring(0,destQuery.lastIndexOf(destTableName)+destTableName.length()+1);                  // remove extra query parts
                   // destQuery.substring(0,destQuery.lastIndexOf(destTableName)+destTableName.length()+1);
         System.out.println("new Query " + tempQueryDest);          System.out.println("new Query " + tempQueryDest);
         if (!idField.equals(""))          if (!idField.equals(""))
         {          {
Line 1870  class Convert Line 1948  class Convert
             Vector linesToDelete = new Vector(vecDest);              Vector linesToDelete = new Vector(vecDest);
             // remove all lines that should not be deleted              // remove all lines that should not be deleted
             linesToDelete.removeAll(deleted);              linesToDelete.removeAll(deleted);
             // System.out.println("ID LIST SIZE " + Math.round((double) myIds.size() / (double) numIntervalls) + " " + myIdsDest.size());                          // System.out.println("ID LIST SIZE " +
             /// @TODO complete delete task remove query show lines to be deleted let user choose if he wants that                          // Math.round((double) myIds.size() / (double)
                           // numIntervalls) + " " + myIdsDest.size());
                           /// @TODO complete delete task remove query show lines
                           // to be deleted let user choose if he wants that
             System.out.println("number of lines to  be deleted " + linesToDelete.size());              System.out.println("number of lines to  be deleted " + linesToDelete.size());
             deltaID = (int) Math.round((double) myIds.size() / (double) numIntervalls);              deltaID = (int) Math.round((double) myIds.size() / (double) numIntervalls);
             beanDest.setConnection(destination);              beanDest.setConnection(destination);
Line 1896  class Convert Line 1977  class Convert
             command.append("DELETE FROM");              command.append("DELETE FROM");
             command.append(beanDest.getQC());              command.append(beanDest.getQC());
             command.append(destTableName);              command.append(destTableName);
             //command.append(convertText((String) names.get(tbIndex)));                          //command.append(convertText((String)
                           // names.get(tbIndex)));
             command.append(beanDest.getQC());              command.append(beanDest.getQC());
             int size = bean.getColumnNames().size();              int size = bean.getColumnNames().size();
             command.append("WHERE " + convertText(ids.get(tbIndex).toString()) + " =  ?");              command.append("WHERE " + convertText(ids.get(tbIndex).toString()) + " =  ?");
             PreparedStatement pstm = beanDest.getConnection().prepareStatement(command.toString());              PreparedStatement pstm = beanDest.getConnection().prepareStatement(command.toString());
             System.out.println(command + " " + tbIndex);              System.out.println(command + " " + tbIndex);
             //int rowCount = bean.getRowCount(query);              //int rowCount = bean.getRowCount(query);
             //        int idIndex = bean.getColumnNames().indexOf(ids.get(tbIndex));                          //        int idIndex =
                           // bean.getColumnNames().indexOf(ids.get(tbIndex));
             while (true)              while (true)
             {              {
   
Line 1928  class Convert Line 2011  class Convert
         } // to idfield if            } // to idfield if  
       } // table loop        } // table loop
   
     } catch (Exception e)          }
           catch (Exception e)
     {      {
       System.out.println("Error while connecting to database " + e);        System.out.println("Error while connecting to database " + e);
       if (dialog != null)        if (dialog != null)
Line 2001  class Convert Line 2085  class Convert
       // Collections.sort(names);        // Collections.sort(names);
       int tbIndex = 1;        int tbIndex = 1;
   
       // System.out.println("Start at "+names.indexOf("archimedes_facsimiles"));              // System.out.println("Start at
               // "+names.indexOf("archimedes_facsimiles"));
       for (tbIndex = 0; tbIndex < names.size(); ++tbIndex)        for (tbIndex = 0; tbIndex < names.size(); ++tbIndex)
       {        {
         Vector[] result = null;          Vector[] result = null;
Line 2038  class Convert Line 2123  class Convert
           bean.makeQuery(query, 50);            bean.makeQuery(query, 50);
           idField = ids.get(tbIndex).toString();            idField = ids.get(tbIndex).toString();
   
         } catch (Exception e)                  }
                   catch (Exception e)
         {          {
           continue;            continue;
         }          }
         // determine destTableName from createStatement or from source table name                  // determine destTableName from createStatement or from source
                   // table name
         if (!creates.get(tbIndex).equals(""))          if (!creates.get(tbIndex).equals(""))
         {          {
           String create = creates.get(tbIndex).toString().toLowerCase();            String create = creates.get(tbIndex).toString().toLowerCase();
Line 2051  class Convert Line 2138  class Convert
           destTableName = create.substring(fromIndex, toIndex).replaceAll(beanDest.getQC(), "").trim();            destTableName = create.substring(fromIndex, toIndex).replaceAll(beanDest.getQC(), "").trim();
           System.out.println("destTable " + destTableName);            System.out.println("destTable " + destTableName);
   
         } else                  }
                   else
           destTableName = convertText(names.get(tbIndex).toString());            destTableName = convertText(names.get(tbIndex).toString());
   
         // for id kram          // for id kram
Line 2070  class Convert Line 2158  class Convert
         destQuery = removeLayoutPartFromQuery(destQuery, layouts.get(tbIndex).toString());          destQuery = removeLayoutPartFromQuery(destQuery, layouts.get(tbIndex).toString());
         // TODO remove layout part for destQuery          // TODO remove layout part for destQuery
         String tempQueryDest = destQuery;          String tempQueryDest = destQuery;
         // remove extra query parts destQuery.substring(0,destQuery.lastIndexOf(destTableName)+destTableName.length()+1);                  // remove extra query parts
                   // destQuery.substring(0,destQuery.lastIndexOf(destTableName)+destTableName.length()+1);
         System.out.println("new Query " + tempQueryDest);          System.out.println("new Query " + tempQueryDest);
         System.out.println("idfield "+idField+" "+ids.get(tbIndex).toString());          System.out.println("idfield "+idField+" "+ids.get(tbIndex).toString());
         if (!idField.equals(""))          if (!idField.equals(""))
Line 2089  class Convert Line 2178  class Convert
                                       
             myIds = bean.getIDVector(ids.get(tbIndex).toString(), (String) names.get(tbIndex), tempQuery, 0);              myIds = bean.getIDVector(ids.get(tbIndex).toString(), (String) names.get(tbIndex), tempQuery, 0);
             myIdsDest = beanDest.getIDVector(convertText(idField), destTableName, tempQueryDest, 0);              myIdsDest = beanDest.getIDVector(convertText(idField), destTableName, tempQueryDest, 0);
             //System.out.println("status of remove  "+myIds.remove("b015892"));                          //System.out.println("status of remove
                           // "+myIds.remove("b015892"));
             System.out.println("ids found for "+idField+" "+!myIds.isEmpty());              System.out.println("ids found for "+idField+" "+!myIds.isEmpty());
             if (myIds.isEmpty())              if (myIds.isEmpty())
               break;                break;
Line 2142  class Convert Line 2232  class Convert
                 dialog.title.setText("Writing table data ...");                  dialog.title.setText("Writing table data ...");
   
               performSynchronize(idField, vec, tempQuery, linesToDelete, linesToAppend, insPst, updPst, delPSt, deltaID, delimiter);                performSynchronize(idField, vec, tempQuery, linesToDelete, linesToAppend, insPst, updPst, delPSt, deltaID, delimiter);
               // System.out.println("ID LIST SIZE " + Math.round((double) myIds.size() / (double) numIntervalls) + " " + myIdsDest.size());                              // System.out.println("ID LIST SIZE " +
                               // Math.round((double) myIds.size() / (double)
                               // numIntervalls) + " " + myIdsDest.size());
               endIndex = k + deltaID;                endIndex = k + deltaID;
             }              }
             System.out.println(endIndex);              System.out.println(endIndex);
Line 2164  class Convert Line 2256  class Convert
               if (dialog != null)                if (dialog != null)
                 dialog.title.setText("Writing table data ...");                  dialog.title.setText("Writing table data ...");
               performSynchronize(idField, vec, tempQuery, linesToDelete, linesToAppend, insPst, updPst, delPSt, deltaID, delimiter);                performSynchronize(idField, vec, tempQuery, linesToDelete, linesToAppend, insPst, updPst, delPSt, deltaID, delimiter);
               // System.out.println("ID LIST SIZE " + Math.round((double) myIds.size() / (double) numIntervalls) + " " + myIdsDest.size());                              // System.out.println("ID LIST SIZE " +
                               // Math.round((double) myIds.size() / (double)
                               // numIntervalls) + " " + myIdsDest.size());
             }              }
             // prepare new query for next chunk              // prepare new query for next chunk
             if (query.indexOf("where") > 0)              if (query.indexOf("where") > 0)
Line 2190  class Convert Line 2284  class Convert
               stm.execute("DROP  INDEX " + destTableName + "_" + indexField);                stm.execute("DROP  INDEX " + destTableName + "_" + indexField);
               //  continue;                //  continue;
             }              }
          //    stm.execute("DROP  INDEX "+destTableName+"_"+indexField);                          //    stm.execute("DROP INDEX
                           // "+destTableName+"_"+indexField);
   
             String type = beanDest.getColumnType(indexField).toLowerCase();              String type = beanDest.getColumnType(indexField).toLowerCase();
             // System.out.println(indexField+" "+type+" "+(type.indexOf("text") >= 0 || type.indexOf("varchar") >= 0 || type.indexOf("char") >= 0));                          // System.out.println(indexField+" "+type+"
                           // "+(type.indexOf("text") >= 0 ||
                           // type.indexOf("varchar") >= 0 || type.indexOf("char")
                           // >= 0));
             if (type.indexOf("text") >= 0 || type.indexOf("varchar") >= 0 || type.indexOf("char") >= 0)              if (type.indexOf("text") >= 0 || type.indexOf("varchar") >= 0 || type.indexOf("char") >= 0)
             {              {
               if (beanDest.url.indexOf("mysql") >= 0)                if (beanDest.url.indexOf("mysql") >= 0)
               {                {
                 //System.out.println("CREATE  INDEX " + indexName + " ON " + destTableName + " (" + indexField + "(10))");                                  //System.out.println("CREATE INDEX " +
                                   // indexName + " ON " + destTableName + " (" +
                                   // indexField + "(10))");
                 // TODO problem if index exist !!!                  // TODO problem if index exist !!!
                 stm.execute("CREATE  INDEX " + indexName + " ON " + destTableName + " (" + indexField + "(10))");                  stm.execute("CREATE  INDEX " + indexName + " ON " + destTableName + " (" + indexField + "(10))");
               } else                              }
                               else
               {                {
                 stm.execute("CREATE  INDEX " + indexName + " ON " + destTableName + " (lower( " + indexField + "))");                  stm.execute("CREATE  INDEX " + indexName + " ON " + destTableName + " (lower( " + indexField + "))");
   
               }                }
                           
             } else                          }
                           else
             {              {
               stm.execute("CREATE  INDEX " + destTableName + "_" + indexField + " ON " + destTableName + "(" + indexField + ")");                stm.execute("CREATE  INDEX " + destTableName + "_" + indexField + " ON " + destTableName + "(" + indexField + ")");
   
             }              }
   
             // stm.execute("DROP  INDEX "+destTableName+"_"+indexField);                          // stm.execute("DROP INDEX
                           // "+destTableName+"_"+indexField);
   
           }            }
           //  CREATE UNIQUE INDEX title_idx ON films (title);              //  CREATE UNIQUE INDEX title_idx ON films (title);  
Line 2230  class Convert Line 2333  class Convert
         } // to idfield if            } // to idfield if  
       } // table loop        } // table loop
   
     } catch (Exception e)          }
           catch (Exception e)
     {      {
       System.out.println("Error while connecting to database " + e);        System.out.println("Error while connecting to database " + e);
       e.printStackTrace();        e.printStackTrace();
Line 2255  class Convert Line 2359  class Convert
       dialog.setVisible(false);        dialog.setVisible(false);
     }      }
   }    }
   
   /**    /**
    * @param destQuery     * @param destQuery
    * @param string     * @param string
Line 2267  class Convert Line 2372  class Convert
     System.out.println("destQuery change to " + destQuery);      System.out.println("destQuery change to " + destQuery);
     return destQuery;      return destQuery;
   }    }
   private static void performSynchronize(  
     String idField,      private static void performSynchronize(String idField, Vector vec, String tempQuery, TreeSet linesToDelete, TreeSet linesToAppend, PreparedStatement insPst, PreparedStatement updPst,
     Vector vec,              PreparedStatement delPSt, int deltaID, String delimiter) throws SQLException, ParseException
     String tempQuery,  
     TreeSet linesToDelete,  
     TreeSet linesToAppend,  
     PreparedStatement insPst,  
     PreparedStatement updPst,  
     PreparedStatement delPSt,  
     int deltaID,  
     String delimiter)  
     throws SQLException, ParseException  
   {    {
     Vector[] vectors = bean.getQueryData(tempQuery, deltaID);      Vector[] vectors = bean.getQueryData(tempQuery, deltaID);
     int idIndex = vectors[1].indexOf(idField);      int idIndex = vectors[1].indexOf(idField);
Line 2304  class Convert Line 2400  class Convert
         }          }
         insPst.execute();          insPst.execute();
   
       } else // update              }
               else
               // update
         {          {
         for (int l = 0; l < line.size(); ++l)          for (int l = 0; l < line.size(); ++l)
         {          {
Line 2326  class Convert Line 2424  class Convert
   
   /**    /**
    * Converts input String in norman encoding to unicode      * Converts input String in norman encoding to unicode 
        * 
    * @param inp     * @param inp
    * @return converted String     * @return converted String
    */     */
Line 3302  class Convert Line 3401  class Convert
     }      }
     return buf.toString();      return buf.toString();
   }    }
   
   static public String normanToUnicodeNew(String inp)    static public String normanToUnicodeNew(String inp)
   {    {
     StringBuffer buf = new StringBuffer();      StringBuffer buf = new StringBuffer();
Line 3782  class Convert Line 3882  class Convert
     }      }
     return buf.toString();      return buf.toString();
   }    }
   
   public static ConversionProperties getFieldNamesAndDestTableName(String create, String query, String tableName)    public static ConversionProperties getFieldNamesAndDestTableName(String create, String query, String tableName)
   {    {
     String[] fieldNames = null;      String[] fieldNames = null;
     String destTableName = null;      String destTableName = null;
     // determine destTableName from createStatement or from source table name          // determine destTableName from createStatement or from source table
           // name
     if (!create.equals(""))      if (!create.equals(""))
     {      {
       int fromIndex = create.toLowerCase().indexOf("table") + 5;        int fromIndex = create.toLowerCase().indexOf("table") + 5;
Line 3796  class Convert Line 3898  class Convert
       destTableName = create.substring(fromIndex, toIndex).replaceAll(beanDest.getQC(), "").trim();        destTableName = create.substring(fromIndex, toIndex).replaceAll(beanDest.getQC(), "").trim();
       System.out.println("destTable " + destTableName);        System.out.println("destTable " + destTableName);
       // retrieve field_names from select statement        // retrieve field_names from select statement
       // TODO problem with different fieldNames in create statement will overwrite them              // TODO problem with different fieldNames in create statement will
               // overwrite them
       if (query.indexOf("*") < 0)        if (query.indexOf("*") < 0)
       {        {
         int selectEndIndex = query.indexOf("from");          int selectEndIndex = query.indexOf("from");
Line 3812  class Convert Line 3915  class Convert
           fieldIndex++;            fieldIndex++;
         }          }
   
       } else              }
               else
       {        {
         // use create statement for field names          // use create statement for field names
         StringTokenizer tokenizer = new StringTokenizer(create.substring(toIndex + 1, endIndex), ",");          StringTokenizer tokenizer = new StringTokenizer(create.substring(toIndex + 1, endIndex), ",");
Line 3828  class Convert Line 3932  class Convert
           fieldIndex++;            fieldIndex++;
         }          }
       }        }
     } else          }
           else
     {      {
       destTableName = convertText(tableName);        destTableName = convertText(tableName);
   
Line 3848  class Convert Line 3953  class Convert
           fieldIndex++;            fieldIndex++;
         }          }
   
       } else              }
               else
       {        {
         Vector fieldNamesVec = bean.getColumnNames();          Vector fieldNamesVec = bean.getColumnNames();
         fieldNames = new String[fieldNamesVec.size()];          fieldNames = new String[fieldNamesVec.size()];
Line 3863  class Convert Line 3969  class Convert
     }      }
     return new ConversionProperties(destTableName, fieldNames);      return new ConversionProperties(destTableName, fieldNames);
   }    }
   
   /**    /**
    * creates an insert into statement for the specified table and given       * creates an insert into statement for the specified table and given field
    * field names        * names
        * 
    * @param destTableName     * @param destTableName
    * @param fieldNames     * @param fieldNames
    * @return     * @return
Line 3875  class Convert Line 3983  class Convert
     StringBuffer command = new StringBuffer();      StringBuffer command = new StringBuffer();
     command.append("INSERT  INTO ");      command.append("INSERT  INTO ");
     command.append(beanDest.getQC());      command.append(beanDest.getQC());
     command.append(destTableName); //convertText((String) names.get(tbIndex)));          command.append(destTableName); //convertText((String)
           // names.get(tbIndex)));
     command.append(beanDest.getQC());      command.append(beanDest.getQC());
     command.append(" (");      command.append(" (");
     for (int i = 0; i < fieldNames.length; i++)      for (int i = 0; i < fieldNames.length; i++)
Line 3893  class Convert Line 4002  class Convert
     command.append("?)");      command.append("?)");
     return command;      return command;
   }    }
   
   public static StringBuffer createUpdateCommand(String destTableName, String[] fieldNames, String id)    public static StringBuffer createUpdateCommand(String destTableName, String[] fieldNames, String id)
   {    {
     StringBuffer command = new StringBuffer();      StringBuffer command = new StringBuffer();
Line 3911  class Convert Line 4021  class Convert
     command.append("WHERE " + id + " =  ?");      command.append("WHERE " + id + " =  ?");
     return command;      return command;
   }    }
   
   public static StringBuffer createDeleteCommand(String destTableName, String idField)    public static StringBuffer createDeleteCommand(String destTableName, String idField)
   {    {
     StringBuffer command = new StringBuffer();      StringBuffer command = new StringBuffer();
Line 3923  class Convert Line 4034  class Convert
     command.append("WHERE " + idField + " =  ?");      command.append("WHERE " + idField + " =  ?");
     return command;      return command;
   }    }
   
 public void makeTest(String table,String idField,String tempQuery) throws Exception  public void makeTest(String table,String idField,String tempQuery) throws Exception
 {  {
   int counter=0;    int counter=0;
Line 3960  public void makeTest(String table,String Line 4072  public void makeTest(String table,String
           {            {
             System.out.println("lastResult was " + lastResult + " counter was " + counter);              System.out.println("lastResult was " + lastResult + " counter was " + counter);
             break;              break;
           } else              }
               else
           {            {
             resultSet.next();              resultSet.next();
             lastResult = resultSet.getString(1);              lastResult = resultSet.getString(1);

Removed from v.1.78  
changed lines
  Added in v.1.79


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