--- FM2SQL/Attic/Convert.java 2004/07/09 10:26:39 1.60 +++ FM2SQL/Attic/Convert.java 2004/07/22 10:43:29 1.62 @@ -25,7 +25,6 @@ import java.io.OutputStreamWriter; import java.io.PrintStream; import java.io.UnsupportedEncodingException; import java.net.URL; -import java.net.URLConnection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; @@ -1262,6 +1261,8 @@ class Convert mode = DataBase.UPDATE_MODE; else if (modeString.equals("delete")) mode = DataBase.DELETE_MODE; + else if (modeString.equals("synchronize")) + mode = DataBase.SYNCHRONIZE_MODE; // if(node3!=null) // System.out.println(node3.name); @@ -1330,11 +1331,20 @@ class Convert for (Iterator iter = databases.iterator(); iter.hasNext();) { DataBase db = (DataBase) iter.next(); - if (mode != DataBase.UPDATE_MODE) + 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 - update(db.bean.url, database.url, db.tables, db.layouts, db.selects, db.creates, db.ids, mode); - + if (mode == DataBase.UPDATE_MODE) + update(db.bean.url, database.url, db.tables, db.layouts, db.selects, db.creates, db.ids, mode); + else if(mode==DataBase.SYNCHRONIZE_MODE) + { + user =bean.user; + passwd =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); + } } // printContents(node3); // FM2SQL.fmInstance=new FM2SQL(); @@ -1616,7 +1626,8 @@ class Convert final static int APPEND_MODE = 2; final static int UPDATE_MODE = 3; final static int DELETE_MODE = 4; - + final static int SYNCHRONIZE_MODE = 5; + int mode = -1; public DataBase(DBBean bean, Vector tables, Vector layouts, Vector selects, Vector creates, Vector ids, int mode) @@ -1934,11 +1945,12 @@ class Convert // 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 { + System.out.println(" bin in synchronize!!!"); FM2SQL.ProgressDialog dialog = null; if (FM2SQL.fmInstance != null) { dialog = new FM2SQL.ProgressDialog(FM2SQL.fmInstance, bean); - dialog.setTitle("Conversion running ..."); + dialog.setTitle("Synchronize running ..."); dialog.title.setText("Getting table data ..."); dialog.setLocation(FM2SQL.fmInstance.getLocationOnScreen().x + (FM2SQL.fmInstance.getWidth() - 400) / 2, FM2SQL.fmInstance.getLocationOnScreen().y + (FM2SQL.fmInstance.getHeight() - 250) / 2); dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); @@ -1979,7 +1991,7 @@ 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("")) { layout = " layout " + bean.getQC() + layout + bean.getQC(); String name = names.get(tbIndex).toString(); @@ -1989,10 +2001,12 @@ class Convert System.out.println("added layout " + query); } + if(dialog!=null) { dialog.title.setText("Getting table data ..."); dialog.table.setText(names.get(tbIndex).toString()); dialog.status.setText("Table " + (tbIndex + 1) + " of " + names.size()); dialog.show(); + } bean.getConnection(); bean.makeQuery(query, 50); idField = ids.get(tbIndex).toString(); @@ -2049,8 +2063,14 @@ class Convert // Deletion will work this way Vector deleted = new Vector(vec); Vector linesToDelete = new Vector(vecDest); + + Vector linesToAppend = new Vector(vec); + // 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.exit(0); // System.out.println("ID LIST SIZE " + Math.round((double) myIds.size() / (double) numIntervalls) + " " + myIdsDest.size()); /// @TODO complete delete task remove query show lines to be deleted let user choose if he wants that System.out.println("number of lines to be deleted " + linesToDelete.size());