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

version 1.34, 2004/02/16 12:24:17 version 1.45, 2004/03/09 12:34:09
Line 59  class Convert Line 59  class Convert
     System.out.println("Finished!");      System.out.println("Finished!");
     //convert("jdbc:fmpro:http://141.14.237.74:8050","jdbc:postgresql://erebos/test",null,null);      //convert("jdbc:fmpro:http://141.14.237.74:8050","jdbc:postgresql://erebos/test",null,null);
   }    }
   public static void convertBatch(DBBean source, DBBean destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids,int mode) throws Exception    public static void convertBatch(DBBean source, DBBean destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids,int mode,String delimiter) throws Exception
   {    {
     bean = source;      bean = source;
     beanDest = destination;      beanDest = destination;
     convert(null,null,names,layouts,selects,creates,ids,mode);      convert(null,null,names,layouts,selects,creates,ids,mode,delimiter);
     if(true) return;      if(true) return;
     StringBuffer command = null;      StringBuffer command = null;
     try      try
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 257  class Convert Line 279  class Convert
       for (tbIndex = 0; tbIndex < names.size(); ++tbIndex)        for (tbIndex = 0; tbIndex < names.size(); ++tbIndex)
       {        {
         Vector[] result = null;          Vector[] result = null;
           String destTableName = "";
         try          try
         {          {
           query = "select * from " + bean.getQC() + names.get(tbIndex).toString() + bean.getQC();            query = "select * from " + bean.getQC() + names.get(tbIndex).toString() + bean.getQC();
Line 283  class Convert Line 306  class Convert
         {          {
           continue;            continue;
         }          }
           // determine destTableName from createStatement or from source table name
             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());
   
         //beanDest.setConnection("jdbc:postgresql://erebos/test3");          //beanDest.setConnection("jdbc:postgresql://erebos/test3");
         beanDest.setConnection(destination);          beanDest.setConnection(destination);
   
Line 297  class Convert Line 332  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 306  class Convert Line 341  class Convert
   
         command.append("UPDATE ");          command.append("UPDATE ");
         command.append(beanDest.getQC());          command.append(beanDest.getQC());
         command.append(convertText((String) names.get(tbIndex)));          command.append(destTableName);
           //command.append(convertText((String) names.get(tbIndex)));
         command.append(beanDest.getQC());          command.append(beanDest.getQC());
         command.append(" SET  ");          command.append(" SET  ");
   
Line 398  class Convert Line 434  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
   public static void convert(String source, String destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids, int mode) throws Exception     * @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,String delimiter) throws Exception
   {    {
   
     FM2SQL.ProgressDialog dialog = null;      FM2SQL.ProgressDialog dialog = null;
Line 421  class Convert Line 468  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 480  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 522  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 529  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 498  class Convert Line 542  class Convert
         // System.out.println(beanDest.getTableNames(beanDest.getCatalogs().get(2).toString()));          // System.out.println(beanDest.getTableNames(beanDest.getCatalogs().get(2).toString()));
         stm = beanDest.getConnection().createStatement();          stm = beanDest.getConnection().createStatement();
         // System.exit(0);          // System.exit(0);
         
         // determine destTableName from createStatement or from source table name
           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 (mode == Convert.DataBase.CONVERT_MODE)          if (mode == Convert.DataBase.CONVERT_MODE)
         {          {
   
             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 578  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 613  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 628  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 644  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 673  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 684  class Convert
               if(dialog!=null)                if(dialog!=null)
               dialog.title.setText("Writing table data ...");                dialog.title.setText("Writing table data ...");
   
               command = writeDatainDestTable(dialog, command, k, pstm, rowCount);                command = writeDatainDestTable(dialog, command, k, pstm, rowCount,delimiter);
               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 696  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 ...");
               bean.makeQuery(tempQuery, 0);                bean.makeQuery(tempQuery, 0);
               if(dialog!=null)                if(dialog!=null)
               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,delimiter);
             }              }
               // 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);
           command = writeDatainDestTable(dialog, command, j, pstm, rowCount);            command = writeDatainDestTable(dialog, command, j, pstm, rowCount,delimiter);
           long endTime = System.currentTimeMillis();            long endTime = System.currentTimeMillis();
           System.out.println("Time for old convert elapsed " + (endTime - startTime));            System.out.println("Time for old convert elapsed " + (endTime - startTime));
   
Line 680  class Convert Line 754  class Convert
       dialog.setVisible(false);        dialog.setVisible(false);
     }      }
   }    }
   private static StringBuffer writeDatainDestTable(FM2SQL.ProgressDialog dialog, StringBuffer command, int j, PreparedStatement pstm, int rowCount) throws Exception, SQLException    /**
      * 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,String delimiter) throws Exception, SQLException
   {    {
     Vector row;      Vector row;
     while ((row = bean.getNextRow()) != null)      while ((row = bean.getNextRow()) != null)
Line 726  class Convert Line 811  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,delimiter);
         
         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 743  class Convert Line 830  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 928  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 963  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 1077  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 990  class Convert Line 1096  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();
       String delimiter = "|";
     int mode = -1;      int mode = -1;
   
     try      try
Line 1014  class Convert Line 1121  class Convert
         Node node2 = root.find("convert/source/database/password", new int[] { 1, 1, i, 1, 1 });          Node node2 = root.find("convert/source/database/password", new int[] { 1, 1, i, 1, 1 });
         Node node3 = root.find("convert/source/database", new int[] { 1, 1, i });          Node node3 = root.find("convert/source/database", new int[] { 1, 1, i });
         Node nodeMode = root.find("convert/source/database/mode", new int[] { 1, 1, i, 1, 1 });          Node nodeMode = root.find("convert/source/database/mode", new int[] { 1, 1, i, 1, 1 });
           Node delimiterNode =root.find("convert/source/database/delimiter", new int[] { 1, 1, i, 1, 1 });
         if (node3 == null)          if (node3 == null)
           throw new Error("parse error database tag missing");            throw new Error("parse error database tag missing");
         if (node == null)          if (node == null)
Line 1023  class Convert Line 1130  class Convert
           throw new Error("parse error user tag missing");            throw new Error("parse error user tag missing");
         if (node2 == null)          if (node2 == null)
           throw new Error("parse error password tag missing");            throw new Error("parse error password tag missing");
           if(delimiterNode!=null) delimiter = delimiterNode.getCharacters();
         String url = node.getCharacters();          String url = node.getCharacters();
         String user = node1.getCharacters();          String user = node1.getCharacters();
         String password = node2.getCharacters();          String password = node2.getCharacters();
Line 1090  class Convert Line 1198  class Convert
             creates.add("");              creates.add("");
   
         }          }
         databases.add(new DataBase(database, tables, layouts, selects, creates, ids, mode));          DataBase dataBase = new DataBase(database, tables, layouts, selects, creates, ids, mode);
           dataBase.delimiter = delimiter;
           databases.add(dataBase);
       }        }
       DBBean database = new DBBean();        DBBean database = new DBBean();
       // parse dataBase        // parse dataBase
Line 1108  class Convert Line 1218  class Convert
       {        {
         DataBase db = (DataBase) iter.next();          DataBase db = (DataBase) iter.next();
         if (mode != DataBase.UPDATE_MODE)          if (mode != DataBase.UPDATE_MODE)
           convertBatch(db.bean, database, db.tables, db.layouts, db.selects, db.creates, db.ids,mode);            convertBatch(db.bean, database, db.tables, db.layouts, db.selects, db.creates, db.ids,mode,db.delimiter);
         else          else
           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);
   
Line 1117  class Convert Line 1227  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 1243  class Convert Line 1266  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();
           String delimiter = "|";
     int mode = -1;      int mode = -1;
     try      try
     {      {
Line 1267  class Convert Line 1290  class Convert
         Node node2 = root.find("convert/source/database/password", new int[] { 1, 1, i, 1, 1 });          Node node2 = root.find("convert/source/database/password", new int[] { 1, 1, i, 1, 1 });
         Node node3 = root.find("convert/source/database", new int[] { 1, 1, i });          Node node3 = root.find("convert/source/database", new int[] { 1, 1, i });
         Node nodeMode = root.find("convert/source/database/mode", new int[] { 1, 1, i, 1, 1 });          Node nodeMode = root.find("convert/source/database/mode", new int[] { 1, 1, i, 1, 1 });
                   Node delimiterNode =root.find("convert/source/database/delimiter", new int[] { 1, 1, i, 1, 1 });
   
           if (delimiterNode != null)
             delimiter = delimiterNode.getCharacters();
         if (node3 == null)          if (node3 == null)
           throw new Error("parse error database tag missing");            throw new Error("parse error database tag missing");
         if (node == null)          if (node == null)
Line 1295  class Convert Line 1321  class Convert
           mode = DataBase.APPEND_MODE;            mode = DataBase.APPEND_MODE;
         else if (modeString.equals("update"))          else if (modeString.equals("update"))
           mode = DataBase.UPDATE_MODE;            mode = DataBase.UPDATE_MODE;
   
         //   if(node3!=null)          //   if(node3!=null)
         // System.out.println(node3.name);          // System.out.println(node3.name);
   
Line 1345  class Convert Line 1370  class Convert
             creates.add("");              creates.add("");
   
         }          }
         databases.add(new DataBase(database, tables, layouts, selects, creates, ids, mode));          DataBase dataBase=new DataBase(database, tables, layouts, selects, creates, ids, mode);
           dataBase.delimiter=delimiter;
           databases.add(dataBase);
       }        }
       DBBean database = new DBBean();        DBBean database = new DBBean();
       // parse dataBase        // parse dataBase
Line 1411  class Convert Line 1438  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 1464  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 1441  class Convert Line 1479  class Convert
     Vector layouts;      Vector layouts;
     Vector tables;      Vector tables;
     Vector ids;      Vector ids;
       String delimiter = "//";
     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 1498  class Convert
       this.mode = mode;        this.mode = mode;
       this.bean.setIDVector(ids);        this.bean.setIDVector(ids);
     }      }
       /**
        * writes the data contained in this object to 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();
Line 1464  class Convert Line 1510  class Convert
       buffr.write("      <url>" + bean.url + "</url>\n");        buffr.write("      <url>" + bean.url + "</url>\n");
       buffr.write("      <user>" + bean.user + "</user>\n");        buffr.write("      <user>" + bean.user + "</user>\n");
       buffr.write("      <password>" + bean.passwd + "</password>\n");        buffr.write("      <password>" + bean.passwd + "</password>\n");
         buffr.write("      <delimiter>"+delimiter+"</delimiter>\n");
       String modeString = "";        String modeString = "";
       if (mode == CONVERT_MODE)        if (mode == CONVERT_MODE)
         modeString = "convert";          modeString = "convert";

Removed from v.1.34  
changed lines
  Added in v.1.45


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