version 1.14, 2004/01/19 08:24:37
|
version 1.27, 2004/02/10 12:52:30
|
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 26 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 numIntervalls = 10; |
public static void main(String args[]) |
public static void main(String args[]) |
{ |
{ |
/* try |
/* try |
Line 382 class Convert
|
Line 381 class Convert
|
dialog.title.setText("Writing table data ..."); |
dialog.title.setText("Writing table data ..."); |
|
|
int j = -1; |
int j = -1; |
|
|
Vector row = null; |
Vector row = null; |
command = new StringBuffer(); |
command = new StringBuffer(); |
|
|
Line 393 class Convert
|
Line 393 class Convert
|
|
|
int size = bean.getColumnNames().size(); |
int size = bean.getColumnNames().size(); |
for (int i = 0; i < size - 1; ++i) |
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(convertText((String)bean.getColumnNames().get(size-1))+" = ? "); |
command.append("WHERE "+ids.get(tbIndex)+ " = ?"); |
command.append("WHERE "+convertText(ids.get(tbIndex).toString())+ " = ?"); |
PreparedStatement pstm = beanDest.getConnection().prepareStatement(command.toString()); |
PreparedStatement pstm = beanDest.getConnection().prepareStatement(command.toString()); |
System.out.println(command+" "+tbIndex); |
System.out.println(command+" "+tbIndex); |
int rowCount = bean.getRowCount(query); |
int rowCount = bean.getRowCount(query); |
Line 442 class Convert
|
Line 442 class Convert
|
pstm.setNull(k + 1, Types.NULL); |
pstm.setNull(k + 1, Types.NULL); |
} |
} |
pstm.setString(row.size()+1,row.get(idIndex).toString()); |
pstm.setString(row.size()+1,row.get(idIndex).toString()); |
System.out.println(pstm.toString()); |
//System.out.println(pstm.toString()); |
// System.exit(0); |
// System.exit(0); |
pstm.execute(); |
pstm.execute(); |
//stm.executeUpdate(command.toString()); |
//stm.executeUpdate(command.toString()); |
Line 456 class Convert
|
Line 456 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)); |
|
} |
java.io.ByteArrayOutputStream b = new java.io.ByteArrayOutputStream(); |
java.io.ByteArrayOutputStream b = new java.io.ByteArrayOutputStream(); |
java.io.PrintStream stream = new java.io.PrintStream(b); |
java.io.PrintStream stream = new java.io.PrintStream(b); |
stream.print(command + "\n\n"); |
stream.print(command + "\n\n"); |
Line 466 class Convert
|
Line 469 class Convert
|
FM2SQL.showErrorDialog(b.toString(), "Error occured !"); |
FM2SQL.showErrorDialog(b.toString(), "Error occured !"); |
|
|
} |
} |
|
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); |
} |
} |
|
|
|
} |
|
|
|
|
|
|
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); |
FM2SQL.ProgressDialog dialog = new FM2SQL.ProgressDialog(FM2SQL.fmInstance); |
dialog.setTitle("Conversion running ..."); |
dialog.setTitle("Conversion running ..."); |
Line 482 class Convert
|
Line 489 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 = 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 504 class Convert
|
Line 514 class Convert
|
for(tbIndex=0;tbIndex<names.size();++tbIndex) |
for(tbIndex=0;tbIndex<names.size();++tbIndex) |
{ |
{ |
Vector[] result = null; |
Vector[] result = null; |
try { |
try |
|
{ |
query = "select * from " + bean.getQC() +names.get(tbIndex).toString() + bean.getQC(); |
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 527 class Convert
|
Line 538 class Convert
|
dialog.show(); |
dialog.show(); |
//result = bean.getQueryData(query, dialog, 0); |
//result = bean.getQueryData(query, dialog, 0); |
bean.getConnection(); |
bean.getConnection(); |
bean.makeQuery(query,0); |
bean.makeQuery(query, 50); |
|
// @TODO id Vector must be used in querys while loop over id ranges where id>=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) |
} catch (Exception e) |
{ |
{ |
|
System.out.println(e); |
continue; |
continue; |
} |
} |
//beanDest.setConnection("jdbc:postgresql://erebos/test3"); |
//beanDest.setConnection("jdbc:postgresql://erebos/test3"); |
Line 631 class Convert
|
Line 651 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= bean.getRowCount(query); |
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("")) |
|
{ |
|
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, 0); |
|
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); |
|
} |
|
} else |
|
{ |
|
bean.makeQuery(query, 0); |
|
command = writeDatainDestTable(dialog, command, j, pstm, rowCount); |
|
} |
|
} |
|
} 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); |
|
} |
|
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 685 class Convert
|
Line 770 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) |
Line 786 class Convert
|
Line 853 class Convert
|
{ |
{ |
alterMe.setCharAt(j, '_'); |
alterMe.setCharAt(j, '_'); |
|
|
|
} else if (alterMe.charAt(j) == '?') |
|
{ |
|
// changed ? to _ because of update statement |
|
alterMe.setCharAt(j,'_'); |
|
// length = length + 1; |
|
// j=j+1; |
|
System.out.println(alterMe); |
} |
} |
|
|
else if (alterMe.charAt(j) == '.') |
else if (alterMe.charAt(j) == '.') |
{ |
{ |
if(j==length-1) |
if(j==length-1) |
Line 978 class Convert
|
Line 1053 class Convert
|
Node node1 = root.find("convert/source/database/user", new int[] { 1, 1, i, 1, 1 }); |
Node node1 = root.find("convert/source/database/user", new int[] { 1, 1, i, 1, 1 }); |
Node node2 = root.find("convert/source/database/password", new int[] { 1, 1, i, 1, 1 }); |
Node node2 = root.find("convert/source/database/password", new int[] { 1, 1, i, 1, 1 }); |
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) throw new Error("parse error database tag missing"); |
if(node==null) throw new Error("parse error url tag missing"); |
if(node==null) throw new Error("parse error url tag missing"); |
Line 1063 class Convert
|
Line 1138 class Convert
|
for (Iterator iter = databases.iterator(); iter.hasNext();) |
for (Iterator iter = databases.iterator(); iter.hasNext();) |
{ |
{ |
DataBase db = (DataBase) iter.next(); |
DataBase db = (DataBase) iter.next(); |
|
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,mode); |
|
else |
|
update(db.bean.url,database.url,db.tables,db.layouts,db.selects,db.creates,db.ids,mode); |
|
|
} |
} |
// printContents(node3); |
// printContents(node3); |