Diff for /FM2SQL/Attic/Convert.java between versions 1.1 and 1.25

version 1.1, 2003/12/05 11:46:39 version 1.25, 2004/01/30 13:18:54
Line 1 Line 1
   
   
 import java.util.*;  import java.util.*;
 import java.sql.*;  import java.sql.*;
 import java.awt.Cursor;  import java.awt.Cursor;
Line 36  class Convert Line 35  class Convert
     //System.out.println(new String(b,"UTF-8"));      //System.out.println(new String(b,"UTF-8"));
     } catch (UnsupportedEncodingException e)      } catch (UnsupportedEncodingException e)
     {      {
       // TODO Auto-generated catch block  
       e.printStackTrace();        e.printStackTrace();
     }*/      }*/
     FileOutputStream file = null;      FileOutputStream file = null;
Line 51  class Convert Line 49  class Convert
       file = new FileOutputStream("./log.txt");        file = new FileOutputStream("./log.txt");
     } catch (FileNotFoundException e1)      } catch (FileNotFoundException e1)
     {      {
       // TODO Auto-generated catch block  
       e1.printStackTrace();        e1.printStackTrace();
     }       } 
    PrintStream stream= new PrintStream(file);     PrintStream stream= new PrintStream(file);
Line 61  class Convert Line 58  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) throws Exception    public static void convertBatch(DBBean source,DBBean destination,Vector names,Vector layouts,Vector selects,Vector creates,int mode) throws Exception
   {    {
    // @TODO Convert change to convert row wise  
    /*FM2SQL.ProgressDialog dialog = new  FM2SQL.ProgressDialog(FM2SQL.fmInstance);     /*FM2SQL.ProgressDialog dialog = new  FM2SQL.ProgressDialog(FM2SQL.fmInstance);
    dialog.setTitle("Conversion running ...");     dialog.setTitle("Conversion running ...");
    dialog.title.setText("Getting table data ...");     dialog.title.setText("Getting table data ...");
Line 140  class Convert Line 136  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);
       if(true)         if(mode==Convert.DataBase.CONVERT_MODE) 
       {        {
         if(tables.indexOf(names.get(tbIndex))>=0)           if(tables.indexOf(names.get(tbIndex))>=0) 
         {          {
Line 214  class Convert Line 210  class Convert
     //dialog.title.setText("Writing table data ...");      //dialog.title.setText("Writing table data ...");
     Vector row = null;      Vector row = null;
     //for (int j = 0; j < result[0].size(); ++j)      //for (int j = 0; j < result[0].size(); ++j)
       command = new StringBuffer();
   
       command.append("INSERT  INTO ");
       command.append(beanDest.getQC());
       command.append(convertText((String) names.get(tbIndex)));
       command.append(beanDest.getQC());
       command.append(" values ( ");
   
       for (int i = 0; i < bean.getColumnNames().size() - 1; ++i)
         command.append("?,");
       command.append("?)");
       PreparedStatement pstm = beanDest.getConnection().prepareStatement(command.toString());
       System.out.println(command);
     while((row=bean.getNextRow())!=null)      while((row=bean.getNextRow())!=null)
     {      {
       //Vector row = (Vector) result[0].get(j);  /*      //Vector row = (Vector) result[0].get(j);
       command = new StringBuffer();        command = new StringBuffer();
   
         command.append("INSERT  INTO ");          command.append("INSERT  INTO ");
Line 224  class Convert Line 233  class Convert
         command.append(convertText((String) names.get(tbIndex)));          command.append(convertText((String) names.get(tbIndex)));
         command.append(beanDest.getQC());          command.append(beanDest.getQC());
         command.append(" values ( ");          command.append(" values ( ");
      */
         //print rows          //print rows
      Object obj = null;       Object obj = null;
        /*
      for(int k=0;k<row.size()-1;++k)       for(int k=0;k<row.size()-1;++k)
      {       {
         obj = row.get(k);          obj = row.get(k);
Line 254  class Convert Line 265  class Convert
   // dialog.progress.setValue((int)(((double)(j+1)/(double)result[0].size())*100.0));    // dialog.progress.setValue((int)(((double)(j+1)/(double)result[0].size())*100.0));
   // System.out.println( (int)(((double)(j+1)/(double)result[0].size())*100.0)+" "+result[0].size()+" "+j);    // System.out.println( (int)(((double)(j+1)/(double)result[0].size())*100.0)+" "+result[0].size()+" "+j);
    command = null;     command = null;
   */
       for (int k = 0; k < row.size(); ++k)
       {
         obj = row.get(k);
         if (obj instanceof ArrayList)
           obj = ((List) obj).get(0);
         String str = (obj == null) ? "NULL" : obj.toString();
         if (!str.equals("NULL"))
           pstm.setString(k + 1, str);
         else
           pstm.setNull(k + 1, Types.NULL);
       }
       pstm.execute();
   
 }// to for loop      }// to for loop    
         
     }      }
Line 278  class Convert Line 303  class Convert
   }    }
   
   
     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;
       if (FM2SQL.fmInstance != null)
       {
         dialog = new FM2SQL.ProgressDialog(FM2SQL.fmInstance);
         dialog.setTitle("Conversion running ...");
         dialog.title.setText("Getting table data ...");
         dialog.setLocation(FM2SQL.fmInstance.getLocationOnScreen().x + (FM2SQL.fmInstance.getWidth() - 400) / 2, FM2SQL.fmInstance.getLocationOnScreen().y + (FM2SQL.fmInstance.getHeight() - 250) / 2);
         dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
         FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
         dialog.thread = Thread.currentThread();
       }
       // setting user and passwd 
       bean.setUserAndPasswd(user, passwd);
       // setting user and passwd 
       beanDest.setUserAndPasswd(userDest, passwdDest);
       if (dialog != null)
         dialog.setSize(400, 250);
       StringBuffer command = null;
       String query = null;
       try
       {
         //bean.setConnection("jdbc:fmpro:http://141.14.237.74:8050");    
         //bean.setConnection("jdbc:postgresql://erebos/test","postgres","rogo");
         bean.setConnection(source);
         if (names == null)
           names = bean.getTableNames();
         // Collections.sort(names);
         int tbIndex = 1;
   
         // System.out.println("Start at "+names.indexOf("archimedes_facsimiles"));
         for (tbIndex = 0; tbIndex < names.size(); ++tbIndex)
         {
           Vector[] result = null;
           try
           {
             query = "select * from " + bean.getQC() + names.get(tbIndex).toString() + bean.getQC();
             String layout = (layouts.isEmpty()) ? "" : layouts.get(tbIndex).toString();
             query = (selects != null) ? selects.get(tbIndex).toString() : query;
             //if  vectors[1].get(i) != null)
             if (layout != "")
             {
               layout = " layout " + bean.getQC() + layout + bean.getQC();
               String name = names.get(tbIndex).toString();
               StringBuffer queryLayout = new StringBuffer(query);
               queryLayout.insert(queryLayout.indexOf(name) + name.length() + 1, " " + layout);
               query = queryLayout.toString();
               System.out.println("added layout  " + query);
   
             }
             dialog.title.setText("Getting table data ...");
             dialog.table.setText(names.get(tbIndex).toString());
             dialog.status.setText("Table " + (tbIndex + 1) + " of " + names.size());
             dialog.show();
             bean.getConnection();
             bean.makeQuery(query, 0);
           } catch (Exception e)
           {
             continue;
           }
           //beanDest.setConnection("jdbc:postgresql://erebos/test3");
           beanDest.setConnection(destination);
   
           Statement stm = beanDest.getConnection().createStatement();
   
           Vector tables = beanDest.getTableNames();
           // Collections.sort(tables);
           System.out.println(names.get(tbIndex) + " " + tables.indexOf(convertText((String) names.get(tbIndex)))); // "//beanDest.getTypeNames()); 
           tables = beanDest.getTableNames();
           // System.out.println(beanDest.getTableNames(beanDest.getCatalogs().get(2).toString()));
           stm = beanDest.getConnection().createStatement();
           // System.exit(0);
       
           if (dialog != null)
             dialog.title.setText("Writing table data ...");
   
           int j = -1;
       
           Vector row = null;
           command = new StringBuffer();
   
           command.append("UPDATE ");
           command.append(beanDest.getQC());
           command.append(convertText((String) names.get(tbIndex)));
           command.append(beanDest.getQC());
           command.append(" SET  ");
   
           int size = bean.getColumnNames().size();
           for (int i = 0; i < size - 1; ++i)
             command.append(beanDest.getQC()+convertText((String)bean.getColumnNames().get(i))+beanDest.getQC()+" = ? ,");
           command.append(convertText((String)bean.getColumnNames().get(size-1))+" = ? ");
           command.append("WHERE "+convertText(ids.get(tbIndex).toString())+ " =  ?");
           PreparedStatement pstm = beanDest.getConnection().prepareStatement(command.toString());
           System.out.println(command+" "+tbIndex);
               int rowCount = bean.getRowCount(query);
           int idIndex = bean.getColumnNames().indexOf(ids.get(tbIndex) );
           while ((row = bean.getNextRow()) != null)
           {
             j++;
             //print rows
             Object obj = null;
             /* for(int k=0;k<row.size()-1;++k)
              {
                   obj = row.get(k);
                   //System.out.println("row "+obj+" "+k);
                if(obj!=null&&!(obj instanceof ArrayList))
                command.append("'"+convertUml(obj.toString())+"',"); 
                else if(obj!=null&&   obj instanceof ArrayList)
                command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"',"); 
                else command.append("NULL,");
              }
              obj = row.get(row.size() - 1);
              if (obj != null && !(obj instanceof ArrayList))
              command.append("'"+convertUml(obj.toString())+"')"); 
               else
               if(obj!=null&&   obj instanceof ArrayList)
                command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"')");         //command.append(obj.toString()+")");
                else command.append("NULL)");
               */
             //command.append("'"+row.get(row.size()-1)+"')"); 
             //command.append(" )");
             //  for(int k=0;k<row.size();++k)
   
             // System.out.println();
             //   System.out.println(command+" "+j+" "+row.size()+" "+  ((Vector)result2[0].get(j)).size());
             // System.out.println(command);
             for (int k = 0; k < row.size(); ++k)
             {
               obj = row.get(k);
               if (obj instanceof ArrayList)
                 obj = ((List) obj).get(0);
               String str = (obj == null) ? "NULL" : obj.toString();
               if (!str.equals("NULL"))
                 pstm.setString(k + 1, str);
               else
                 pstm.setNull(k + 1, Types.NULL);
             }
            pstm.setString(row.size()+1,row.get(idIndex).toString());
                    //System.out.println(pstm.toString());
                   // System.exit(0);
             pstm.execute();
             //stm.executeUpdate(command.toString());
             if(dialog!=null)
             dialog.progress.setValue((int) (((double) (j + 1) / (double) rowCount) * 100.0));
             // System.out.println( (int)(((double)(j+1)/(double)result[0].size())*100.0)+" "+result[0].size()+" "+j);
             command = null;
           } // to for loop    
   
         }
       } catch (Exception e)
       {
         System.out.println("Error while connecting to database " + e);
         if (dialog != null)
         {
           dialog.setVisible(false);
           dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
           FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
         }
         java.io.ByteArrayOutputStream b = new java.io.ByteArrayOutputStream();
         java.io.PrintStream stream = new java.io.PrintStream(b);
         stream.print(command + "\n\n");
         e.printStackTrace(stream);
         FM2SQL.showErrorDialog(b.toString(), "Error occured !");
   
       }
       if (dialog != null)
       {
         dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
         FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
   
         dialog.setVisible(false);
       }
   
     }
   
   public static void  convert(String source,String destination,Vector names,Vector layouts,Vector selects,Vector creates) throws Exception  
   
     public static void  convert(String source,String destination,Vector names,Vector layouts,Vector selects,Vector creates,Vector ids,int mode) throws Exception
   {    {
    FM2SQL.ProgressDialog dialog = new  FM2SQL.ProgressDialog(FM2SQL.fmInstance);     FM2SQL.ProgressDialog dialog = new  FM2SQL.ProgressDialog(FM2SQL.fmInstance);
    dialog.setTitle("Conversion running ...");     dialog.setTitle("Conversion running ...");
Line 287  class Convert Line 489  class Convert
    dialog.setLocation(FM2SQL.fmInstance.getLocationOnScreen().x+(FM2SQL.fmInstance.getWidth()-400)/2,FM2SQL.fmInstance.getLocationOnScreen().y+(FM2SQL.fmInstance.getHeight()-250)/2);      dialog.setLocation(FM2SQL.fmInstance.getLocationOnScreen().x+(FM2SQL.fmInstance.getWidth()-400)/2,FM2SQL.fmInstance.getLocationOnScreen().y+(FM2SQL.fmInstance.getHeight()-250)/2); 
      dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));       dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
      FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));       FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
        java.util.TreeSet myIds;
      int deltaID = 1;
    dialog.thread=Thread.currentThread();     dialog.thread=Thread.currentThread();
    // setting user and passwd      // setting user and passwd 
    bean.setUserAndPasswd(user,passwd);     bean.setUserAndPasswd(user,passwd);
Line 309  class Convert Line 513  class Convert
       for(tbIndex=0;tbIndex<names.size();++tbIndex)        for(tbIndex=0;tbIndex<names.size();++tbIndex)
       {        {
         Vector[] result = null;          Vector[] result = null;
        try {        try
         {
         query = "select * from " + bean.getQC() +names.get(tbIndex).toString() + bean.getQC();          query = "select * from " + bean.getQC() +names.get(tbIndex).toString() + bean.getQC();
        String layout=(layouts.isEmpty()) ? "":layouts.get(tbIndex).toString();          String layout=(layouts.isEmpty()) ? "":layouts.get(tbIndex).toString(); 
      query = (selects!=null) ? selects.get(tbIndex).toString():query;       query = (selects!=null) ? selects.get(tbIndex).toString():query;
Line 332  class Convert Line 537  class Convert
         dialog.show();          dialog.show();
         //result = bean.getQueryData(query, dialog, 0);          //result = bean.getQueryData(query, dialog, 0);
         bean.getConnection();          bean.getConnection();
         bean.makeQuery(query,0);          bean.makeQuery(query, 50);
          // @TODO id Vector must be used in querys while loop over id ranges where id>=start and id<=end
           myIds = bean.getIDVector(ids.get(tbIndex).toString(),(String) names.get(tbIndex),query);
           System.out.println("ID LIST SIZE "+Math.round((double)myIds.size()/10.0));
           deltaID =(int) Math.round((double)myIds.size()/10.0);
       } catch (Exception e)        } catch (Exception e)
         {          {
           continue;            continue;
Line 349  class Convert Line 558  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);
       if(true)         if(mode==Convert.DataBase.CONVERT_MODE) 
       {        {
         if(tables.indexOf(names.get(tbIndex))>=0)           if(tables.indexOf(names.get(tbIndex))>=0) 
         {          {
Line 424  class Convert Line 633  class Convert
     //for (int j = 0; j < result[0].size(); ++j)      //for (int j = 0; j < result[0].size(); ++j)
     int j=-1;      int j=-1;
     Vector row = null;      Vector row = null;
     int rowCount= bean.getRowCount(query);      command = new StringBuffer();
   
       command.append("INSERT  INTO ");
       command.append(beanDest.getQC());
       command.append(convertText((String) names.get(tbIndex)));
       command.append(beanDest.getQC());
       command.append(" values ( ");
       
       for(int i=0;i<bean.getColumnNames().size()-1;++i) command.append("?,");
       command.append("?)");
       PreparedStatement pstm = beanDest.getConnection().prepareStatement(command.toString());
       System.out.println(command);
       int rowCount= myIds.size();//bean.getRowCount(query)
       Vector vec = new Vector(myIds);
       for(int k=0;k<vec.size()-deltaID;k=k+deltaID)
       {
         System.out.println(vec.get(k)+" "+vec.get(k+deltaID)+" "+vec.lastElement());
       }
     while((row=bean.getNextRow())!=null)      while((row=bean.getNextRow())!=null)
     {      {
       j++;        j++;
       // row = (Vector) result[0].get(j);        // row = (Vector) result[0].get(j);
       command = new StringBuffer();     /*   command = new StringBuffer();
   
         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(convertText((String) names.get(tbIndex)));
         command.append(beanDest.getQC());          command.append(beanDest.getQC());
         command.append(" values ( ");          command.append(" values ( ");
        */
         //print rows          //print rows
      Object obj = null;       Object obj = null;
      for(int k=0;k<row.size()-1;++k)      /* for(int k=0;k<row.size()-1;++k)
      {       {
         obj = row.get(k);          obj = row.get(k);
         //System.out.println("row "+obj+" "+k);          //System.out.println("row "+obj+" "+k);
        if(obj!=null&&!(obj instanceof ArrayList))         if(obj!=null&&!(obj instanceof ArrayList))
        command.append("'"+convertUml(new String(obj.toString().getBytes("UTF-8"),"UTF-8"))+"',");          command.append("'"+convertUml(obj.toString())+"',"); 
        else if(obj!=null&&   obj instanceof ArrayList)         else if(obj!=null&&   obj instanceof ArrayList)
        command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"',");          command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"',"); 
        else command.append("NULL,");         else command.append("NULL,");
      }       }
      obj = row.get(row.size() - 1);       obj = row.get(row.size() - 1);
      if (obj != null && !(obj instanceof ArrayList))       if (obj != null && !(obj instanceof ArrayList))
      command.append("'"+convertUml(new String(obj.toString().getBytes("UTF-8"),"UTF-8"))+"')");        command.append("'"+convertUml(obj.toString())+"')"); 
       else        else
       if(obj!=null&&   obj instanceof ArrayList)        if(obj!=null&&   obj instanceof ArrayList)
        command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"')");         //command.append(obj.toString()+")");         command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"')");         //command.append(obj.toString()+")");
        else command.append("NULL)");         else command.append("NULL)");
         */
       //command.append("'"+row.get(row.size()-1)+"')");         //command.append("'"+row.get(row.size()-1)+"')"); 
       //command.append(" )");        //command.append(" )");
       //  for(int k=0;k<row.size();++k)        //  for(int k=0;k<row.size();++k)
Line 462  class Convert Line 690  class Convert
       // System.out.println();        // System.out.println();
       //   System.out.println(command+" "+j+" "+row.size()+" "+  ((Vector)result2[0].get(j)).size());        //   System.out.println(command+" "+j+" "+row.size()+" "+  ((Vector)result2[0].get(j)).size());
       // System.out.println(command);        // System.out.println(command);
       stm.executeUpdate(command.toString());        for(int k=0;k<row.size();++k) 
         {
           obj = row.get(k);
           if(obj instanceof ArrayList) obj=((List)obj).get(0);
           String str =(obj==null) ? "NULL":obj.toString();
           if(!str.equals("NULL"))
           pstm.setString(k+1,str); 
           else pstm.setNull(k+1,Types.NULL);
         }
         pstm.execute();
         //stm.executeUpdate(command.toString());
       dialog.progress.setValue((int) (((double) (j + 1) / (double) rowCount) * 100.0));        dialog.progress.setValue((int) (((double) (j + 1) / (double) rowCount) * 100.0));
     // System.out.println( (int)(((double)(j+1)/(double)result[0].size())*100.0)+" "+result[0].size()+" "+j);      // System.out.println( (int)(((double)(j+1)/(double)result[0].size())*100.0)+" "+result[0].size()+" "+j);
    command = null;     command = null;
Line 493  class Convert Line 731  class Convert
     StringBuffer alterMe = new StringBuffer(newName.trim().toLowerCase());      StringBuffer alterMe = new StringBuffer(newName.trim().toLowerCase());
     int length = alterMe.length();      int length = alterMe.length();
     int j = 0;      int j = 0;
       int index=alterMe.indexOf(".fp5");
       if ( index >= 0 )
        {
          alterMe.delete(index, index + 4);
          length = length - 4;
        }
    
     while (j < length)      while (j < length)
     {       { 
       if (alterMe.charAt(j) == ' ')        if (alterMe.charAt(j) == ' ')
Line 560  class Convert Line 805  class Convert
     {      {
       alterMe.setCharAt(j, '_');        alterMe.setCharAt(j, '_');
   
       } else if (alterMe.charAt(j) == '?')
               {
                   // changed ? to _ because of update statement
               alterMe.setCharAt(j,'_');
          // length = length + 1;
                // j=j+1;
               System.out.println(alterMe);
               }
   
       else if (alterMe.charAt(j) == '.')
       {
         if(j==length-1)
         {
           alterMe.delete(j, j); 
           length--;
     }      }
               else
               alterMe.setCharAt(j,'_');
       }
   
       ++j;
     }
       return alterMe.toString();
     }
     public static String convertToEntities(String newName)
     {
       StringBuffer alterMe = new StringBuffer(newName.trim());
       int length = alterMe.length();
       int j = 0;
   
       while (j < length)
       {
   
         if (alterMe.charAt(j) == '>')
         {
           alterMe.setCharAt(j, '&');
           alterMe.insert(j + 1, "gt;");
           length = length + 2;
           if (j < length - 1)
             j = j + 1;
   
         } else if (alterMe.charAt(j) == '<')
         {
           alterMe.setCharAt(j, '&');
           alterMe.insert(j + 1, "lt;");
           length = length + 2;
           if (j < length - 1)
             j = j + 1;
   
         }
     ++j;      ++j;
   }    }
     return alterMe.toString();      return alterMe.toString();
Line 680  class Convert Line 973  class Convert
     {      {
       boolean finished = false;        boolean finished = false;
       // parse string and build document tree        // parse string and build document tree
       Node  root = new Xparse().parse(sb.toString());        Xparse parser =new Xparse();
         parser.changeEntities = true;
         Node  root = parser.parse(sb.toString());
        // printContents(root);         // printContents(root);
       Vector databases= new Vector();        Vector databases= new Vector();
       Vector tables = new Vector();        Vector tables = new Vector();
       Vector layouts = new Vector();        Vector layouts = new Vector();
       Vector selects = new Vector();        Vector selects = new Vector();
       Vector creates = new Vector();        Vector creates = new Vector();
               Vector ids     = new Vector();
         int mode = -1;
             
       try        try
       {        {
Line 702  class Convert Line 999  class Convert
           layouts = new Vector();            layouts = new Vector();
           selects = new Vector();            selects = new Vector();
           creates = new Vector();            creates = new Vector();
             ids     = new Vector();
          // parse dataBase           // parse dataBase
           Node node = root.find("convert/source/database/url", new int[] { 1, 1, i, 1 });            Node node = root.find("convert/source/database/url", new int[] { 1, 1, i, 1 });
           Node node1 = root.find("convert/source/database/user", new int[] { 1, 1, i, 1, 1 });            Node node1 = root.find("convert/source/database/user", new int[] { 1, 1, i, 1, 1 });
           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});
   
           if(node3== null) throw new Error("parse error database tag missing");            if(node3== null) throw new Error("parse error database tag missing");
           if(node==null) throw new Error("parse error url tag missing");            if(node==null) throw new Error("parse error url tag missing");
           if(node1==null) throw new Error("parse error user tag missing");            if(node1==null) throw new Error("parse error user tag missing");
Line 720  class Convert Line 1019  class Convert
           System.out.println(node.name + " " + node.getCharacters());            System.out.println(node.name + " " + node.getCharacters());
           System.out.println(node1.name + " " + node1.getCharacters());            System.out.println(node1.name + " " + node1.getCharacters());
           System.out.println(node2.name + " " + node2.getCharacters());            System.out.println(node2.name + " " + node2.getCharacters());
                    String modeString = "";
             if (nodeMode == null)
               modeString = "convert";
             else
               modeString = nodeMode.getCharacters();
             if (modeString.equals("convert"))
               mode = DataBase.CONVERT_MODE;
             else
               if (modeString.equals("append"))
                 mode = DataBase.APPEND_MODE;
               else
                 if (modeString.equals("update"))
                   mode = DataBase.UPDATE_MODE;
        //   if(node3!=null)         //   if(node3!=null)
          // System.out.println(node3.name);           // System.out.println(node3.name);
                       
Line 744  class Convert Line 1055  class Convert
             // if(node6==null) throw new Error("parse error create tag missing");              // if(node6==null) throw new Error("parse error create tag missing");
             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");
               System.out.println("id was "+id);
             if(name==null) throw new Error("parse error required table tag attribute name missing");              if(name==null) throw new Error("parse error required table tag attribute name missing");
             if(layout==null) layout ="";              if(layout==null) layout ="";
               if(id==null)  id = "";
             if(name.equals("")) throw new Error("parse error table tag attribute must not be empty");              if(name.equals("")) throw new Error("parse error table tag attribute must not be empty");
             tables.add(name);              tables.add(name);
             layouts.add(layout);              layouts.add(layout);
               ids.add(id);
             String query = (node5==null) ? "":node5.getCharacters();               String query = (node5==null) ? "":node5.getCharacters(); 
             if(query.equals("")) System.err.println("Warning empty select tag or  select tag missing !!");              if(query.equals("")) System.err.println("Warning empty select tag or  select tag missing !!");
             query = (query.equals("")) ? "select * from "+database.getQC()+name+database.getQC():query;              query = (query.equals("")) ? "select * from "+database.getQC()+name+database.getQC():query;
Line 758  class Convert Line 1073  class Convert
               creates.add("");                creates.add("");
                           
           }            }
           databases.add(new DataBase(database, tables, layouts, selects,creates));            databases.add(new DataBase(database, tables, layouts, selects,creates,ids,mode));
         }          }
         DBBean database = new DBBean();          DBBean database = new DBBean();
         // parse dataBase          // parse dataBase
Line 775  class Convert Line 1090  class Convert
        for (Iterator iter = databases.iterator(); iter.hasNext();)         for (Iterator iter = databases.iterator(); iter.hasNext();)
       {        {
         DataBase db = (DataBase) iter.next();          DataBase db = (DataBase) iter.next();
         convertBatch(db.bean,database,db.tables,db.layouts,db.selects,db.creates);          if(mode!=DataBase.UPDATE_MODE)
           convertBatch(db.bean,database,db.tables,db.layouts,db.selects,db.creates,mode);
           else
           update(db.bean.url,database.url,db.tables,db.layouts,db.selects,db.creates,db.ids,mode);
                   
       }        }
         // printContents(node3);          // printContents(node3);
Line 895  class Convert Line 1213  class Convert
       
        boolean finished = false;         boolean finished = false;
        // parse string and build document tree         // parse string and build document tree
        Node  root = new Xparse().parse(sb.toString());         Xparse parser =new Xparse();
          parser.changeEntities = true;
          Node  root = parser.parse(sb.toString());
         // printContents(root);          // printContents(root);
        Vector databases= new Vector();         Vector databases= new Vector();
        Vector tables = new Vector();         Vector tables = new Vector();
        Vector layouts = new Vector();         Vector layouts = new Vector();
        Vector selects = new Vector();         Vector selects = new Vector();
        Vector creates = new Vector();         Vector creates = new Vector();
          Vector ids     = new Vector();
             
          int mode = -1;
        try         try
        {         {
          Node tempNode = root.find("convert/source", new int[] { 1, 1 });           Node tempNode = root.find("convert/source", new int[] { 1, 1 });
Line 917  class Convert Line 1239  class Convert
            layouts = new Vector();             layouts = new Vector();
            selects = new Vector();             selects = new Vector();
            creates = new Vector();             creates = new Vector();
              ids     = new Vector();
           // parse dataBase            // parse dataBase
            Node node = root.find("convert/source/database/url", new int[] { 1, 1, i, 1 });             Node node = root.find("convert/source/database/url", new int[] { 1, 1, i, 1 });
            Node node1 = root.find("convert/source/database/user", new int[] { 1, 1, i, 1, 1 });             Node node1 = root.find("convert/source/database/user", new int[] { 1, 1, i, 1, 1 });
            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 });
              
            if(node3== null) throw new Error("parse error database tag missing");             if(node3== null) throw new Error("parse error database tag missing");
            if(node==null) throw new Error("parse error url tag missing");             if(node==null) throw new Error("parse error url tag missing");
            if(node1==null) throw new Error("parse error user tag missing");             if(node1==null) throw new Error("parse error user tag missing");
Line 935  class Convert Line 1259  class Convert
            System.out.println(node.name + " " + node.getCharacters());             System.out.println(node.name + " " + node.getCharacters());
            System.out.println(node1.name + " " + node1.getCharacters());             System.out.println(node1.name + " " + node1.getCharacters());
            System.out.println(node2.name + " " + node2.getCharacters());             System.out.println(node2.name + " " + node2.getCharacters());
              String modeString = "";  
             if (nodeMode == null)
               modeString = "convert";
             else
               modeString = nodeMode.getCharacters();
             if (modeString.equals("convert"))
               mode = DataBase.CONVERT_MODE;
             else
               if (modeString.equals("append"))
                 mode = DataBase.APPEND_MODE;
               else
                 if (modeString.equals("update"))
                   mode = DataBase.UPDATE_MODE;
                
                 
         //   if(node3!=null)          //   if(node3!=null)
           // System.out.println(node3.name);            // System.out.println(node3.name);
Line 959  class Convert Line 1297  class Convert
              // if(node6==null) throw new Error("parse error create tag missing");               // if(node6==null) throw new Error("parse error create tag missing");
              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");
                System.out.println("id was "+id);
            
              if(name==null) throw new Error("parse error required table tag attribute name missing");               if(name==null) throw new Error("parse error required table tag attribute name missing");
              if(layout==null) layout ="";               if(layout==null) layout ="";
                if(id == null)  id="";
              if(name.equals("")) throw new Error("parse error table tag attribute must not be empty");               if(name.equals("")) throw new Error("parse error table tag attribute must not be empty");
              tables.add(name);               tables.add(name);
              layouts.add(layout);               layouts.add(layout);
                ids.add(id);
              String query = (node5==null) ? "":node5.getCharacters();                String query = (node5==null) ? "":node5.getCharacters(); 
              if(query.equals("")) System.err.println("Warning empty select tag or  select tag missing !!");               if(query.equals("")) System.err.println("Warning empty select tag or  select tag missing !!");
              query = (query.equals("")) ? "select * from "+database.getQC()+name+database.getQC():query;               query = (query.equals("")) ? "select * from "+database.getQC()+name+database.getQC():query;
Line 973  class Convert Line 1316  class Convert
                creates.add("");                 creates.add("");
                           
            }             }
            databases.add(new DataBase(database, tables, layouts, selects,creates));             databases.add(new DataBase(database, tables, layouts, selects,creates,ids,mode));
          }           }
          DBBean database = new DBBean();           DBBean database = new DBBean();
          // parse dataBase           // parse dataBase
Line 986  class Convert Line 1329  class Convert
          System.out.println(url);           System.out.println(url);
          database.setURL(url.trim());           database.setURL(url.trim());
          database.setUserAndPasswd(user.trim(), password.trim());           database.setUserAndPasswd(user.trim(), password.trim());
          databases.add(new DataBase(database,null,null,null,null));           databases.add(new DataBase(database,null,null,null,null,null,0));
          //databases.add(database);           //databases.add(database);
     /*    for (Iterator iter = databases.iterator(); iter.hasNext();)      /*    for (Iterator iter = databases.iterator(); iter.hasNext();)
        {         {
Line 1066  public static class DataBase Line 1409  public static class DataBase
   Vector selects;    Vector selects;
   Vector layouts;    Vector layouts;
   Vector tables;    Vector tables;
   public DataBase(DBBean bean,Vector tables,Vector layouts,Vector selects,Vector creates)    Vector ids;
     final static int CONVERT_MODE = 1;
       final static int APPEND_MODE  = 2;
       final static int UPDATE_MODE  = 3;
     int mode = -1;
     
     public DataBase(DBBean bean,Vector tables,Vector layouts,Vector selects,Vector creates,Vector ids,int mode)
   {    {
     this.bean = bean;      this.bean = bean;
     this.tables = tables;      this.tables = tables;
     this.layouts = layouts;      this.layouts = layouts;
     this.selects = selects;      this.selects = selects;
     this.creates = creates;      this.creates = creates;
       this.ids     = ids;
       this.mode = mode;
       this.bean.setIDVector(ids);
   }    }
   public void exportToXML(BufferedWriter buffr) throws Exception    public void exportToXML(BufferedWriter buffr) throws Exception
    {     {
       // ids=bean.getIDVector();
      buffr.write("    <database>\n");       buffr.write("    <database>\n");
      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");
        String modeString ="";
       if (mode == CONVERT_MODE)
         modeString = "convert";
       else
         if (mode == APPEND_MODE)
           modeString = "append";
         else
           if (mode == UPDATE_MODE)
             modeString = "update";
   
        buffr.write("      <mode>"+ modeString+"</mode>\n");
      int index = 0;       int index = 0;
      while(index<tables.size())       while(index<tables.size())
      {       {
Line 1088  public static class DataBase Line 1451  public static class DataBase
        String layout=(String)layouts.get(index);         String layout=(String)layouts.get(index);
        String select=(String)selects.get(index);         String select=(String)selects.get(index);
        String create=(String)creates.get(index);         String create=(String)creates.get(index);
          String id=(String)ids.get(index);
         
        buffr.write("      <table name = \""+table+"\" layout = \""+layout+"\">\n");         buffr.write("      <table name = \""+table+"\" layout = \""+layout+"\" id = \""+id+"\" >\n");
        buffr.write("         <select>"+select+"</select>\n");         buffr.write("         <select>"+ convertToEntities(select)+"</select>\n");
        if(!create.equals(""))         if(!create.equals(""))
        buffr.write("         <create>"+create+"         </create>\n");          buffr.write("         <create>"+create+"         </create>\n"); 
        buffr.write("      </table>\n");         buffr.write("      </table>\n");

Removed from v.1.1  
changed lines
  Added in v.1.25


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