version 1.23, 2004/01/29 11:25:40
|
version 1.33, 2004/02/13 12:28:41
|
Line 25 class Convert
|
Line 25 class Convert
|
static String userDest="postgres",passwdDest="rogo"; |
static String userDest="postgres",passwdDest="rogo"; |
static boolean batchRun=false; |
static boolean batchRun=false; |
static Vector databases = new Vector(); |
static Vector databases = new Vector(); |
|
final static int numHits = 5000; |
|
final static int numIntervalls = 2; |
public static void main(String args[]) |
public static void main(String args[]) |
{ |
{ |
/* try |
/* try |
Line 478 class Convert
|
Line 479 class Convert
|
} |
} |
|
|
} |
} |
|
/** |
|
transfers the specified array of tables to the destination database |
|
and creates the table if it does not exist if it exists and mode is not append the table is dropped |
|
|
|
**/ |
|
|
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 = new FM2SQL.ProgressDialog(FM2SQL.fmInstance); |
Line 489 class Convert
|
Line 492 class Convert
|
dialog.setLocation(FM2SQL.fmInstance.getLocationOnScreen().x+(FM2SQL.fmInstance.getWidth()-400)/2,FM2SQL.fmInstance.getLocationOnScreen().y+(FM2SQL.fmInstance.getHeight()-250)/2); |
dialog.setLocation(FM2SQL.fmInstance.getLocationOnScreen().x+(FM2SQL.fmInstance.getWidth()-400)/2,FM2SQL.fmInstance.getLocationOnScreen().y+(FM2SQL.fmInstance.getHeight()-250)/2); |
dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); |
dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); |
FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); |
FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); |
java.util.TreeSet myIds; |
java.util.TreeSet myIds = new TreeSet(); |
|
int deltaID = 1; |
|
String idField = ""; |
dialog.thread=Thread.currentThread(); |
dialog.thread=Thread.currentThread(); |
// setting user and passwd |
// setting user and passwd |
bean.setUserAndPasswd(user,passwd); |
bean.setUserAndPasswd(user,passwd); |
Line 530 class Convert
|
Line 535 class Convert
|
} |
} |
// if ( layout!= "") |
// if ( layout!= "") |
// query += " layout " + bean.getQC() + layout + bean.getQC(); |
// query += " layout " + bean.getQC() + layout + bean.getQC(); |
dialog.title.setText("Getting 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(); |
Line 538 class Convert
|
Line 543 class Convert
|
bean.getConnection(); |
bean.getConnection(); |
bean.makeQuery(query, 50); |
bean.makeQuery(query, 50); |
// @TODO id Vector must be used in querys while loop over id ranges where id>=start and id<=end |
// @TODO id Vector must be used in querys while loop over id ranges where id>=start and id<=end |
myIds = bean.getIDVector(ids.get(tbIndex).toString(),(String) names.get(tbIndex)); |
idField = ids.get(tbIndex).toString(); |
System.out.println("ID LIST SIZE "+myIds.size()); |
|
|
|
} catch (Exception e) |
} catch (Exception e) |
{ |
{ |
|
System.out.println(e); |
continue; |
continue; |
} |
} |
//beanDest.setConnection("jdbc:postgresql://erebos/test3"); |
//beanDest.setConnection("jdbc:postgresql://erebos/test3"); |
Line 611 class Convert
|
Line 616 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 ..."); |
dialog.title.setText("Writing table data ..."); |
|
|
//for (int j = 0; j < result[0].size(); ++j) |
// prepare the insert statement |
int j=-1; |
int j=-1; |
Vector row = null; |
Vector row = null; |
command = new StringBuffer(); |
command = new StringBuffer(); |
Line 644 class Convert
|
Line 633 class Convert
|
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= myIds.size();//bean.getRowCount(query) |
int rowCount= (idField!="") ? myIds.size():bean.getRowCount(query); |
Vector vec = new Vector(myIds); |
Vector vec = new Vector(myIds); |
for(int k=0;k<vec.size()-1000;k=k+1000) |
int endIndex = -1; |
|
String tempQuery=query;String tempID = bean.getQC()+idField+bean.getQC(); |
|
if (!idField.equals("")) |
|
{ |
|
long startTime = System.currentTimeMillis(); |
|
int counter = -1; |
|
while (true) |
|
{ |
|
++counter; |
|
if(counter==0) |
|
dialog.title.setText("Check if data is available"); |
|
else |
|
dialog.title.setText("Check if more data is available"); |
|
myIds = bean.getIDVector(ids.get(tbIndex).toString(), (String) names.get(tbIndex), tempQuery, numHits); |
|
if(myIds.isEmpty()) break; |
|
vec = new Vector(myIds); |
|
rowCount = vec.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); |
|
if (vec.size() <= numIntervalls) |
|
{ |
|
endIndex = 0; deltaID = vec.size(); |
|
} |
|
for (int k = 0; k < vec.size() - deltaID; k = k + deltaID) |
|
{ |
|
System.out.println(vec.get(k) + " " + vec.get(k + deltaID) + " " + vec.lastElement()); |
|
if (query.indexOf("where") > 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; |
|
} |
|
System.out.println(endIndex); |
|
if (endIndex == vec.size()-1) |
|
System.out.println("fits"); |
|
else |
|
{ |
|
System.out.println(" last intervall from " + vec.get(endIndex) + " " + vec.lastElement()); |
|
|
|
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, endIndex, pstm, rowCount); |
|
} |
|
if (query.indexOf("where") > 0) |
|
tempQuery = query + " and " + tempID + ">" + vec.lastElement(); |
|
else |
|
tempQuery = query + " where " + tempID + ">" + vec.lastElement(); |
|
|
|
} |
|
long endTime = System.currentTimeMillis(); |
|
System.out.println("Time for incremental convert elapsed "+(endTime-startTime)); |
|
} else |
|
{ |
|
long startTime = System.currentTimeMillis(); |
|
|
|
bean.makeQuery(query, 0); |
|
command = writeDatainDestTable(dialog, command, j, pstm, rowCount); |
|
long endTime = System.currentTimeMillis(); |
|
System.out.println("Time for old convert elapsed "+(endTime-startTime)); |
|
|
|
} |
|
} |
|
} catch(Exception e) |
{ |
{ |
System.out.println(vec.get(k)+" "+vec.get(k+1000)); |
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)); |
|
java.io.ByteArrayOutputStream b = new java.io.ByteArrayOutputStream(); |
|
java.io.PrintStream stream = new java.io.PrintStream(b); |
|
stream.print(command+"\n\n"); |
|
e.printStackTrace(stream); |
|
FM2SQL.showErrorDialog(b.toString(), "Error occured !"); |
|
|
|
} |
|
dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); |
|
FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); |
|
|
|
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) |
while((row=bean.getNextRow())!=null) |
{ |
{ |
j++; |
j++; |
Line 703 class Convert
|
Line 784 class Convert
|
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; |
}// to for loop |
}// to while loop |
|
return command; |
} |
|
} 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)); |
|
java.io.ByteArrayOutputStream b = new java.io.ByteArrayOutputStream(); |
|
java.io.PrintStream stream = new java.io.PrintStream(b); |
|
stream.print(command+"\n\n"); |
|
e.printStackTrace(stream); |
|
FM2SQL.showErrorDialog(b.toString(), "Error occured !"); |
|
|
|
} |
|
dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); |
|
FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); |
|
|
|
dialog.setVisible(false); |
|
} |
} |
|
|
public static String convertText(String newName) |
public static String convertText(String newName) |