--- FM2SQL/src/Convert.java 2005/03/18 13:31:09 1.4 +++ FM2SQL/src/Convert.java 2005/04/11 13:27:12 1.7 @@ -93,9 +93,13 @@ class Convert public void executeCommand() throws SQLException, Exception { + System.out.println("Executing command: \n"); + System.out.println(command); + java.sql.Connection con = bean.getConnection(); Statement stm = con.createStatement(); stm.execute(command); + stm.close(); } } @@ -115,7 +119,7 @@ class Convert final static int numIntervalls = 4; - static boolean debug = true; + static boolean debug =! false; static boolean isGUI = true; @@ -129,6 +133,8 @@ class Convert static Vector postSQLCommands = new Vector(); + static final String versionID = new String("FM2SQL Version 0.9.0b\n"); + public static void main(String args[]) throws IOException { /* @@ -142,6 +148,7 @@ class Convert FileOutputStream file = null; if (args.length != 1) { + System.out.println(versionID); System.out.println("Usage: java Convert "); System.exit(-1); } @@ -159,11 +166,14 @@ class Convert System.setOut(stream); System.setErr(stream); } + System.out.println(versionID); StringBuffer sb = readXMLFile(args[0]); parseXMLConfig(sb); if (!(new File(args[0]).exists())) - System.exit(0); + { + System.exit(0); + } System.out.println("Finished!"); // convert("jdbc:fmpro:http://141.14.237.74:8050","jdbc:postgresql://erebos/test",null,null); } @@ -417,7 +427,7 @@ 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 { - + // TODO implement convert_temp mode!!! FM2SQL.ProgressDialog dialog = null; if (isGUI) @@ -502,8 +512,12 @@ class Convert ConversionProperties prop = getFieldNamesAndDestTableName(creates.get(tbIndex).toString(), query, names.get(tbIndex).toString()); destTableName = prop.destTableName; + if (mode == Convert.DataBase.CONVERT_TEMP_MODE) + { + destTableName += "_temp"; + } fieldNames = prop.fieldNames; - if (mode == Convert.DataBase.CONVERT_MODE) + if (mode == Convert.DataBase.CONVERT_MODE || mode == Convert.DataBase.CONVERT_TEMP_MODE) { if (tables.indexOf(destTableName) >= 0) @@ -511,7 +525,6 @@ class Convert stm.executeUpdate("drop table " + beanDest.getQC() + destTableName + beanDest.getQC()); tables.remove(destTableName); System.out.println("dropped table" + destTableName); - } if ((tables.indexOf(destTableName) < 0)) { @@ -525,7 +538,7 @@ class Convert command = new StringBuffer(50); command.append("CREATE TABLE "); command.append(beanDest.getQC()); - command.append(convertText((String) names.get(tbIndex))); + command.append(destTableName);//convertText((String) names.get(tbIndex))); command.append(beanDest.getQC()); command.append("("); String type = null; @@ -981,9 +994,19 @@ class Convert try { databases = getXMLConfig(sb); - + + // destination DataBase object + DataBase dbDest = ((DataBase) databases.lastElement()); + DBBean database = ((DataBase) databases.lastElement()).bean; databases.remove(databases.size() - 1); + + for (Iterator iterator = dbDest.preCommands.iterator(); iterator.hasNext();) + { + SQLCommand sqlCommand = (SQLCommand) iterator.next(); + sqlCommand.executeCommand(); + } + // databases.add(database); for (Iterator iter = databases.iterator(); iter.hasNext();) { @@ -994,7 +1017,8 @@ class Convert sqlCommand.executeCommand(); } int mode = db.mode; - if (mode == DataBase.CONVERT_MODE || mode == DataBase.APPEND_MODE) + if (mode == DataBase.CONVERT_MODE || mode == DataBase.APPEND_MODE + || mode == DataBase.CONVERT_TEMP_MODE) convertBatch(db.bean, database, db.tables, db.layouts, db.selects, db.creates, db.ids, mode, db.delimiter); else if (mode == DataBase.UPDATE_MODE) @@ -1024,6 +1048,11 @@ class Convert } } + for (Iterator iterator = dbDest.postCommands.iterator(); iterator.hasNext();) + { + SQLCommand sqlCommand = (SQLCommand) iterator.next(); + sqlCommand.executeCommand(); + } } catch (Exception e) { @@ -1143,6 +1172,9 @@ class Convert else if (modeString.equals("synchronize")) mode = DataBase.SYNCHRONIZE_MODE; + else if (modeString.equals("convert_temp")) + mode = DataBase.CONVERT_TEMP_MODE; + // if(node3!=null) // System.out.println(node3.name); @@ -1404,7 +1436,7 @@ class Convert Vector layouts; - Vector tables=new Vector(); + Vector tables = new Vector(); Vector ids; @@ -1430,6 +1462,8 @@ class Convert final static int SYNCHRONIZE_MODE = 5; + final static int CONVERT_TEMP_MODE = 6; + int mode = -1; public DataBase(DBBean bean, Vector tables, Vector layouts, Vector selects, Vector creates, @@ -1495,8 +1529,9 @@ class Convert { while (count < preCommands.size()) { - SQLCommand sqlcommand=(SQLCommand)preCommands.get(count); - buffr.write(" " + sqlcommand.command + "\n"); + SQLCommand sqlcommand = (SQLCommand) preCommands.get(count); + buffr.write(" " + sqlcommand.command + + "\n"); count++; } } @@ -1505,9 +1540,10 @@ class Convert count = 0; while (count < postCommands.size()) { - SQLCommand sqlcommand=(SQLCommand)postCommands.get(count); - - buffr.write(" " + sqlcommand.command + "\n"); + SQLCommand sqlcommand = (SQLCommand) postCommands.get(count); + + buffr.write(" " + sqlcommand.command + + "\n"); count++; } } @@ -3638,7 +3674,7 @@ class Convert // retrieve field_names from select statement // TODO problem with different fieldNames in create statement will // overwrite them - if (query.indexOf("*") < 0) + if (query.indexOf("*") < 0 && create.equals(""))// quick hack for hartmut { int selectEndIndex = query.indexOf("from"); StringTokenizer tokenizer = new StringTokenizer(query.substring(6, selectEndIndex), ",");