--- FM2SQL/Attic/Convert.java 2004/03/12 11:48:57 1.46 +++ FM2SQL/Attic/Convert.java 2004/03/15 12:30:51 1.47 @@ -1661,18 +1661,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 tempQueryDest = destQuery; - System.out.println("new Query "+tempQueryDest); + String destQuery = query.replaceAll(names.get(tbIndex).toString(), destTableName); + String tempQueryDest = destQuery.substring(0,destQuery.lastIndexOf(destTableName)+destTableName.length()+1); + System.out.println("new Query " + tempQueryDest); if (!idField.equals("")) { long startTime = System.currentTimeMillis(); @@ -1691,74 +1691,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 +1750,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(); - - 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