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

version 1.33, 2004/02/13 12:28:41 version 1.34, 2004/02/16 12:24:17
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 44  class Convert Line 43  class Convert
      System.out.println("Usage: java Convert <xml config file>");       System.out.println("Usage: java Convert <xml config file>");
      System.exit(-1);       System.exit(-1);
     }      }
     if(!(new File(args[0]).exists())) System.exit(0);      if (!(new File(args[0]).exists()))
         System.exit(0);
     try      try
     {      {
       file = new FileOutputStream("./log.txt");        file = new FileOutputStream("./log.txt");
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,int mode) throws Exception    public static void convertBatch(DBBean source, DBBean destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids,int mode) throws Exception
   {    {
    /*FM2SQL.ProgressDialog dialog = new  FM2SQL.ProgressDialog(FM2SQL.fmInstance);  
    dialog.setTitle("Conversion running ...");  
    dialog.title.setText("Getting table data ...");  
    dialog.setLocation(500,500);   
    dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));  
   */  
   // FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));  
    //dialog.thread=Thread.currentThread();  
    bean = source;     bean = source;
    beanDest = destination;     beanDest = destination;
  /*  // setting user and passwd       convert(null,null,names,layouts,selects,creates,ids,mode);
    bean.setUserAndPasswd(user,passwd);      if(true) return;
   // setting user and passwd   
   beanDest.setUserAndPasswd(userDest,passwdDest);  
   */  
   //dialog.setSize(400,250);  
    StringBuffer command= null;     StringBuffer command= null;
     try      try
     {      {
       //bean.setConnection("jdbc:fmpro:http://141.14.237.74:8050");      
     //bean.setConnection("jdbc:postgresql://erebos/test","postgres","rogo");  
       bean.setConnection(source.url);        bean.setConnection(source.url);
       if(names==null)        if(names==null)
        names=bean.getTableNames();         names=bean.getTableNames();
       //Collections.sort(names);        //Collections.sort(names);
         int tbIndex = 1;          int tbIndex = 1;
             
      // System.out.println("Start at "+names.indexOf("archimedes_facsimiles"));  
       for(tbIndex=0;tbIndex<names.size();++tbIndex)        for(tbIndex=0;tbIndex<names.size();++tbIndex)
       {        {
         Vector[] result = null;          Vector[] result = null;
        try {          try
           {
      String query = "select * from " + bean.getQC() +names.get(tbIndex).toString() + bean.getQC();       String 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 108  class Convert Line 94  class Convert
           System.out.println("added layout " + query);            System.out.println("added layout " + query);
                   
         }          }
         //  if ( layout!= "")  
         //   query += " layout " + bean.getQC() + layout + bean.getQC();  
      /*   dialog.title.setText("Getting table data ...");  
         dialog.table.setText(names.get(tbIndex).toString());  
         dialog.status.setText("Table " + (tbIndex + 1) + " of " + names.size());  
         dialog.show();  
       */  
           System.out.println(" performing query "+query);            System.out.println(" performing query "+query);
           //result = bean.getQueryData(query, null, 0);            //result = bean.getQueryData(query, null, 0);
         bean.getConnection();          bean.getConnection();
Line 144  class Convert Line 123  class Convert
          stm.executeUpdate("drop table "+beanDest.getQC()+names.get(tbIndex)+beanDest.getQC());           stm.executeUpdate("drop table "+beanDest.getQC()+names.get(tbIndex)+beanDest.getQC());
         tables.remove((String)names.get(tbIndex));          tables.remove((String)names.get(tbIndex));
         System.out.println("dropped table "+ names.get(tbIndex));          System.out.println("dropped table "+ names.get(tbIndex));
         }            } else if (tables.indexOf(convertText(names.get(tbIndex).toString())) >= 0)
         else  
         if(tables.indexOf(convertText(names.get(tbIndex).toString()))>=0)   
         {          {
          stm.executeUpdate("drop table "+beanDest.getQC()+convertText((String)names.get(tbIndex))+beanDest.getQC());           stm.executeUpdate("drop table "+beanDest.getQC()+convertText((String)names.get(tbIndex))+beanDest.getQC());
         tables.remove(convertText((String)names.get(tbIndex)));          tables.remove(convertText((String)names.get(tbIndex)));
Line 181  class Convert Line 158  class Convert
           type = (type.equals("CONTAINER")) ? "TEXT" : type;            type = (type.equals("CONTAINER")) ? "TEXT" : type;
           command.append(beanDest.getQC() + convertText((String) columnNames.get(columnNames.size() - 1)) + beanDest.getQC() + " " + type);            command.append(beanDest.getQC() + convertText((String) columnNames.get(columnNames.size() - 1)) + beanDest.getQC() + " " + type);
           command.append(" )");            command.append(" )");
         }              } else
          else  
          command=new StringBuffer().append(creates.get(tbIndex).toString());           command=new StringBuffer().append(creates.get(tbIndex).toString());
                     
            System.out.println(command);             System.out.println(command);
Line 192  class Convert Line 168  class Convert
                   
       }        }
     }      }
     // System.out.println(names);  
     /*      
     if (idVal == "")  
           stm.executeUpdate("INSERT  INTO " + DBBean.getQC() + box.getSelectedItem() + DBBean.getQC() + " (" + DBBean.getQC() + columnName + DBBean.getQC() + ")  VALUES ('" + value + "') ");  
         else  
           stm.executeUpdate("UPDATE   " + DBBean.getQC() + box.getSelectedItem() + DBBean.getQC() + " SET  " + DBBean.getQC() + columnName + DBBean.getQC() + "='" + value + "' WHERE ID='" + idVal + "' ");  
       */  
   
     // Vector[] result2=beanDest.getQueryData(names.get(tbIndex).toString());  
     // print results to screen  
   /*  for (int i = 0; i < result[1].size(); ++i)  
     {  
       //print Header  
       // System.out.println(" "+result[1].get(i)+" "+result2[1].get(i)+" "+i);  
     }*/  
     // System.out.println();  
     //dialog.title.setText("Writing table data ...");  
     Vector row = null;      Vector row = null;
     //for (int j = 0; j < result[0].size(); ++j)  
     command = new StringBuffer();      command = new StringBuffer();
   
     command.append("INSERT  INTO ");      command.append("INSERT  INTO ");
Line 226  class Convert Line 184  class Convert
     System.out.println(command);      System.out.println(command);
     while((row=bean.getNextRow())!=null)      while((row=bean.getNextRow())!=null)
     {      {
 /*      //Vector row = (Vector) result[0].get(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 ( ");  
    */  
              //print rows               //print rows
      Object obj = null;       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(new String(obj.toString().getBytes("UTF-8"),"UTF-8"))+"',");   
        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(new String(obj.toString().getBytes("UTF-8"),"UTF-8"))+"')");   
       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);  
             stm.executeUpdate(command.toString());  
   // 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);  
    command = null;  
 */  
     for (int k = 0; k < row.size(); ++k)      for (int k = 0; k < row.size(); ++k)
     {      {
       obj = row.get(k);        obj = row.get(k);
Line 303  class Convert Line 222  class Convert
  //  dialog.setVisible(false);    //  dialog.setVisible(false); 
   }    }
   
   
   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 486  class Convert Line 404  class Convert
  **/   **/
   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
   {    {
    FM2SQL.ProgressDialog dialog = new  FM2SQL.ProgressDialog(FM2SQL.fmInstance);  
       FM2SQL.ProgressDialog dialog = null;
   
       if (FM2SQL.fmInstance != null)
       {
         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 ...");
    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));
         dialog.thread = Thread.currentThread();
         dialog.setSize(400, 250);
       }
      java.util.TreeSet myIds = new TreeSet();       java.util.TreeSet myIds = new TreeSet();
    int deltaID = 1;     int deltaID = 1;
    String idField = "";     String idField = "";
    dialog.thread=Thread.currentThread();      if (source != null && destination != null)
       {
    // setting user and passwd      // setting user and passwd 
    bean.setUserAndPasswd(user,passwd);     bean.setUserAndPasswd(user,passwd);
   // setting user and passwd     // setting user and passwd 
   beanDest.setUserAndPasswd(userDest,passwdDest);    beanDest.setUserAndPasswd(userDest,passwdDest);
   dialog.setSize(400,250);      }
    StringBuffer command= null;     StringBuffer command= null;
    String query = null;     String query = null;
     try      try
     {      {
       //bean.setConnection("jdbc:fmpro:http://141.14.237.74:8050");            //bean.setConnection("jdbc:fmpro:http://141.14.237.74:8050");    
       //bean.setConnection("jdbc:postgresql://erebos/test","postgres","rogo");        //bean.setConnection("jdbc:postgresql://erebos/test","postgres","rogo");
         if(source!=null)
       bean.setConnection(source);        bean.setConnection(source);
         else
         bean.setConnection(bean.url);
         
       if(names==null)        if(names==null)
        names=bean.getTableNames();         names=bean.getTableNames();
      // Collections.sort(names);       // Collections.sort(names);
Line 535  class Convert Line 466  class Convert
         }          }
         //  if ( layout!= "")          //  if ( layout!= "")
         //   query += " layout " + bean.getQC() + layout + bean.getQC();          //   query += " layout " + bean.getQC() + layout + bean.getQC();
             if (dialog != null)
             {
         dialog.title.setText("Reading table data ...");          dialog.title.setText("Reading table data ...");
         dialog.table.setText(names.get(tbIndex).toString());          dialog.table.setText(names.get(tbIndex).toString());
         dialog.status.setText("Table " + (tbIndex + 1) + " of " + names.size());          dialog.status.setText("Table " + (tbIndex + 1) + " of " + names.size());
         dialog.show();          dialog.show();
             }
         //result = bean.getQueryData(query, dialog, 0);          //result = bean.getQueryData(query, dialog, 0);
         bean.getConnection();          bean.getConnection();
         bean.makeQuery(query, 50);          bean.makeQuery(query, 50);
Line 551  class Convert Line 485  class Convert
         continue;          continue;
       }        }
         //beanDest.setConnection("jdbc:postgresql://erebos/test3");          //beanDest.setConnection("jdbc:postgresql://erebos/test3");
           if(destination!=null)
         beanDest.setConnection(destination);          beanDest.setConnection(destination);
           else
           beanDest.setConnection(beanDest.url);
         Statement stm = beanDest.getConnection().createStatement();          Statement stm = beanDest.getConnection().createStatement();
   
         Vector tables = beanDest.getTableNames();          Vector tables = beanDest.getTableNames();
Line 569  class Convert Line 505  class Convert
          stm.executeUpdate("drop table "+beanDest.getQC()+names.get(tbIndex)+beanDest.getQC());           stm.executeUpdate("drop table "+beanDest.getQC()+names.get(tbIndex)+beanDest.getQC());
         tables.remove((String)names.get(tbIndex));          tables.remove((String)names.get(tbIndex));
         System.out.println("dropped table"+ names.get(tbIndex));          System.out.println("dropped table"+ names.get(tbIndex));
         }            } else if (tables.indexOf(convertText(names.get(tbIndex).toString())) >= 0)
         else  
         if(tables.indexOf(convertText(names.get(tbIndex).toString()))>=0)   
         {          {
          stm.executeUpdate("drop table "+beanDest.getQC()+convertText((String)names.get(tbIndex))+beanDest.getQC());           stm.executeUpdate("drop table "+beanDest.getQC()+convertText((String)names.get(tbIndex))+beanDest.getQC());
         tables.remove(convertText((String)names.get(tbIndex)));          tables.remove(convertText((String)names.get(tbIndex)));
Line 616  class Convert Line 550  class Convert
                   
       }        }
     }      }
           if(dialog!=null)
     dialog.title.setText("Writing table data ...");      dialog.title.setText("Writing table data ...");
           
   // prepare the insert statement    // prepare the insert statement
Line 629  class Convert Line 564  class Convert
     command.append(beanDest.getQC());      command.append(beanDest.getQC());
     command.append(" values ( ");      command.append(" values ( ");
           
     for(int i=0;i<bean.getColumnNames().size()-1;++i) command.append("?,");          for (int i = 0; i < bean.getColumnNames().size() - 1; ++i)
             command.append("?,");
     command.append("?)");      command.append("?)");
     PreparedStatement pstm = beanDest.getConnection().prepareStatement(command.toString());      PreparedStatement pstm = beanDest.getConnection().prepareStatement(command.toString());
     System.out.println(command);      System.out.println(command);
     int rowCount= (idField!="") ? myIds.size():bean.getRowCount(query);      int rowCount= (idField!="") ? myIds.size():bean.getRowCount(query);
     Vector vec = new Vector(myIds);      Vector vec = new Vector(myIds);
     int endIndex = -1;      int endIndex = -1;
     String tempQuery=query;String tempID = bean.getQC()+idField+bean.getQC();          String tempQuery = query;
           String tempID = bean.getQC() + idField + bean.getQC();
     if (!idField.equals(""))      if (!idField.equals(""))
     {      {
       long startTime = System.currentTimeMillis();        long startTime = System.currentTimeMillis();
Line 644  class Convert Line 581  class Convert
       while (true)        while (true)
       {        {
         ++counter;          ++counter;
         if(counter==0)              if (counter == 0&&dialog!=null)
         dialog.title.setText("Check if data  is available");          dialog.title.setText("Check if data  is available");
         else          else
                 if(dialog!=null)
         dialog.title.setText("Check if more  data  is available");          dialog.title.setText("Check if more  data  is available");
         myIds = bean.getIDVector(ids.get(tbIndex).toString(), (String) names.get(tbIndex), tempQuery, numHits);          myIds = bean.getIDVector(ids.get(tbIndex).toString(), (String) names.get(tbIndex), tempQuery, numHits);
         if(myIds.isEmpty()) break;              if (myIds.isEmpty())
                 break;
         vec = new Vector(myIds);          vec = new Vector(myIds);
         rowCount = vec.size();          rowCount = vec.size();
         System.out.println("ID LIST SIZE " + Math.round((double) myIds.size() / (double) numIntervalls) + " " + myIds.size());          System.out.println("ID LIST SIZE " + Math.round((double) myIds.size() / (double) numIntervalls) + " " + myIds.size());
         deltaID = (int) Math.round((double) myIds.size() / (double) numIntervalls);          deltaID = (int) Math.round((double) myIds.size() / (double) numIntervalls);
         if (vec.size() <= numIntervalls)          if (vec.size() <= numIntervalls)
         {          {
           endIndex = 0; deltaID = vec.size();                endIndex = 0;
                 deltaID = vec.size();
         }          }
         for (int k = 0; k < vec.size() - deltaID; k = k + deltaID)          for (int k = 0; k < vec.size() - deltaID; k = k + deltaID)
         {          {
Line 666  class Convert Line 606  class Convert
           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)
           dialog.title.setText("Reading table data ...");            dialog.title.setText("Reading table data ...");
   
           bean.makeQuery(tempQuery, deltaID);            bean.makeQuery(tempQuery, deltaID);
                 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);
Line 686  class Convert Line 628  class Convert
           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)
           dialog.title.setText("Reading table data ...");            dialog.title.setText("Reading table data ...");
           bean.makeQuery(tempQuery, 0);            bean.makeQuery(tempQuery, 0);
                 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);
         }          }
Line 713  class Convert Line 657  class Convert
  } catch(Exception e)    } catch(Exception e) 
    {     {
      System.out.println("Error while connecting to database "+ e);       System.out.println("Error while connecting to database "+ e);
         if (dialog != null)
         {
      dialog.setVisible(false);       dialog.setVisible(false);
        dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));         dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
          FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));           FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
Line 721  class Convert Line 667  class Convert
          stream.print(command+"\n\n");           stream.print(command+"\n\n");
          e.printStackTrace(stream);           e.printStackTrace(stream);
          FM2SQL.showErrorDialog(b.toString(), "Error occured !");           FM2SQL.showErrorDialog(b.toString(), "Error occured !");
         } else
         {
           e.printStackTrace();
             
    }     }
       }
       if (dialog != null)
       {
      dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));       dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
      FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));       FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
   
      dialog.setVisible(false);        dialog.setVisible(false); 
   }    }
     }
   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 773  class Convert Line 725  class Convert
           for(int k=0;k<row.size();++k)             for(int k=0;k<row.size();++k) 
           {            {
             obj = row.get(k);              obj = row.get(k);
             if(obj instanceof ArrayList) obj=((List)obj).get(0);          if (obj instanceof ArrayList)
             obj = ((List) obj).get(0);
             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); 
             else pstm.setNull(k+1,Types.NULL);          else
             pstm.setNull(k + 1, Types.NULL);
           }            }
           pstm.execute();            pstm.execute();
           //stm.executeUpdate(command.toString());            //stm.executeUpdate(command.toString());
         if (dialog != null)
           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 806  class Convert Line 761  class Convert
       {        {
         alterMe.setCharAt(j, '_');          alterMe.setCharAt(j, '_');
     //    if(j<length-1) j=j+1;      //    if(j<length-1) j=j+1;
       }        } else if (alterMe.charAt(j) == '_')
       else  
       if (alterMe.charAt(j) == '_')  
       {        {
                   
         if(alterMe.charAt(j+1)=='_')          if(alterMe.charAt(j+1)=='_')
         alterMe.deleteCharAt(j);          alterMe.deleteCharAt(j);
         length = length-1;          length = length-1;
       //  if(j<length-1) j=j+1;        //  if(j<length-1) j=j+1;
       }        } else if (alterMe.charAt(j) == 'ä')
      else  
      if (alterMe.charAt(j) == 'ä')  
           {            {
             alterMe.setCharAt(j, 'a');              alterMe.setCharAt(j, 'a');
             alterMe.insert(j+1,"e");              alterMe.insert(j+1,"e");
             length=length+1;              length=length+1;
             if(j<length-1) j=j+1;          if (j < length - 1)
           }            j = j + 1;
         else        } else if (alterMe.charAt(j) == 'ö')
          if (alterMe.charAt(j) == 'ö')  
               {                {
                 alterMe.setCharAt(j, 'o');                  alterMe.setCharAt(j, 'o');
                 alterMe.insert(j+1,"e");                  alterMe.insert(j+1,"e");
                 length=length+1;                  length=length+1;
                 if(j<length-1) j=j+1;          if (j < length - 1)
               }            j = j + 1;
         else        } else if (alterMe.charAt(j) == 'ü')
          if (alterMe.charAt(j) == 'ü')  
               {                {
                 alterMe.setCharAt(j, 'u');                  alterMe.setCharAt(j, 'u');
                 alterMe.insert(j+1,"e");                  alterMe.insert(j+1,"e");
                 length=length+1;                  length=length+1;
                 if(j<length-1) j=j+1;          if (j < length - 1)
               }            j = j + 1;
         else        } else if (alterMe.charAt(j) == 'ß')
     if (alterMe.charAt(j) == 'ß')  
     {      {
       alterMe.setCharAt(j, 's');        alterMe.setCharAt(j, 's');
       alterMe.insert(j + 1, "s");        alterMe.insert(j + 1, "s");
Line 874  class Convert Line 822  class Convert
        // length = length + 1;         // length = length + 1;
              // j=j+1;               // j=j+1;
             System.out.println(alterMe);              System.out.println(alterMe);
             }        } else if (alterMe.charAt(j) == '.')
   
     else if (alterMe.charAt(j) == '.')  
     {      {
       if(j==length-1)        if(j==length-1)
       {        {
         alterMe.delete(j, j);           alterMe.delete(j, j); 
         length--;          length--;
       }          } else
             else  
             alterMe.setCharAt(j,'_');              alterMe.setCharAt(j,'_');
     }      }
   
Line 927  class Convert Line 872  class Convert
      int length = alterMe.length();       int length = alterMe.length();
      int j = 0;       int j = 0;
           
       
      while (j < length)       while (j < length)
      {        { 
           
Line 936  class Convert Line 880  class Convert
          alterMe.setCharAt(j, '\\');           alterMe.setCharAt(j, '\\');
          alterMe.insert(j + 1, "'");           alterMe.insert(j + 1, "'");
          length = length + 1;           length = length + 1;
          if(j<length-1) j=j+1;          if (j < length - 1)
             j = j + 1;
        }         }
     /*   else      /*   else
        if (alterMe.charAt(j) == '"')         if (alterMe.charAt(j) == '"')
Line 1050  class Convert Line 995  class Convert
       try        try
       {        {
         Node tempNode = root.find("convert/source", new int[] { 1, 1 });          Node tempNode = root.find("convert/source", new int[] { 1, 1 });
         if(tempNode==null) throw new Error("parse error source tag missing");        if (tempNode == null)
           throw new Error("parse error source tag missing");
         System.out.println(tempNode.name);          System.out.println(tempNode.name);
         int length =countNodes(tempNode);          int length =countNodes(tempNode);
         for (int i = 1; i <= length; i++)          for (int i = 1; i <= length; i++)
Line 1069  class Convert Line 1015  class Convert
           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});
   
           if(node3== null) throw new Error("parse error database tag missing");          if (node3 == null)
           if(node==null) throw new Error("parse error url tag missing");            throw new Error("parse error database tag missing");
           if(node1==null) throw new Error("parse error user tag missing");          if (node == null)
           if(node2==null) throw new Error("parse error password tag missing");            throw new Error("parse error url tag missing");
           if (node1 == null)
             throw new Error("parse error user tag missing");
           if (node2 == null)
             throw new Error("parse error password tag missing");
           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 1088  class Convert Line 1038  class Convert
             modeString = nodeMode.getCharacters();              modeString = nodeMode.getCharacters();
           if (modeString.equals("convert"))            if (modeString.equals("convert"))
             mode = DataBase.CONVERT_MODE;              mode = DataBase.CONVERT_MODE;
           else          else if (modeString.equals("append"))
             if (modeString.equals("append"))  
               mode = DataBase.APPEND_MODE;                mode = DataBase.APPEND_MODE;
             else          else if (modeString.equals("update"))
               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 1112  class Convert Line 1060  class Convert
             System.out.println(node5.name + " " + node5.getCharacters());              System.out.println(node5.name + " " + node5.getCharacters());
             if(node6!=null)              if(node6!=null)
             System.out.println(node6.name + " " + node6.getCharacters());              System.out.println(node6.name + " " + node6.getCharacters());
             if(node4==null) throw new Error("parse error table tag missing");            if (node4 == null)
               throw new Error("parse error table tag missing");
             // if(node5==null) throw new Error("parse error select tag missing");              // if(node5==null) throw new Error("parse error select tag missing");
             // 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");              String id = (String)node4.attributes.get("id");
             System.out.println("id was "+id);              System.out.println("id was "+id);
             if(name==null) throw new Error("parse error required table tag attribute name missing");            if (name == null)
             if(layout==null) layout ="";              throw new Error("parse error required table tag attribute name missing");
             if(id==null)  id = "";            if (layout == null)
             if(name.equals("")) throw new Error("parse error table tag attribute must not be empty");              layout = "";
             if (id == null)
               id = "";
             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);              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;
             selects.add(query);              selects.add(query);
             if(node6!=null) creates.add(node6.getCharacters().trim());            if (node6 != null)
               creates.add(node6.getCharacters().trim());
              else               else
               creates.add("");                creates.add("");
                           
Line 1153  class Convert Line 1108  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,mode);            convertBatch(db.bean, database, db.tables, db.layouts, db.selects, db.creates, db.ids,mode);
         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 1271  class Convert Line 1226  class Convert
                   // System.out.print((char)c);                    // System.out.print((char)c);
                 }                  }
                                 
             } catch(Exception e) { e.printStackTrace();}       } catch (Exception e)
       {
         e.printStackTrace();
       }
       
        boolean finished = false;         boolean finished = false;
        // parse string and build document tree         // parse string and build document tree
Line 1290  class Convert Line 1248  class Convert
        try         try
        {         {
          Node tempNode = root.find("convert/source", new int[] { 1, 1 });           Node tempNode = root.find("convert/source", new int[] { 1, 1 });
          if(tempNode==null) throw new Error("parse error source tag missing");        if (tempNode == null)
           throw new Error("parse error source tag missing");
          System.out.println(tempNode.name);           System.out.println(tempNode.name);
          int length =countNodes(tempNode);           int length =countNodes(tempNode);
          for (int i = 1; i <= length; i++)           for (int i = 1; i <= length; i++)
Line 1309  class Convert Line 1268  class Convert
            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 });
                         
            if(node3== null) throw new Error("parse error database tag missing");          if (node3 == null)
            if(node==null) throw new Error("parse error url tag missing");            throw new Error("parse error database tag missing");
            if(node1==null) throw new Error("parse error user tag missing");          if (node == null)
            if(node2==null) throw new Error("parse error password tag missing");            throw new Error("parse error url tag missing");
           if (node1 == null)
             throw new Error("parse error user tag missing");
           if (node2 == null)
             throw new Error("parse error password tag missing");
            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 1328  class Convert Line 1291  class Convert
             modeString = nodeMode.getCharacters();              modeString = nodeMode.getCharacters();
           if (modeString.equals("convert"))            if (modeString.equals("convert"))
             mode = DataBase.CONVERT_MODE;              mode = DataBase.CONVERT_MODE;
           else          else if (modeString.equals("append"))
             if (modeString.equals("append"))  
               mode = DataBase.APPEND_MODE;                mode = DataBase.APPEND_MODE;
             else          else if (modeString.equals("update"))
               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 1354  class Convert Line 1314  class Convert
              System.out.println(node5.name + " " + node5.getCharacters());               System.out.println(node5.name + " " + node5.getCharacters());
              if(node6!=null)               if(node6!=null)
              System.out.println(node6.name + " " + node6.getCharacters());               System.out.println(node6.name + " " + node6.getCharacters());
              if(node4==null) throw new Error("parse error table tag missing");            if (node4 == null)
               throw new Error("parse error table tag missing");
              // if(node5==null) throw new Error("parse error select tag missing");               // if(node5==null) throw new Error("parse error select tag missing");
              // 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");
Line 1362  class Convert Line 1323  class Convert
              String id = (String)node4.attributes.get("id");               String id = (String)node4.attributes.get("id");
              System.out.println("id was "+id);               System.out.println("id was "+id);
                     
              if(name==null) throw new Error("parse error required table tag attribute name missing");            if (name == null)
              if(layout==null) layout ="";              throw new Error("parse error required table tag attribute name missing");
              if(id == null)  id="";            if (layout == null)
              if(name.equals("")) throw new Error("parse error table tag attribute must not be empty");              layout = "";
             if (id == null)
               id = "";
             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);               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;
              selects.add(query);               selects.add(query);
              if(node6!=null) creates.add(node6.getCharacters().trim());            if (node6 != null)
               creates.add(node6.getCharacters().trim());
               else                else
                creates.add("");                 creates.add("");
                           
Line 1409  class Convert Line 1376  class Convert
        return databases;         return databases;
       }        }
   
   
     private static int countNodes(Node tempNode)      private static int countNodes(Node tempNode)
     {      {
       int length = 0;        int length = 0;
       for(int i=0;i<tempNode.contents.v.size();++i)    {      for (int i = 0; i < tempNode.contents.v.size(); ++i)
       {
       Node node=(Node)tempNode.contents.v.elementAt(i);        Node node=(Node)tempNode.contents.v.elementAt(i);
       if(node.type.equals("element"))        if(node.type.equals("element"))
       {        {
         if(node.name.equals("database"))length++;          if (node.name.equals("database"))
         if(node.name.equals("table"))length++;            length++;
           if (node.name.equals("table"))
             length++;
       }        }
               
             // System.out.println(((Node)tempNode.contents.v.elementAt(i)).attributes+" "+i);              // System.out.println(((Node)tempNode.contents.v.elementAt(i)).attributes+" "+i);
Line 1428  class Convert Line 1397  class Convert
     private static void printContents(Node root)      private static void printContents(Node root)
     {      {
                   
         
       Vector contents=(root.index==null)? root.contents.v:root.index.v;        Vector contents=(root.index==null)? root.contents.v:root.index.v;
       for (int i=0;i<contents.size();++i)        for (int i=0;i<contents.size();++i)
       {        {
Line 1441  class Convert Line 1409  class Convert
         }          }
         // System.out.println(n.type);          // System.out.println(n.type);
               
           
         
       }        }
     }      }
     public static void readXMLFile(String xmlFile)      public static void readXMLFile(String xmlFile)
Line 1462  class Convert Line 1428  class Convert
              // System.out.print((char)c);               // System.out.print((char)c);
            }             }
            parseXMLConfig(sb);             parseXMLConfig(sb);
        } catch(Exception e) { e.printStackTrace();}       } catch (Exception e)
       {
         e.printStackTrace();
       }
     }      }
 public static class DataBase   public static class DataBase 
 {  {
Line 1498  public static class DataBase Line 1467  public static class DataBase
      String modeString ="";       String modeString ="";
     if (mode == CONVERT_MODE)      if (mode == CONVERT_MODE)
       modeString = "convert";        modeString = "convert";
     else        else if (mode == APPEND_MODE)
       if (mode == APPEND_MODE)  
         modeString = "append";          modeString = "append";
       else        else if (mode == UPDATE_MODE)
         if (mode == UPDATE_MODE)  
           modeString = "update";            modeString = "update";
       
      buffr.write("      <mode>"+ modeString+"</mode>\n");       buffr.write("      <mode>"+ modeString+"</mode>\n");
Line 1524  public static class DataBase Line 1491  public static class DataBase
      }       }
      buffr.write("    </database>\n");        buffr.write("    </database>\n"); 
    }     }
 public String toString() {return bean.url+" "+tables;}      public String toString()
       {
         return bean.url + " " + tables;
       }
   
 }  }
 public static String convertToUTF8(Object command)  public static String convertToUTF8(Object command)
Line 1542  public static String convertToUTF8(Objec Line 1512  public static String convertToUTF8(Objec
 }  }
   public static void writeConfig(String file, DataBase source, DataBase destination) throws Exception    public static void writeConfig(String file, DataBase source, DataBase destination) throws Exception
   {    {
     if(!file.toLowerCase().endsWith(".xml")) file+=".xml";       if (!file.toLowerCase().endsWith(".xml"))
         file += ".xml";
     File f = new File(file);      File f = new File(file);
       
     FileOutputStream fout= new FileOutputStream(f);      FileOutputStream fout= new FileOutputStream(f);

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


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