--- FM2SQL/src/Convert.java 2005/05/02 12:45:36 1.13 +++ FM2SQL/src/Convert.java 2005/09/22 12:24:30 1.15 @@ -137,7 +137,7 @@ class Convert static Vector postSQLCommands = new Vector(); - static final String versionID = new String("FM2SQL Version 0.9.6b\n"); + static final String versionID = new String("FM2SQL Version 0.9.9b\n"); private static boolean noError = false; @@ -539,12 +539,22 @@ class Convert destTableName = prop.destTableName; if (mode == Convert.DataBase.CONVERT_TEMP_MODE) { + String tableNameSave=destTableName; destTableName += _TEMP; + if(creates.get(tbIndex)!="") + { + System.out.println("Changed tablename of create statement to "+destTableName); + StringBuffer buffer=new StringBuffer(creates.get(tbIndex).toString()); + int startIndex = buffer.indexOf(tableNameSave); + buffer.replace(startIndex,startIndex+tableNameSave.length(),destTableName); + creates.set(tbIndex,buffer.toString()); + } } + System.out.println("destTableName is now "+destTableName); + fieldNames = prop.fieldNames; if (mode == Convert.DataBase.CONVERT_MODE || mode == Convert.DataBase.CONVERT_TEMP_MODE) { - if (tables.indexOf(destTableName) >= 0) { stm.executeUpdate("drop table " + beanDest.getQC() + destTableName + beanDest.getQC()); @@ -588,8 +598,10 @@ class Convert command.append(" )"); } else - command = new StringBuffer().append(creates.get(tbIndex).toString().toLowerCase()); - stm.executeUpdate(command.toString()); + { + command = new StringBuffer().append(creates.get(tbIndex).toString()); + } + stm.executeUpdate(command.toString()); } } @@ -656,7 +668,7 @@ class Convert 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) + if (query.toLowerCase().indexOf("where") > 0) tempQuery = query + " and " + tempID + ">='" + vec.get(k) + "' and " + tempID + "<='" + vec.get(k + deltaID) + "'"; else @@ -682,7 +694,7 @@ class Convert System.out.println(" last intervall from " + vec.get(endIndex) + " " + vec.lastElement()); - if (query.indexOf("where") > 0) + if (query.toLowerCase().indexOf("where") > 0) tempQuery = query + " and " + tempID + ">='" + vec.get(endIndex) + "' and " + tempID + "<='" + vec.lastElement() + "'"; else @@ -697,7 +709,7 @@ class Convert command = writeDatainDestTable(dialog, command, endIndex, pstm, rowCount, delimiter); } // prepare new query for next chunk - if (query.indexOf("where") > 0) + if (query.toLowerCase().indexOf("where") > 0) tempQuery = query + " and " + tempID + ">'" + vec.lastElement() + "'"; else tempQuery = query + " where " + tempID + ">'" + vec.lastElement() + "'"; @@ -1119,7 +1131,7 @@ class Convert 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())); + db.ids, mode, db.delimiter, new Vector(db.htIndex.values()), db.destIDs); } for (Iterator iterator = db.postCommands.iterator(); iterator.hasNext();) { @@ -1176,6 +1188,8 @@ class Convert Vector selects = new Vector(); Vector creates = new Vector(); Vector ids = new Vector(); + Vector destIDs = new Vector(); + Vector preSQLCommands = new Vector(); Vector postSQLCommands = new Vector(); @@ -1198,6 +1212,8 @@ class Convert selects = new Vector(); creates = new Vector(); ids = new Vector(); + destIDs = new Vector(); + preSQLCommands = new Vector(); postSQLCommands = new Vector(); @@ -1270,6 +1286,7 @@ class Convert else if (modeString.equals("convert_temp")) mode = DataBase.CONVERT_TEMP_MODE; + System.out.println("mode ist "+mode); // if(node3!=null) // System.out.println(node3.name); @@ -1301,7 +1318,9 @@ class Convert String name = (String) node4.attributes.get("name"); String layout = (String) node4.attributes.get("layout"); String id = (String) node4.attributes.get("id"); + String destID = (String) node4.attributes.get("targetID"); System.out.println("id was " + id); + System.out.println("targetID was " + destID); if (name == null) throw new Error("parse error required table tag attribute name missing"); @@ -1309,11 +1328,15 @@ class Convert layout = ""; if (id == null) id = ""; + if (destID == null) + destID = id ; + if (name.equals("")) throw new Error("parse error table tag attribute must not be empty"); tables.add(name.intern()); layouts.add(layout.intern()); ids.add(id.intern()); + destIDs.add(destID.intern()); String query = (node5 == null) ? "" : node5.getCharacters(); if (query.equals("")) System.err.println("Warning empty select tag or select tag missing !!"); @@ -1330,6 +1353,7 @@ class Convert dataBase.delimiter = delimiter; dataBase.preCommands = new Vector(preSQLCommands); dataBase.postCommands = new Vector(postSQLCommands); + dataBase.destIDs = destIDs; databases.add(dataBase); } DBBean database = new DBBean(); @@ -1523,6 +1547,7 @@ class Convert */ public static class DataBase { + DBBean bean; Vector creates; @@ -1534,6 +1559,7 @@ class Convert Vector tables = new Vector(); Vector ids; + Vector destIDs; String delimiter = "//"; @@ -1880,7 +1906,7 @@ class Convert command = null; } // prepare new query for next chunk - if (query.indexOf("where") > 0) + if (query.toLowerCase().indexOf("where") > 0) tempQuery = query + " and " + tempID + ">'" + vec.lastElement() + "'"; else tempQuery = query + " where " + tempID + ">'" + vec.lastElement() + "'"; @@ -1905,7 +1931,6 @@ class Convert /** * synchronize method based on delete method code - * * @param source * @param destination * @param names @@ -1914,12 +1939,14 @@ class Convert * @param creates * @param ids * @param mode + * @param destIDs TODO + * * @throws Exception */ // TODO implement append,update and delete in one method // TODO using id based algorithm public static void synchronize(String source, String destination, Vector names, Vector layouts, - Vector selects, Vector creates, Vector ids, int mode, String delimiter, Vector indexList) + Vector selects, Vector creates, Vector ids, int mode, String delimiter, Vector indexList, java.util.Vector destIDs) throws Exception { System.out.println(" bin in synchronize!!!"); @@ -1950,6 +1977,7 @@ class Convert java.util.TreeSet myIdsDest = new TreeSet(); int deltaID = 1; String idField = ""; + String destIDField = ""; String destTableName = ""; try @@ -1970,7 +1998,7 @@ class Convert bean.getConnection(); bean.makeQuery(query, 50); idField = ids.get(tbIndex).toString(); - + destIDField = (destIDs!=null) ? destIDs.get(tbIndex).toString():convertText(idField); } catch (Exception e) { System.out.println("Warning exception occured \n " + e); @@ -2010,7 +2038,7 @@ class Convert // remove extra query parts // destQuery.substring(0,destQuery.lastIndexOf(destTableName)+destTableName.length()+1); System.out.println("new Query " + tempQueryDest); - System.out.println("idfield " + idField + " " + ids.get(tbIndex).toString()); + System.out.println("idfield " + idField + " " + ids.get(tbIndex).toString()+" targetID is "+destIDField); if (!idField.equals("")) { long startTime = System.currentTimeMillis(); @@ -2027,7 +2055,7 @@ class Convert myIds = bean.getIDVector(ids.get(tbIndex).toString(), (String) names.get(tbIndex), tempQuery, 0); - myIdsDest = beanDest.getIDVector(convertText(idField), destTableName, tempQueryDest, 0); + myIdsDest = beanDest.getIDVector(destIDField, destTableName, tempQueryDest, 0); // System.out.println("status of remove // "+myIds.remove("b015892")); System.out.println("ids found for " + idField + " " + !myIds.isEmpty()); @@ -2040,7 +2068,7 @@ class Convert Vector deleted = new Vector(vec); TreeSet linesToAppend = new TreeSet(vec); - linesToAppend.addAll(vec); + // linesToAppend.addAll(vec); linesToDelete = new TreeSet(vecDest); // remove all lines that are already in dest database linesToAppend.removeAll(vecDest); @@ -2074,7 +2102,7 @@ class Convert 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) + if (query.toLowerCase().indexOf("where") > 0) tempQuery = query + " and " + tempID + ">='" + vec.get(k) + "' and " + tempID + "<='" + vec.get(k + deltaID) + "'"; else @@ -2104,7 +2132,7 @@ class Convert System.out.println(" last intervall from " + vec.get(endIndex) + " " + vec.lastElement()); - if (query.indexOf("where") > 0) + if (query.toLowerCase().indexOf("where") > 0) tempQuery = query + " and " + tempID + ">='" + vec.get(endIndex) + "' and " + tempID + "<='" + vec.lastElement() + "'"; else @@ -2123,7 +2151,7 @@ class Convert // numIntervalls) + " " + myIdsDest.size()); } // prepare new query for next chunk - if (query.indexOf("where") > 0) + if (query.toLowerCase().indexOf("where") > 0) tempQuery = query + " and " + tempID + ">'" + vec.lastElement() + "'"; else tempQuery = query + " where " + tempID + ">'" + vec.lastElement() + "'"; @@ -2189,7 +2217,7 @@ class Convert // CREATE UNIQUE INDEX title_idx ON films (title); for (Iterator iter = linesToDelete.iterator(); iter.hasNext();) { - String id = (String) iter.next(); + String id = iter.next().toString(); delPSt.setString(1, id); delPSt.execute(); @@ -2237,7 +2265,7 @@ class Convert dialog.title.setText("Retrieving new data"); } - Vector[] vectors = bean.getQueryData(tempQuery, deltaID); + Vector[] vectors = bean.getQueryData(tempQuery, 0); int count = 0, size = vectors[0].size(); int idIndex = vectors[1].indexOf(idField); // System.out.println(idIndex + " " + vectors[1] + " " + idField); @@ -2250,7 +2278,7 @@ class Convert Vector line = (Vector) iter.next(); Object lineIDIndex = line.get(idIndex); if (linesToAppend.contains(lineIDIndex)) - System.out.println("line " + linesToAppend.contains(line.get(idIndex)) + " " + lineIDIndex); + System.out.println("line " + linesToAppend.contains(lineIDIndex) + " " + lineIDIndex); if (linesToAppend.contains(lineIDIndex)) { for (int l = 0; l < line.size(); ++l) @@ -2280,7 +2308,8 @@ class Convert } updPst.setString(line.size() + 1, line.get(idIndex).toString()); // updPst.addBatch(); - // updPst.execute(); + // System.out.println("updating "+line.get(idIndex).toString()+" "+line); + updPst.execute(); } if (dialog != null) {