--- FM2SQL/Attic/Convert.java 2004/01/16 11:23:49 1.13 +++ FM2SQL/Attic/Convert.java 2004/02/11 11:39:25 1.29 @@ -1,5 +1,4 @@ - import java.util.*; import java.sql.*; import java.awt.Cursor; @@ -26,7 +25,7 @@ class Convert static String userDest="postgres",passwdDest="rogo"; static boolean batchRun=false; static Vector databases = new Vector(); - + final static int numIntervalls = 10; public static void main(String args[]) { /* try @@ -59,7 +58,7 @@ class Convert System.out.println("Finished!"); //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,int mode) throws Exception { /*FM2SQL.ProgressDialog dialog = new FM2SQL.ProgressDialog(FM2SQL.fmInstance); dialog.setTitle("Conversion running ..."); @@ -69,7 +68,7 @@ class Convert */ // FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); //dialog.thread=Thread.currentThread(); - bean=source; + bean = source; beanDest = destination; /* // setting user and passwd bean.setUserAndPasswd(user,passwd); @@ -382,6 +381,7 @@ class Convert dialog.title.setText("Writing table data ..."); int j = -1; + Vector row = null; command = new StringBuffer(); @@ -393,12 +393,13 @@ class Convert int size = bean.getColumnNames().size(); for (int i = 0; i < size - 1; ++i) - command.append(convertText((String)bean.getColumnNames().get(i))+" = ? "); + command.append(beanDest.getQC()+convertText((String)bean.getColumnNames().get(i))+beanDest.getQC()+" = ? ,"); command.append(convertText((String)bean.getColumnNames().get(size-1))+" = ? "); + command.append("WHERE "+convertText(ids.get(tbIndex).toString())+ " = ?"); PreparedStatement pstm = beanDest.getConnection().prepareStatement(command.toString()); - System.out.println(command); - System.exit(0); - int rowCount = bean.getRowCount(query); + System.out.println(command+" "+tbIndex); + int rowCount = bean.getRowCount(query); + int idIndex = bean.getColumnNames().indexOf(ids.get(tbIndex) ); while ((row = bean.getNextRow()) != null) { j++; @@ -440,6 +441,9 @@ class Convert else pstm.setNull(k + 1, Types.NULL); } + pstm.setString(row.size()+1,row.get(idIndex).toString()); + //System.out.println(pstm.toString()); + // System.exit(0); pstm.execute(); //stm.executeUpdate(command.toString()); if(dialog!=null) @@ -452,9 +456,12 @@ class Convert } catch (Exception e) { System.out.println("Error while connecting to database " + e); - dialog.setVisible(false); - dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + if (dialog != null) + { + dialog.setVisible(false); + dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + } java.io.ByteArrayOutputStream b = new java.io.ByteArrayOutputStream(); java.io.PrintStream stream = new java.io.PrintStream(b); stream.print(command + "\n\n"); @@ -462,15 +469,19 @@ class Convert FM2SQL.showErrorDialog(b.toString(), "Error occured !"); } - dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + if (dialog != null) + { + dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + + dialog.setVisible(false); + } - dialog.setVisible(false); } - public static void convert(String source,String destination,Vector names,Vector layouts,Vector selects,Vector creates,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); dialog.setTitle("Conversion running ..."); @@ -478,6 +489,9 @@ class Convert dialog.setLocation(FM2SQL.fmInstance.getLocationOnScreen().x+(FM2SQL.fmInstance.getWidth()-400)/2,FM2SQL.fmInstance.getLocationOnScreen().y+(FM2SQL.fmInstance.getHeight()-250)/2); dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + java.util.TreeSet myIds = new TreeSet(); + int deltaID = 1; + String idField = ""; dialog.thread=Thread.currentThread(); // setting user and passwd bean.setUserAndPasswd(user,passwd); @@ -500,10 +514,11 @@ class Convert for(tbIndex=0;tbIndex=start and id<=end + idField = ids.get(tbIndex).toString(); + /*if (idField != "") { - continue; - } + myIds = bean.getIDVector(ids.get(tbIndex).toString(), (String) names.get(tbIndex), query,1000); + System.out.println("ID LIST SIZE " + Math.round((double) myIds.size() / (double) numIntervalls) + " " + myIds.size()); + deltaID = (int) Math.round((double) myIds.size() / (double) numIntervalls); + + }*/ + + } catch (Exception e) + { + System.out.println(e); + continue; + } //beanDest.setConnection("jdbc:postgresql://erebos/test3"); beanDest.setConnection(destination); @@ -627,63 +653,67 @@ class Convert command.append("?)"); PreparedStatement pstm = beanDest.getConnection().prepareStatement(command.toString()); System.out.println(command); - int rowCount= bean.getRowCount(query); - while((row=bean.getNextRow())!=null) + int rowCount= (idField!="") ? myIds.size():bean.getRowCount(query); + Vector vec = new Vector(myIds); + int endIndex = -1; + String tempQuery=query;String tempID = bean.getQC()+idField+bean.getQC(); + if (!idField.equals("")) { - j++; - // 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 - Object obj = null; - /* for(int k=0;k 0) + tempQuery = query + " and " + tempID + ">=" + vec.get(k) + " and " + tempID + "<=" + vec.get(k + deltaID); + else + tempQuery = query + "where " + tempID + ">=" + vec.get(k) + " and " + tempID + "<=" + vec.get(k + deltaID); + System.out.println(tempQuery); + dialog.title.setText("Reading table data ..."); + + bean.makeQuery(tempQuery, deltaID); + dialog.title.setText("Writing table data ..."); + + command = writeDatainDestTable(dialog, command, k, pstm, rowCount); + endIndex = k + deltaID; + } + if ((vec.size() - 1) % numIntervalls == 0) + System.out.println("fits"); + else + { + if (query.indexOf("where") > 0) + tempQuery = query + " and " + tempID + ">=" + vec.get(endIndex) + " and " + tempID + "<=" + vec.lastElement(); + else + tempQuery = query + "where " + tempID + ">=" + vec.get(endIndex) + " and " + tempID + "<=" + vec.lastElement(); + System.out.println(tempQuery); + dialog.title.setText("Reading table data ..."); + bean.makeQuery(tempQuery, 0); + dialog.title.setText("Writing table data ..."); + command = writeDatainDestTable(dialog, command, j, pstm, rowCount); + + System.out.println(" last intervall from " + vec.get(endIndex) + " " + vec.lastElement()); + command = writeDatainDestTable(dialog, command, endIndex, pstm, rowCount); + } + if (query.indexOf("where") > 0) + tempQuery = query + " and " + tempID + ">" + vec.lastElement(); + else + tempQuery = query + " where " + tempID + ">" + vec.lastElement(); + } - pstm.execute(); - //stm.executeUpdate(command.toString()); - dialog.progress.setValue((int) (((double) (j + 1) / (double) rowCount) * 100.0)); - // System.out.println( (int)(((double)(j+1)/(double)result[0].size())*100.0)+" "+result[0].size()+" "+j); - command = null; -}// to for loop - + } else + { + bean.makeQuery(query, 0); + command = writeDatainDestTable(dialog, command, j, pstm, rowCount); } + } } catch(Exception e) { System.out.println("Error while connecting to database "+ e); @@ -702,6 +732,65 @@ class Convert dialog.setVisible(false); } + private static StringBuffer writeDatainDestTable(FM2SQL.ProgressDialog dialog, StringBuffer command, int j, PreparedStatement pstm, int rowCount) throws Exception, SQLException + { + Vector row; + while((row=bean.getNextRow())!=null) + { + j++; + // 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 + Object obj = null; + /* for(int k=0;k\n"); buffr.write(" "+bean.url+"\n"); buffr.write(" "+bean.user+"\n"); @@ -1417,7 +1519,7 @@ public static class DataBase String create=(String)creates.get(index); String id=(String)ids.get(index); - buffr.write(" \n"); + buffr.write("
\n"); buffr.write(" \n"); if(!create.equals("")) buffr.write(" "+create+" \n");