--- FM2SQL/Attic/Convert.java 2004/10/12 18:46:52 1.79
+++ FM2SQL/Attic/Convert.java 2004/10/26 08:37:10 1.83
@@ -18,6 +18,7 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
+import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
@@ -92,9 +93,10 @@ class Convert
final static int numIntervalls = 4;
- static boolean debug = true;
-
- public static void main(String args[])
+ static boolean debug = false;
+
+ static boolean isGUI = true;
+ public static void main(String args[]) throws IOException
{
/*
* try { //byte[] b = "ö".getBytes("UTF-8"); //
@@ -103,6 +105,7 @@ class Convert
* //System.out.println(new String(b,"UTF-8")); } catch
* (UnsupportedEncodingException e) { e.printStackTrace(); }
*/
+ isGUI = false;
FileOutputStream file = null;
if (args.length != 1)
{
@@ -110,14 +113,14 @@ class Convert
System.exit(-1);
}
try
- {
- file = new FileOutputStream("./log.txt");
+ { File temp=File.createTempFile("fm2sql",".txt");
+ file = new FileOutputStream(temp);
}
catch (FileNotFoundException e1)
{
e1.printStackTrace();
}
- PrintStream stream = new PrintStream(file, false);
+ PrintStream stream = new PrintStream(file, true);
if (!debug)
{
System.setOut(stream);
@@ -329,7 +332,7 @@ class Convert
{
FM2SQL.ProgressDialog dialog = null;
- if (FM2SQL.fmInstance != null)
+ if (isGUI)
{
dialog = new FM2SQL.ProgressDialog(FM2SQL.fmInstance, bean);
dialog.setTitle("Conversion running ...");
@@ -351,14 +354,17 @@ class Convert
{
//bean.setConnection("jdbc:fmpro:http://141.14.237.74:8050");
//bean.setConnection("jdbc:postgresql://erebos/test","postgres","rogo");
+ System.out.println("before getConnection");
+
bean.setConnection(source);
+ System.out.println("after getConnection");
+
if (names == null)
names = bean.getTableNames();
// Collections.sort(names);
int tbIndex = 1;
- // System.out.println("Start at
- // "+names.indexOf("archimedes_facsimiles"));
+ System.out.println("Start at table "+names.firstElement());
for (tbIndex = 0; tbIndex < names.size(); ++tbIndex)
{
Vector[] result = null;
@@ -423,7 +429,7 @@ class Convert
if (dialog != null)
dialog.title.setText("Updating table data ...");
-
+ else System.out.println("Updating table data ...");
int j = -1;
Vector row = null;
@@ -510,6 +516,7 @@ class Convert
java.io.PrintStream stream = new java.io.PrintStream(b);
stream.print(command + "\n\n");
e.printStackTrace(stream);
+ if(dialog!=null)
FM2SQL.showErrorDialog(b.toString(), "Error occured !");
}
@@ -541,10 +548,10 @@ class Convert
public static void convert(String source, String destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids, int mode, String delimiter) throws Exception
{
-
+
FM2SQL.ProgressDialog dialog = null;
- if (FM2SQL.fmInstance != null)
+ if (isGUI)
{
dialog = new FM2SQL.ProgressDialog(FM2SQL.fmInstance, bean);
dialog.setTitle("Conversion running ...");
@@ -555,11 +562,15 @@ class Convert
dialog.thread = Thread.currentThread();
dialog.setSize(400, 250);
}
+
+ System.out.println("connection established "+source+" "+bean.url);
+
java.util.TreeSet myIds = new TreeSet();
int deltaID = 1;
String idField = "";
String destTableName = "";
String[] fieldNames = null;
+
if (source != null && destination != null)
{
// setting user and passwd
@@ -567,16 +578,17 @@ class Convert
// setting user and passwd
beanDest.setUserAndPasswd(userDest, passwdDest);
}
+
StringBuffer command = null;
String query = null;
try
{
+
if (source != null)
bean.setConnection(source);
else
bean.setConnection(bean.url);
-
- if (names == null)
+ if (names == null)
names = bean.getTableNames();
// Collections.sort(names);
int tbIndex = 1;
@@ -1313,17 +1325,22 @@ class Convert
String url = node.getCharacters();
String user = node1.getCharacters();
String password = node2.getCharacters();
- System.out.println(url);
+ System.out.println(" The url is "+url);
database.setURL(url.trim());
database.setUserAndPasswd(user.trim(), password.trim());
+ System.out.println("huhu");
//databases.add(database);
for (Iterator iter = databases.iterator(); iter.hasNext();)
{
+ System.out.println("huhu argghhhh"+(mode == DataBase.CONVERT_MODE)+" mode is "+mode);
+
DataBase db = (DataBase) iter.next();
if (mode == DataBase.CONVERT_MODE || mode == DataBase.APPEND_MODE)
convertBatch(db.bean, database, db.tables, db.layouts, db.selects, db.creates, db.ids, mode, db.delimiter);
else if (mode == DataBase.UPDATE_MODE)
{
+ System.out.println("huhu arghhh arghhh arghhh");
+
Convert.user = db.bean.user;
Convert.passwd = db.bean.passwd;
userDest = database.user;
@@ -1465,7 +1482,9 @@ class Convert
else if (modeString.equals("delete"))
mode = DataBase.DELETE_MODE;
- // if(node3!=null)
+ else if (modeString.equals("synchronize"))
+ mode = DataBase.SYNCHRONIZE_MODE;
+ // if(node3!=null)
// System.out.println(node3.name);
int length2 = countNodes(node3);
@@ -1742,6 +1761,8 @@ class Convert
modeString = "update";
else if (mode == DELETE_MODE)
modeString = "delete";
+ else if (mode == SYNCHRONIZE_MODE)
+ modeString = "synchronize";
buffr.write(" " + modeString + "\n");
buffr.write(" " + useNormanToUnicodeMapper + "\n");
@@ -1827,7 +1848,7 @@ class Convert
public static void delete(String source, String destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids, int mode) throws Exception
{
FM2SQL.ProgressDialog dialog = null;
- if (FM2SQL.fmInstance != null)
+ if (isGUI)
{
dialog = new FM2SQL.ProgressDialog(FM2SQL.fmInstance, bean);
dialog.setTitle("Conversion running ...");
@@ -2057,7 +2078,7 @@ class Convert
{
System.out.println(" bin in synchronize!!!");
FM2SQL.ProgressDialog dialog = null;
- if (FM2SQL.fmInstance != null)
+ if (isGUI)
{
dialog = new FM2SQL.ProgressDialog(FM2SQL.fmInstance, bean);
dialog.setTitle("Synchronize running ...");
@@ -2231,7 +2252,7 @@ class Convert
if (dialog != null)
dialog.title.setText("Writing table data ...");
- performSynchronize(idField, vec, tempQuery, linesToDelete, linesToAppend, insPst, updPst, delPSt, deltaID, delimiter);
+ performSynchronize(idField, vec, tempQuery, linesToDelete, linesToAppend, insPst, updPst, delPSt, deltaID, delimiter, dialog);
// System.out.println("ID LIST SIZE " +
// Math.round((double) myIds.size() / (double)
// numIntervalls) + " " + myIdsDest.size());
@@ -2255,7 +2276,7 @@ class Convert
// bean.makeQuery(tempQuery, 0);
if (dialog != null)
dialog.title.setText("Writing table data ...");
- performSynchronize(idField, vec, tempQuery, linesToDelete, linesToAppend, insPst, updPst, delPSt, deltaID, delimiter);
+ performSynchronize(idField, vec, tempQuery, linesToDelete, linesToAppend, insPst, updPst, delPSt, deltaID, delimiter, dialog);
// System.out.println("ID LIST SIZE " +
// Math.round((double) myIds.size() / (double)
// numIntervalls) + " " + myIdsDest.size());
@@ -2268,56 +2289,59 @@ class Convert
}
String tableName = names.get(tbIndex).toString();
- IndexList idList = (IndexList) indexList.get(0);
- System.out.println("found list " + idList);
- Statement stm = beanDest.getConnection().createStatement();
- Vector destTables = beanDest.getTableNames();
- System.out.println("tempQueryDest" + tempQueryDest);
- beanDest.makeQuery(tempQueryDest, 0);
- for (Iterator iter = idList.iterator(); iter.hasNext();)
- {
- String indexField = (String) iter.next();
- indexField = convertText(indexField);
- String indexName = destTableName + "_" + indexField;
- if (destTables.contains(indexName))
+ if (indexList.isEmpty())
+ {
+ IndexList idList = (IndexList) indexList.get(0);
+ System.out.println("found list " + idList);
+ Statement stm = beanDest.getConnection().createStatement();
+ Vector destTables = beanDest.getTableNames();
+ System.out.println("tempQueryDest" + tempQueryDest);
+ beanDest.makeQuery(tempQueryDest, 0);
+ for (Iterator iter = idList.iterator(); iter.hasNext();)
{
- stm.execute("DROP INDEX " + destTableName + "_" + indexField);
- // continue;
- }
- // stm.execute("DROP INDEX
- // "+destTableName+"_"+indexField);
+ String indexField = (String) iter.next();
+ indexField = convertText(indexField);
+ String indexName = destTableName + "_" + indexField;
+ if (destTables.contains(indexName))
+ {
+ stm.execute("DROP INDEX " + destTableName + "_" + indexField);
+ // continue;
+ }
+ // stm.execute("DROP INDEX
+ // "+destTableName+"_"+indexField);
- String type = beanDest.getColumnType(indexField).toLowerCase();
- // System.out.println(indexField+" "+type+"
- // "+(type.indexOf("text") >= 0 ||
- // type.indexOf("varchar") >= 0 || type.indexOf("char")
- // >= 0));
- if (type.indexOf("text") >= 0 || type.indexOf("varchar") >= 0 || type.indexOf("char") >= 0)
- {
- if (beanDest.url.indexOf("mysql") >= 0)
+ String type = beanDest.getColumnType(indexField).toLowerCase();
+ // System.out.println(indexField+" "+type+"
+ // "+(type.indexOf("text") >= 0 ||
+ // type.indexOf("varchar") >= 0 || type.indexOf("char")
+ // >= 0));
+ if (type.indexOf("text") >= 0 || type.indexOf("varchar") >= 0 || type.indexOf("char") >= 0)
{
- //System.out.println("CREATE INDEX " +
- // indexName + " ON " + destTableName + " (" +
- // indexField + "(10))");
- // TODO problem if index exist !!!
- stm.execute("CREATE INDEX " + indexName + " ON " + destTableName + " (" + indexField + "(10))");
+ if (beanDest.url.indexOf("mysql") >= 0)
+ {
+ //System.out.println("CREATE INDEX " +
+ // indexName + " ON " + destTableName + " (" +
+ // indexField + "(10))");
+ // TODO problem if index exist !!!
+ stm.execute("CREATE INDEX " + indexName + " ON " + destTableName + " (" + indexField + "(10))");
+ }
+ else
+ {
+ stm.execute("CREATE INDEX " + indexName + " ON " + destTableName + " (lower( " + indexField + "))");
+
+ }
+
}
else
{
- stm.execute("CREATE INDEX " + indexName + " ON " + destTableName + " (lower( " + indexField + "))");
+ stm.execute("CREATE INDEX " + destTableName + "_" + indexField + " ON " + destTableName + "(" + indexField + ")");
}
- }
- else
- {
- stm.execute("CREATE INDEX " + destTableName + "_" + indexField + " ON " + destTableName + "(" + indexField + ")");
+ // stm.execute("DROP INDEX
+ // "+destTableName+"_"+indexField);
}
-
- // stm.execute("DROP INDEX
- // "+destTableName+"_"+indexField);
-
}
// CREATE UNIQUE INDEX title_idx ON films (title);
for (Iterator iter = linesToDelete.iterator(); iter.hasNext();)
@@ -2348,6 +2372,7 @@ class Convert
java.io.PrintStream stream = new java.io.PrintStream(b);
stream.print(command + "\n\n");
e.printStackTrace(stream);
+ if(dialog != null)
FM2SQL.showErrorDialog(b.toString(), "Error occured !");
}
@@ -2374,12 +2399,22 @@ class Convert
}
private static void performSynchronize(String idField, Vector vec, String tempQuery, TreeSet linesToDelete, TreeSet linesToAppend, PreparedStatement insPst, PreparedStatement updPst,
- PreparedStatement delPSt, int deltaID, String delimiter) throws SQLException, ParseException
+ PreparedStatement delPSt, int deltaID, String delimiter, FM2SQL.ProgressDialog dialog) throws SQLException, ParseException
{
+ if (dialog != null)
+ {
+ dialog.progress.setValue(0);
+ dialog.title.setText("Retrieving new data");
+ }
+
Vector[] vectors = bean.getQueryData(tempQuery, deltaID);
+ int count = 0, size = vectors[0].size();
int idIndex = vectors[1].indexOf(idField);
- System.out.println(idIndex + " " + vectors[1] + " " + idField);
+ //System.out.println(idIndex + " " + vectors[1] + " " + idField);
// todo arraylist code has to be added
+ if (dialog != null)
+ dialog.title.setText("Synchronize with new data");
+
for (Iterator iter = vectors[0].iterator(); iter.hasNext();)
{
Vector line = (Vector) iter.next();
@@ -2416,7 +2451,13 @@ class Convert
}
updPst.setString(line.size() + 1, line.get(idIndex).toString());
//updPst.addBatch();
- updPst.execute();
+ //updPst.execute();
+ }
+ if (dialog != null)
+ {
+ int value = (int) Math.round(((double) count / (double) size) * 100.0);
+ dialog.progress.setValue(value);
+ count++;
}
}
//updPst.executeBatch();