File:  [Repository] / FM2SQL / Attic / Convert.java
Revision 1.1: download - view: text, annotated - select for diffs - revision graph
Fri Dec 5 11:46:39 2003 UTC (20 years, 7 months ago) by rogo
Branches: MAIN
CVS tags: HEAD
Initial revision

    1: 
    2: 
    3: import java.util.*;
    4: import java.sql.*;
    5: import java.awt.Cursor;
    6: import java.io.BufferedReader;
    7: import java.io.BufferedWriter;
    8: import java.io.File;
    9: import java.io.FileInputStream;
   10: import java.io.FileNotFoundException;
   11: import java.io.FileOutputStream;
   12: import java.io.InputStreamReader;
   13: import java.io.OutputStreamWriter;
   14: import java.io.PrintStream;
   15: import java.io.UnsupportedEncodingException;
   16: 
   17: import com.exploringxml.xml.Node;
   18: import com.exploringxml.xml.Xparse;
   19: 
   20: class Convert 
   21: {
   22: 	static DBBean bean = new DBBean();
   23: 	static DBBean beanDest = new DBBean();
   24: 
   25:   static String user ="",passwd="e1nste1n";
   26:   static String userDest="postgres",passwdDest="rogo";
   27:   static boolean batchRun=false;
   28:   static Vector databases = new Vector();
   29:   
   30:   public static void main(String args[])
   31:   {
   32: /*    try
   33:     {
   34:       //byte[] b = "ö".getBytes("UTF-8");
   35:     //  System.out.println("QueryString " +b[0]+" "+b[1]+(new String(b).getBytes()[0])+" "+new String(b).getBytes()[1]);
   36:     //System.out.println(new String(b,"UTF-8"));
   37:     } catch (UnsupportedEncodingException e)
   38:     {
   39:       // TODO Auto-generated catch block
   40:       e.printStackTrace();
   41:     }*/
   42:     FileOutputStream file = null;
   43:     if(args.length!=1)
   44:     {
   45:      System.out.println("Usage: java Convert <xml config file>");
   46:      System.exit(-1);
   47:     }
   48:     if(!(new File(args[0]).exists())) System.exit(0);
   49:     try
   50:     {
   51:       file = new FileOutputStream("./log.txt");
   52:     } catch (FileNotFoundException e1)
   53:     {
   54:       // TODO Auto-generated catch block
   55:       e1.printStackTrace();
   56:     } 
   57:    PrintStream stream= new PrintStream(file);
   58:    System.setOut(stream);
   59:    System.setErr(stream);
   60:    readXMLFile(args[0]);
   61:    System.out.println("Finished!");
   62:     //convert("jdbc:fmpro:http://141.14.237.74:8050","jdbc:postgresql://erebos/test",null,null);
   63:   }
   64:   public static void  convertBatch(DBBean source,DBBean destination,Vector names,Vector layouts,Vector selects,Vector creates) throws Exception
   65:   {
   66:    // @TODO Convert change to convert row wise
   67:    /*FM2SQL.ProgressDialog dialog = new  FM2SQL.ProgressDialog(FM2SQL.fmInstance);
   68:    dialog.setTitle("Conversion running ...");
   69:    dialog.title.setText("Getting table data ...");
   70:    dialog.setLocation(500,500); 
   71:    dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
   72:   */
   73:   // FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
   74:    //dialog.thread=Thread.currentThread();
   75:    bean=source;
   76:    beanDest = destination;
   77:  /*  // setting user and passwd 
   78:    bean.setUserAndPasswd(user,passwd);
   79:   // setting user and passwd 
   80:   beanDest.setUserAndPasswd(userDest,passwdDest);
   81:   */
   82:   //dialog.setSize(400,250);
   83:    StringBuffer command= null;
   84:     try
   85:     {
   86:       //bean.setConnection("jdbc:fmpro:http://141.14.237.74:8050");    
   87:     //bean.setConnection("jdbc:postgresql://erebos/test","postgres","rogo");
   88:       bean.setConnection(source.url);
   89:       if(names==null)
   90:        names=bean.getTableNames();
   91:       //Collections.sort(names);
   92:         int tbIndex = 1;
   93:      
   94:      // System.out.println("Start at "+names.indexOf("archimedes_facsimiles"));
   95:       for(tbIndex=0;tbIndex<names.size();++tbIndex)
   96:       {
   97:         Vector[] result = null;
   98:        try {
   99:      String query = "select * from " + bean.getQC() +names.get(tbIndex).toString() + bean.getQC();
  100:      String layout=(layouts.isEmpty()) ? "":layouts.get(tbIndex).toString(); 
  101:      query = (selects!=null) ? selects.get(tbIndex).toString():query;
  102:         //if  vectors[1].get(i) != null)
  103:         if (!layout.equals(""))
  104:         {
  105:           System.out.println("before "+query+" table"+names.get(tbIndex));
  106:           layout = " layout " + bean.getQC() + layout + bean.getQC();
  107:           String name = names.get(tbIndex).toString();
  108:           StringBuffer queryLayout = new StringBuffer(query);
  109:           queryLayout.insert(queryLayout.indexOf(name) + name.length() + 1, " " + layout);
  110:           query = queryLayout.toString();
  111:           System.out.println("added layout " + query);
  112:         
  113:         }
  114:         //  if ( layout!= "")
  115:         //   query += " layout " + bean.getQC() + layout + bean.getQC();
  116:      /*   dialog.title.setText("Getting table data ...");
  117:         dialog.table.setText(names.get(tbIndex).toString());
  118:         dialog.status.setText("Table " + (tbIndex + 1) + " of " + names.size());
  119:         dialog.show();
  120:       */
  121:           System.out.println(" performing query "+query);
  122:           //result = bean.getQueryData(query, null, 0);
  123:         bean.getConnection();
  124:         bean.makeQuery(query,0);
  125:       } catch (Exception e)
  126:         {
  127:           System.out.println(e.getMessage());
  128:           e.printStackTrace();
  129:           continue;
  130:         }
  131:         //beanDest.setConnection("jdbc:postgresql://erebos/test3");
  132:         beanDest.setConnection(destination.url);
  133: 
  134:         Statement stm = beanDest.getConnection().createStatement();
  135: 
  136:         Vector tables = beanDest.getTableNames();
  137:      //   Collections.sort(tables);
  138:         System.out.println("converting table "+names.get(tbIndex) + " " + tables.indexOf(convertText((String) names.get(tbIndex)))); // "//beanDest.getTypeNames()); 
  139:         tables = beanDest.getTableNames();
  140:         // System.out.println(beanDest.getTableNames(beanDest.getCatalogs().get(2).toString()));
  141:         stm = beanDest.getConnection().createStatement();
  142:         // System.exit(0);
  143:       if(true) 
  144:       {
  145:         if(tables.indexOf(names.get(tbIndex))>=0) 
  146:         {
  147:          stm.executeUpdate("drop table "+beanDest.getQC()+names.get(tbIndex)+beanDest.getQC());
  148:         tables.remove((String)names.get(tbIndex));
  149:         System.out.println("dropped table "+ names.get(tbIndex));
  150:         }
  151:         else
  152:         if(tables.indexOf(convertText(names.get(tbIndex).toString()))>=0) 
  153:         {
  154:          stm.executeUpdate("drop table "+beanDest.getQC()+convertText((String)names.get(tbIndex))+beanDest.getQC());
  155:         tables.remove(convertText((String)names.get(tbIndex)));
  156:         System.out.println("dropped table "+ names.get(tbIndex));
  157:         }
  158:  
  159:         if(tables.indexOf(names.get(tbIndex))<0&&tables.indexOf(convertText(names.get(tbIndex).toString()))<0) 
  160:         {
  161:           if(creates.get(tbIndex).equals("")||creates.get(tbIndex).toString().toLowerCase().indexOf("create")<0)
  162:           {
  163:             System.out.println("Warning empty or invalid create statement - creating one for you\n");
  164:         
  165:           command = new StringBuffer(50);
  166:           command.append("CREATE TABLE ");
  167:           command.append(beanDest.getQC());
  168:           command.append(convertText((String)names.get(tbIndex)));
  169:           command.append(beanDest.getQC());
  170:           command.append("(");
  171:            String type = null;
  172:            Vector columnNames=bean.getColumnNames();
  173:           for(int i=0;i<columnNames.size()-1;++i)
  174:           {
  175:            type = bean.metaData.getColumnTypeName(i+1);
  176:          //   System.out.println(i+" "+result[1].get(i)+" "+type);
  177:           type = (type.equals("NUMBER")) ?"INT4":type;
  178:           type = (type.equals("CONTAINER")) ?"TEXT":type;
  179: 
  180:           command.append(beanDest.getQC() + convertText((String) columnNames.get(i)) + beanDest.getQC() + " " + type + ", ");
  181:         }
  182:           type = bean.metaData.getColumnTypeName(columnNames.size());
  183:           type = (type.equals("NUMBER")) ? "INT4" : type;
  184:           type = (type.equals("CONTAINER")) ? "TEXT" : type;
  185:           command.append(beanDest.getQC() + convertText((String) columnNames.get(columnNames.size() - 1)) + beanDest.getQC() + " " + type);
  186:           command.append(" )");
  187:         }
  188:          else
  189:          command=new StringBuffer().append(creates.get(tbIndex).toString());
  190:          
  191:            System.out.println(command);
  192:           //  System.exit(0);
  193:           //command.append(DBBean.getQC());   
  194:           stm.executeUpdate(command.toString());
  195:         
  196:       }
  197:     }
  198:     // System.out.println(names);
  199:     /*    
  200:     if (idVal == "")
  201:           stm.executeUpdate("INSERT  INTO " + DBBean.getQC() + box.getSelectedItem() + DBBean.getQC() + " (" + DBBean.getQC() + columnName + DBBean.getQC() + ")  VALUES ('" + value + "') ");
  202:         else
  203:           stm.executeUpdate("UPDATE   " + DBBean.getQC() + box.getSelectedItem() + DBBean.getQC() + " SET  " + DBBean.getQC() + columnName + DBBean.getQC() + "='" + value + "' WHERE ID='" + idVal + "' ");
  204:       */
  205: 
  206:     // Vector[] result2=beanDest.getQueryData(names.get(tbIndex).toString());
  207:     // print results to screen
  208:   /*  for (int i = 0; i < result[1].size(); ++i)
  209:     {
  210:       //print Header
  211:       // System.out.println(" "+result[1].get(i)+" "+result2[1].get(i)+" "+i);
  212:     }*/
  213:     // System.out.println();
  214:     //dialog.title.setText("Writing table data ...");
  215:     Vector row = null;
  216:     //for (int j = 0; j < result[0].size(); ++j)
  217:     while((row=bean.getNextRow())!=null)
  218:     {
  219:       //Vector row = (Vector) result[0].get(j);
  220:       command = new StringBuffer();
  221: 
  222:         command.append("INSERT  INTO ");
  223:         command.append(beanDest.getQC());
  224:         command.append(convertText((String) names.get(tbIndex)));
  225:         command.append(beanDest.getQC());
  226:         command.append(" values ( ");
  227:         //print rows
  228:      Object obj = null;
  229:      for(int k=0;k<row.size()-1;++k)
  230:      {
  231:         obj = row.get(k);
  232:         //System.out.println("row "+obj+" "+k);
  233:        if(obj!=null&&!(obj instanceof ArrayList))
  234:        command.append("'"+convertUml(new String(obj.toString().getBytes("UTF-8"),"UTF-8"))+"',"); 
  235:        else if(obj!=null&&   obj instanceof ArrayList)
  236:        command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"',"); 
  237:        else command.append("NULL,");
  238:      }
  239:      obj = row.get(row.size() - 1);
  240:      if (obj != null && !(obj instanceof ArrayList))
  241:      command.append("'"+convertUml(new String(obj.toString().getBytes("UTF-8"),"UTF-8"))+"')"); 
  242:       else
  243:       if(obj!=null&&   obj instanceof ArrayList)
  244:        command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"')");         //command.append(obj.toString()+")");
  245:        else command.append("NULL)");
  246:        //command.append("'"+row.get(row.size()-1)+"')"); 
  247:      //command.append(" )");
  248:      //  for(int k=0;k<row.size();++k)
  249:         
  250:     // System.out.println();
  251:        //   System.out.println(command+" "+j+" "+row.size()+" "+  ((Vector)result2[0].get(j)).size());
  252:            // System.out.println(command);
  253:             stm.executeUpdate(command.toString());
  254:   // dialog.progress.setValue((int)(((double)(j+1)/(double)result[0].size())*100.0));
  255:   // System.out.println( (int)(((double)(j+1)/(double)result[0].size())*100.0)+" "+result[0].size()+" "+j);
  256:    command = null;
  257: }// to for loop    
  258:    
  259:     }
  260:  } catch(Exception e) 
  261:    {
  262:      System.out.println("Error while connecting to database "+ e);
  263:      //dialog.setVisible(false);
  264:      //dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
  265:      //FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
  266:      java.io.ByteArrayOutputStream b = new java.io.ByteArrayOutputStream();
  267:      java.io.PrintStream stream = new java.io.PrintStream(b);
  268:      stream.print(command+"\n\n");
  269:      e.printStackTrace(stream);
  270:      System.err.println(b);
  271:      //FM2SQL.showErrorDialog(b.toString(), "Error occured !");
  272:    
  273:    }
  274:  //  dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
  275:    //FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
  276: 
  277:  //  dialog.setVisible(false); 
  278:   }
  279: 
  280: 
  281: 
  282:   public static void  convert(String source,String destination,Vector names,Vector layouts,Vector selects,Vector creates) throws Exception
  283:   {
  284:    FM2SQL.ProgressDialog dialog = new  FM2SQL.ProgressDialog(FM2SQL.fmInstance);
  285:    dialog.setTitle("Conversion running ...");
  286:    dialog.title.setText("Getting table data ...");
  287:    dialog.setLocation(FM2SQL.fmInstance.getLocationOnScreen().x+(FM2SQL.fmInstance.getWidth()-400)/2,FM2SQL.fmInstance.getLocationOnScreen().y+(FM2SQL.fmInstance.getHeight()-250)/2); 
  288: 	 dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
  289: 	 FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
  290:    dialog.thread=Thread.currentThread();
  291:    // setting user and passwd 
  292:    bean.setUserAndPasswd(user,passwd);
  293:   // setting user and passwd 
  294:   beanDest.setUserAndPasswd(userDest,passwdDest);
  295:   dialog.setSize(400,250);
  296:    StringBuffer command= null;
  297:    String query = null;
  298:     try
  299:     {
  300:       //bean.setConnection("jdbc:fmpro:http://141.14.237.74:8050");    
  301: 	  //bean.setConnection("jdbc:postgresql://erebos/test","postgres","rogo");
  302:       bean.setConnection(source);
  303:       if(names==null)
  304:        names=bean.getTableNames();
  305:      // Collections.sort(names);
  306:         int tbIndex = 1;
  307:      
  308:      // System.out.println("Start at "+names.indexOf("archimedes_facsimiles"));
  309:       for(tbIndex=0;tbIndex<names.size();++tbIndex)
  310:       {
  311:         Vector[] result = null;
  312:        try {
  313: 	    query = "select * from " + bean.getQC() +names.get(tbIndex).toString() + bean.getQC();
  314: 	   String layout=(layouts.isEmpty()) ? "":layouts.get(tbIndex).toString(); 
  315:      query = (selects!=null) ? selects.get(tbIndex).toString():query;
  316:         //if  vectors[1].get(i) != null)
  317:         if (layout != "")
  318:         {
  319:           layout = " layout " + bean.getQC() + layout + bean.getQC();
  320:           String name = names.get(tbIndex).toString();
  321:           StringBuffer queryLayout = new StringBuffer(query);
  322:           queryLayout.insert(queryLayout.indexOf(name) + name.length() + 1, " " + layout);
  323:           query = queryLayout.toString();
  324:           System.out.println("added layout  "+ query);
  325:         
  326:         }
  327:         //  if ( layout!= "")
  328:         //	 query += " layout " + bean.getQC() + layout + bean.getQC();
  329:         dialog.title.setText("Getting table data ...");
  330:         dialog.table.setText(names.get(tbIndex).toString());
  331:         dialog.status.setText("Table " + (tbIndex + 1) + " of " + names.size());
  332:         dialog.show();
  333:         //result = bean.getQueryData(query, dialog, 0);
  334:         bean.getConnection();
  335:         bean.makeQuery(query,0);
  336:       } catch (Exception e)
  337:         {
  338:           continue;
  339:         }
  340:         //beanDest.setConnection("jdbc:postgresql://erebos/test3");
  341:         beanDest.setConnection(destination);
  342: 
  343:         Statement stm = beanDest.getConnection().createStatement();
  344: 
  345:         Vector tables = beanDest.getTableNames();
  346:        // Collections.sort(tables);
  347:         System.out.println(names.get(tbIndex) + " " + tables.indexOf(convertText((String) names.get(tbIndex)))); // "//beanDest.getTypeNames()); 
  348:         tables = beanDest.getTableNames();
  349:         // System.out.println(beanDest.getTableNames(beanDest.getCatalogs().get(2).toString()));
  350:         stm = beanDest.getConnection().createStatement();
  351:         // System.exit(0);
  352:       if(true) 
  353:       {
  354:         if(tables.indexOf(names.get(tbIndex))>=0) 
  355:         {
  356:          stm.executeUpdate("drop table "+beanDest.getQC()+names.get(tbIndex)+beanDest.getQC());
  357:         tables.remove((String)names.get(tbIndex));
  358:         System.out.println("dropped table"+ names.get(tbIndex));
  359:         }
  360:         else
  361:         if(tables.indexOf(convertText(names.get(tbIndex).toString()))>=0) 
  362:         {
  363:          stm.executeUpdate("drop table "+beanDest.getQC()+convertText((String)names.get(tbIndex))+beanDest.getQC());
  364:         tables.remove(convertText((String)names.get(tbIndex)));
  365:         System.out.println("dropped table"+ names.get(tbIndex));
  366:         }
  367:  
  368: 				if(tables.indexOf(names.get(tbIndex))<0&&tables.indexOf(convertText(names.get(tbIndex).toString()))<0) 
  369:         {
  370:           if(creates.get(tbIndex).equals("")||creates.get(tbIndex).toString().toLowerCase().indexOf("create")<0)
  371:           {
  372:             System.out.println("Warning empty or invalid create statement - creating one for you\n");
  373:         
  374:           command = new StringBuffer(50);
  375:           command.append("CREATE TABLE ");
  376:           command.append(beanDest.getQC());
  377:           command.append(convertText((String)names.get(tbIndex)));
  378:           command.append(beanDest.getQC());
  379:           command.append("(");
  380:            String type = null;
  381:           Vector columnNames = bean.getColumnNames();
  382:           for(int i=0;i<columnNames.size()-1;++i)
  383:           {
  384:            type = bean.metaData.getColumnTypeName(i+1);
  385:          //   System.out.println(i+" "+result[1].get(i)+" "+type);
  386:           type = (type.equals("NUMBER")) ?"INT4":type;
  387:           type = (type.equals("CONTAINER")) ?"TEXT":type;
  388: 
  389:           command.append(beanDest.getQC() + convertText((String) columnNames.get(i)) + beanDest.getQC() + " " + type + ", ");
  390:         }
  391:           type = bean.metaData.getColumnTypeName(columnNames.size());
  392:           type = (type.equals("NUMBER")) ? "INT4" : type;
  393:           type = (type.equals("CONTAINER")) ? "TEXT" : type;
  394:           command.append(beanDest.getQC() + convertText((String) columnNames.get(columnNames.size() - 1)) + beanDest.getQC() + " " + type);
  395:           command.append(" )");
  396: 
  397:           // System.out.println(command);
  398:           //  System.exit(0);
  399:           //command.append(DBBean.getQC());   
  400:           } else
  401:           command=new StringBuffer().append(creates.get(tbIndex).toString());
  402:           stm.executeUpdate(command.toString());
  403:         
  404:       }
  405:     }
  406:     // System.out.println(names);
  407:     /*    
  408:     if (idVal == "")
  409:           stm.executeUpdate("INSERT  INTO " + DBBean.getQC() + box.getSelectedItem() + DBBean.getQC() + " (" + DBBean.getQC() + columnName + DBBean.getQC() + ")  VALUES ('" + value + "') ");
  410:         else
  411:           stm.executeUpdate("UPDATE   " + DBBean.getQC() + box.getSelectedItem() + DBBean.getQC() + " SET  " + DBBean.getQC() + columnName + DBBean.getQC() + "='" + value + "' WHERE ID='" + idVal + "' ");
  412:       */
  413: 
  414:     // Vector[] result2=beanDest.getQueryData(names.get(tbIndex).toString());
  415:     // print results to screen
  416:    /* for (int i = 0; i < result[1].size(); ++i)
  417:     {
  418:       //print Header
  419:       // System.out.println(" "+result[1].get(i)+" "+result2[1].get(i)+" "+i);
  420:     }*/
  421:     // System.out.println();
  422:     dialog.title.setText("Writing table data ...");
  423:     
  424:     //for (int j = 0; j < result[0].size(); ++j)
  425:     int j=-1;
  426:     Vector row = null;
  427:     int rowCount= bean.getRowCount(query);
  428:     while((row=bean.getNextRow())!=null)
  429:     {
  430:       j++;
  431:       // row = (Vector) result[0].get(j);
  432:       command = new StringBuffer();
  433: 
  434:         command.append("INSERT  INTO ");
  435:         command.append(beanDest.getQC());
  436:         command.append(convertText((String) names.get(tbIndex)));
  437:         command.append(beanDest.getQC());
  438:         command.append(" values ( ");
  439:         //print rows
  440:      Object obj = null;
  441:      for(int k=0;k<row.size()-1;++k)
  442:      {
  443:         obj = row.get(k);
  444:         //System.out.println("row "+obj+" "+k);
  445:        if(obj!=null&&!(obj instanceof ArrayList))
  446:        command.append("'"+convertUml(new String(obj.toString().getBytes("UTF-8"),"UTF-8"))+"',"); 
  447:        else if(obj!=null&&   obj instanceof ArrayList)
  448:        command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"',"); 
  449:        else command.append("NULL,");
  450:      }
  451:      obj = row.get(row.size() - 1);
  452:      if (obj != null && !(obj instanceof ArrayList))
  453:      command.append("'"+convertUml(new String(obj.toString().getBytes("UTF-8"),"UTF-8"))+"')"); 
  454:       else
  455:       if(obj!=null&&   obj instanceof ArrayList)
  456:        command.append("'"+convertUml(((ArrayList)obj).get(0).toString())+"')");         //command.append(obj.toString()+")");
  457:        else command.append("NULL)");
  458:       //command.append("'"+row.get(row.size()-1)+"')"); 
  459:       //command.append(" )");
  460:       //  for(int k=0;k<row.size();++k)
  461: 
  462:       // System.out.println();
  463:       //   System.out.println(command+" "+j+" "+row.size()+" "+  ((Vector)result2[0].get(j)).size());
  464:       // System.out.println(command);
  465:       stm.executeUpdate(command.toString());
  466:       dialog.progress.setValue((int) (((double) (j + 1) / (double) rowCount) * 100.0));
  467: 	// System.out.println( (int)(((double)(j+1)/(double)result[0].size())*100.0)+" "+result[0].size()+" "+j);
  468:    command = null;
  469: }// to for loop    
  470:    
  471:     }
  472:  } catch(Exception e) 
  473:    {
  474:      System.out.println("Error while connecting to database "+ e);
  475:      dialog.setVisible(false);
  476: 	   dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
  477: 		 FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
  478: 		 java.io.ByteArrayOutputStream b = new java.io.ByteArrayOutputStream();
  479: 		 java.io.PrintStream stream = new java.io.PrintStream(b);
  480: 		 stream.print(command+"\n\n");
  481: 		 e.printStackTrace(stream);
  482: 		 FM2SQL.showErrorDialog(b.toString(), "Error occured !");
  483: 	 
  484:    }
  485: 	 dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
  486: 	 FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
  487: 
  488: 	 dialog.setVisible(false); 
  489:   }
  490: 
  491:  public static String convertText(String newName)
  492:   {
  493:     StringBuffer alterMe = new StringBuffer(newName.trim().toLowerCase());
  494:     int length = alterMe.length();
  495:     int j = 0;
  496:     while (j < length)
  497:     { 
  498:       if (alterMe.charAt(j) == ' ')
  499:       {
  500:         alterMe.setCharAt(j, '_');
  501:     //    if(j<length-1) j=j+1;
  502:       }
  503:       else
  504:       if (alterMe.charAt(j) == '_')
  505:       {
  506: 		
  507: 		if(alterMe.charAt(j+1)=='_')
  508: 		alterMe.deleteCharAt(j);
  509:         length = length-1;
  510:       //  if(j<length-1) j=j+1;
  511:       }
  512:      else
  513: 	 if (alterMe.charAt(j) == 'ä')
  514: 		  {
  515: 			alterMe.setCharAt(j, 'a');
  516: 			alterMe.insert(j+1,"e");
  517: 			length=length+1;
  518: 			if(j<length-1) j=j+1;
  519: 		  }
  520: 		else
  521: 		 if (alterMe.charAt(j) == 'ö')
  522: 			  {
  523: 				alterMe.setCharAt(j, 'o');
  524: 				alterMe.insert(j+1,"e");
  525: 				length=length+1;
  526: 				if(j<length-1) j=j+1;
  527: 			  }
  528: 		else
  529: 		 if (alterMe.charAt(j) == 'ü')
  530: 			  {
  531: 				alterMe.setCharAt(j, 'u');
  532: 				alterMe.insert(j+1,"e");
  533: 				length=length+1;
  534: 				if(j<length-1) j=j+1;
  535: 			  }
  536: 		else
  537:     if (alterMe.charAt(j) == 'ß')
  538:     {
  539:       alterMe.setCharAt(j, 's');
  540:       alterMe.insert(j + 1, "s");
  541:       length = length + 1;
  542:       if (j < length - 1)
  543:         j = j + 1;
  544:     } else if (alterMe.charAt(j) == ':')
  545:     {
  546:       if(j<length-1)
  547:       {
  548:       if (alterMe.charAt(j + 1) == ':')
  549:       {
  550:         alterMe.setCharAt(j,'_');
  551:         alterMe.delete(j+1,j+2);
  552:       length = length - 1;
  553:    
  554:       }
  555:  
  556:       if (j < length - 1)
  557:         j = j + 1;
  558:       }
  559:     } else if (alterMe.charAt(j) == '-')
  560:     {
  561:       alterMe.setCharAt(j, '_');
  562: 
  563:     }
  564: 
  565:     ++j;
  566:   }
  567:     return alterMe.toString();
  568:   }
  569:   public static String convertUml(String newName)
  570:    {
  571: 	 StringBuffer alterMe = new StringBuffer(newName.trim());
  572: 	 int length = alterMe.length();
  573: 	 int j = 0;
  574: 	
  575: 	
  576: 	 while (j < length)
  577: 	 { 
  578: 	
  579: 	   if (alterMe.charAt(j) == '\'')
  580: 	   {
  581: 		 alterMe.setCharAt(j, '\\');
  582: 		 alterMe.insert(j + 1, "'");
  583: 		 length = length + 1;
  584: 		 if(j<length-1) j=j+1;
  585: 	   }
  586: 	/*   else
  587: 	   if (alterMe.charAt(j) == '"')
  588: 	   {
  589: 		 alterMe.setCharAt(j, '\\');
  590: 		 alterMe.insert(j + 1, "\"");
  591: 		 length = length + 1;
  592: 		 if(j<length-1) j=j+1;
  593: 	   }
  594: 	  else
  595: 	  if (alterMe.charAt(j) == '>')
  596: 	   {
  597: 		 alterMe.setCharAt(j, '\\');
  598: 		 alterMe.insert(j + 1, ">");
  599: 		 length = length + 1;
  600: 		 if(j<length-1) j=j+1;
  601: 	   }
  602: 	  else
  603: 	  if (alterMe.charAt(j) == '<')
  604: 	   {
  605: 		 alterMe.setCharAt(j, '\\');
  606: 		 alterMe.insert(j + 1, "<");
  607: 		 length = length + 1;
  608: 		 if(j<length-1) j=j+1;
  609: 	   }
  610: 	 else
  611: 	 if (alterMe.charAt(j) == '?')
  612: 	   {
  613: 		 alterMe.setCharAt(j, '\\');
  614: 		 alterMe.insert(j + 1, "?");
  615: 		 length = length + 1;
  616: 		 if(j<length-1) j=j+1;
  617: 	   }
  618: 	 else
  619: 	 if (alterMe.charAt(j) == '&')
  620: 	   {
  621: 		 alterMe.setCharAt(j, '\\');
  622: 		 alterMe.insert(j + 1, "&");
  623: 		 length = length + 1;
  624: 		 if(j<length-1) j=j+1;
  625: 	   }
  626: 	 else
  627: 	 if (alterMe.charAt(j) == '=')
  628: 	   {
  629: 		 alterMe.setCharAt(j, '\\');
  630: 		 alterMe.insert(j + 1, "=");
  631: 		 length = length + 1;
  632: 		 if(j<length-1) j=j+1;
  633: 	   }
  634: 	 else
  635: 	 if (alterMe.charAt(j) == ',')
  636: 	   {
  637: 		 alterMe.setCharAt(j, '\\');
  638: 		 alterMe.insert(j + 1, ",");
  639: 		 length = length + 1;
  640: 		 if(j<length-1) j=j+1;
  641: 	   }
  642: 	 else
  643: 	 if (alterMe.charAt(j) == '.')
  644: 	   {
  645: 		 alterMe.setCharAt(j, '\\');
  646: 		 alterMe.insert(j + 1, ".");
  647: 		 length = length + 1;
  648: 		 if(j<length-1) j=j+1;
  649: 	   }
  650: 	 else
  651: 	 if (alterMe.charAt(j) == '[')
  652: 	   {
  653: 		 alterMe.setCharAt(j, '\\');
  654: 		 alterMe.insert(j + 1, ".");
  655: 		 length = length + 1;
  656: 		 if(j<length-1) j=j+1;
  657: 	   }
  658: 	else
  659: 	 if (alterMe.charAt(j) == ']')
  660: 	   {
  661: 		 alterMe.setCharAt(j, '\\');
  662: 		 alterMe.insert(j + 1, ".");
  663: 		 length = length + 1;
  664: 		 if(j<length-1) j=j+1;
  665: 	   }
  666: 	else
  667: 	 if (alterMe.charAt(j) == '%')
  668: 	   {
  669: 		 alterMe.setCharAt(j, '\\');
  670: 		 alterMe.insert(j + 1, "%");
  671: 		 length = length + 1;
  672: 		 if(j<length-1) j=j+1;
  673: 	   }*/
  674: 		++j;
  675: 	 }
  676: 	 return alterMe.toString();
  677:    }
  678:    
  679:    public static void parseXMLConfig(StringBuffer sb)
  680:     {
  681:       boolean finished = false;
  682:       // parse string and build document tree
  683:       Node  root = new Xparse().parse(sb.toString());
  684:        // printContents(root);
  685:       Vector databases= new Vector();
  686:       Vector tables = new Vector();
  687:       Vector layouts = new Vector();
  688:       Vector selects = new Vector();
  689:       Vector creates = new Vector();
  690:      
  691:       try
  692:       {
  693:         Node tempNode = root.find("convert/source", new int[] { 1, 1 });
  694:         if(tempNode==null) throw new Error("parse error source tag missing");
  695:         System.out.println(tempNode.name);
  696:         int length =countNodes(tempNode);
  697:         for (int i = 1; i <= length; i++)
  698:         {
  699:           
  700:           DBBean database = new DBBean();
  701:           tables = new Vector();
  702:           layouts = new Vector();
  703:           selects = new Vector();
  704:           creates = new Vector();
  705: 
  706:          // parse dataBase
  707:           Node node = root.find("convert/source/database/url", new int[] { 1, 1, i, 1 });
  708:           Node node1 = root.find("convert/source/database/user", new int[] { 1, 1, i, 1, 1 });
  709:           Node node2 = root.find("convert/source/database/password", new int[] { 1, 1, i, 1, 1 });
  710:           Node node3 = root.find("convert/source/database", new int[] { 1, 1, i});
  711:           if(node3== null) throw new Error("parse error database tag missing");
  712:           if(node==null) throw new Error("parse error url tag missing");
  713:           if(node1==null) throw new Error("parse error user tag missing");
  714:           if(node2==null) throw new Error("parse error password tag missing");
  715:           String url=node.getCharacters();
  716:           String user=node1.getCharacters();
  717:           String password=node2.getCharacters();
  718:           database.setURL(url.trim());
  719:           database.setUserAndPasswd(user.trim(),password.trim());
  720:           System.out.println(node.name + " " + node.getCharacters());
  721:           System.out.println(node1.name + " " + node1.getCharacters());
  722:           System.out.println(node2.name + " " + node2.getCharacters());
  723:        
  724:        //   if(node3!=null)
  725:          // System.out.println(node3.name);
  726:           
  727:           int length2= countNodes(node3);
  728:     
  729:          System.out.println("number of tables " +length2);
  730:     
  731:           for(int j=1;j<=length2;++j)
  732:           {
  733:             Node node4 = root.find("convert/source/database/table", new int[] { 1, 1, i, j });
  734:             Node node5 = root.find("convert/source/database/table/select", new int[] { 1, 1, i, j, 1 });
  735:             Node node6 = root.find("convert/source/database/table/create", new int[] { 1, 1, i, j, 1 });
  736:             if(node4!=null)
  737:             System.out.println(node4.name + " " + node4.attributes.get("layout").equals(""));
  738:             if(node5!=null)
  739:             System.out.println(node5.name + " " + node5.getCharacters());
  740:             if(node6!=null)
  741:             System.out.println(node6.name + " " + node6.getCharacters());
  742:             if(node4==null) throw new Error("parse error table tag missing");
  743:             // if(node5==null) throw new Error("parse error select tag missing");
  744:             // if(node6==null) throw new Error("parse error create tag missing");
  745:             String name = (String)node4.attributes.get("name");
  746:             String layout = (String)node4.attributes.get("layout");
  747:             if(name==null) throw new Error("parse error required table tag attribute name missing");
  748:             if(layout==null) layout ="";
  749:             if(name.equals("")) throw new Error("parse error table tag attribute must not be empty");
  750:             tables.add(name);
  751:             layouts.add(layout);
  752:             String query = (node5==null) ? "":node5.getCharacters(); 
  753:             if(query.equals("")) System.err.println("Warning empty select tag or  select tag missing !!");
  754:             query = (query.equals("")) ? "select * from "+database.getQC()+name+database.getQC():query;
  755:             selects.add(query);
  756:             if(node6!=null) creates.add(node6.getCharacters().trim());
  757:              else
  758:               creates.add("");
  759:             
  760:           }
  761:           databases.add(new DataBase(database, tables, layouts, selects,creates));
  762:         }
  763:         DBBean database = new DBBean();
  764:         // parse dataBase
  765:         Node node = root.find("convert/destination/database/url", new int[] { 1, 1, 1, 1 });
  766:         Node node1 = root.find("convert/destination/database/user", new int[] { 1, 1, 1, 1, 1 });
  767:         Node node2 = root.find("convert/destination/database/password", new int[] { 1, 1, 1, 1, 1 });
  768:         String url = node.getCharacters();
  769:         String user = node1.getCharacters();
  770:         String password = node2.getCharacters();
  771:         System.out.println(url);
  772:         database.setURL(url.trim());
  773:         database.setUserAndPasswd(user.trim(), password.trim());
  774:         //databases.add(database);
  775:        for (Iterator iter = databases.iterator(); iter.hasNext();)
  776:       {
  777:         DataBase db = (DataBase) iter.next();
  778:         convertBatch(db.bean,database,db.tables,db.layouts,db.selects,db.creates);
  779:         
  780:       }
  781:         // printContents(node3);
  782:         //   FM2SQL.fmInstance=new FM2SQL();
  783:       } catch (Exception e)
  784:       {
  785:         // TODO Auto-generated catch block
  786:         e.printStackTrace();
  787:       }
  788:       /*
  789:       Node tempNode=root.find(rootNode,new int[] {1});
  790:       if(tempNode==null) return rtTag;
  791:       int count=1;
  792:       /* 
  793:       for(int i=0;i<tempNode.contents.v.size();++i)
  794:       {
  795:         // System.out.println(((Node)tempNode.contents.v.elementAt(i)).attributes+" "+i);
  796:       }*/
  797:    /*
  798:       if(tempNode.contents.v.size()==0) return rtTag;
  799:       Node notNull=null;
  800:       Node rtNode=root.find(rootNode+"/rt",new int[] {1,1});
  801:       rtTag=(rtNode==null) ? "finished":rtNode.getCharacters();
  802:       System.out.println("rt tag is "+ rtTag);
  803:       int length=0;//(tempNode.contents.length()-1)/2;
  804:       for(int i=0;i<tempNode.contents.v.size();++i)    {
  805:         Node node=(Node)tempNode.contents.v.elementAt(i);
  806:         if(node.type.equals("element"))
  807:         if(node.name.equals("doc"))length++;
  808:         // System.out.println(((Node)tempNode.contents.v.elementAt(i)).attributes+" "+i);
  809:       }
  810:      if(length==0) rtTag="finished";        
  811:       while(count<=length)
  812:       {
  813:          //System.out.println(count+" "+length);
  814:         tempNode=root.find(rootNode+"/doc",new int[] {1,count});
  815:         if(tempNode==null)
  816:         {
  817:           rtTag="finished";
  818:           break;
  819:         }    
  820:         Bundle.Document doc = new Bundle.Document();
  821:         Hashtable attributes=tempNode.attributes;
  822:         int docID=0;
  823:         int ver=0;
  824:          if(attributes != null)
  825:         {
  826:           docID=Integer.parseInt((String)attributes.get("id"));
  827:           ver=Integer.parseInt((String)attributes.get("ver"));
  828:           doc.addData("docID",(String)attributes.get("id"));
  829:           doc.addData("ver",(String)attributes.get("ver"));
  830:         }
  831:         bundle.docs.put(new Integer(docID),doc);
  832:         bundle.documents.addElement(doc);
  833:         // System.out.println("id " +docID+" ver "+ver);
  834:         Node fileNode=root.find(rootNode+"/doc/file",new int[] {1,count,1});
  835:         attributes=(fileNode==null)? null:fileNode.attributes;
  836:         int fileID=0;
  837:         int fileVer=0;
  838:         if(attributes != null)
  839:         {
  840:           fileID=Integer.parseInt((String)attributes.get("id"));
  841:           fileVer=Integer.parseInt((String)attributes.get("ver"));
  842:           doc.addData("fileID",(String)attributes.get("id"));
  843:           doc.addData("fileVer",(String)attributes.get("ver"));
  844:           // System.out.println("fileid " +fileID+" ver "+fileVer);
  845:         }
  846:      // add all Document tags to actual Document
  847:         for(int i=0;i<tempNode.contents.v.size();++i)
  848:         {   
  849:           Node node=(Node)tempNode.contents.v.elementAt(i);
  850:           if(node.type.equals("element"))
  851:            {
  852:              //System.out.println(node.name+" "+node.getCharacters()+" "+node.contents.v.size());
  853:              if(node.contents.v.size()>1) 
  854:              {
  855:                for(int j=0;j<node.contents.v.size();++j)
  856:                {  
  857:                  Node node2=(Node)node.contents.v.elementAt(j);
  858:                  if(node2.type.equals("element"))
  859:                   {
  860:                     doc.addData(node2.name,node2.getCharacters());
  861:                     //System.out.println(node2.name+" "+node2.getCharacters()+" "+node2.contents.v.size());
  862:                   }
  863:                }
  864:              } else doc.addData(node.name,node.getCharacters());
  865:           }
  866:         }
  867:         bundle.docsLocator.put(doc.locator,doc); 
  868:    
  869:       bundle.documents.addElement(doc);
  870:         count++;
  871:       }      */
  872:   
  873:       // System.out.println(bundle.docs.size());
  874:    // return rtTag;
  875:     }
  876:     public static Vector getXMLConfig(String xmlFile)
  877:      {
  878:        StringBuffer sb=null;
  879:        try 
  880:              {
  881:                 // read XML Metadata from a file
  882:                 FileInputStream fi= new FileInputStream(xmlFile);
  883:                 InputStreamReader isr= new InputStreamReader(fi,"UTF-8");
  884:                 BufferedReader buffr = new BufferedReader(isr);
  885:                 sb=new StringBuffer();
  886:                 int c=0;
  887:                 while ((c = buffr.read()) != -1) 
  888:                 {
  889:                   char ch=(char)c;
  890:                   sb.append(ch);
  891:                   // System.out.print((char)c);
  892:                 }
  893:                
  894:             } catch(Exception e) { e.printStackTrace();} 
  895:   
  896:        boolean finished = false;
  897:        // parse string and build document tree
  898:        Node  root = new Xparse().parse(sb.toString());
  899:         // printContents(root);
  900:        Vector databases= new Vector();
  901:        Vector tables = new Vector();
  902:        Vector layouts = new Vector();
  903:        Vector selects = new Vector();
  904:        Vector creates = new Vector();
  905:      
  906:        try
  907:        {
  908:          Node tempNode = root.find("convert/source", new int[] { 1, 1 });
  909:          if(tempNode==null) throw new Error("parse error source tag missing");
  910:          System.out.println(tempNode.name);
  911:          int length =countNodes(tempNode);
  912:          for (int i = 1; i <= length; i++)
  913:          {
  914:           
  915:            DBBean database = new DBBean();
  916:            tables = new Vector();
  917:            layouts = new Vector();
  918:            selects = new Vector();
  919:            creates = new Vector();
  920: 
  921:           // parse dataBase
  922:            Node node = root.find("convert/source/database/url", new int[] { 1, 1, i, 1 });
  923:            Node node1 = root.find("convert/source/database/user", new int[] { 1, 1, i, 1, 1 });
  924:            Node node2 = root.find("convert/source/database/password", new int[] { 1, 1, i, 1, 1 });
  925:            Node node3 = root.find("convert/source/database", new int[] { 1, 1, i});
  926:            if(node3== null) throw new Error("parse error database tag missing");
  927:            if(node==null) throw new Error("parse error url tag missing");
  928:            if(node1==null) throw new Error("parse error user tag missing");
  929:            if(node2==null) throw new Error("parse error password tag missing");
  930:            String url=node.getCharacters();
  931:            String user=node1.getCharacters();
  932:            String password=node2.getCharacters();
  933:            database.setURL(url.trim());
  934:            database.setUserAndPasswd(user.trim(),password.trim());
  935:            System.out.println(node.name + " " + node.getCharacters());
  936:            System.out.println(node1.name + " " + node1.getCharacters());
  937:            System.out.println(node2.name + " " + node2.getCharacters());
  938:        
  939:         //   if(node3!=null)
  940:           // System.out.println(node3.name);
  941:           
  942:            int length2= countNodes(node3);
  943:     
  944:           System.out.println("number of tables " +length2);
  945:     
  946:            for(int j=1;j<=length2;++j)
  947:            {
  948:              Node node4 = root.find("convert/source/database/table", new int[] { 1, 1, i, j });
  949:              Node node5 = root.find("convert/source/database/table/select", new int[] { 1, 1, i, j, 1 });
  950:              Node node6 = root.find("convert/source/database/table/create", new int[] { 1, 1, i, j, 1 });
  951:              if(node4!=null)
  952:              System.out.println(node4.name + " " + node4.attributes.get("layout").equals(""));
  953:              if(node5!=null)
  954:              System.out.println(node5.name + " " + node5.getCharacters());
  955:              if(node6!=null)
  956:              System.out.println(node6.name + " " + node6.getCharacters());
  957:              if(node4==null) throw new Error("parse error table tag missing");
  958:              // if(node5==null) throw new Error("parse error select tag missing");
  959:              // if(node6==null) throw new Error("parse error create tag missing");
  960:              String name = (String)node4.attributes.get("name");
  961:              String layout = (String)node4.attributes.get("layout");
  962:              if(name==null) throw new Error("parse error required table tag attribute name missing");
  963:              if(layout==null) layout ="";
  964:              if(name.equals("")) throw new Error("parse error table tag attribute must not be empty");
  965:              tables.add(name);
  966:              layouts.add(layout);
  967:              String query = (node5==null) ? "":node5.getCharacters(); 
  968:              if(query.equals("")) System.err.println("Warning empty select tag or  select tag missing !!");
  969:              query = (query.equals("")) ? "select * from "+database.getQC()+name+database.getQC():query;
  970:              selects.add(query);
  971:              if(node6!=null) creates.add(node6.getCharacters().trim());
  972:               else
  973:                creates.add("");
  974:             
  975:            }
  976:            databases.add(new DataBase(database, tables, layouts, selects,creates));
  977:          }
  978:          DBBean database = new DBBean();
  979:          // parse dataBase
  980:          Node node = root.find("convert/destination/database/url", new int[] { 1, 1, 1, 1 });
  981:          Node node1 = root.find("convert/destination/database/user", new int[] { 1, 1, 1, 1, 1 });
  982:          Node node2 = root.find("convert/destination/database/password", new int[] { 1, 1, 1, 1, 1 });
  983:          String url = node.getCharacters();
  984:          String user = node1.getCharacters();
  985:          String password = node2.getCharacters();
  986:          System.out.println(url);
  987:          database.setURL(url.trim());
  988:          database.setUserAndPasswd(user.trim(), password.trim());
  989:          databases.add(new DataBase(database,null,null,null,null));
  990:          //databases.add(database);
  991:     /*    for (Iterator iter = databases.iterator(); iter.hasNext();)
  992:        {
  993:          DataBase db = (DataBase) iter.next();
  994:          convertBatch(db.bean,database,db.tables,db.layouts,db.selects,db.creates);
  995:         
  996:        }*/
  997:          // printContents(node3);
  998:          //   FM2SQL.fmInstance=new FM2SQL();
  999:        } catch (Exception e)
 1000:        {
 1001:          // TODO Auto-generated catch block
 1002:          e.printStackTrace();
 1003:        }
 1004:        return databases;
 1005:       }
 1006: 
 1007: 
 1008:     private static int countNodes(Node tempNode)
 1009:     {
 1010:       int length = 0;
 1011:       for(int i=0;i<tempNode.contents.v.size();++i)    {
 1012:       Node node=(Node)tempNode.contents.v.elementAt(i);
 1013:       if(node.type.equals("element"))
 1014:       {
 1015:         if(node.name.equals("database"))length++;
 1016:         if(node.name.equals("table"))length++;
 1017:       }
 1018:       
 1019:             // System.out.println(((Node)tempNode.contents.v.elementAt(i)).attributes+" "+i);
 1020:        }
 1021:      return length;
 1022:     }
 1023:     private static void printContents(Node root)
 1024:     {
 1025:         
 1026:       
 1027:       Vector contents=(root.index==null)? root.contents.v:root.index.v;
 1028:       for (int i=0;i<contents.size();++i)
 1029:       {
 1030:         Node n=(Node)contents.elementAt(i);
 1031:         if(n.type.equals("element"))
 1032:         {
 1033:            System.out.println("tag "+n.name);
 1034:            System.out.println(n.getCharacters());
 1035:           //contents=n.contents.v i=0;
 1036:         }
 1037:         // System.out.println(n.type);
 1038:       
 1039:         
 1040:       
 1041:       }
 1042:     }
 1043:     public static void readXMLFile(String xmlFile)
 1044:     {
 1045:     try 
 1046:         {
 1047:            // read XML Metadata from a file
 1048:            FileInputStream fi= new FileInputStream(xmlFile);
 1049:            InputStreamReader isr= new InputStreamReader(fi,"UTF-8");
 1050:            BufferedReader buffr = new BufferedReader(isr);
 1051:            StringBuffer sb=new StringBuffer();
 1052:            int c=0;
 1053:            while ((c = buffr.read()) != -1) 
 1054:            {
 1055:              char ch=(char)c;
 1056:              sb.append(ch);
 1057:              // System.out.print((char)c);
 1058:            }
 1059:            parseXMLConfig(sb);
 1060:        } catch(Exception e) { e.printStackTrace();} 
 1061:     }
 1062: public static class DataBase 
 1063: {
 1064:   DBBean bean;
 1065:   Vector creates;
 1066:   Vector selects;
 1067:   Vector layouts;
 1068:   Vector tables;
 1069:   public DataBase(DBBean bean,Vector tables,Vector layouts,Vector selects,Vector creates)
 1070:   {
 1071:     this.bean = bean;
 1072:     this.tables = tables;
 1073:     this.layouts = layouts;
 1074:     this.selects = selects;
 1075:     this.creates = creates;
 1076:   }
 1077:   public void exportToXML(BufferedWriter buffr) throws Exception
 1078:    {
 1079:      buffr.write("    <database>\n");
 1080:      buffr.write("      <url>"+bean.url+"</url>\n");
 1081:      buffr.write("      <user>"+bean.user+"</user>\n");
 1082:      buffr.write("      <password>"+bean.passwd+"</password>\n");
 1083: 
 1084:      int index = 0;
 1085:      while(index<tables.size())
 1086:      {
 1087:        String table=(String)tables.get(index);
 1088:        String layout=(String)layouts.get(index);
 1089:        String select=(String)selects.get(index);
 1090:        String create=(String)creates.get(index);
 1091:    
 1092:        buffr.write("      <table name = \""+table+"\" layout = \""+layout+"\">\n");
 1093:        buffr.write("         <select>"+select+"</select>\n");
 1094:        if(!create.equals(""))
 1095:        buffr.write("         <create>"+create+"         </create>\n"); 
 1096:        buffr.write("      </table>\n");
 1097:        index++;
 1098:      }
 1099:      buffr.write("    </database>\n"); 
 1100:    }
 1101: public String toString() {return bean.url+" "+tables;}
 1102: 
 1103: }
 1104: public static String convertToUTF8(Object command)
 1105: {
 1106:   String str = null;
 1107:   try
 1108:   {
 1109:     str = new String(command.toString().getBytes("UTF-8"));
 1110:   } catch (UnsupportedEncodingException e)
 1111:   {
 1112:     // TODO Auto-generated catch block
 1113:     e.printStackTrace();
 1114:   }
 1115:   return str;
 1116: }
 1117:   public static void writeConfig(String file, DataBase source, DataBase destination) throws Exception
 1118:   {
 1119:     if(!file.toLowerCase().endsWith(".xml")) file+=".xml"; 
 1120:     File f = new File(file);
 1121:   
 1122:     FileOutputStream fout= new FileOutputStream(f);
 1123:     OutputStreamWriter outsw = new OutputStreamWriter(fout,"UTF-8");
 1124:     BufferedWriter buffw = new BufferedWriter(outsw);
 1125:     buffw.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
 1126:     buffw.newLine();
 1127:     buffw.write("<convert>\n");
 1128:     buffw.write("  <source>\n");
 1129:     source.exportToXML(buffw);
 1130:     buffw.write("  </source>\n");
 1131:     buffw.write("\n  <destination>\n");
 1132:     destination.exportToXML(buffw);
 1133:     buffw.write("  </destination>\n");
 1134:     buffw.write("</convert>\n");
 1135:     buffw.close();
 1136:   } 
 1137: }  

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