--- FM2SQL/Attic/Convert.java 2004/01/22 12:28:03 1.19 +++ FM2SQL/Attic/Convert.java 2004/02/10 14:43:48 1.28 @@ -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 = 10000; public static void main(String args[]) { /* try @@ -382,7 +381,6 @@ class Convert dialog.title.setText("Writing table data ..."); int j = -1; - System.out.println(bean.getIDVector(ids.get(tbIndex).toString(),(String) names.get(tbIndex)).size()); Vector row = null; command = new StringBuffer(); @@ -483,7 +481,7 @@ class Convert - 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 ..."); @@ -491,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); @@ -513,10 +514,11 @@ class Convert for(tbIndex=0;tbIndex=start and id<=end + idField = ids.get(tbIndex).toString(); + if (idField != "") + { + myIds = bean.getIDVector(ids.get(tbIndex).toString(), (String) names.get(tbIndex), query); + 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); @@ -640,63 +651,51 @@ 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="";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+5); + 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(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 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); } - 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); @@ -715,6 +714,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