Diff for /FM2SQL/Attic/Convert.java between versions 1.1.1.1 and 1.34

version 1.1.1.1, 2003/12/05 11:46:39 version 1.34, 2004/02/16 12:24:17
Line 1 Line 1
   
   
 import java.util.*;  import java.util.*;
 import java.sql.*;  import java.sql.*;
 import java.awt.Cursor;  import java.awt.Cursor;
Line 26  class Convert Line 24  class Convert
   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 numIntervalls = 2;
   public static void main(String args[])    public static void main(String args[])
   {    {
 /*    try  /*    try
Line 36  class Convert Line 35  class Convert
     //System.out.println(new String(b,"UTF-8"));      //System.out.println(new String(b,"UTF-8"));
     } catch (UnsupportedEncodingException e)      } catch (UnsupportedEncodingException e)
     {      {
       // TODO Auto-generated catch block  
       e.printStackTrace();        e.printStackTrace();
     }*/      }*/
     FileOutputStream file = null;      FileOutputStream file = null;
Line 45  class Convert Line 43  class Convert
      System.out.println("Usage: java Convert <xml config file>");       System.out.println("Usage: java Convert <xml config file>");
      System.exit(-1);       System.exit(-1);
     }      }
     if(!(new File(args[0]).exists())) System.exit(0);      if (!(new File(args[0]).exists()))
         System.exit(0);
     try      try
     {      {
       file = new FileOutputStream("./log.txt");        file = new FileOutputStream("./log.txt");
     } catch (FileNotFoundException e1)      } catch (FileNotFoundException e1)
     {      {
       // TODO Auto-generated catch block  
       e1.printStackTrace();        e1.printStackTrace();
     }       } 
    PrintStream stream= new PrintStream(file);     PrintStream stream= new PrintStream(file);
Line 61  class Convert Line 59  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) throws Exception    public static void convertBatch(DBBean source, DBBean destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids,int mode) throws Exception
   {    {
    // @TODO Convert change to convert row wise  
    /*FM2SQL.ProgressDialog dialog = new  FM2SQL.ProgressDialog(FM2SQL.fmInstance);  
    dialog.setTitle("Conversion running ...");  
    dialog.title.setText("Getting table data ...");  
    dialog.setLocation(500,500);   
    dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));  
   */  
   // FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));  
    //dialog.thread=Thread.currentThread();  
    bean=source;     bean=source;
    beanDest = destination;     beanDest = destination;
  /*  // setting user and passwd       convert(null,null,names,layouts,selects,creates,ids,mode);
    bean.setUserAndPasswd(user,passwd);      if(true) return;
   // setting user and passwd   
   beanDest.setUserAndPasswd(userDest,passwdDest);  
   */  
   //dialog.setSize(400,250);  
    StringBuffer command= null;     StringBuffer command= null;
     try      try
     {      {
       //bean.setConnection("jdbc:fmpro:http://141.14.237.74:8050");      
     //bean.setConnection("jdbc:postgresql://erebos/test","postgres","rogo");  
       bean.setConnection(source.url);        bean.setConnection(source.url);
       if(names==null)        if(names==null)
        names=bean.getTableNames();         names=bean.getTableNames();
       //Collections.sort(names);        //Collections.sort(names);
         int tbIndex = 1;          int tbIndex = 1;
             
      // 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;
        try {          try
           {
      String query = "select * from " + bean.getQC() +names.get(tbIndex).toString() + bean.getQC();       String query = "select * from " + bean.getQC() +names.get(tbIndex).toString() + bean.getQC();
      String layout=(layouts.isEmpty()) ? "":layouts.get(tbIndex).toString();        String layout=(layouts.isEmpty()) ? "":layouts.get(tbIndex).toString(); 
      query = (selects!=null) ? selects.get(tbIndex).toString():query;       query = (selects!=null) ? selects.get(tbIndex).toString():query;
Line 111  class Convert Line 94  class Convert
           System.out.println("added layout " + query);            System.out.println("added layout " + query);
                   
         }          }
         //  if ( layout!= "")  
         //   query += " layout " + bean.getQC() + layout + bean.getQC();  
      /*   dialog.title.setText("Getting table data ...");  
         dialog.table.setText(names.get(tbIndex).toString());  
         dialog.status.setText("Table " + (tbIndex + 1) + " of " + names.size());  
         dialog.show();  
       */  
           System.out.println(" performing query "+query);            System.out.println(" performing query "+query);
           //result = bean.getQueryData(query, null, 0);            //result = bean.getQueryData(query, null, 0);
         bean.getConnection();          bean.getConnection();
Line 140  class Convert Line 116  class Convert
         // System.out.println(beanDest.getTableNames(beanDest.getCatalogs().get(2).toString()));          // System.out.println(beanDest.getTableNames(beanDest.getCatalogs().get(2).toString()));
         stm = beanDest.getConnection().createStatement();          stm = beanDest.getConnection().createStatement();
         // System.exit(0);          // System.exit(0);
       if(true)           if (mode == Convert.DataBase.CONVERT_MODE)
       {        {
         if(tables.indexOf(names.get(tbIndex))>=0)           if(tables.indexOf(names.get(tbIndex))>=0) 
         {          {
          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 184  class Convert Line 158  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 195  class Convert Line 168  class Convert
                   
       }        }
     }      }
     // System.out.println(names);          Vector row = null;
     /*              command = new StringBuffer();
     if (idVal == "")  
           stm.executeUpdate("INSERT  INTO " + DBBean.getQC() + box.getSelectedItem() + DBBean.getQC() + " (" + DBBean.getQC() + columnName + DBBean.getQC() + ")  VALUES ('" + value + "') ");          command.append("INSERT  INTO ");
           command.append(beanDest.getQC());
           command.append(convertText((String) names.get(tbIndex)));
           command.append(beanDest.getQC());
           command.append(" values ( ");
   
           for (int i = 0; i < bean.getColumnNames().size() - 1; ++i)
             command.append("?,");
           command.append("?)");
           PreparedStatement pstm = beanDest.getConnection().prepareStatement(command.toString());
           System.out.println(command);
           while ((row = bean.getNextRow()) != null)
           {
             //print rows
             Object obj = null;
             for (int k = 0; k < row.size(); ++k)
             {
               obj = row.get(k);
               if (obj instanceof ArrayList)
                 obj = ((List) obj).get(0);
               String str = (obj == null) ? "NULL" : obj.toString();
               if (!str.equals("NULL"))
                 pstm.setString(k + 1, str);
         else          else
           stm.executeUpdate("UPDATE   " + DBBean.getQC() + box.getSelectedItem() + DBBean.getQC() + " SET  " + DBBean.getQC() + columnName + DBBean.getQC() + "='" + value + "' WHERE ID='" + idVal + "' ");                pstm.setNull(k + 1, Types.NULL);
       */            }
             pstm.execute();
   
           } // to for loop    
   
     // Vector[] result2=beanDest.getQueryData(names.get(tbIndex).toString());        }
     // print results to screen      } catch (Exception e)
   /*  for (int i = 0; i < result[1].size(); ++i)  
     {      {
       //print Header        System.out.println("Error while connecting to database " + e);
       // System.out.println(" "+result[1].get(i)+" "+result2[1].get(i)+" "+i);        //dialog.setVisible(false);
     }*/        //dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
     // System.out.println();        //FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
     //dialog.title.setText("Writing table data ...");        java.io.ByteArrayOutputStream b = new java.io.ByteArrayOutputStream();
     Vector row = null;        java.io.PrintStream stream = new java.io.PrintStream(b);
     //for (int j = 0; j < result[0].size(); ++j)        stream.print(command + "\n\n");
     while((row=bean.getNextRow())!=null)        e.printStackTrace(stream);
         System.err.println(b);
         //FM2SQL.showErrorDialog(b.toString(), "Error occured !");
   
       }
       //  dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
       //FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
   
       //  dialog.setVisible(false); 
     }
   
     public static void update(String source, String destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids, int mode) throws Exception
     {      {
       //Vector row = (Vector) result[0].get(j);      FM2SQL.ProgressDialog dialog = null;
       if (FM2SQL.fmInstance != null)
       {
         dialog = new FM2SQL.ProgressDialog(FM2SQL.fmInstance);
         dialog.setTitle("Conversion running ...");
         dialog.title.setText("Getting table data ...");
         dialog.setLocation(FM2SQL.fmInstance.getLocationOnScreen().x + (FM2SQL.fmInstance.getWidth() - 400) / 2, FM2SQL.fmInstance.getLocationOnScreen().y + (FM2SQL.fmInstance.getHeight() - 250) / 2);
         dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
         FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
         dialog.thread = Thread.currentThread();
       }
       // setting user and passwd 
       bean.setUserAndPasswd(user, passwd);
       // setting user and passwd 
       beanDest.setUserAndPasswd(userDest, passwdDest);
       if (dialog != null)
         dialog.setSize(400, 250);
       StringBuffer command = null;
       String query = null;
       try
       {
         //bean.setConnection("jdbc:fmpro:http://141.14.237.74:8050");    
         //bean.setConnection("jdbc:postgresql://erebos/test","postgres","rogo");
         bean.setConnection(source);
         if (names == null)
           names = bean.getTableNames();
         // Collections.sort(names);
         int tbIndex = 1;
   
         // System.out.println("Start at "+names.indexOf("archimedes_facsimiles"));
         for (tbIndex = 0; tbIndex < names.size(); ++tbIndex)
         {
           Vector[] result = null;
           try
           {
             query = "select * from " + bean.getQC() + names.get(tbIndex).toString() + bean.getQC();
             String layout = (layouts.isEmpty()) ? "" : layouts.get(tbIndex).toString();
             query = (selects != null) ? selects.get(tbIndex).toString() : query;
             //if  vectors[1].get(i) != null)
             if (layout != "")
             {
               layout = " layout " + bean.getQC() + layout + bean.getQC();
               String name = names.get(tbIndex).toString();
               StringBuffer queryLayout = new StringBuffer(query);
               queryLayout.insert(queryLayout.indexOf(name) + name.length() + 1, " " + layout);
               query = queryLayout.toString();
               System.out.println("added layout  " + query);
   
             }
             dialog.title.setText("Getting table data ...");
             dialog.table.setText(names.get(tbIndex).toString());
             dialog.status.setText("Table " + (tbIndex + 1) + " of " + names.size());
             dialog.show();
             bean.getConnection();
             bean.makeQuery(query, 0);
           } catch (Exception e)
           {
             continue;
           }
           //beanDest.setConnection("jdbc:postgresql://erebos/test3");
           beanDest.setConnection(destination);
   
           Statement stm = beanDest.getConnection().createStatement();
   
           Vector tables = beanDest.getTableNames();
           // Collections.sort(tables);
           System.out.println(names.get(tbIndex) + " " + tables.indexOf(convertText((String) names.get(tbIndex)))); // "//beanDest.getTypeNames()); 
           tables = beanDest.getTableNames();
           // System.out.println(beanDest.getTableNames(beanDest.getCatalogs().get(2).toString()));
           stm = beanDest.getConnection().createStatement();
           // System.exit(0);
   
           if (dialog != null)
             dialog.title.setText("Writing table data ...");
   
           int j = -1;
   
           Vector row = null;
       command = new StringBuffer();        command = new StringBuffer();
   
         command.append("INSERT  INTO ");          command.append("UPDATE ");
         command.append(beanDest.getQC());          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(" SET  ");
   
           int size = bean.getColumnNames().size();
           for (int i = 0; i < size - 1; ++i)
             command.append(beanDest.getQC() + convertText((String) bean.getColumnNames().get(i)) + beanDest.getQC() + " = ? ,");
           command.append(convertText((String) bean.getColumnNames().get(size - 1)) + " = ? ");
           command.append("WHERE " + convertText(ids.get(tbIndex).toString()) + " =  ?");
           PreparedStatement pstm = beanDest.getConnection().prepareStatement(command.toString());
           System.out.println(command + " " + tbIndex);
           int rowCount = bean.getRowCount(query);
           int idIndex = bean.getColumnNames().indexOf(ids.get(tbIndex));
           while ((row = bean.getNextRow()) != null)
           {
             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);          //System.out.println("row "+obj+" "+k);
        if(obj!=null&&!(obj instanceof ArrayList))         if(obj!=null&&!(obj instanceof ArrayList))
        command.append("'"+convertUml(new String(obj.toString().getBytes("UTF-8"),"UTF-8"))+"',");                command.append("'"+convertUml(obj.toString())+"',"); 
        else 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,");         else command.append("NULL,");
      }       }
      obj = row.get(row.size() - 1);       obj = row.get(row.size() - 1);
      if (obj != null && !(obj instanceof ArrayList))       if (obj != null && !(obj instanceof ArrayList))
      command.append("'"+convertUml(new String(obj.toString().getBytes("UTF-8"),"UTF-8"))+"')");              command.append("'"+convertUml(obj.toString())+"')"); 
       else        else
       if(obj!=null&&   obj instanceof ArrayList)        if(obj!=null&&   obj instanceof ArrayList)
        command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"')");         //command.append(obj.toString()+")");         command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"')");         //command.append(obj.toString()+")");
        else command.append("NULL)");         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)
Line 250  class Convert Line 349  class Convert
     // 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);
             stm.executeUpdate(command.toString());            for (int k = 0; k < row.size(); ++k)
   // dialog.progress.setValue((int)(((double)(j+1)/(double)result[0].size())*100.0));            {
               obj = row.get(k);
               if (obj instanceof ArrayList)
                 obj = ((List) obj).get(0);
               String str = (obj == null) ? "NULL" : obj.toString();
               if (!str.equals("NULL"))
                 pstm.setString(k + 1, str);
               else
                 pstm.setNull(k + 1, Types.NULL);
             }
             pstm.setString(row.size() + 1, row.get(idIndex).toString());
             //System.out.println(pstm.toString());
             // System.exit(0);
             pstm.execute();
             //stm.executeUpdate(command.toString());
             if (dialog != null)
               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    
Line 260  class Convert Line 375  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);
      //dialog.setVisible(false);        if (dialog != null)
      //dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));        {
      //FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));          dialog.setVisible(false);
           dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
           FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
         }
      java.io.ByteArrayOutputStream b = new java.io.ByteArrayOutputStream();       java.io.ByteArrayOutputStream b = new java.io.ByteArrayOutputStream();
      java.io.PrintStream stream = new java.io.PrintStream(b);       java.io.PrintStream stream = new java.io.PrintStream(b);
      stream.print(command+"\n\n");       stream.print(command+"\n\n");
      e.printStackTrace(stream);       e.printStackTrace(stream);
      System.err.println(b);        FM2SQL.showErrorDialog(b.toString(), "Error occured !");
      //FM2SQL.showErrorDialog(b.toString(), "Error occured !");  
         
    }     }
  //  dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));      if (dialog != null)
    //FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));      {
         dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
         FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
   
  //  dialog.setVisible(false);         dialog.setVisible(false);
   }    }
   
     }
     /**
      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
   
      **/
     public static void convert(String source, String destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids, int mode) throws Exception
     {
   
   public static void  convert(String source,String destination,Vector names,Vector layouts,Vector selects,Vector creates) throws Exception      FM2SQL.ProgressDialog dialog = null;
   
       if (FM2SQL.fmInstance != null)
   {    {
    FM2SQL.ProgressDialog dialog = new  FM2SQL.ProgressDialog(FM2SQL.fmInstance);        dialog = new FM2SQL.ProgressDialog(FM2SQL.fmInstance);
    dialog.setTitle("Conversion running ...");     dialog.setTitle("Conversion running ...");
    dialog.title.setText("Getting table data ...");     dialog.title.setText("Getting table data ...");
    dialog.setLocation(FM2SQL.fmInstance.getLocationOnScreen().x+(FM2SQL.fmInstance.getWidth()-400)/2,FM2SQL.fmInstance.getLocationOnScreen().y+(FM2SQL.fmInstance.getHeight()-250)/2);      dialog.setLocation(FM2SQL.fmInstance.getLocationOnScreen().x+(FM2SQL.fmInstance.getWidth()-400)/2,FM2SQL.fmInstance.getLocationOnScreen().y+(FM2SQL.fmInstance.getHeight()-250)/2); 
      dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));       dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
      FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));       FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
    dialog.thread=Thread.currentThread();     dialog.thread=Thread.currentThread();
         dialog.setSize(400, 250);
       }
       java.util.TreeSet myIds = new TreeSet();
       int deltaID = 1;
       String idField = "";
       if (source != null && destination != null)
       {
    // setting user and passwd      // setting user and passwd 
    bean.setUserAndPasswd(user,passwd);     bean.setUserAndPasswd(user,passwd);
   // setting user and passwd     // setting user and passwd 
   beanDest.setUserAndPasswd(userDest,passwdDest);    beanDest.setUserAndPasswd(userDest,passwdDest);
   dialog.setSize(400,250);      }
    StringBuffer command= null;     StringBuffer command= null;
    String query = null;     String query = null;
     try      try
     {      {
       //bean.setConnection("jdbc:fmpro:http://141.14.237.74:8050");            //bean.setConnection("jdbc:fmpro:http://141.14.237.74:8050");    
       //bean.setConnection("jdbc:postgresql://erebos/test","postgres","rogo");        //bean.setConnection("jdbc:postgresql://erebos/test","postgres","rogo");
         if(source!=null)
       bean.setConnection(source);        bean.setConnection(source);
         else
         bean.setConnection(bean.url);
         
       if(names==null)        if(names==null)
        names=bean.getTableNames();         names=bean.getTableNames();
      // Collections.sort(names);       // Collections.sort(names);
Line 309  class Convert Line 448  class Convert
       for(tbIndex=0;tbIndex<names.size();++tbIndex)        for(tbIndex=0;tbIndex<names.size();++tbIndex)
       {        {
         Vector[] result = null;          Vector[] result = null;
        try {          try
           {
         query = "select * from " + bean.getQC() +names.get(tbIndex).toString() + bean.getQC();          query = "select * from " + bean.getQC() +names.get(tbIndex).toString() + bean.getQC();
        String layout=(layouts.isEmpty()) ? "":layouts.get(tbIndex).toString();          String layout=(layouts.isEmpty()) ? "":layouts.get(tbIndex).toString(); 
      query = (selects!=null) ? selects.get(tbIndex).toString():query;       query = (selects!=null) ? selects.get(tbIndex).toString():query;
Line 326  class Convert Line 466  class Convert
         }          }
         //  if ( layout!= "")          //  if ( layout!= "")
         //   query += " layout " + bean.getQC() + layout + bean.getQC();          //   query += " layout " + bean.getQC() + layout + bean.getQC();
         dialog.title.setText("Getting table data ...");            if (dialog != null)
             {
               dialog.title.setText("Reading 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();
             }
         //result = bean.getQueryData(query, dialog, 0);          //result = bean.getQueryData(query, dialog, 0);
         bean.getConnection();          bean.getConnection();
         bean.makeQuery(query,0);            bean.makeQuery(query, 50);
             // @TODO id Vector must be used in querys while loop over id ranges where id>=start and id<=end
             idField = ids.get(tbIndex).toString();
   
       } catch (Exception e)        } catch (Exception e)
         {          {
             System.out.println(e);
           continue;            continue;
         }          }
         //beanDest.setConnection("jdbc:postgresql://erebos/test3");          //beanDest.setConnection("jdbc:postgresql://erebos/test3");
           if(destination!=null)
         beanDest.setConnection(destination);          beanDest.setConnection(destination);
           else
           beanDest.setConnection(beanDest.url);
         Statement stm = beanDest.getConnection().createStatement();          Statement stm = beanDest.getConnection().createStatement();
   
         Vector tables = beanDest.getTableNames();          Vector tables = beanDest.getTableNames();
Line 349  class Convert Line 498  class Convert
         // System.out.println(beanDest.getTableNames(beanDest.getCatalogs().get(2).toString()));          // System.out.println(beanDest.getTableNames(beanDest.getCatalogs().get(2).toString()));
         stm = beanDest.getConnection().createStatement();          stm = beanDest.getConnection().createStatement();
         // System.exit(0);          // System.exit(0);
       if(true)           if (mode == Convert.DataBase.CONVERT_MODE)
       {        {
         if(tables.indexOf(names.get(tbIndex))>=0)           if(tables.indexOf(names.get(tbIndex))>=0) 
         {          {
          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 403  class Convert Line 550  class Convert
                   
       }        }
     }      }
     // System.out.println(names);          if(dialog!=null)
     /*      
     if (idVal == "")  
           stm.executeUpdate("INSERT  INTO " + DBBean.getQC() + box.getSelectedItem() + DBBean.getQC() + " (" + DBBean.getQC() + columnName + DBBean.getQC() + ")  VALUES ('" + value + "') ");  
         else  
           stm.executeUpdate("UPDATE   " + DBBean.getQC() + box.getSelectedItem() + DBBean.getQC() + " SET  " + DBBean.getQC() + columnName + DBBean.getQC() + "='" + value + "' WHERE ID='" + idVal + "' ");  
       */  
   
     // Vector[] result2=beanDest.getQueryData(names.get(tbIndex).toString());  
     // print results to screen  
    /* for (int i = 0; i < result[1].size(); ++i)  
     {  
       //print Header  
       // System.out.println(" "+result[1].get(i)+" "+result2[1].get(i)+" "+i);  
     }*/  
     // System.out.println();  
     dialog.title.setText("Writing table data ...");      dialog.title.setText("Writing table data ...");
           
     //for (int j = 0; j < result[0].size(); ++j)          // prepare the insert statement
     int j=-1;      int j=-1;
     Vector row = null;      Vector row = null;
     int rowCount= bean.getRowCount(query);          command = new StringBuffer();
   
           command.append("INSERT  INTO ");
           command.append(beanDest.getQC());
           command.append(convertText((String) names.get(tbIndex)));
           command.append(beanDest.getQC());
           command.append(" values ( ");
   
           for (int i = 0; i < bean.getColumnNames().size() - 1; ++i)
             command.append("?,");
           command.append("?)");
           PreparedStatement pstm = beanDest.getConnection().prepareStatement(command.toString());
           System.out.println(command);
           int rowCount = (idField != "") ? myIds.size() : bean.getRowCount(query);
           Vector vec = new Vector(myIds);
           int endIndex = -1;
           String tempQuery = query;
           String tempID = bean.getQC() + idField + bean.getQC();
           if (!idField.equals(""))
           {
             long startTime = System.currentTimeMillis();
             int counter = -1;
             while (true)
             {
               ++counter;
               if (counter == 0&&dialog!=null)
                 dialog.title.setText("Check if data  is available");
               else
                 if(dialog!=null)
                 dialog.title.setText("Check if more  data  is available");
               myIds = bean.getIDVector(ids.get(tbIndex).toString(), (String) names.get(tbIndex), tempQuery, numHits);
               if (myIds.isEmpty())
                 break;
               vec = new Vector(myIds);
               rowCount = vec.size();
               System.out.println("ID LIST SIZE " + Math.round((double) myIds.size() / (double) numIntervalls) + " " + myIds.size());
               deltaID = (int) Math.round((double) myIds.size() / (double) numIntervalls);
               if (vec.size() <= numIntervalls)
               {
                 endIndex = 0;
                 deltaID = vec.size();
               }
               for (int k = 0; k < vec.size() - deltaID; k = k + deltaID)
               {
                 System.out.println(vec.get(k) + " " + vec.get(k + deltaID) + " " + vec.lastElement());
                 if (query.indexOf("where") > 0)
                   tempQuery = query + " and " + tempID + ">=" + vec.get(k) + " and " + tempID + "<=" + vec.get(k + deltaID);
                 else
                   tempQuery = query + "where " + tempID + ">=" + vec.get(k) + " and " + tempID + "<=" + vec.get(k + deltaID);
                 System.out.println(tempQuery);
                 if(dialog!=null)
                 dialog.title.setText("Reading table data ...");
   
                 bean.makeQuery(tempQuery, deltaID);
                 if(dialog!=null)
                 dialog.title.setText("Writing table data ...");
   
                 command = writeDatainDestTable(dialog, command, k, pstm, rowCount);
                 endIndex = k + deltaID;
               }
               System.out.println(endIndex);
               if (endIndex == vec.size() - 1)
                 System.out.println("fits");
               else
               {
                 System.out.println(" last intervall from " + vec.get(endIndex) + " " + vec.lastElement());
   
                 if (query.indexOf("where") > 0)
                   tempQuery = query + " and " + tempID + ">=" + vec.get(endIndex) + " and " + tempID + "<=" + vec.lastElement();
                 else
                   tempQuery = query + "where " + tempID + ">=" + vec.get(endIndex) + " and " + tempID + "<=" + vec.lastElement();
                 System.out.println(tempQuery);
                 if(dialog!=null)
                 dialog.title.setText("Reading table data ...");
                 bean.makeQuery(tempQuery, 0);
                 if(dialog!=null)
                 dialog.title.setText("Writing table data ...");
                 command = writeDatainDestTable(dialog, command, endIndex, pstm, rowCount);
               }
               if (query.indexOf("where") > 0)
                 tempQuery = query + " and " + tempID + ">" + vec.lastElement();
               else
                 tempQuery = query + " where " + tempID + ">" + vec.lastElement();
   
             }
             long endTime = System.currentTimeMillis();
             System.out.println("Time for incremental convert elapsed " + (endTime - startTime));
           } else
           {
             long startTime = System.currentTimeMillis();
   
             bean.makeQuery(query, 0);
             command = writeDatainDestTable(dialog, command, j, pstm, rowCount);
             long endTime = System.currentTimeMillis();
             System.out.println("Time for old convert elapsed " + (endTime - startTime));
   
           }
         }
       } catch (Exception e)
       {
         System.out.println("Error while connecting to database " + e);
         if (dialog != null)
         {
           dialog.setVisible(false);
           dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
           FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
           java.io.ByteArrayOutputStream b = new java.io.ByteArrayOutputStream();
           java.io.PrintStream stream = new java.io.PrintStream(b);
           stream.print(command + "\n\n");
           e.printStackTrace(stream);
           FM2SQL.showErrorDialog(b.toString(), "Error occured !");
         } else
         {
           e.printStackTrace();
   
         }
       }
       if (dialog != null)
       {
         dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
         FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
         dialog.setVisible(false);
       }
     }
     private static StringBuffer writeDatainDestTable(FM2SQL.ProgressDialog dialog, StringBuffer command, int j, PreparedStatement pstm, int rowCount) throws Exception, SQLException
     {
       Vector row;
     while((row=bean.getNextRow())!=null)      while((row=bean.getNextRow())!=null)
     {      {
       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("INSERT  INTO ");
         command.append(beanDest.getQC());          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);          //System.out.println("row "+obj+" "+k);
        if(obj!=null&&!(obj instanceof ArrayList))         if(obj!=null&&!(obj instanceof ArrayList))
        command.append("'"+convertUml(new String(obj.toString().getBytes("UTF-8"),"UTF-8"))+"',");            command.append("'"+convertUml(obj.toString())+"',"); 
        else 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,");         else command.append("NULL,");
      }       }
      obj = row.get(row.size() - 1);       obj = row.get(row.size() - 1);
      if (obj != null && !(obj instanceof ArrayList))       if (obj != null && !(obj instanceof ArrayList))
      command.append("'"+convertUml(new String(obj.toString().getBytes("UTF-8"),"UTF-8"))+"')");          command.append("'"+convertUml(obj.toString())+"')"); 
       else        else
       if(obj!=null&&   obj instanceof ArrayList)        if(obj!=null&&   obj instanceof ArrayList)
        command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"')");         //command.append(obj.toString()+")");         command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"')");         //command.append(obj.toString()+")");
        else command.append("NULL)");         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)
Line 462  class Convert Line 722  class Convert
       // 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);
       stm.executeUpdate(command.toString());        for (int k = 0; k < row.size(); ++k)
         {
           obj = row.get(k);
           if (obj instanceof ArrayList)
             obj = ((List) obj).get(0);
           String str = (obj == null) ? "NULL" : obj.toString();
           if (!str.equals("NULL"))
             pstm.setString(k + 1, str);
           else
             pstm.setNull(k + 1, Types.NULL);
         }
         pstm.execute();
         //stm.executeUpdate(command.toString());
         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 while loop    
          return command;
     }  
  } catch(Exception e)   
    {  
      System.out.println("Error while connecting to database "+ e);  
      dialog.setVisible(false);  
        dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));  
          FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));  
          java.io.ByteArrayOutputStream b = new java.io.ByteArrayOutputStream();  
          java.io.PrintStream stream = new java.io.PrintStream(b);  
          stream.print(command+"\n\n");  
          e.printStackTrace(stream);  
          FM2SQL.showErrorDialog(b.toString(), "Error occured !");  
        
    }  
      dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));  
      FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));  
   
      dialog.setVisible(false);   
   }    }
   
  public static String convertText(String newName)   public static String convertText(String newName)
Line 493  class Convert Line 748  class Convert
     StringBuffer alterMe = new StringBuffer(newName.trim().toLowerCase());      StringBuffer alterMe = new StringBuffer(newName.trim().toLowerCase());
     int length = alterMe.length();      int length = alterMe.length();
     int j = 0;      int j = 0;
       int index = alterMe.indexOf(".fp5");
       if (index >= 0)
       {
         alterMe.delete(index, index + 4);
         length = length - 4;
       }
   
     while (j < length)      while (j < length)
     {       { 
       if (alterMe.charAt(j) == ' ')        if (alterMe.charAt(j) == ' ')
       {        {
         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) j=j+1;          if (j < length - 1)
           }            j = j + 1;
         else        } else if (alterMe.charAt(j) == 'ö')
          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) j=j+1;          if (j < length - 1)
               }            j = j + 1;
         else        } else if (alterMe.charAt(j) == 'ü')
          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) j=j+1;          if (j < length - 1)
               }            j = j + 1;
         else        } else if (alterMe.charAt(j) == 'ß')
     if (alterMe.charAt(j) == 'ß')  
     {      {
       alterMe.setCharAt(j, 's');        alterMe.setCharAt(j, 's');
       alterMe.insert(j + 1, "s");        alterMe.insert(j + 1, "s");
Line 560  class Convert Line 815  class Convert
     {      {
       alterMe.setCharAt(j, '_');        alterMe.setCharAt(j, '_');
   
         } else if (alterMe.charAt(j) == '?')
         {
           // changed ? to _ because of update statement
           alterMe.setCharAt(j, '_');
           // length = length + 1;
           // j=j+1;
           System.out.println(alterMe);
         } else if (alterMe.charAt(j) == '.')
         {
           if (j == length - 1)
           {
             alterMe.delete(j, j);
             length--;
           } else
             alterMe.setCharAt(j, '_');
     }      }
   
     ++j;      ++j;
   }    }
     return alterMe.toString();      return alterMe.toString();
   }    }
   public static String convertUml(String newName)    public static String convertToEntities(String newName)
    {     {
      StringBuffer alterMe = new StringBuffer(newName.trim());       StringBuffer alterMe = new StringBuffer(newName.trim());
      int length = alterMe.length();       int length = alterMe.length();
      int j = 0;       int j = 0;
           
       while (j < length)
       {
   
         if (alterMe.charAt(j) == '>')
         {
           alterMe.setCharAt(j, '&');
           alterMe.insert(j + 1, "gt;");
           length = length + 2;
           if (j < length - 1)
             j = j + 1;
   
         } else if (alterMe.charAt(j) == '<')
         {
           alterMe.setCharAt(j, '&');
           alterMe.insert(j + 1, "lt;");
           length = length + 2;
           if (j < length - 1)
             j = j + 1;
   
         }
         ++j;
       }
       return alterMe.toString();
     }
     public static String convertUml(String newName)
     {
       StringBuffer alterMe = new StringBuffer(newName.trim());
       int length = alterMe.length();
       int j = 0;
           
      while (j < length)       while (j < length)
      {        { 
Line 581  class Convert Line 880  class Convert
          alterMe.setCharAt(j, '\\');           alterMe.setCharAt(j, '\\');
          alterMe.insert(j + 1, "'");           alterMe.insert(j + 1, "'");
          length = length + 1;           length = length + 1;
          if(j<length-1) j=j+1;          if (j < length - 1)
             j = j + 1;
        }         }
     /*   else      /*   else
        if (alterMe.charAt(j) == '"')         if (alterMe.charAt(j) == '"')
Line 680  class Convert Line 980  class Convert
     {      {
       boolean finished = false;        boolean finished = false;
       // parse string and build document tree        // parse string and build document tree
       Node  root = new Xparse().parse(sb.toString());      Xparse parser = new Xparse();
       parser.changeEntities = true;
       Node root = parser.parse(sb.toString());
        // printContents(root);         // printContents(root);
       Vector databases= new Vector();        Vector databases= new Vector();
       Vector tables = new Vector();        Vector tables = new Vector();
       Vector layouts = new Vector();        Vector layouts = new Vector();
       Vector selects = new Vector();        Vector selects = new Vector();
       Vector creates = new Vector();        Vector creates = new Vector();
       Vector ids = new Vector();
       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) throw new Error("parse error source tag missing");        if (tempNode == null)
           throw new Error("parse error source tag missing");
         System.out.println(tempNode.name);          System.out.println(tempNode.name);
         int length =countNodes(tempNode);          int length =countNodes(tempNode);
         for (int i = 1; i <= length; i++)          for (int i = 1; i <= length; i++)
Line 702  class Convert Line 1007  class Convert
           layouts = new Vector();            layouts = new Vector();
           selects = new Vector();            selects = new Vector();
           creates = new Vector();            creates = 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[] { 1, 1, i, 1 });
           Node node1 = root.find("convert/source/database/user", new int[] { 1, 1, i, 1, 1 });            Node node1 = root.find("convert/source/database/user", new int[] { 1, 1, i, 1, 1 });
           Node node2 = root.find("convert/source/database/password", new int[] { 1, 1, i, 1, 1 });            Node node2 = root.find("convert/source/database/password", new int[] { 1, 1, i, 1, 1 });
           Node node3 = root.find("convert/source/database", new int[] { 1, 1, i});            Node node3 = root.find("convert/source/database", new int[] { 1, 1, i});
           if(node3== null) throw new Error("parse error database tag missing");          Node nodeMode = root.find("convert/source/database/mode", new int[] { 1, 1, i, 1, 1 });
           if(node==null) throw new Error("parse error url tag missing");  
           if(node1==null) throw new Error("parse error user tag missing");          if (node3 == null)
           if(node2==null) throw new Error("parse error password tag missing");            throw new Error("parse error database tag missing");
           if (node == null)
             throw new Error("parse error url tag missing");
           if (node1 == null)
             throw new Error("parse error user tag missing");
           if (node2 == null)
             throw new Error("parse error password tag missing");
           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 720  class Convert Line 1031  class Convert
           System.out.println(node.name + " " + node.getCharacters());            System.out.println(node.name + " " + node.getCharacters());
           System.out.println(node1.name + " " + node1.getCharacters());            System.out.println(node1.name + " " + node1.getCharacters());
           System.out.println(node2.name + " " + node2.getCharacters());            System.out.println(node2.name + " " + node2.getCharacters());
                  String modeString = "";
           if (nodeMode == null)
             modeString = "convert";
           else
             modeString = nodeMode.getCharacters();
           if (modeString.equals("convert"))
             mode = DataBase.CONVERT_MODE;
           else if (modeString.equals("append"))
             mode = DataBase.APPEND_MODE;
           else if (modeString.equals("update"))
             mode = DataBase.UPDATE_MODE;
        //   if(node3!=null)         //   if(node3!=null)
          // System.out.println(node3.name);           // System.out.println(node3.name);
                       
Line 739  class Convert Line 1060  class Convert
             System.out.println(node5.name + " " + node5.getCharacters());              System.out.println(node5.name + " " + node5.getCharacters());
             if(node6!=null)              if(node6!=null)
             System.out.println(node6.name + " " + node6.getCharacters());              System.out.println(node6.name + " " + node6.getCharacters());
             if(node4==null) throw new Error("parse error table tag missing");            if (node4 == null)
               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 missing");
             // if(node6==null) throw new Error("parse error create tag 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");
             if(name==null) throw new Error("parse error required table tag attribute name missing");            String id = (String) node4.attributes.get("id");
             if(layout==null) layout ="";            System.out.println("id was " + id);
             if(name.equals("")) throw new Error("parse error table tag attribute must not be empty");            if (name == null)
               throw new Error("parse error required table tag attribute name missing");
             if (layout == null)
               layout = "";
             if (id == null)
               id = "";
             if (name.equals(""))
               throw new Error("parse error table tag attribute must not be empty");
             tables.add(name);              tables.add(name);
             layouts.add(layout);              layouts.add(layout);
             ids.add(id);
             String query = (node5==null) ? "":node5.getCharacters();               String query = (node5==null) ? "":node5.getCharacters(); 
             if(query.equals("")) System.err.println("Warning empty select tag or  select tag missing !!");            if (query.equals(""))
               System.err.println("Warning empty select tag or  select tag missing !!");
             query = (query.equals("")) ? "select * from "+database.getQC()+name+database.getQC():query;              query = (query.equals("")) ? "select * from "+database.getQC()+name+database.getQC():query;
             selects.add(query);              selects.add(query);
             if(node6!=null) creates.add(node6.getCharacters().trim());            if (node6 != null)
               creates.add(node6.getCharacters().trim());
              else               else
               creates.add("");                creates.add("");
                           
           }            }
           databases.add(new DataBase(database, tables, layouts, selects,creates));          databases.add(new DataBase(database, tables, layouts, selects, creates, ids, mode));
         }          }
         DBBean database = new DBBean();          DBBean database = new DBBean();
         // parse dataBase          // parse dataBase
Line 775  class Convert Line 1107  class Convert
        for (Iterator iter = databases.iterator(); iter.hasNext();)         for (Iterator iter = databases.iterator(); iter.hasNext();)
       {        {
         DataBase db = (DataBase) iter.next();          DataBase db = (DataBase) iter.next();
         convertBatch(db.bean,database,db.tables,db.layouts,db.selects,db.creates);          if (mode != DataBase.UPDATE_MODE)
             convertBatch(db.bean, database, db.tables, db.layouts, db.selects, db.creates, db.ids,mode);
           else
             update(db.bean.url, database.url, db.tables, db.layouts, db.selects, db.creates, db.ids, mode);
                   
       }        }
         // printContents(node3);          // printContents(node3);
Line 891  class Convert Line 1226  class Convert
                   // System.out.print((char)c);                    // System.out.print((char)c);
                 }                  }
                                 
             } catch(Exception e) { e.printStackTrace();}       } catch (Exception e)
       {
         e.printStackTrace();
       }
       
        boolean finished = false;         boolean finished = false;
        // parse string and build document tree         // parse string and build document tree
        Node  root = new Xparse().parse(sb.toString());      Xparse parser = new Xparse();
       parser.changeEntities = true;
       Node root = parser.parse(sb.toString());
         // printContents(root);          // printContents(root);
        Vector databases= new Vector();         Vector databases= new Vector();
        Vector tables = new Vector();         Vector tables = new Vector();
        Vector layouts = new Vector();         Vector layouts = new Vector();
        Vector selects = new Vector();         Vector selects = new Vector();
        Vector creates = new Vector();         Vector creates = new Vector();
       Vector ids = new Vector();
             
       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) throw new Error("parse error source tag missing");        if (tempNode == null)
           throw new Error("parse error source tag missing");
          System.out.println(tempNode.name);           System.out.println(tempNode.name);
          int length =countNodes(tempNode);           int length =countNodes(tempNode);
          for (int i = 1; i <= length; i++)           for (int i = 1; i <= length; i++)
Line 917  class Convert Line 1260  class Convert
            layouts = new Vector();             layouts = new Vector();
            selects = new Vector();             selects = new Vector();
            creates = new Vector();             creates = 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[] { 1, 1, i, 1 });
            Node node1 = root.find("convert/source/database/user", new int[] { 1, 1, i, 1, 1 });             Node node1 = root.find("convert/source/database/user", new int[] { 1, 1, i, 1, 1 });
            Node node2 = root.find("convert/source/database/password", new int[] { 1, 1, i, 1, 1 });             Node node2 = root.find("convert/source/database/password", new int[] { 1, 1, i, 1, 1 });
            Node node3 = root.find("convert/source/database", new int[] { 1, 1, i});             Node node3 = root.find("convert/source/database", new int[] { 1, 1, i});
            if(node3== null) throw new Error("parse error database tag missing");          Node nodeMode = root.find("convert/source/database/mode", new int[] { 1, 1, i, 1, 1 });
            if(node==null) throw new Error("parse error url tag missing");  
            if(node1==null) throw new Error("parse error user tag missing");          if (node3 == null)
            if(node2==null) throw new Error("parse error password tag missing");            throw new Error("parse error database tag missing");
           if (node == null)
             throw new Error("parse error url tag missing");
           if (node1 == null)
             throw new Error("parse error user tag missing");
           if (node2 == null)
             throw new Error("parse error password tag missing");
            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 935  class Convert Line 1284  class Convert
            System.out.println(node.name + " " + node.getCharacters());             System.out.println(node.name + " " + node.getCharacters());
            System.out.println(node1.name + " " + node1.getCharacters());             System.out.println(node1.name + " " + node1.getCharacters());
            System.out.println(node2.name + " " + node2.getCharacters());             System.out.println(node2.name + " " + node2.getCharacters());
           String modeString = "";
           if (nodeMode == null)
             modeString = "convert";
           else
             modeString = nodeMode.getCharacters();
           if (modeString.equals("convert"))
             mode = DataBase.CONVERT_MODE;
           else if (modeString.equals("append"))
             mode = DataBase.APPEND_MODE;
           else if (modeString.equals("update"))
             mode = DataBase.UPDATE_MODE;
                 
         //   if(node3!=null)          //   if(node3!=null)
           // System.out.println(node3.name);            // System.out.println(node3.name);
Line 954  class Convert Line 1314  class Convert
              System.out.println(node5.name + " " + node5.getCharacters());               System.out.println(node5.name + " " + node5.getCharacters());
              if(node6!=null)               if(node6!=null)
              System.out.println(node6.name + " " + node6.getCharacters());               System.out.println(node6.name + " " + node6.getCharacters());
              if(node4==null) throw new Error("parse error table tag missing");            if (node4 == null)
               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 missing");
              // if(node6==null) throw new Error("parse error create tag 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");
              if(name==null) throw new Error("parse error required table tag attribute name missing");            String id = (String) node4.attributes.get("id");
              if(layout==null) layout ="";            System.out.println("id was " + id);
              if(name.equals("")) throw new Error("parse error table tag attribute must not be empty");  
             if (name == null)
               throw new Error("parse error required table tag attribute name missing");
             if (layout == null)
               layout = "";
             if (id == null)
               id = "";
             if (name.equals(""))
               throw new Error("parse error table tag attribute must not be empty");
              tables.add(name);               tables.add(name);
              layouts.add(layout);               layouts.add(layout);
             ids.add(id);
              String query = (node5==null) ? "":node5.getCharacters();                String query = (node5==null) ? "":node5.getCharacters(); 
              if(query.equals("")) System.err.println("Warning empty select tag or  select tag missing !!");            if (query.equals(""))
               System.err.println("Warning empty select tag or  select tag missing !!");
              query = (query.equals("")) ? "select * from "+database.getQC()+name+database.getQC():query;               query = (query.equals("")) ? "select * from "+database.getQC()+name+database.getQC():query;
              selects.add(query);               selects.add(query);
              if(node6!=null) creates.add(node6.getCharacters().trim());            if (node6 != null)
               creates.add(node6.getCharacters().trim());
               else                else
                creates.add("");                 creates.add("");
                           
            }             }
            databases.add(new DataBase(database, tables, layouts, selects,creates));          databases.add(new DataBase(database, tables, layouts, selects, creates, ids, mode));
          }           }
          DBBean database = new DBBean();           DBBean database = new DBBean();
          // parse dataBase           // parse dataBase
Line 986  class Convert Line 1358  class Convert
          System.out.println(url);           System.out.println(url);
          database.setURL(url.trim());           database.setURL(url.trim());
          database.setUserAndPasswd(user.trim(), password.trim());           database.setUserAndPasswd(user.trim(), password.trim());
          databases.add(new DataBase(database,null,null,null,null));        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();)
        {         {
Line 1004  class Convert Line 1376  class Convert
        return databases;         return databases;
       }        }
   
   
     private static int countNodes(Node tempNode)      private static int countNodes(Node tempNode)
     {      {
       int length = 0;        int length = 0;
       for(int i=0;i<tempNode.contents.v.size();++i)    {      for (int i = 0; i < tempNode.contents.v.size(); ++i)
       {
       Node node=(Node)tempNode.contents.v.elementAt(i);        Node node=(Node)tempNode.contents.v.elementAt(i);
       if(node.type.equals("element"))        if(node.type.equals("element"))
       {        {
         if(node.name.equals("database"))length++;          if (node.name.equals("database"))
         if(node.name.equals("table"))length++;            length++;
           if (node.name.equals("table"))
             length++;
       }        }
               
             // System.out.println(((Node)tempNode.contents.v.elementAt(i)).attributes+" "+i);              // System.out.println(((Node)tempNode.contents.v.elementAt(i)).attributes+" "+i);
Line 1023  class Convert Line 1397  class Convert
     private static void printContents(Node root)      private static void printContents(Node root)
     {      {
                   
         
       Vector contents=(root.index==null)? root.contents.v:root.index.v;        Vector contents=(root.index==null)? root.contents.v:root.index.v;
       for (int i=0;i<contents.size();++i)        for (int i=0;i<contents.size();++i)
       {        {
Line 1036  class Convert Line 1409  class Convert
         }          }
         // System.out.println(n.type);          // System.out.println(n.type);
               
           
         
       }        }
     }      }
     public static void readXMLFile(String xmlFile)      public static void readXMLFile(String xmlFile)
Line 1057  class Convert Line 1428  class Convert
              // System.out.print((char)c);               // System.out.print((char)c);
            }             }
            parseXMLConfig(sb);             parseXMLConfig(sb);
        } catch(Exception e) { e.printStackTrace();}       } catch (Exception e)
       {
         e.printStackTrace();
       }
     }      }
 public static class DataBase   public static class DataBase 
 {  {
Line 1066  public static class DataBase Line 1440  public static class DataBase
   Vector selects;    Vector selects;
   Vector layouts;    Vector layouts;
   Vector tables;    Vector tables;
   public DataBase(DBBean bean,Vector tables,Vector layouts,Vector selects,Vector creates)      Vector ids;
       final static int CONVERT_MODE = 1;
       final static int APPEND_MODE = 2;
       final static int UPDATE_MODE = 3;
       int mode = -1;
   
       public DataBase(DBBean bean, Vector tables, Vector layouts, Vector selects, Vector creates, Vector ids, int mode)
   {    {
     this.bean = bean;      this.bean = bean;
     this.tables = tables;      this.tables = tables;
     this.layouts = layouts;      this.layouts = layouts;
     this.selects = selects;      this.selects = selects;
     this.creates = creates;      this.creates = creates;
         this.ids = ids;
         this.mode = mode;
         this.bean.setIDVector(ids);
   }    }
   public void exportToXML(BufferedWriter buffr) throws Exception    public void exportToXML(BufferedWriter buffr) throws Exception
    {     {
         // ids=bean.getIDVector();
      buffr.write("    <database>\n");       buffr.write("    <database>\n");
      buffr.write("      <url>"+bean.url+"</url>\n");       buffr.write("      <url>"+bean.url+"</url>\n");
      buffr.write("      <user>"+bean.user+"</user>\n");       buffr.write("      <user>"+bean.user+"</user>\n");
      buffr.write("      <password>"+bean.passwd+"</password>\n");       buffr.write("      <password>"+bean.passwd+"</password>\n");
         String modeString = "";
         if (mode == CONVERT_MODE)
           modeString = "convert";
         else if (mode == APPEND_MODE)
           modeString = "append";
         else if (mode == UPDATE_MODE)
           modeString = "update";
   
         buffr.write("      <mode>" + modeString + "</mode>\n");
      int index = 0;       int index = 0;
      while(index<tables.size())       while(index<tables.size())
      {       {
Line 1088  public static class DataBase Line 1480  public static class DataBase
        String layout=(String)layouts.get(index);         String layout=(String)layouts.get(index);
        String select=(String)selects.get(index);         String select=(String)selects.get(index);
        String create=(String)creates.get(index);         String create=(String)creates.get(index);
           String id = (String) ids.get(index);
         
        buffr.write("      <table name = \""+table+"\" layout = \""+layout+"\">\n");          buffr.write("      <table name = \"" + table + "\" layout = \"" + layout + "\" id = \"" + id + "\" >\n");
        buffr.write("         <select>"+select+"</select>\n");          buffr.write("         <select>" + convertToEntities(select) + "</select>\n");
        if(!create.equals(""))         if(!create.equals(""))
        buffr.write("         <create>"+create+"         </create>\n");          buffr.write("         <create>"+create+"         </create>\n"); 
        buffr.write("      </table>\n");         buffr.write("      </table>\n");
Line 1098  public static class DataBase Line 1491  public static class DataBase
      }       }
      buffr.write("    </database>\n");        buffr.write("    </database>\n"); 
    }     }
 public String toString() {return bean.url+" "+tables;}      public String toString()
       {
         return bean.url + " " + tables;
       }
   
 }  }
 public static String convertToUTF8(Object command)  public static String convertToUTF8(Object command)
Line 1116  public static String convertToUTF8(Objec Line 1512  public static String convertToUTF8(Objec
 }  }
   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")) file+=".xml";       if (!file.toLowerCase().endsWith(".xml"))
         file += ".xml";
     File f = new File(file);      File f = new File(file);
       
     FileOutputStream fout= new FileOutputStream(f);      FileOutputStream fout= new FileOutputStream(f);

Removed from v.1.1.1.1  
changed lines
  Added in v.1.34


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