--- FM2SQL/Attic/Convert.java 2004/03/12 11:48:57 1.46
+++ FM2SQL/Attic/Convert.java 2004/03/18 09:31:01 1.50
@@ -1150,6 +1150,9 @@ class Convert
mode = DataBase.APPEND_MODE;
else if (modeString.equals("update"))
mode = DataBase.UPDATE_MODE;
+ else if (modeString.equals("delete"))
+ mode = DataBase.DELETE_MODE;
+
// if(node3!=null)
// System.out.println(node3.name);
@@ -1321,6 +1324,9 @@ class Convert
mode = DataBase.APPEND_MODE;
else if (modeString.equals("update"))
mode = DataBase.UPDATE_MODE;
+ else if (modeString.equals("delete"))
+ mode = DataBase.DELETE_MODE;
+
// if(node3!=null)
// System.out.println(node3.name);
@@ -1517,6 +1523,8 @@ class Convert
modeString = "append";
else if (mode == UPDATE_MODE)
modeString = "update";
+ else if (mode == DELETE_MODE)
+ modeString = "delete";
buffr.write(" " + modeString + "\n");
int index = 0;
@@ -1661,18 +1669,18 @@ class Convert
// for id kram
Vector vec = null;
Vector vecDest = null;
-// tempo
- beanDest.setConnection(destination);
-
+ // tempo
+ beanDest.setConnection(destination);
int rowCount = (idField != "") ? myIds.size() : bean.getRowCount(query);
String tempID = bean.getQC() + idField + bean.getQC();
String tempIDdest = beanDest.getQC() + convertText(idField) + beanDest.getQC();
-
+
int endIndex = -1;
String tempQuery = query;
- String destQuery =query.replaceAll(names.get(tbIndex).toString(),destTableName);
+ String destQuery = query.replaceAll(names.get(tbIndex).toString(), destTableName);
String tempQueryDest = destQuery;
- System.out.println("new Query "+tempQueryDest);
+ // remove extra query parts destQuery.substring(0,destQuery.lastIndexOf(destTableName)+destTableName.length()+1);
+ System.out.println("new Query " + tempQueryDest);
if (!idField.equals(""))
{
long startTime = System.currentTimeMillis();
@@ -1691,74 +1699,58 @@ class Convert
vec = new Vector(myIds);
vecDest = new Vector(myIdsDest);
rowCount = vec.size();
- // Deletion will work this way
- Vector deleted=new Vector(vec);
- deleted.remove(0);
- Vector linesToDelete=new Vector(vecDest);
- // remove all lines that should not be deleted
- linesToDelete.removeAll(deleted);
- // System.out.println("ID LIST SIZE " + Math.round((double) myIds.size() / (double) numIntervalls) + " " + myIdsDest.size());
+ // Deletion will work this way
+ Vector deleted = new Vector(vec);
+ Vector linesToDelete = new Vector(vecDest);
+ // remove all lines that should not be deleted
+ linesToDelete.removeAll(deleted);
+ // 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());
+ System.out.println("number of lines to be deleted " + linesToDelete.size());
deltaID = (int) Math.round((double) myIds.size() / (double) numIntervalls);
- if (vec.size() <= numIntervalls)
- {
- endIndex = 0;
- deltaID = vec.size();
- }
- 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)
- tempQuery = query + " and " + tempID + ">='" + vec.get(k) + "' and " + tempID + "<='" + vec.get(k + deltaID) + "'";
- else
- tempQuery = query + " where " + tempID + ">='" + vec.get(k) + "' and " + tempID + "<='" + vec.get(k + deltaID) + "'";
- if (destQuery.indexOf("where") > 0)
- tempQueryDest = destQuery + " and " + tempIDdest + ">='" + vec.get(k) + "' and " + tempIDdest + "<='" + vec.get(k + deltaID) + "'";
- else
- tempQueryDest = destQuery + " where " + tempIDdest + ">='" + vecDest.get(k) + "' and " + tempIDdest + "<='" + vecDest.get(k + deltaID) + "'";
-
- System.out.println(tempQuery);
- System.out.println(tempQueryDest);
+ beanDest.setConnection(destination);
- if (dialog != null)
- dialog.title.setText("Reading table data ...");
+ Statement stm = beanDest.getConnection().createStatement();
- bean.makeQuery(tempQuery, deltaID);
- beanDest.makeQuery(tempQueryDest, deltaID);
-
- if (dialog != null)
- dialog.title.setText("Writing table data ...");
-
- // command = writeDatainDestTable(dialog, command, k, pstm, rowCount,delimiter);
- endIndex = k + deltaID;
- }
- System.out.println(endIndex);
- //all data written ? if not write last chunk of data
- if (endIndex == vec.size() - 1)
- System.out.println("fits");
- else
+ Vector tables = beanDest.getTableNames();
+ // Collections.sort(tables);
+ System.out.println(names.get(tbIndex) + " " + tables.indexOf(convertText((String) names.get(tbIndex)))); // "//beanDest.getTypeNames());
+ tables = beanDest.getTableNames();
+ // System.out.println(beanDest.getTableNames(beanDest.getCatalogs().get(2).toString()));
+ stm = beanDest.getConnection().createStatement();
+
+ if (dialog != null)
+ dialog.title.setText(" Deleting table data ...");
+
+ int j = -1;
+
+ Vector row = null;
+ command = new StringBuffer();
+
+ command.append("DELETE FROM");
+ command.append(beanDest.getQC());
+ command.append(destTableName);
+ //command.append(convertText((String) names.get(tbIndex)));
+ command.append(beanDest.getQC());
+ int size = bean.getColumnNames().size();
+ command.append("WHERE " + convertText(ids.get(tbIndex).toString()) + " = ?");
+ PreparedStatement pstm = beanDest.getConnection().prepareStatement(command.toString());
+ System.out.println(command + " " + tbIndex);
+ //int rowCount = bean.getRowCount(query);
+ // int idIndex = bean.getColumnNames().indexOf(ids.get(tbIndex));
+ while (true)
{
- System.out.println(" last intervall from " + vec.get(endIndex) + " " + vec.lastElement());
- if (query.indexOf("where") > 0)
- tempQuery = query + " and " + tempID + ">='" + vec.get(endIndex) + "' and " + tempID + "<='" + vec.lastElement() + "'";
- else
- tempQuery = query + " where " + tempID + ">='" + vec.get(endIndex) + "' and " + tempID + "<='" + vec.lastElement() + "'";
- if (destQuery.indexOf("where") > 0)
- tempQueryDest = destQuery + " and " + tempIDdest + ">='" + vec.get(endIndex) + "' and " + tempIDdest + "<='" + vec.lastElement() + "'";
- else
- tempQueryDest = destQuery + " where " + tempIDdest + ">='" + vec.get(endIndex) + "' and " + tempIDdest + "<='" + vec.lastElement() + "'";
-
- System.out.println(tempQuery);
- if (dialog != null)
- dialog.title.setText("Reading table data ...");
- bean.makeQuery(tempQuery, 0);
- beanDest.makeQuery(tempQueryDest, 0);
-
+ ++j;
+ if (j == linesToDelete.size())
+ break;
+ //print rows
+ pstm.setString(1, linesToDelete.get(j).toString());
+ System.out.println(pstm.toString());
+ pstm.execute();
if (dialog != null)
- dialog.title.setText("Writing table data ...");
- // command = writeDatainDestTable(dialog, command, endIndex, pstm, rowCount,delimiter);
+ dialog.progress.setValue((int) (((double) (j + 1) / (double) rowCount) * 100.0));
+ command = null;
}
// prepare new query for next chunk
if (query.indexOf("where") > 0)
@@ -1766,136 +1758,33 @@ class Convert
else
tempQuery = query + " where " + tempID + ">'" + vec.lastElement() + "'";
- }
- long endTime = System.currentTimeMillis();
- System.out.println("Time for incremental convert elapsed " + (endTime - startTime));
- } /*else
- {
- // read and write all in one big chunk
- long startTime = System.currentTimeMillis();
-
- bean.makeQuery(query, 0);
- command = writeDatainDestTable(dialog, command, j, pstm, rowCount,delimiter);
- long endTime = System.currentTimeMillis();
- System.out.println("Time for old convert elapsed " + (endTime - startTime));
-
- }*/
-
- if (true)
- System.exit(0);
- //beanDest.setConnection("jdbc:postgresql://erebos/test3");
- beanDest.setConnection(destination);
-
- Statement stm = beanDest.getConnection().createStatement();
-
- Vector tables = beanDest.getTableNames();
- // Collections.sort(tables);
- System.out.println(names.get(tbIndex) + " " + tables.indexOf(convertText((String) names.get(tbIndex)))); // "//beanDest.getTypeNames());
- tables = beanDest.getTableNames();
- // System.out.println(beanDest.getTableNames(beanDest.getCatalogs().get(2).toString()));
- stm = beanDest.getConnection().createStatement();
- // System.exit(0);
-
- if (dialog != null)
- dialog.title.setText("Updating table data ...");
-
- int j = -1;
-
- Vector row = null;
- command = new StringBuffer();
+ } //to outer while
+ } // to idfield if
+ } // table loop
- command.append("UPDATE ");
- command.append(beanDest.getQC());
- command.append(destTableName);
- //command.append(convertText((String) names.get(tbIndex)));
- command.append(beanDest.getQC());
- command.append(" SET ");
-
- int size = bean.getColumnNames().size();
- for (int i = 0; i < size - 1; ++i)
- command.append(beanDest.getQC() + convertText((String) bean.getColumnNames().get(i)) + beanDest.getQC() + " = ? ,");
- command.append(convertText((String) bean.getColumnNames().get(size - 1)) + " = ? ");
- command.append("WHERE " + convertText(ids.get(tbIndex).toString()) + " = ?");
- PreparedStatement pstm = beanDest.getConnection().prepareStatement(command.toString());
- System.out.println(command + " " + tbIndex);
- //int rowCount = bean.getRowCount(query);
- int idIndex = bean.getColumnNames().indexOf(ids.get(tbIndex));
- while ((row = bean.getNextRow()) != null)
- {
- j++;
- //print rows
- Object obj = null;
- /* for(int k=0;k