Diff for /FM2SQL/Attic/Convert.java between versions 1.36 and 1.41

version 1.36, 2004/02/19 10:35:06 version 1.41, 2004/03/01 12:37:10
Line 190  class Convert Line 190  class Convert
           {            {
             obj = row.get(k);              obj = row.get(k);
             if (obj instanceof ArrayList)              if (obj instanceof ArrayList)
               obj = ((List) obj).get(0);                obj = formatFileMakerArray((List) obj,"\n");
             String str = (obj == null) ? "NULL" : obj.toString();              String str = (obj == null) ? "NULL" : obj.toString();
             if (!str.equals("NULL"))              if (!str.equals("NULL"))
               pstm.setString(k + 1, str);                pstm.setString(k + 1, str);
Line 221  class Convert Line 221  class Convert
   
     //  dialog.setVisible(false);       //  dialog.setVisible(false); 
   }    }
       public static String formatFileMakerArray(List list, String delimiter)
       { 
         StringBuffer formattedString = new StringBuffer();
         for(int i=0;i<list.size();++i)
         {
             formattedString.append(list.get(i).toString());
               if(i<list.size()-1)
                formattedString.append(delimiter);
         } 
         return formattedString.toString();
       }
     /**
      * Method for SQL UPDATE
      * @param source
      * @param destination
      * @param names
      * @param layouts
      * @param selects
      * @param creates
      * @param ids
      * @param mode
      * @throws Exception
      */
   public static void update(String source, String destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids, int mode) throws Exception    public static void update(String source, String destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids, int mode) throws Exception
   {    {
     FM2SQL.ProgressDialog dialog = null;      FM2SQL.ProgressDialog dialog = null;
Line 398  class Convert Line 420  class Convert
   
   }    }
   /**    /**
    transfers the specified array of tables  to the destination database     *   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      and creates the table if it does not exist if it exists and mode is not append the table is dropped
         
    **/     * @param source
      * @param destination
      * @param names
      * @param layouts
      * @param selects
      * @param creates
      * @param ids
      * @param 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    public static void convert(String source, String destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids, int mode) throws Exception
   {    {
   
Line 421  class Convert Line 454  class Convert
     java.util.TreeSet myIds = new TreeSet();      java.util.TreeSet myIds = new TreeSet();
     int deltaID = 1;      int deltaID = 1;
     String idField = "";      String idField = "";
       String destTableName = "";
     if (source != null && destination != null)      if (source != null && destination != null)
     {      {
       // setting user and passwd         // setting user and passwd 
Line 496  class Convert Line 530  class Convert
         // System.exit(0);          // System.exit(0);
         if (mode == Convert.DataBase.CONVERT_MODE)          if (mode == Convert.DataBase.CONVERT_MODE)
         {          {
             if(!creates.get(tbIndex).equals(""))
             {
               String create =creates.get(tbIndex).toString().toLowerCase();
               int fromIndex = create.indexOf("table")+5;
               int toIndex   = create.indexOf("(");
               destTableName = create.substring(fromIndex,toIndex).replaceAll(beanDest.getQC(),"").trim();
               System.out.println("destTable "+destTableName);
               
             } else
               destTableName = convertText(names.get(tbIndex).toString());
   
             if (tables.indexOf(destTableName) >= 0)
             {
               stm.executeUpdate("drop table " + beanDest.getQC() + destTableName + beanDest.getQC());
               tables.remove(destTableName);
               System.out.println("dropped table" + destTableName);
   
             }
             /*
             if(destTableName.equals(""))
           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());
Line 507  class Convert Line 561  class Convert
             tables.remove(convertText((String) names.get(tbIndex)));              tables.remove(convertText((String) names.get(tbIndex)));
             System.out.println("dropped table" + names.get(tbIndex));              System.out.println("dropped table" + names.get(tbIndex));
           }            }
   */
           if (tables.indexOf(names.get(tbIndex)) < 0 && tables.indexOf(convertText(names.get(tbIndex).toString())) < 0)            if ((tables.indexOf(destTableName) < 0)) //&& tables.indexOf(names.get(tbIndex)) < 0 && tables.indexOf(convertText(names.get(tbIndex).toString())) < 0   )
           {            {
               
             if (creates.get(tbIndex).equals("") || creates.get(tbIndex).toString().toLowerCase().indexOf("create") < 0)              if (creates.get(tbIndex).equals("") || creates.get(tbIndex).toString().toLowerCase().indexOf("create") < 0)
             {              {
               System.out.println("Warning empty or invalid create statement - creating one for you\n");                System.out.println("Warning empty or invalid create statement - creating one for you\n");
Line 541  class Convert Line 596  class Convert
               //  System.exit(0);                //  System.exit(0);
               //command.append(DBBean.getQC());                   //command.append(DBBean.getQC());   
             } else              } else
               command = new StringBuffer().append(creates.get(tbIndex).toString());                command = new StringBuffer().append(creates.get(tbIndex).toString().toLowerCase());
             stm.executeUpdate(command.toString());              stm.executeUpdate(command.toString());
   
           }            }
Line 556  class Convert Line 611  class Convert
   
         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(destTableName); //convertText((String) names.get(tbIndex)));
         command.append(beanDest.getQC());          command.append(beanDest.getQC());
           
         command.append(" values ( ");          command.append(" values ( ");
   
           // add a question marks for every field 
         for (int i = 0; i < bean.getColumnNames().size() - 1; ++i)          for (int i = 0; i < bean.getColumnNames().size() - 1; ++i)
           command.append("?,");            command.append("?,");
         command.append("?)");          command.append("?)");
Line 570  class Convert Line 627  class Convert
         int endIndex = -1;          int endIndex = -1;
         String tempQuery = query;          String tempQuery = query;
         String tempID = bean.getQC() + idField + bean.getQC();          String tempID = bean.getQC() + idField + bean.getQC();
           // if id_field not do incremental conversion else do it all at once
         if (!idField.equals(""))          if (!idField.equals(""))
         {          {
           long startTime = System.currentTimeMillis();            long startTime = System.currentTimeMillis();
Line 598  class Convert Line 656  class Convert
             {              {
               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.indexOf("where") > 0)
                 tempQuery = query + " and " + tempID + ">=" + vec.get(k) + " and " + tempID + "<=" + vec.get(k + deltaID);                  tempQuery = query + " and " + tempID + ">='" + vec.get(k) + "' and " + tempID + "<='" + vec.get(k + deltaID)+"'";
               else                else
                 tempQuery = query + "where " + tempID + ">=" + vec.get(k) + " and " + tempID + "<=" + vec.get(k + deltaID);                  tempQuery = query + " where " + tempID + ">='" + vec.get(k) + "' and " + tempID + "<='" + vec.get(k + deltaID)+"'";
               System.out.println(tempQuery);                System.out.println(tempQuery);
               if(dialog!=null)                if(dialog!=null)
               dialog.title.setText("Reading table data ...");                dialog.title.setText("Reading table data ...");
Line 613  class Convert Line 671  class Convert
               endIndex = k + deltaID;                endIndex = k + deltaID;
             }              }
             System.out.println(endIndex);              System.out.println(endIndex);
               //all data written ? if not write last chunk of data
             if (endIndex == vec.size() - 1)              if (endIndex == vec.size() - 1)
               System.out.println("fits");                System.out.println("fits");
             else              else
Line 620  class Convert Line 679  class Convert
               System.out.println(" last intervall from " + vec.get(endIndex) + " " + vec.lastElement());                System.out.println(" last intervall from " + vec.get(endIndex) + " " + vec.lastElement());
   
               if (query.indexOf("where") > 0)                if (query.indexOf("where") > 0)
                 tempQuery = query + " and " + tempID + ">=" + vec.get(endIndex) + " and " + tempID + "<=" + vec.lastElement();                  tempQuery = query + " and " + tempID + ">='" + vec.get(endIndex) + "' and " + tempID + "<='" + vec.lastElement()+"'";
               else                else
                 tempQuery = query + "where " + tempID + ">=" + vec.get(endIndex) + " and " + tempID + "<=" + vec.lastElement();                  tempQuery = query + " where " + tempID + ">='" + vec.get(endIndex) + "' and " + tempID + "<='" + vec.lastElement()+"'";
               System.out.println(tempQuery);                System.out.println(tempQuery);
               if(dialog!=null)                if(dialog!=null)
               dialog.title.setText("Reading table data ...");                dialog.title.setText("Reading table data ...");
Line 631  class Convert Line 690  class Convert
               dialog.title.setText("Writing table data ...");                dialog.title.setText("Writing table data ...");
               command = writeDatainDestTable(dialog, command, endIndex, pstm, rowCount);                command = writeDatainDestTable(dialog, command, endIndex, pstm, rowCount);
             }              }
               // 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()+"'";
   
           }            }
           long endTime = System.currentTimeMillis();            long endTime = System.currentTimeMillis();
           System.out.println("Time for incremental convert elapsed " + (endTime - startTime));            System.out.println("Time for incremental convert elapsed " + (endTime - startTime));
         } else          } else
         {          {
             // read and write all in one big chunk
           long startTime = System.currentTimeMillis();            long startTime = System.currentTimeMillis();
   
           bean.makeQuery(query, 0);            bean.makeQuery(query, 0);
Line 676  class Convert Line 737  class Convert
       dialog.setVisible(false);        dialog.setVisible(false);
     }      }
   }    }
     /**
      * Writes data to the destination table 
      * @param dialog  progress dialog
      * @param command 
      * @param j       data index for progress bar
      * @param pstm    prepared statement
      * @param rowCount number of datasets
      * @return   command
      * @throws Exception
      * @throws SQLException
      */
   private static StringBuffer writeDatainDestTable(FM2SQL.ProgressDialog dialog, StringBuffer command, int j, PreparedStatement pstm, int rowCount) throws Exception, SQLException    private static StringBuffer writeDatainDestTable(FM2SQL.ProgressDialog dialog, StringBuffer command, int j, PreparedStatement pstm, int rowCount) throws Exception, SQLException
   {    {
     Vector row;      Vector row;
Line 722  class Convert Line 794  class Convert
       {        {
         obj = row.get(k);          obj = row.get(k);
         if (obj instanceof ArrayList)          if (obj instanceof ArrayList)
           obj = ((List) obj).get(0);                  if (obj instanceof ArrayList)
                obj = formatFileMakerArray((List) obj," | ");
         
         String str = (obj == null) ? "NULL" : obj.toString();          String str = (obj == null) ? "NULL" : obj.toString();
         if (!str.equals("NULL"))          if (!str.equals("NULL"))
           pstm.setString(k + 1, str);            pstm.setString(k + 1, str);
Line 739  class Convert Line 813  class Convert
     return command;      return command;
   }    }
   
     /**
      *  removes special characters from the input string as well as .fp5 
      * @param newName String to change
      * @return
      */
   public static String convertText(String newName)    public static String convertText(String newName)
   {    {
     StringBuffer alterMe = new StringBuffer(newName.trim().toLowerCase());      StringBuffer alterMe = new StringBuffer(newName.trim().toLowerCase());
Line 832  class Convert Line 911  class Convert
     }      }
     return alterMe.toString();      return alterMe.toString();
   }    }
     /**
      * Converts > and < in an entity (&gt; or &lt;)
      * @param newName
      * @return
      */
   public static String convertToEntities(String newName)    public static String convertToEntities(String newName)
   {    {
     StringBuffer alterMe = new StringBuffer(newName.trim());      StringBuffer alterMe = new StringBuffer(newName.trim());
Line 862  class Convert Line 946  class Convert
     }      }
     return alterMe.toString();      return alterMe.toString();
   }    }
     /**
      * Masks the single quote character '-->\'
      * @param newName
      * @return
      */
   public static String convertUml(String newName)    public static String convertUml(String newName)
   {    {
     StringBuffer alterMe = new StringBuffer(newName.trim());      StringBuffer alterMe = new StringBuffer(newName.trim());
Line 971  class Convert Line 1060  class Convert
     }      }
     return alterMe.toString();      return alterMe.toString();
   }    }
   /**
    * parses the input xml file for batch conversion
    * called from readXMLFile
    * * @param sb
    */
   public static void parseXMLConfig(StringBuffer sb)    public static void parseXMLConfig(StringBuffer sb)
   {    {
     boolean finished = false;      boolean finished = false;
Line 1320  class Convert Line 1413  class Convert
   
     }      }
   }    }
     /**
      * reads the specified xml file
      * @param xmlFile
      */
   public static void readXMLFile(String xmlFile)    public static void readXMLFile(String xmlFile)
   {    {
     try      try
Line 1342  class Convert Line 1439  class Convert
       e.printStackTrace();        e.printStackTrace();
     }      }
   }    }
     
     /**
      * Helper class for XML-File parsing
      * Holds the parsed data
      * @author rogo
      *
      */
   public static class DataBase    public static class DataBase
   {    {
     DBBean bean;      DBBean bean;
Line 1353  class Convert Line 1457  class Convert
     final static int CONVERT_MODE = 1;      final static int CONVERT_MODE = 1;
     final static int APPEND_MODE = 2;      final static int APPEND_MODE = 2;
     final static int UPDATE_MODE = 3;      final static int UPDATE_MODE = 3;
       final static int DELETE_MODE = 4;
   
     int mode = -1;      int mode = -1;
   
     public DataBase(DBBean bean, Vector tables, Vector layouts, Vector selects, Vector creates, Vector ids, int mode)      public DataBase(DBBean bean, Vector tables, Vector layouts, Vector selects, Vector creates, Vector ids, int mode)
Line 1366  class Convert Line 1472  class Convert
       this.mode = mode;        this.mode = mode;
       this.bean.setIDVector(ids);        this.bean.setIDVector(ids);
     }      }
       /**
        * writes the data contained in this object  th the buffered writer
        * * @param buffr
        * @throws Exception
        */
     public void exportToXML(BufferedWriter buffr) throws Exception      public void exportToXML(BufferedWriter buffr) throws Exception
     {      {
       // ids=bean.getIDVector();        // ids=bean.getIDVector();

Removed from v.1.36  
changed lines
  Added in v.1.41


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