diff -r 001db3cb0912 -r 3bc16e43872b java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.java --- a/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.java Sun Feb 15 23:15:30 2009 +0100 +++ b/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.java Sun Feb 15 23:22:23 2009 +0100 @@ -18,7 +18,9 @@ private enum SQL { VLOZ_SOUHRN, - SMAZ_SOUHRNY + SMAZ_SOUHRNY, + IP_ADRESY_OBDOBI, + IP_PREKLAD } /** @@ -61,12 +63,38 @@ */ psSouhrn.setDate(1, rs.getDate("den")); psSouhrn.setString(2, rs.getString("ip")); - psSouhrn.setString(3, prelozIP(rs.getString("ip"))); + psSouhrn.setString(3, null); psSouhrn.setInt(4, rs.getInt("pocet")); psSouhrn.setInt(5, cil.getId()); psSouhrn.executeUpdate(); } zavri(null, psSouhrn, null); + + /** + * Přeložíme všechny IP adresy daného období + * a aktualizujeme domény všude (i jiné cíle a jiná období). + */ + PreparedStatement psIPselekt = dbSouhrn.prepareStatement(getSQL(SQL.IP_ADRESY_OBDOBI)); + psIPselekt.setInt(1, cil.getId()); + psIPselekt.setDate(2, zacatek); + psIPselekt.setDate(3, konec); + PreparedStatement psIPupdate = dbSouhrn.prepareStatement(getSQL(SQL.IP_PREKLAD)); + ResultSet rsIP = psIPselekt.executeQuery(); + while (rsIP.next()) { + String ip = rsIP.getString("ip"); + String domena = prelozIP(ip); + psIPupdate.setString(1, domena); + psIPupdate.setString(2, ip); + psIPupdate.executeUpdate(); + } + zavri(null, psIPselekt, null); + zavri(null, psIPupdate, null); + + /** + * Pokud se všechno povedlo, commitujeme, jinak nedochází k žádným změnám. + * Dané období se buď vygeneruje úspěšně, nebo vůbec. + * Přepokládáme vypnutý autocommit (to zajišťuje aplikační server). + */ dbSouhrn.commit(); } catch (Exception e) { log.log(Level.SEVERE, "Chyba při generování souhrnu.", e);