Diff for /FM2SQL/Attic/Convert.java between versions 1.14 and 1.27

version 1.14, 2004/01/19 08:24:37 version 1.27, 2004/02/10 12:52:30
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 25  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 numIntervalls = 10;
   public static void main(String args[])    public static void main(String args[])
   {    {
 /*    try  /*    try
Line 382  class Convert Line 381  class Convert
           dialog.title.setText("Writing table data ...");            dialog.title.setText("Writing table data ...");
   
         int j = -1;          int j = -1;
       
         Vector row = null;          Vector row = null;
         command = new StringBuffer();          command = new StringBuffer();
   
Line 393  class Convert Line 393  class Convert
   
         int size = bean.getColumnNames().size();          int size = bean.getColumnNames().size();
         for (int i = 0; i < size - 1; ++i)          for (int i = 0; i < size - 1; ++i)
           command.append(convertText((String)bean.getColumnNames().get(i))+" = ? ,");            command.append(beanDest.getQC()+convertText((String)bean.getColumnNames().get(i))+beanDest.getQC()+" = ? ,");
         command.append(convertText((String)bean.getColumnNames().get(size-1))+" = ? ");          command.append(convertText((String)bean.getColumnNames().get(size-1))+" = ? ");
         command.append("WHERE "+ids.get(tbIndex)+ " =  ?");          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);
Line 442  class Convert Line 442  class Convert
               pstm.setNull(k + 1, Types.NULL);                pstm.setNull(k + 1, Types.NULL);
           }            }
          pstm.setString(row.size()+1,row.get(idIndex).toString());           pstm.setString(row.size()+1,row.get(idIndex).toString());
                  System.out.println(pstm.toString());                   //System.out.println(pstm.toString());
                 // System.exit(0);                  // System.exit(0);
           pstm.execute();            pstm.execute();
           //stm.executeUpdate(command.toString());            //stm.executeUpdate(command.toString());
Line 456  class Convert Line 456  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)
         {
       dialog.setVisible(false);        dialog.setVisible(false);
       dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));        dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
       FM2SQL.fmInstance.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");
Line 466  class Convert Line 469  class Convert
       FM2SQL.showErrorDialog(b.toString(), "Error occured !");        FM2SQL.showErrorDialog(b.toString(), "Error occured !");
   
     }      }
       if (dialog != null)
       {
     dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));      dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
     FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));      FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
   
     dialog.setVisible(false);      dialog.setVisible(false);
   }    }
   
     }
   
   
   
   public static void  convert(String source,String destination,Vector names,Vector layouts,Vector selects,Vector creates,int mode) throws Exception    public static void  convert(String source,String destination,Vector names,Vector layouts,Vector selects,Vector creates,Vector ids,int mode) throws Exception
   {    {
    FM2SQL.ProgressDialog dialog = new  FM2SQL.ProgressDialog(FM2SQL.fmInstance);     FM2SQL.ProgressDialog dialog = new  FM2SQL.ProgressDialog(FM2SQL.fmInstance);
    dialog.setTitle("Conversion running ...");     dialog.setTitle("Conversion running ...");
Line 482  class Convert Line 489  class Convert
    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));
        java.util.TreeSet myIds = new TreeSet();
      int deltaID = 1;
      String idField = "";
    dialog.thread=Thread.currentThread();     dialog.thread=Thread.currentThread();
    // setting user and passwd      // setting user and passwd 
    bean.setUserAndPasswd(user,passwd);     bean.setUserAndPasswd(user,passwd);
Line 504  class Convert Line 514  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 527  class Convert Line 538  class Convert
         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();
           if (idField != "")
           {
             myIds = bean.getIDVector(ids.get(tbIndex).toString(), (String) names.get(tbIndex), query);
             System.out.println("ID LIST SIZE " + Math.round((double) myIds.size() / (double) numIntervalls) + " " + myIds.size());
             deltaID = (int) Math.round((double) myIds.size() / (double) numIntervalls);
           }
       } catch (Exception e)        } catch (Exception e)
         {          {
           System.out.println(e);
           continue;            continue;
         }          }
         //beanDest.setConnection("jdbc:postgresql://erebos/test3");          //beanDest.setConnection("jdbc:postgresql://erebos/test3");
Line 631  class Convert Line 651  class Convert
     command.append("?)");      command.append("?)");
     PreparedStatement pstm = beanDest.getConnection().prepareStatement(command.toString());      PreparedStatement pstm = beanDest.getConnection().prepareStatement(command.toString());
     System.out.println(command);      System.out.println(command);
     int rowCount= bean.getRowCount(query);      int rowCount= (idField!="") ? myIds.size():bean.getRowCount(query);
       Vector vec = new Vector(myIds);
       int endIndex = -1;
       String tempQuery="";String tempID = bean.getQC()+idField+bean.getQC();
       if (!idField.equals(""))
       {
         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);
           dialog.title.setText("Reading table data ...");
     
           bean.makeQuery(tempQuery, 0);
           dialog.title.setText("Writing table data ...");
     
           command = writeDatainDestTable(dialog, command, k, pstm, rowCount);
           endIndex = k + deltaID;
         }
         if ((vec.size() - 1) % numIntervalls == 0)
           System.out.println("fits");
         else
         {
           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);
           dialog.title.setText("Reading table data ...");
            bean.makeQuery(tempQuery, 0);
           dialog.title.setText("Writing table data ...");
           command = writeDatainDestTable(dialog, command, j, pstm, rowCount);
   
           System.out.println(" last intervall from " + vec.get(endIndex) + " " + vec.lastElement());
           command = writeDatainDestTable(dialog, command, endIndex, pstm, rowCount);
         }
       } else
       {
         bean.makeQuery(query, 0);
         command = writeDatainDestTable(dialog, command, j, pstm, rowCount);
       }
     }
    } 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); 
     }
     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++;
Line 685  class Convert Line 770  class Convert
       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 786  class Convert Line 853  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) == '.')      else if (alterMe.charAt(j) == '.')
     {      {
       if(j==length-1)        if(j==length-1)
Line 978  class Convert Line 1053  class Convert
           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});
                 Node nodeMode = root.find("convert/source/database/mode/", new int[] {1, 1, i, 1,1});                  Node nodeMode = root.find("convert/source/database/mode", new int[] {1, 1, i, 1,1});
   
           if(node3== null) throw new Error("parse error database tag missing");            if(node3== null) throw new Error("parse error database tag missing");
           if(node==null) throw new Error("parse error url tag missing");            if(node==null) throw new Error("parse error url tag missing");
Line 1063  class Convert Line 1138  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();
           if(mode!=DataBase.UPDATE_MODE)
         convertBatch(db.bean,database,db.tables,db.layouts,db.selects,db.creates,mode);          convertBatch(db.bean,database,db.tables,db.layouts,db.selects,db.creates,mode);
           else
           update(db.bean.url,database.url,db.tables,db.layouts,db.selects,db.creates,db.ids,mode);
                   
       }        }
         // printContents(node3);          // printContents(node3);

Removed from v.1.14  
changed lines
  Added in v.1.27


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