--- FM2SQL/src/Convert.java 2005/04/12 11:02:51 1.9 +++ FM2SQL/src/Convert.java 2005/04/19 10:49:05 1.10 @@ -31,11 +31,9 @@ import java.sql.Statement; import java.sql.Types; import java.text.ParseException; import java.util.ArrayList; -import java.util.Enumeration; import java.util.Hashtable; import java.util.Iterator; import java.util.List; -import java.util.Properties; import java.util.StringTokenizer; import java.util.TreeSet; import java.util.Vector; @@ -121,7 +119,7 @@ class Convert final static int numIntervalls = 4; - static boolean debug = false; + static boolean debug = !false; static boolean isGUI = true; @@ -135,7 +133,9 @@ class Convert static Vector postSQLCommands = new Vector(); - static final String versionID = new String("FM2SQL Version 0.9.0b\n"); + static final String versionID = new String("FM2SQL Version 0.9.1b\n"); + + private static boolean noError = false; public static void main(String args[]) throws IOException { @@ -158,7 +158,7 @@ class Convert File temp = null; try { - temp = new File(tmpPath, "fm2sql.txt"); + temp = new File(tmpPath, "fm2sql.txt"); int count = 1; while (temp.exists()) { @@ -172,8 +172,8 @@ class Convert PrintStream stream = new PrintStream(file, true); // write info for user to stdout System.out.println(versionID); - System.out.println("Loading "+args[0]+"...."); - System.out.println("Log will be written to "+temp.getCanonicalPath()); + System.out.println("Loading " + args[0] + "...."); + System.out.println("Log will be written to " + temp.getCanonicalPath()); if (!debug) { @@ -181,8 +181,8 @@ class Convert System.setErr(stream); } System.out.println(versionID); - System.out.println("Using config file : "+args[0]+"...."); - + System.out.println("Using config file : " + args[0] + "...."); + StringBuffer sb = readXMLFile(args[0]); parseXMLConfig(sb); if (!(new File(args[0]).exists())) @@ -264,8 +264,9 @@ class Convert String layout = (layouts.isEmpty()) ? "" : layouts.get(tbIndex).toString(); query = (selects != null) ? selects.get(tbIndex).toString() : query; // if vectors[1].get(i) != null) - if (layout != "") + if (!layout.equals("")) { + query = addLayoutToQuery(names, query, tbIndex, layout); } @@ -488,7 +489,7 @@ class Convert String layout = (layouts.isEmpty()) ? "" : layouts.get(tbIndex).toString(); query = (selects != null) ? selects.get(tbIndex).toString() : "select * from " + bean.getQC() + names.get(tbIndex).toString() + bean.getQC(); - if (layout != "") + if (layout.intern() != "") { query = addLayoutToQuery(names, query, tbIndex, layout); @@ -606,7 +607,6 @@ class Convert command.append(") "); command.append(" values ( "); - // add a question marks for every field for (int i = 0; i < bean.getColumnNames().size() - 1; ++i) command.append("?,"); @@ -703,6 +703,7 @@ class Convert long startTime = System.currentTimeMillis(); bean.makeQuery(query, 0); + System.err.println("query for whole table done"); command = writeDatainDestTable(dialog, command, j, pstm, rowCount, delimiter); long endTime = System.currentTimeMillis(); System.out.println("Time for old convert elapsed " + (endTime - startTime)); @@ -710,10 +711,12 @@ class Convert } if (isGUI) resetGUI(dialog); + noError = true; } } catch (Exception e) { - System.out.println("Error while connecting to database " + e); + System.out.println("Error while connecting to database " + e.getMessage()); + noError = false; if (isGUI) { showExceptionDialog(dialog, command, e); @@ -723,6 +726,10 @@ class Convert e.printStackTrace(); } + } catch (Error e) + { + System.out.println(e); + e.printStackTrace(); } } @@ -1033,8 +1040,25 @@ class Convert sqlCommand.executeCommand(); } int mode = db.mode; - if (mode == DataBase.CONVERT_MODE || mode == DataBase.APPEND_MODE - || mode == DataBase.CONVERT_TEMP_MODE) + if (mode == DataBase.CONVERT_TEMP_MODE) + { + convertBatch(db.bean, database, db.tables, db.layouts, db.selects, db.creates, db.ids, + mode, db.delimiter); + if (noError) + { + System.out.println("no Error occured "); + // db.bean.setURL(database.url); + // db.bean.setUserAndPasswd(database.user,database.passwd); + // + // Convert.user = db.bean.user; + // Convert.passwd = db.bean.passwd; + // userDest = database.user; + // passwdDest = database.passwd; + // synchronize(db.bean.url, database.url, db.tables, db.layouts, db.selects, db.creates, + // db.ids, mode, db.delimiter, new Vector(db.htIndex.values())); + } + } + 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) @@ -1232,9 +1256,9 @@ class Convert id = ""; if (name.equals("")) throw new Error("parse error table tag attribute must not be empty"); - tables.add(name); - layouts.add(layout); - ids.add(id); + tables.add(name.intern()); + layouts.add(layout.intern()); + ids.add(id.intern()); String query = (node5 == null) ? "" : node5.getCharacters(); if (query.equals("")) System.err.println("Warning empty select tag or select tag missing !!"); @@ -3729,7 +3753,7 @@ class Convert // retrieve field_names from select statement if (query.indexOf("*") < 0) { - int selectEndIndex = query.indexOf("from"); + int selectEndIndex = query.lastIndexOf("from"); StringTokenizer tokenizer = new StringTokenizer(query.substring(6, selectEndIndex), ","); int numFields = tokenizer.countTokens(); fieldNames = new String[numFields]; @@ -3737,7 +3761,11 @@ class Convert while (tokenizer.hasMoreTokens()) { String fieldName = tokenizer.nextToken().trim(); - fieldNames[fieldIndex] = beanDest.getQC() + convertText(fieldName) + beanDest.getQC(); + String text = convertText(fieldName); + if (text.indexOf("\"") >= 0) + fieldNames[fieldIndex] = convertText(fieldName); + else + fieldNames[fieldIndex] = beanDest.getQC() + convertText(fieldName) + beanDest.getQC(); // System.out.println("field "+ fieldNames[fieldIndex]); fieldIndex++; }