--- FM2SQL/Attic/Convert.java 2004/10/13 11:31:17 1.80
+++ 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);
@@ -1742,6 +1744,8 @@ class Convert
modeString = "update";
else if (mode == DELETE_MODE)
modeString = "delete";
+ else if (mode == SYNCHRONIZE_MODE)
+ modeString = "synchronize";
buffr.write(" " + modeString + "\n");
buffr.write(" " + useNormanToUnicodeMapper + "\n");
@@ -2231,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());
@@ -2255,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());
@@ -2268,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();)
@@ -2374,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();
@@ -2416,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();