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

version 1.69, 2004/08/06 11:15:41 version 1.78, 2004/09/22 11:14:10
Line 26  import java.io.PrintStream; Line 26  import java.io.PrintStream;
 import java.io.UnsupportedEncodingException;  import java.io.UnsupportedEncodingException;
 import java.net.URL;  import java.net.URL;
 import java.sql.PreparedStatement;  import java.sql.PreparedStatement;
   import java.sql.ResultSet;
 import java.sql.SQLException;  import java.sql.SQLException;
 import java.sql.Statement;  import java.sql.Statement;
 import java.sql.Types;  import java.sql.Types;
Line 38  import java.util.StringTokenizer; Line 39  import java.util.StringTokenizer;
 import java.util.TreeSet;  import java.util.TreeSet;
 import java.util.Vector;  import java.util.Vector;
   
   import javax.swing.JDialog;
   import javax.swing.JLabel;
   import javax.swing.JPanel;
   
 import com.exploringxml.xml.Node;  import com.exploringxml.xml.Node;
 import com.exploringxml.xml.Xparse;  import com.exploringxml.xml.Xparse;
   
   
 class Convert  class Convert
 {  {
   /**Helper class for index creation    /**Helper class for index creation
Line 77  class Convert Line 81  class Convert
   static boolean batchRun = false;    static boolean batchRun = false;
   static Vector databases = new Vector();    static Vector databases = new Vector();
   final static int numHits = 5000;    final static int numHits = 5000;
   final static int numIntervalls = 2;    final static int numIntervalls = 4;
     static boolean debug = true;
   public static void main(String args[])    public static void main(String args[])
   {    {
     /*    try      /*    try
Line 102  class Convert Line 107  class Convert
     {      {
       e1.printStackTrace();        e1.printStackTrace();
     }      }
     PrintStream stream = new PrintStream(file);      PrintStream stream = new PrintStream(file, false);
     // System.setOut(stream);      if (!debug)
     //System.setErr(stream);      {
         System.setOut(stream);
         System.setErr(stream);
       }
     readXMLFile(args[0]);      readXMLFile(args[0]);
     if (!(new File(args[0]).exists()))      if (!(new File(args[0]).exists()))
       System.exit(0);        System.exit(0);
Line 1303  class Convert Line 1310  class Convert
           update(db.bean.url, database.url, db.tables, db.layouts, db.selects, db.creates, db.ids, mode);            update(db.bean.url, database.url, db.tables, db.layouts, db.selects, db.creates, db.ids, mode);
         else if (mode == DataBase.SYNCHRONIZE_MODE)          else if (mode == DataBase.SYNCHRONIZE_MODE)
         {          {
           user = bean.user;            Convert.user = db.bean.user;
           passwd = bean.passwd;            Convert.passwd =db.bean.passwd;
           userDest = database.user;            userDest = database.user;
           passwdDest = database.passwd;            passwdDest = database.passwd;
   
           synchronize(db.bean.url, database.url, db.tables, db.layouts, db.selects, db.creates, db.ids, mode, db.delimiter);            synchronize(db.bean.url, database.url, db.tables, db.layouts, db.selects, db.creates, db.ids, mode, db.delimiter, new Vector(db.htIndex.values()));
         }          }
       }        }
       // printContents(node3);        // printContents(node3);
Line 1961  class Convert Line 1968  class Convert
    */     */
   // TODO implement append,update and delete in one method    // TODO implement append,update and delete in one method
   // TODO using id based algorithm    // TODO using id based algorithm
   public static void synchronize(String source, String destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids, int mode, String delimiter) throws Exception    public static void synchronize(String source, String destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids, int mode, String delimiter, Vector indexList)
       throws Exception
   {    {
     System.out.println(" bin in synchronize!!!");      System.out.println(" bin in synchronize!!!");
     FM2SQL.ProgressDialog dialog = null;      FM2SQL.ProgressDialog dialog = null;
Line 2058  class Convert Line 2066  class Convert
         int endIndex = -1;          int endIndex = -1;
         String tempQuery = query;          String tempQuery = query;
         String destQuery = query.replaceAll(names.get(tbIndex).toString(), destTableName);          String destQuery = query.replaceAll(names.get(tbIndex).toString(), destTableName);
           destQuery = destQuery.replaceAll(bean.getQC(), beanDest.getQC());
           destQuery = removeLayoutPartFromQuery(destQuery, layouts.get(tbIndex).toString());
           // TODO remove layout part for destQuery
         String tempQueryDest = destQuery;          String tempQueryDest = destQuery;
         // remove extra query parts destQuery.substring(0,destQuery.lastIndexOf(destTableName)+destTableName.length()+1);          // remove extra query parts destQuery.substring(0,destQuery.lastIndexOf(destTableName)+destTableName.length()+1);
         System.out.println("new Query " + tempQueryDest);          System.out.println("new Query " + tempQueryDest);
           System.out.println("idfield "+idField+" "+ids.get(tbIndex).toString());
         if (!idField.equals(""))          if (!idField.equals(""))
         {          {
           long startTime = System.currentTimeMillis();            long startTime = System.currentTimeMillis();
Line 2074  class Convert Line 2086  class Convert
               dialog.title.setText("Check if data  is available");                dialog.title.setText("Check if data  is available");
             else if (dialog != null)              else if (dialog != null)
               dialog.title.setText("Check if more  data  is available");                dialog.title.setText("Check if more  data  is available");
                     
             myIds = bean.getIDVector(ids.get(tbIndex).toString(), (String) names.get(tbIndex), tempQuery, 0);              myIds = bean.getIDVector(ids.get(tbIndex).toString(), (String) names.get(tbIndex), tempQuery, 0);
             myIdsDest = beanDest.getIDVector(convertText(idField), destTableName, tempQueryDest, 0);              myIdsDest = beanDest.getIDVector(convertText(idField), destTableName, tempQueryDest, 0);
             //System.out.println("status of remove  "+myIds.remove("b015892"));              //System.out.println("status of remove  "+myIds.remove("b015892"));
               System.out.println("ids found for "+idField+" "+!myIds.isEmpty());
             if (myIds.isEmpty())              if (myIds.isEmpty())
               break;                break;
             vec = new Vector(myIds);              vec = new Vector(myIds);
Line 2092  class Convert Line 2106  class Convert
             linesToAppend.removeAll(vecDest);              linesToAppend.removeAll(vecDest);
             // remove all lines that should not be deleted              // remove all lines that should not be deleted
             linesToDelete.removeAll(deleted);              linesToDelete.removeAll(deleted);
             System.out.println("linesToAppend " + linesToAppend + " " + destTableName);              System.out.println("linesToAppend " + linesToAppend.size() + " " + destTableName);
             System.out.println("linesToDelete " + linesToDelete + " " + destTableName);              System.out.println("linesToDelete " + linesToDelete.size() + " " + destTableName);
             System.out.println("ID LIST SIZE " + Math.round((double) myIds.size() / (double) numIntervalls) + " " + myIds.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);              deltaID = (int) Math.round((double) myIds.size() / (double) numIntervalls);
             ConversionProperties prop = getFieldNamesAndDestTableName(creates.get(tbIndex).toString(), query, names.get(tbIndex).toString());              ConversionProperties prop = getFieldNamesAndDestTableName(creates.get(tbIndex).toString(), query, names.get(tbIndex).toString());
Line 2159  class Convert Line 2173  class Convert
               tempQuery = query + " where " + tempID + ">'" + vec.lastElement() + "'";                tempQuery = query + " where " + tempID + ">'" + vec.lastElement() + "'";
   
           }            }
             String tableName = names.get(tbIndex).toString();
             IndexList idList = (IndexList) indexList.get(0);
             System.out.println("found list " + idList);
             Statement stm = beanDest.getConnection().createStatement();
             Vector destTables = beanDest.getTableNames();
             System.out.println("tempQueryDest" + tempQueryDest);
             beanDest.makeQuery(tempQueryDest, 0);
             for (Iterator iter = idList.iterator(); iter.hasNext();)
             {
               String indexField = (String) iter.next();
               indexField = convertText(indexField);
               String indexName = destTableName + "_" + indexField;
               if (destTables.contains(indexName))
               {
                 stm.execute("DROP  INDEX " + destTableName + "_" + indexField);
                 //  continue;
               }
            //    stm.execute("DROP  INDEX "+destTableName+"_"+indexField);
   
               String type = beanDest.getColumnType(indexField).toLowerCase();
               // System.out.println(indexField+" "+type+" "+(type.indexOf("text") >= 0 || type.indexOf("varchar") >= 0 || type.indexOf("char") >= 0));
               if (type.indexOf("text") >= 0 || type.indexOf("varchar") >= 0 || type.indexOf("char") >= 0)
               {
                 if (beanDest.url.indexOf("mysql") >= 0)
                 {
                   //System.out.println("CREATE  INDEX " + indexName + " ON " + destTableName + " (" + indexField + "(10))");
                   // TODO problem if index exist !!!
                   stm.execute("CREATE  INDEX " + indexName + " ON " + destTableName + " (" + indexField + "(10))");
                 } else
                 {
                   stm.execute("CREATE  INDEX " + indexName + " ON " + destTableName + " (lower( " + indexField + "))");
   
                 }
   
               } else
               {
                 stm.execute("CREATE  INDEX " + destTableName + "_" + indexField + " ON " + destTableName + "(" + indexField + ")");
   
               }
   
               // stm.execute("DROP  INDEX "+destTableName+"_"+indexField);
   
             }
             //  CREATE UNIQUE INDEX title_idx ON films (title);  
           for (Iterator iter = linesToDelete.iterator(); iter.hasNext();)            for (Iterator iter = linesToDelete.iterator(); iter.hasNext();)
           {            {
             String id = (String) iter.next();              String id = (String) iter.next();
Line 2198  class Convert Line 2255  class Convert
       dialog.setVisible(false);        dialog.setVisible(false);
     }      }
   }    }
     /**
      * @param destQuery
      * @param string
      * @return
      */
     private static String removeLayoutPartFromQuery(String destQuery, String layoutName)
     {
       String removeString = "layout " + beanDest.getQC() + layoutName + beanDest.getQC();
       destQuery = destQuery.replaceFirst(removeString, "");
       System.out.println("destQuery change to " + destQuery);
       return destQuery;
     }
   private static void performSynchronize(    private static void performSynchronize(
     String idField,      String idField,
     Vector vec,      Vector vec,
Line 2213  class Convert Line 2282  class Convert
   {    {
     Vector[] vectors = bean.getQueryData(tempQuery, deltaID);      Vector[] vectors = bean.getQueryData(tempQuery, deltaID);
     int idIndex = vectors[1].indexOf(idField);      int idIndex = vectors[1].indexOf(idField);
       System.out.println(idIndex+" "+vectors[1]+" "+idField);
     // todo arraylist code has to be added      // todo arraylist code has to be added
     for (Iterator iter = vectors[0].iterator(); iter.hasNext();)      for (Iterator iter = vectors[0].iterator(); iter.hasNext();)
     {      {
Line 2247  class Convert Line 2317  class Convert
             updPst.setNull(l + 1, Types.NULL);              updPst.setNull(l + 1, Types.NULL);
         }          }
         updPst.setString(line.size() + 1, line.get(idIndex).toString());          updPst.setString(line.size() + 1, line.get(idIndex).toString());
           //updPst.addBatch();
         updPst.execute();          updPst.execute();
   
       }        }
     }      }
       //updPst.executeBatch();
   } // to method    } // to method
   
   /**    /**
Line 3773  class Convert Line 3843  class Convert
         while (tokenizer.hasMoreTokens())          while (tokenizer.hasMoreTokens())
         {          {
           String fieldName = tokenizer.nextToken().trim();            String fieldName = tokenizer.nextToken().trim();
           fieldNames[fieldIndex] = convertText(fieldName);            fieldNames[fieldIndex] = beanDest.getQC() + convertText(fieldName) + beanDest.getQC();
           // System.out.println("field "+ fieldNames[fieldIndex]);            // System.out.println("field "+ fieldNames[fieldIndex]);
           fieldIndex++;            fieldIndex++;
         }          }
Line 3786  class Convert Line 3856  class Convert
         for (Iterator iter = fieldNamesVec.iterator(); iter.hasNext();)          for (Iterator iter = fieldNamesVec.iterator(); iter.hasNext();)
         {          {
           String element = (String) iter.next();            String element = (String) iter.next();
           fieldNames[++fieldIndex] = bean.getQC() + convertText(element) + bean.getQC();            fieldNames[++fieldIndex] = beanDest.getQC() + convertText(element) + beanDest.getQC();
           // System.out.println("field " + fieldNames[fieldIndex]);            // System.out.println("field " + fieldNames[fieldIndex]);
         }          }
       }        }
Line 3853  class Convert Line 3923  class Convert
     command.append("WHERE " + idField + " =  ?");      command.append("WHERE " + idField + " =  ?");
     return command;      return command;
   }    }
   public void makeTest(String table,String idField,String tempQuery) throws Exception
   {
     int counter=0;
     
     // ****** test code *****
               
           bean.getConnection();
           ResultSet resultSet=null;
           String lastResult ="P227634.11";//"P227625.79554";//"P227625.77391";//"P116034.970998";
           String myQuery="select "+bean.getQC()+idField+bean.getQC()+",serial "+" from "+bean.getQC()+table+bean.getQC();
           System.out.println("Query is now "+myQuery);
           JDialog statusDialog=new JDialog();
           statusDialog.setTitle("Status Information");
           JLabel status=new JLabel("actual DataSet : ");
           JLabel status2=new JLabel(Integer.toString(++counter));
           JLabel status3=new JLabel(lastResult);
           
           JPanel statusPanel = new JPanel();
           JPanel statusPanel2 = new JPanel();
           statusPanel.add(status);
           statusPanel.add(status2);
           statusPanel2.add(status3);
           statusDialog.getContentPane().add(statusPanel,"North");
           statusDialog.getContentPane().add(statusPanel2,"Center");
           statusDialog.setLocation(400,500);
           statusDialog.setSize(300,150);
           statusDialog.setVisible(true);
           while (true)
           {
             if (!statusDialog.isVisible())
               statusDialog.setVisible(true);
             tempQuery = myQuery + " where " + bean.getQC() + idField + bean.getQC() + ">'" + lastResult + "'";
             resultSet = bean.makeQuery(tempQuery, 1);
             if (resultSet == null)
             {
               System.out.println("lastResult was " + lastResult + " counter was " + counter);
               break;
             } else
             {
               resultSet.next();
               lastResult = resultSet.getString(1);
               counter++;
               status2.setText(Integer.toString(counter));
               status3.setText(lastResult+" "+resultSet.getString(2));
                 if(counter%100==0)
                  {
                    System.out.println("actual Result was " + lastResult + " counter was " + counter);
                    // break;
                  }
             }
             resultSet = null;
           }
           System.exit(0);
   
           //****** end Test ******
   
   }
 }  }
   

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


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