Diff for /FM2SQL/Attic/Convert.java between versions 1.65 and 1.66

version 1.65, 2004/08/02 11:39:23 version 1.66, 2004/08/03 11:41:16
Line 29  import java.sql.PreparedStatement; Line 29  import java.sql.PreparedStatement;
 import java.sql.SQLException;  import java.sql.SQLException;
 import java.sql.Statement;  import java.sql.Statement;
 import java.sql.Types;  import java.sql.Types;
   import java.text.ParseException;
 import java.util.ArrayList;  import java.util.ArrayList;
 import java.util.Iterator;  import java.util.Iterator;
 import java.util.List;  import java.util.List;
Line 2000  class Convert Line 2001  class Convert
         {          {
           long startTime = System.currentTimeMillis();            long startTime = System.currentTimeMillis();
           int counter = -1;            int counter = -1;
             TreeSet linesToDelete = null;
             PreparedStatement delPSt = null;
           while (true)            while (true)
           {            {
             ++counter;              ++counter;
Line 2016  class Convert Line 2019  class Convert
             rowCount = vec.size();              rowCount = vec.size();
             // Deletion will work this way              // Deletion will work this way
             Vector deleted = new Vector(vec);              Vector deleted = new Vector(vec);
             TreeSet linesToDelete = new TreeSet(vecDest);              linesToDelete = new TreeSet(vecDest);
   
             TreeSet linesToAppend = new TreeSet(vec);              TreeSet linesToAppend = new TreeSet(vec);
             // remove all lines that are already in dest database              // remove all lines that are already in dest database
Line 2025  class Convert Line 2028  class Convert
             linesToDelete.removeAll(deleted);              linesToDelete.removeAll(deleted);
             System.out.println("linesToAppend " + linesToAppend + " " + vecDest + " " + destTableName);              System.out.println("linesToAppend " + linesToAppend + " " + vecDest + " " + destTableName);
             System.out.println("linesToDelete " + linesToDelete + " " + vecDest + " " + destTableName);              System.out.println("linesToDelete " + linesToDelete + " " + vecDest + " " + destTableName);
             // prepare new query for next chunk              System.out.println("ID LIST SIZE " + Math.round((double) myIds.size() / (double) numIntervalls) + " " + myIds.size());
             if (query.indexOf("where") > 0)              deltaID = (int) Math.round((double) myIds.size() / (double) numIntervalls);
               tempQuery = query + " and " + tempID + ">='" + vec.firstElement() + "' and " + tempID + "<='" + vec.lastElement() + "' order by " + tempID;  
             else  
               tempQuery = query + " where " + tempID + ">='" + vec.firstElement() + "' and " + tempID + "<='" + vec.lastElement() + "'"; // order by "+tempID;  
             System.out.println("tempQuery is now " + tempQuery + " order by " + tempID);  
             //  bean.makeQuery(tempQuery,vec.size());  
   
             ConversionProperties prop = getFieldNamesAndDestTableName(creates.get(tbIndex).toString(), query, names.get(tbIndex).toString());              ConversionProperties prop = getFieldNamesAndDestTableName(creates.get(tbIndex).toString(), query, names.get(tbIndex).toString());
             StringBuffer insCommand = createInsertCommand(prop.destTableName, prop.fieldNames);              StringBuffer insCommand = createInsertCommand(prop.destTableName, prop.fieldNames);
             StringBuffer updCommand  = createUpdateCommand(prop.destTableName, prop.fieldNames, tempID);              StringBuffer updCommand  = createUpdateCommand(prop.destTableName, prop.fieldNames, tempID);
             StringBuffer delCommand  = createDeleteCommand(destTableName,tempID);              StringBuffer delCommand  = createDeleteCommand(destTableName,tempID);
             PreparedStatement insPst = beanDest.getConnection().prepareStatement(insCommand.toString());              PreparedStatement insPst = beanDest.getConnection().prepareStatement(insCommand.toString());
             PreparedStatement updPst = beanDest.getConnection().prepareStatement(updCommand.toString());              PreparedStatement updPst = beanDest.getConnection().prepareStatement(updCommand.toString());
             PreparedStatement delPSt = beanDest.getConnection().prepareStatement(delCommand.toString());              delPSt = beanDest.getConnection().prepareStatement(delCommand.toString());
             Vector[] vectors = bean.getQueryData(tempQuery, vec.size());  
             int idIndex = vectors[1].indexOf(idField);  
             // todo arraylist code has to be added  
             for (Iterator iter = vectors[0].iterator(); iter.hasNext();)  
             {  
               Vector line = (Vector) iter.next();  
               Object lineIDIndex = line.get(idIndex);  
               System.out.println("line " + linesToDelete.contains(line.get(idIndex))+" "+lineIDIndex);  
               if (linesToAppend.contains(lineIDIndex))  
               {  
                 for (int l = 0; l < line.size(); ++l)  
                 {  
                   Object obj = line.get(l);  
                   if (obj != null)  
                     insPst.setString(l + 1, obj.toString());  
                   else  
                     insPst.setNull(l + 1, Types.NULL);  
                 }  
                 insPst.execute();  
                 
               }     
                               
               else // update              if (vec.size() <= numIntervalls)
                 {                  {
                   for (int l = 0; l < line.size(); ++l)                endIndex = 0;
                 deltaID = vec.size();
               }
               for (int k = 0; k < vec.size() - deltaID; k = k + deltaID)
                         {                          {
                           Object obj = line.get(l);                System.out.println(vec.get(k) + " " + vec.get(k + deltaID) + " " + vec.lastElement());
                           if (obj != null)                if (query.indexOf("where") > 0)
                             updPst.setString(l + 1, obj.toString());                  tempQuery = query + " and " + tempID + ">='" + vec.get(k) + "' and " + tempID + "<='" + vec.get(k + deltaID) + "'";
                           else                            else
                             updPst.setNull(l + 1, Types.NULL);                  tempQuery = query + " where " + tempID + ">='" + vec.get(k) + "' and " + tempID + "<='" + vec.get(k + deltaID) + "'";
                         }                System.out.println(tempQuery);
                         updPst.setString(line.size()+1,line.get(idIndex).toString());  
                         updPst.execute();  
         
                 }  
             }  
              
           //  delPSt.setString(1,"6");  
           //  delPSt.setString(1,"7");  
           //  delPSt.setString(1,"8");  
             
             //delPSt.execute();  
             System.out.println();  
             // System.out.println("ID LIST SIZE " + 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());  
             deltaID = (int) Math.round((double) myIds.size() / (double) numIntervalls);  
             System.out.println("deltaID " + deltaID);  
             //System.out.println();  
             
             if (true)  
               return;  
   
             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();  
   
             if (dialog != null)              if (dialog != null)
               dialog.title.setText(" Deleting table data ...");                  dialog.title.setText("Reading table data ...");
   
             int j = -1;  
   
             Vector row = null;                // bean.makeQuery(tempQuery, deltaID);
             command = new StringBuffer();                if (dialog != null)
                   dialog.title.setText("Writing table data ...");
   
             command.append("DELETE FROM");                performSynchronize(idField, vec, tempQuery, linesToDelete, linesToAppend, insPst, updPst, delPSt, deltaID);
             command.append(beanDest.getQC());                // System.out.println("ID LIST SIZE " + Math.round((double) myIds.size() / (double) numIntervalls) + " " + myIdsDest.size());
             command.append(destTableName);                endIndex = k + deltaID;
             //command.append(convertText((String) names.get(tbIndex)));              }
             command.append(beanDest.getQC());              System.out.println(endIndex);
             int size = bean.getColumnNames().size();              //all data written ? if not write last chunk of data
             command.append("WHERE " + convertText(ids.get(tbIndex).toString()) + " =  ?");              if (endIndex == vec.size() - 1)
             PreparedStatement pstm = beanDest.getConnection().prepareStatement(command.toString());                System.out.println("fits");
             System.out.println(command + " " + tbIndex);              else
             //int rowCount = bean.getRowCount(query);  
             //        int idIndex = bean.getColumnNames().indexOf(ids.get(tbIndex));  
 /*            while (true)  
             {              {
                 System.out.println(" last intervall from " + vec.get(endIndex) + " " + vec.lastElement());
   
               ++j;                if (query.indexOf("where") > 0)
               if (j == linesToDelete.size())                  tempQuery = query + " and " + tempID + ">='" + vec.get(endIndex) + "' and " + tempID + "<='" + vec.lastElement() + "'";
                 break;                else
               //print rows                  tempQuery = query + " where " + tempID + ">='" + vec.get(endIndex) + "' and " + tempID + "<='" + vec.lastElement() + "'";
               pstm.setString(1, linesToDelete.get(j).toString());                System.out.println(tempQuery);
               System.out.println(pstm.toString());  
               pstm.execute();  
               if (dialog != null)                if (dialog != null)
                 dialog.progress.setValue((int) (((double) (j + 1) / (double) rowCount) * 100.0));                  dialog.title.setText("Reading table data ...");
               command = null;                bean.makeQuery(tempQuery, 0);
                 if (dialog != null)
                   dialog.title.setText("Writing table data ...");
                 performSynchronize(idField, vec, tempQuery, linesToDelete, linesToAppend, insPst, updPst, delPSt, deltaID);
                 // 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)
               tempQuery = query + " and " + tempID + ">'" + vec.lastElement() + "'";                tempQuery = query + " and " + tempID + ">'" + vec.lastElement() + "'";
             else              else
               tempQuery = query + " where " + tempID + ">'" + vec.lastElement() + "'";                tempQuery = query + " where " + tempID + ">'" + vec.lastElement() + "'";
 */  
           } //to outer while            }
             for (Iterator iter = linesToDelete.iterator(); iter.hasNext();)
             {
               String id = (String) iter.next();
               delPSt.setString(1, id);
               delPSt.execute();
   
             }
   
             long endTime = System.currentTimeMillis();
             System.out.println("Time for incremental synchronize  elapsed " + (endTime - startTime));
         } // to idfield if            } // to idfield if  
       } // table loop        } // table loop
   
Line 2171  class Convert Line 2126  class Convert
   
       dialog.setVisible(false);        dialog.setVisible(false);
     }      }
     }
     private static void performSynchronize(
       String idField,
       Vector vec,
       String tempQuery,
       TreeSet linesToDelete,
       TreeSet linesToAppend,
       PreparedStatement insPst,
       PreparedStatement updPst,
       PreparedStatement delPSt,
       int deltaID)
       throws SQLException, ParseException
     {
       Vector[] vectors = bean.getQueryData(tempQuery, deltaID);
       int idIndex = vectors[1].indexOf(idField);
       // todo arraylist code has to be added
       for (Iterator iter = vectors[0].iterator(); iter.hasNext();)
       {
         Vector line = (Vector) iter.next();
         Object lineIDIndex = line.get(idIndex);
         System.out.println("line " + linesToAppend.contains(line.get(idIndex)) + " " + lineIDIndex);
         if (linesToAppend.contains(lineIDIndex))
         {
           for (int l = 0; l < line.size(); ++l)
           {
             Object obj = line.get(l);
             if (obj != null)
               insPst.setString(l + 1, obj.toString());
             else
               insPst.setNull(l + 1, Types.NULL);
           }
           insPst.execute();
   
         } else // update
           {
           for (int l = 0; l < line.size(); ++l)
           {
             Object obj = line.get(l);
             if (obj != null)
               updPst.setString(l + 1, obj.toString());
             else
               updPst.setNull(l + 1, Types.NULL);
           }
           updPst.setString(line.size() + 1, line.get(idIndex).toString());
           updPst.execute();
   
         }
       }
   
   } // to method    } // to method
   
   /**    /**

Removed from v.1.65  
changed lines
  Added in v.1.66


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