Diff for /FM2SQL/Attic/Convert.java between versions 1.34 and 1.40

version 1.34, 2004/02/16 12:24:17 version 1.40, 2004/02/27 11:34:53
Line 222  class Convert Line 222  class Convert
     //  dialog.setVisible(false);       //  dialog.setVisible(false); 
   }    }
   
     /**
      * 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 297  class Convert Line 309  class Convert
         // System.exit(0);          // System.exit(0);
   
         if (dialog != null)          if (dialog != null)
           dialog.title.setText("Writing table data ...");            dialog.title.setText("Updating table data ...");
   
         int j = -1;          int j = -1;
   
Line 398  class Convert Line 410  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 444  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 432  class Convert Line 456  class Convert
     String query = null;      String query = null;
     try      try
     {      {
       //bean.setConnection("jdbc:fmpro:http://141.14.237.74:8050");      
       //bean.setConnection("jdbc:postgresql://erebos/test","postgres","rogo");  
       if(source!=null)        if(source!=null)
       bean.setConnection(source);        bean.setConnection(source);
       else        else
Line 476  class Convert Line 498  class Convert
           //result = bean.getQueryData(query, dialog, 0);            //result = bean.getQueryData(query, dialog, 0);
           bean.getConnection();            bean.getConnection();
           bean.makeQuery(query, 50);            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();            idField = ids.get(tbIndex).toString();
   
         } catch (Exception e)          } catch (Exception e)
Line 484  class Convert Line 505  class Convert
           System.out.println(e);            System.out.println(e);
           continue;            continue;
         }          }
         //beanDest.setConnection("jdbc:postgresql://erebos/test3");  
         if(destination!=null)          if(destination!=null)
         beanDest.setConnection(destination);          beanDest.setConnection(destination);
         else          else
Line 500  class Convert Line 520  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 511  class Convert Line 551  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 545  class Convert Line 586  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 560  class Convert Line 601  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 574  class Convert Line 617  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 602  class Convert Line 646  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 617  class Convert Line 661  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 624  class Convert Line 669  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 635  class Convert Line 680  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 680  class Convert Line 727  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 743  class Convert Line 801  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 836  class Convert Line 899  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 866  class Convert Line 934  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 975  class Convert Line 1048  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 1117  class Convert Line 1194  class Convert
       //   FM2SQL.fmInstance=new FM2SQL();        //   FM2SQL.fmInstance=new FM2SQL();
     } catch (Exception e)      } catch (Exception e)
     {      {
       // TODO Auto-generated catch block      
       e.printStackTrace();        e.printStackTrace();
     }      }
     /*  
     Node tempNode=root.find(rootNode,new int[] {1});  
     if(tempNode==null) return rtTag;  
     int count=1;  
     /*   
     for(int i=0;i<tempNode.contents.v.size();++i)  
     {  
       // System.out.println(((Node)tempNode.contents.v.elementAt(i)).attributes+" "+i);  
     }*/  
     /*  
        if(tempNode.contents.v.size()==0) return rtTag;  
        Node notNull=null;  
        Node rtNode=root.find(rootNode+"/rt",new int[] {1,1});  
        rtTag=(rtNode==null) ? "finished":rtNode.getCharacters();  
        System.out.println("rt tag is "+ rtTag);  
        int length=0;//(tempNode.contents.length()-1)/2;  
        for(int i=0;i<tempNode.contents.v.size();++i)    {  
          Node node=(Node)tempNode.contents.v.elementAt(i);  
          if(node.type.equals("element"))  
          if(node.name.equals("doc"))length++;  
          // System.out.println(((Node)tempNode.contents.v.elementAt(i)).attributes+" "+i);  
        }  
       if(length==0) rtTag="finished";          
        while(count<=length)  
        {  
           //System.out.println(count+" "+length);  
          tempNode=root.find(rootNode+"/doc",new int[] {1,count});  
          if(tempNode==null)  
          {  
            rtTag="finished";  
            break;  
          }      
          Bundle.Document doc = new Bundle.Document();  
          Hashtable attributes=tempNode.attributes;  
          int docID=0;  
          int ver=0;  
           if(attributes != null)  
          {  
            docID=Integer.parseInt((String)attributes.get("id"));  
            ver=Integer.parseInt((String)attributes.get("ver"));  
            doc.addData("docID",(String)attributes.get("id"));  
            doc.addData("ver",(String)attributes.get("ver"));  
          }  
          bundle.docs.put(new Integer(docID),doc);  
          bundle.documents.addElement(doc);  
          // System.out.println("id " +docID+" ver "+ver);  
          Node fileNode=root.find(rootNode+"/doc/file",new int[] {1,count,1});  
          attributes=(fileNode==null)? null:fileNode.attributes;  
          int fileID=0;  
          int fileVer=0;  
          if(attributes != null)  
          {  
            fileID=Integer.parseInt((String)attributes.get("id"));  
            fileVer=Integer.parseInt((String)attributes.get("ver"));  
            doc.addData("fileID",(String)attributes.get("id"));  
            doc.addData("fileVer",(String)attributes.get("ver"));  
            // System.out.println("fileid " +fileID+" ver "+fileVer);  
          }  
       // add all Document tags to actual Document  
          for(int i=0;i<tempNode.contents.v.size();++i)  
          {     
            Node node=(Node)tempNode.contents.v.elementAt(i);  
            if(node.type.equals("element"))  
             {  
               //System.out.println(node.name+" "+node.getCharacters()+" "+node.contents.v.size());  
               if(node.contents.v.size()>1)   
               {  
                 for(int j=0;j<node.contents.v.size();++j)  
                 {    
                   Node node2=(Node)node.contents.v.elementAt(j);  
                   if(node2.type.equals("element"))  
                    {  
                      doc.addData(node2.name,node2.getCharacters());  
                      //System.out.println(node2.name+" "+node2.getCharacters()+" "+node2.contents.v.size());  
                    }  
                 }  
               } else doc.addData(node.name,node.getCharacters());  
            }  
          }  
          bundle.docsLocator.put(doc.locator,doc);   
       
        bundle.documents.addElement(doc);  
          count++;  
        }      */  
   
     // System.out.println(bundle.docs.size());  
     // return rtTag;  
   }    }
   public static Vector getXMLConfig(String xmlFile)    public static Vector getXMLConfig(String xmlFile)
   {    {
Line 1411  class Convert Line 1401  class Convert
   
     }      }
   }    }
     /**
      * reads the specified xml file
      * @param xmlFile
      */
   public static void readXMLFile(String xmlFile)    public static void readXMLFile(String xmlFile)
   {    {
     try      try
Line 1433  class Convert Line 1427  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 1444  class Convert Line 1445  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 1457  class Convert Line 1460  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.34  
changed lines
  Added in v.1.40


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