--- FM2SQL/Attic/Convert.java 2004/08/03 11:41:16 1.66 +++ FM2SQL/Attic/Convert.java 2004/08/04 11:53:08 1.67 @@ -1273,7 +1273,7 @@ class Convert userDest = database.user; passwdDest = database.passwd; - synchronize(db.bean.url, database.url, db.tables, db.layouts, db.selects, db.creates, db.ids, mode); + synchronize(db.bean.url, database.url, db.tables, db.layouts, db.selects, db.creates, db.ids, mode, db.delimiter); } } // printContents(node3); @@ -1897,7 +1897,7 @@ class Convert */ // 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) throws Exception + public static void synchronize(String source, String destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids, int mode, String delimiter) throws Exception { System.out.println(" bin in synchronize!!!"); FM2SQL.ProgressDialog dialog = null; @@ -2019,25 +2019,29 @@ class Convert rowCount = vec.size(); // Deletion will work this way Vector deleted = new Vector(vec); - linesToDelete = new TreeSet(vecDest); - + TreeSet linesToAppend = new TreeSet(vec); + linesToAppend.addAll(vec); + linesToDelete = new TreeSet(vecDest); // remove all lines that are already in dest database linesToAppend.removeAll(vecDest); // remove all lines that should not be deleted linesToDelete.removeAll(deleted); - System.out.println("linesToAppend " + linesToAppend + " " + vecDest + " " + destTableName); - System.out.println("linesToDelete " + linesToDelete + " " + vecDest + " " + destTableName); + System.out.println("linesToAppend " + linesToAppend + " " + destTableName); + System.out.println("linesToDelete " + linesToDelete + " " + destTableName); System.out.println("ID LIST SIZE " + Math.round((double) myIds.size() / (double) numIntervalls) + " " + myIds.size()); deltaID = (int) Math.round((double) myIds.size() / (double) numIntervalls); ConversionProperties prop = getFieldNamesAndDestTableName(creates.get(tbIndex).toString(), query, names.get(tbIndex).toString()); StringBuffer insCommand = createInsertCommand(prop.destTableName, prop.fieldNames); - StringBuffer updCommand = createUpdateCommand(prop.destTableName, prop.fieldNames, tempID); - StringBuffer delCommand = createDeleteCommand(destTableName, tempID); + StringBuffer updCommand = createUpdateCommand(prop.destTableName, prop.fieldNames, tempIDdest); + StringBuffer delCommand = createDeleteCommand(destTableName, tempIDdest); PreparedStatement insPst = beanDest.getConnection().prepareStatement(insCommand.toString()); PreparedStatement updPst = beanDest.getConnection().prepareStatement(updCommand.toString()); - delPSt = beanDest.getConnection().prepareStatement(delCommand.toString()); - + // delPSt = beanDest.getConnection().prepareStatement(delCommand.toString()); + // delPSt.setString(1,"b015892"); + // delPSt.execute(); + // if (true) + // return; if (vec.size() <= numIntervalls) { endIndex = 0; @@ -2058,7 +2062,7 @@ class Convert if (dialog != null) dialog.title.setText("Writing table data ..."); - performSynchronize(idField, vec, tempQuery, linesToDelete, linesToAppend, insPst, updPst, delPSt, deltaID); + // performSynchronize(idField, vec, tempQuery, linesToDelete, linesToAppend, insPst, updPst, delPSt, deltaID, delimiter); // System.out.println("ID LIST SIZE " + Math.round((double) myIds.size() / (double) numIntervalls) + " " + myIdsDest.size()); endIndex = k + deltaID; } @@ -2077,10 +2081,10 @@ class Convert System.out.println(tempQuery); if (dialog != null) dialog.title.setText("Reading table data ..."); - bean.makeQuery(tempQuery, 0); + // bean.makeQuery(tempQuery, 0); if (dialog != null) dialog.title.setText("Writing table data ..."); - performSynchronize(idField, vec, tempQuery, linesToDelete, linesToAppend, insPst, updPst, delPSt, deltaID); + // performSynchronize(idField, vec, tempQuery, linesToDelete, linesToAppend, insPst, updPst, delPSt, deltaID, delimiter); // System.out.println("ID LIST SIZE " + Math.round((double) myIds.size() / (double) numIntervalls) + " " + myIdsDest.size()); } // prepare new query for next chunk @@ -2090,6 +2094,7 @@ class Convert tempQuery = query + " where " + tempID + ">'" + vec.lastElement() + "'"; } + for (Iterator iter = linesToDelete.iterator(); iter.hasNext();) { String id = (String) iter.next(); @@ -2106,6 +2111,7 @@ class Convert } catch (Exception e) { System.out.println("Error while connecting to database " + e); + e.printStackTrace(); if (dialog != null) { dialog.setVisible(false); @@ -2136,7 +2142,8 @@ class Convert PreparedStatement insPst, PreparedStatement updPst, PreparedStatement delPSt, - int deltaID) + int deltaID, + String delimiter) throws SQLException, ParseException { Vector[] vectors = bean.getQueryData(tempQuery, deltaID); @@ -2146,12 +2153,15 @@ class Convert { Vector line = (Vector) iter.next(); Object lineIDIndex = line.get(idIndex); - System.out.println("line " + linesToAppend.contains(line.get(idIndex)) + " " + lineIDIndex); + if (linesToAppend.contains(lineIDIndex)) + System.out.println("line " + linesToAppend.contains(line.get(idIndex)) + " " + lineIDIndex); if (linesToAppend.contains(lineIDIndex)) { for (int l = 0; l < line.size(); ++l) { Object obj = line.get(l); + if (obj instanceof ArrayList) + obj = formatFileMakerArray((List) obj, delimiter); if (obj != null) insPst.setString(l + 1, obj.toString()); else @@ -2164,6 +2174,8 @@ class Convert for (int l = 0; l < line.size(); ++l) { Object obj = line.get(l); + if (obj instanceof ArrayList) + obj = formatFileMakerArray((List) obj, delimiter); if (obj != null) updPst.setString(l + 1, obj.toString()); else