--- FM2SQL/src/Convert.java 2005/05/02 12:45:36 1.13 +++ FM2SQL/src/Convert.java 2005/09/06 10:53:16 1.14 @@ -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.8b\n"); private static boolean noError = false; @@ -656,7 +656,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 +682,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 +697,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 +1119,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 +1176,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 +1200,8 @@ class Convert selects = new Vector(); creates = new Vector(); ids = new Vector(); + destIDs = new Vector(); + preSQLCommands = new Vector(); postSQLCommands = new Vector(); @@ -1301,7 +1305,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 +1315,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 +1340,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 +1534,7 @@ class Convert */ public static class DataBase { + DBBean bean; Vector creates; @@ -1534,6 +1546,7 @@ class Convert Vector tables = new Vector(); Vector ids; + Vector destIDs; String delimiter = "//"; @@ -1880,7 +1893,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 +1918,6 @@ class Convert /** * synchronize method based on delete method code - * * @param source * @param destination * @param names @@ -1914,12 +1926,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 +1964,7 @@ class Convert java.util.TreeSet myIdsDest = new TreeSet(); int deltaID = 1; String idField = ""; + String destIDField = ""; String destTableName = ""; try @@ -1970,7 +1985,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 +2025,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 +2042,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 +2055,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 +2089,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 +2119,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 +2138,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() + "'"; @@ -2250,7 +2265,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)