Diff for /FM2SQL/src/Convert.java between versions 1.13 and 1.14

version 1.13, 2005/05/02 12:45:36 version 1.14, 2005/09/06 10:53:16
Line 137  class Convert Line 137  class Convert
   
   static Vector postSQLCommands = new Vector();    static Vector postSQLCommands = new Vector();
   
   static final String versionID = new String("FM2SQL Version 0.9.6b\n");    static final String versionID = new String("FM2SQL Version 0.9.8b\n");
   
   private static boolean noError = false;    private static boolean noError = false;
   
Line 656  class Convert Line 656  class Convert
             for (int k = 0; k < vec.size() - deltaID; k = k + deltaID)              for (int k = 0; k < vec.size() - deltaID; k = k + deltaID)
             {              {
               System.out.println(vec.get(k) + " " + vec.get(k + deltaID) + " " + vec.lastElement());                System.out.println(vec.get(k) + " " + vec.get(k + deltaID) + " " + vec.lastElement());
               if (query.indexOf("where") > 0)                if (query.toLowerCase().indexOf("where") > 0)
                 tempQuery = query + " and " + tempID + ">='" + vec.get(k) + "' and " + tempID                  tempQuery = query + " and " + tempID + ">='" + vec.get(k) + "' and " + tempID
                     + "<='" + vec.get(k + deltaID) + "'";                      + "<='" + vec.get(k + deltaID) + "'";
               else                else
Line 682  class Convert Line 682  class Convert
               System.out.println(" last intervall from " + vec.get(endIndex) + " "                System.out.println(" last intervall from " + vec.get(endIndex) + " "
                   + vec.lastElement());                    + vec.lastElement());
   
               if (query.indexOf("where") > 0)                if (query.toLowerCase().indexOf("where") > 0)
                 tempQuery = query + " and " + tempID + ">='" + vec.get(endIndex) + "' and "                  tempQuery = query + " and " + tempID + ">='" + vec.get(endIndex) + "' and "
                     + tempID + "<='" + vec.lastElement() + "'";                      + tempID + "<='" + vec.lastElement() + "'";
               else                else
Line 697  class Convert Line 697  class Convert
               command = writeDatainDestTable(dialog, command, endIndex, pstm, rowCount, delimiter);                command = writeDatainDestTable(dialog, command, endIndex, pstm, rowCount, delimiter);
             }              }
             // prepare new query for next chunk              // prepare new query for next chunk
             if (query.indexOf("where") > 0)              if (query.toLowerCase().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() + "'";
Line 1119  class Convert Line 1119  class Convert
           passwdDest = database.passwd;            passwdDest = database.passwd;
   
           synchronize(db.bean.url, database.url, db.tables, db.layouts, db.selects, db.creates,            synchronize(db.bean.url, database.url, db.tables, db.layouts, db.selects, db.creates,
               db.ids, mode, db.delimiter, new Vector(db.htIndex.values()));                db.ids, mode, db.delimiter, new Vector(db.htIndex.values()), db.destIDs);
         }          }
         for (Iterator iterator = db.postCommands.iterator(); iterator.hasNext();)          for (Iterator iterator = db.postCommands.iterator(); iterator.hasNext();)
         {          {
Line 1176  class Convert Line 1176  class Convert
     Vector selects = new Vector();      Vector selects = new Vector();
     Vector creates = new Vector();      Vector creates = new Vector();
     Vector ids = new Vector();      Vector ids = new Vector();
       Vector destIDs = new Vector();
   
     Vector preSQLCommands = new Vector();      Vector preSQLCommands = new Vector();
     Vector postSQLCommands = new Vector();      Vector postSQLCommands = new Vector();
   
Line 1198  class Convert Line 1200  class Convert
         selects = new Vector();          selects = new Vector();
         creates = new Vector();          creates = new Vector();
         ids = new Vector();          ids = new Vector();
           destIDs = new Vector();
   
         preSQLCommands = new Vector();          preSQLCommands = new Vector();
         postSQLCommands = new Vector();          postSQLCommands = new Vector();
   
Line 1301  class Convert Line 1305  class Convert
           String name = (String) node4.attributes.get("name");            String name = (String) node4.attributes.get("name");
           String layout = (String) node4.attributes.get("layout");            String layout = (String) node4.attributes.get("layout");
           String id = (String) node4.attributes.get("id");            String id = (String) node4.attributes.get("id");
             String destID = (String) node4.attributes.get("targetID");
           System.out.println("id was " + id);            System.out.println("id was " + id);
             System.out.println("targetID was " + destID);
   
           if (name == null)            if (name == null)
             throw new Error("parse error required table tag attribute name missing");              throw new Error("parse error required table tag attribute name missing");
Line 1309  class Convert Line 1315  class Convert
             layout = "";              layout = "";
           if (id == null)            if (id == null)
             id = "";              id = "";
             if (destID == null)
               destID = id ;
   
           if (name.equals(""))            if (name.equals(""))
             throw new Error("parse error table tag attribute must not be empty");              throw new Error("parse error table tag attribute must not be empty");
           tables.add(name.intern());            tables.add(name.intern());
           layouts.add(layout.intern());            layouts.add(layout.intern());
           ids.add(id.intern());            ids.add(id.intern());
             destIDs.add(destID.intern());
           String query = (node5 == null) ? "" : node5.getCharacters();            String query = (node5 == null) ? "" : node5.getCharacters();
           if (query.equals(""))            if (query.equals(""))
             System.err.println("Warning empty select tag or  select tag missing !!");              System.err.println("Warning empty select tag or  select tag missing !!");
Line 1330  class Convert Line 1340  class Convert
         dataBase.delimiter = delimiter;          dataBase.delimiter = delimiter;
         dataBase.preCommands = new Vector(preSQLCommands);          dataBase.preCommands = new Vector(preSQLCommands);
         dataBase.postCommands = new Vector(postSQLCommands);          dataBase.postCommands = new Vector(postSQLCommands);
           dataBase.destIDs = destIDs;
         databases.add(dataBase);          databases.add(dataBase);
       }        }
       DBBean database = new DBBean();        DBBean database = new DBBean();
Line 1523  class Convert Line 1534  class Convert
    */     */
   public static class DataBase    public static class DataBase
   {    {
   
     DBBean bean;      DBBean bean;
   
     Vector creates;      Vector creates;
Line 1534  class Convert Line 1546  class Convert
     Vector tables = new Vector();      Vector tables = new Vector();
   
     Vector ids;      Vector ids;
       Vector destIDs;
   
     String delimiter = "//";      String delimiter = "//";
   
Line 1880  class Convert Line 1893  class Convert
               command = null;                command = null;
             }              }
             // prepare new query for next chunk              // prepare new query for next chunk
             if (query.indexOf("where") > 0)              if (query.toLowerCase().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() + "'";
Line 1905  class Convert Line 1918  class Convert
   
   /**    /**
    * synchronize method based on delete method code     * synchronize method based on delete method code
    *   
    * @param source     * @param source
    * @param destination     * @param destination
    * @param names     * @param names
Line 1914  class Convert Line 1926  class Convert
    * @param creates     * @param creates
    * @param ids     * @param ids
    * @param mode     * @param mode
      * @param destIDs TODO
      * 
    * @throws Exception     * @throws Exception
    */     */
   // 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,    public static void synchronize(String source, String destination, Vector names, Vector layouts,
       Vector selects, Vector creates, Vector ids, int mode, String delimiter, Vector indexList)        Vector selects, Vector creates, Vector ids, int mode, String delimiter, Vector indexList, java.util.Vector destIDs)
       throws Exception        throws Exception
   {    {
     System.out.println(" bin in synchronize!!!");      System.out.println(" bin in synchronize!!!");
Line 1950  class Convert Line 1964  class Convert
         java.util.TreeSet myIdsDest = new TreeSet();          java.util.TreeSet myIdsDest = new TreeSet();
         int deltaID = 1;          int deltaID = 1;
         String idField = "";          String idField = "";
           String destIDField = "";
         String destTableName = "";          String destTableName = "";
   
         try          try
Line 1970  class Convert Line 1985  class Convert
           bean.getConnection();            bean.getConnection();
           bean.makeQuery(query, 50);            bean.makeQuery(query, 50);
           idField = ids.get(tbIndex).toString();            idField = ids.get(tbIndex).toString();
             destIDField = (destIDs!=null) ? destIDs.get(tbIndex).toString():convertText(idField); 
         } catch (Exception e)          } catch (Exception e)
         {          {
           System.out.println("Warning exception occured \n " + e);            System.out.println("Warning exception occured \n " + e);
Line 2010  class Convert Line 2025  class Convert
         // remove extra query parts          // remove extra query parts
         // destQuery.substring(0,destQuery.lastIndexOf(destTableName)+destTableName.length()+1);          // destQuery.substring(0,destQuery.lastIndexOf(destTableName)+destTableName.length()+1);
         System.out.println("new Query " + tempQueryDest);          System.out.println("new Query " + tempQueryDest);
         System.out.println("idfield " + idField + " " + ids.get(tbIndex).toString());          System.out.println("idfield " + idField + " " + ids.get(tbIndex).toString()+" targetID is "+destIDField);
         if (!idField.equals(""))          if (!idField.equals(""))
         {          {
           long startTime = System.currentTimeMillis();            long startTime = System.currentTimeMillis();
Line 2027  class Convert Line 2042  class Convert
   
             myIds = bean.getIDVector(ids.get(tbIndex).toString(), (String) names.get(tbIndex),              myIds = bean.getIDVector(ids.get(tbIndex).toString(), (String) names.get(tbIndex),
                 tempQuery, 0);                  tempQuery, 0);
             myIdsDest = beanDest.getIDVector(convertText(idField), destTableName, tempQueryDest, 0);              myIdsDest = beanDest.getIDVector(destIDField, destTableName, tempQueryDest, 0);
             // System.out.println("status of remove              // System.out.println("status of remove
             // "+myIds.remove("b015892"));              // "+myIds.remove("b015892"));
             System.out.println("ids found for " + idField + " " + !myIds.isEmpty());              System.out.println("ids found for " + idField + " " + !myIds.isEmpty());
Line 2040  class Convert Line 2055  class Convert
             Vector deleted = new Vector(vec);              Vector deleted = new Vector(vec);
   
             TreeSet linesToAppend = new TreeSet(vec);              TreeSet linesToAppend = new TreeSet(vec);
             linesToAppend.addAll(vec);   //           linesToAppend.addAll(vec);
             linesToDelete = new TreeSet(vecDest);              linesToDelete = new TreeSet(vecDest);
             // remove all lines that are already in dest database              // remove all lines that are already in dest database
             linesToAppend.removeAll(vecDest);              linesToAppend.removeAll(vecDest);
Line 2074  class Convert Line 2089  class Convert
             for (int k = 0; k < vec.size() - deltaID; k = k + deltaID)              for (int k = 0; k < vec.size() - deltaID; k = k + deltaID)
             {              {
               System.out.println(vec.get(k) + " " + vec.get(k + deltaID) + " " + vec.lastElement());                System.out.println(vec.get(k) + " " + vec.get(k + deltaID) + " " + vec.lastElement());
               if (query.indexOf("where") > 0)                if (query.toLowerCase().indexOf("where") > 0)
                 tempQuery = query + " and " + tempID + ">='" + vec.get(k) + "' and " + tempID                  tempQuery = query + " and " + tempID + ">='" + vec.get(k) + "' and " + tempID
                     + "<='" + vec.get(k + deltaID) + "'";                      + "<='" + vec.get(k + deltaID) + "'";
               else                else
Line 2104  class Convert Line 2119  class Convert
               System.out.println(" last intervall from " + vec.get(endIndex) + " "                System.out.println(" last intervall from " + vec.get(endIndex) + " "
                   + vec.lastElement());                    + vec.lastElement());
   
               if (query.indexOf("where") > 0)                if (query.toLowerCase().indexOf("where") > 0)
                 tempQuery = query + " and " + tempID + ">='" + vec.get(endIndex) + "' and "                  tempQuery = query + " and " + tempID + ">='" + vec.get(endIndex) + "' and "
                     + tempID + "<='" + vec.lastElement() + "'";                      + tempID + "<='" + vec.lastElement() + "'";
               else                else
Line 2123  class Convert Line 2138  class Convert
               // numIntervalls) + " " + myIdsDest.size());                // numIntervalls) + " " + myIdsDest.size());
             }              }
             // prepare new query for next chunk              // prepare new query for next chunk
             if (query.indexOf("where") > 0)              if (query.toLowerCase().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() + "'";
Line 2250  class Convert Line 2265  class Convert
       Vector line = (Vector) iter.next();        Vector line = (Vector) iter.next();
       Object lineIDIndex = line.get(idIndex);        Object lineIDIndex = line.get(idIndex);
       if (linesToAppend.contains(lineIDIndex))        if (linesToAppend.contains(lineIDIndex))
         System.out.println("line " + linesToAppend.contains(line.get(idIndex)) + " " + lineIDIndex);          System.out.println("line " + linesToAppend.contains(lineIDIndex) + " " + lineIDIndex);
       if (linesToAppend.contains(lineIDIndex))        if (linesToAppend.contains(lineIDIndex))
       {        {
         for (int l = 0; l < line.size(); ++l)          for (int l = 0; l < line.size(); ++l)

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


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