--- FM2SQL/Attic/Convert.java 2004/10/19 11:12:19 1.81 +++ FM2SQL/Attic/Convert.java 2004/10/19 11:57:26 1.82 @@ -1465,7 +1465,9 @@ class Convert else if (modeString.equals("delete")) mode = DataBase.DELETE_MODE; - // if(node3!=null) + else if (modeString.equals("synchronize")) + mode = DataBase.SYNCHRONIZE_MODE; + // if(node3!=null) // System.out.println(node3.name); int length2 = countNodes(node3); @@ -2233,7 +2235,7 @@ class Convert if (dialog != null) dialog.title.setText("Writing table data ..."); - performSynchronize(idField, vec, tempQuery, linesToDelete, linesToAppend, insPst, updPst, delPSt, deltaID, delimiter); + performSynchronize(idField, vec, tempQuery, linesToDelete, linesToAppend, insPst, updPst, delPSt, deltaID, delimiter, dialog); // System.out.println("ID LIST SIZE " + // Math.round((double) myIds.size() / (double) // numIntervalls) + " " + myIdsDest.size()); @@ -2257,7 +2259,7 @@ class Convert // bean.makeQuery(tempQuery, 0); if (dialog != null) dialog.title.setText("Writing table data ..."); - performSynchronize(idField, vec, tempQuery, linesToDelete, linesToAppend, insPst, updPst, delPSt, deltaID, delimiter); + performSynchronize(idField, vec, tempQuery, linesToDelete, linesToAppend, insPst, updPst, delPSt, deltaID, delimiter, dialog); // System.out.println("ID LIST SIZE " + // Math.round((double) myIds.size() / (double) // numIntervalls) + " " + myIdsDest.size()); @@ -2270,56 +2272,59 @@ class Convert } String tableName = names.get(tbIndex).toString(); - IndexList idList = (IndexList) indexList.get(0); - System.out.println("found list " + idList); - Statement stm = beanDest.getConnection().createStatement(); - Vector destTables = beanDest.getTableNames(); - System.out.println("tempQueryDest" + tempQueryDest); - beanDest.makeQuery(tempQueryDest, 0); - for (Iterator iter = idList.iterator(); iter.hasNext();) + if (indexList.isEmpty()) { - String indexField = (String) iter.next(); - indexField = convertText(indexField); - String indexName = destTableName + "_" + indexField; - if (destTables.contains(indexName)) + IndexList idList = (IndexList) indexList.get(0); + System.out.println("found list " + idList); + Statement stm = beanDest.getConnection().createStatement(); + Vector destTables = beanDest.getTableNames(); + System.out.println("tempQueryDest" + tempQueryDest); + beanDest.makeQuery(tempQueryDest, 0); + for (Iterator iter = idList.iterator(); iter.hasNext();) { - stm.execute("DROP INDEX " + destTableName + "_" + indexField); - // continue; - } - // stm.execute("DROP INDEX - // "+destTableName+"_"+indexField); + String indexField = (String) iter.next(); + indexField = convertText(indexField); + String indexName = destTableName + "_" + indexField; + if (destTables.contains(indexName)) + { + stm.execute("DROP INDEX " + destTableName + "_" + indexField); + // continue; + } + // stm.execute("DROP INDEX + // "+destTableName+"_"+indexField); - String type = beanDest.getColumnType(indexField).toLowerCase(); - // System.out.println(indexField+" "+type+" - // "+(type.indexOf("text") >= 0 || - // type.indexOf("varchar") >= 0 || type.indexOf("char") - // >= 0)); - if (type.indexOf("text") >= 0 || type.indexOf("varchar") >= 0 || type.indexOf("char") >= 0) - { - if (beanDest.url.indexOf("mysql") >= 0) + String type = beanDest.getColumnType(indexField).toLowerCase(); + // System.out.println(indexField+" "+type+" + // "+(type.indexOf("text") >= 0 || + // type.indexOf("varchar") >= 0 || type.indexOf("char") + // >= 0)); + if (type.indexOf("text") >= 0 || type.indexOf("varchar") >= 0 || type.indexOf("char") >= 0) { - //System.out.println("CREATE INDEX " + - // indexName + " ON " + destTableName + " (" + - // indexField + "(10))"); - // TODO problem if index exist !!! - stm.execute("CREATE INDEX " + indexName + " ON " + destTableName + " (" + indexField + "(10))"); + if (beanDest.url.indexOf("mysql") >= 0) + { + //System.out.println("CREATE INDEX " + + // indexName + " ON " + destTableName + " (" + + // indexField + "(10))"); + // TODO problem if index exist !!! + stm.execute("CREATE INDEX " + indexName + " ON " + destTableName + " (" + indexField + "(10))"); + } + else + { + stm.execute("CREATE INDEX " + indexName + " ON " + destTableName + " (lower( " + indexField + "))"); + + } + } else { - stm.execute("CREATE INDEX " + indexName + " ON " + destTableName + " (lower( " + indexField + "))"); + stm.execute("CREATE INDEX " + destTableName + "_" + indexField + " ON " + destTableName + "(" + indexField + ")"); } - } - else - { - stm.execute("CREATE INDEX " + destTableName + "_" + indexField + " ON " + destTableName + "(" + indexField + ")"); + // stm.execute("DROP INDEX + // "+destTableName+"_"+indexField); } - - // stm.execute("DROP INDEX - // "+destTableName+"_"+indexField); - } // CREATE UNIQUE INDEX title_idx ON films (title); for (Iterator iter = linesToDelete.iterator(); iter.hasNext();) @@ -2376,12 +2381,22 @@ class Convert } private static void performSynchronize(String idField, Vector vec, String tempQuery, TreeSet linesToDelete, TreeSet linesToAppend, PreparedStatement insPst, PreparedStatement updPst, - PreparedStatement delPSt, int deltaID, String delimiter) throws SQLException, ParseException + PreparedStatement delPSt, int deltaID, String delimiter, FM2SQL.ProgressDialog dialog) throws SQLException, ParseException { + if (dialog != null) + { + dialog.progress.setValue(0); + dialog.title.setText("Retrieving new data"); + } + Vector[] vectors = bean.getQueryData(tempQuery, deltaID); + int count = 0, size = vectors[0].size(); int idIndex = vectors[1].indexOf(idField); - System.out.println(idIndex + " " + vectors[1] + " " + idField); + //System.out.println(idIndex + " " + vectors[1] + " " + idField); // todo arraylist code has to be added + if (dialog != null) + dialog.title.setText("Synchronize with new data"); + for (Iterator iter = vectors[0].iterator(); iter.hasNext();) { Vector line = (Vector) iter.next(); @@ -2418,7 +2433,13 @@ class Convert } updPst.setString(line.size() + 1, line.get(idIndex).toString()); //updPst.addBatch(); - updPst.execute(); + //updPst.execute(); + } + if (dialog != null) + { + int value = (int) Math.round(((double) count / (double) size) * 100.0); + dialog.progress.setValue(value); + count++; } } //updPst.executeBatch();