# HG changeset patch # User František Kučera # Date 1234736543 -3600 # Node ID 3bc16e43872bd79a6523385cfefcdfcd36d3e9da # Parent 001db3cb09128db21aa29cb7b68ce0f81f107ff0 Generování souhrnu: překlad IP adres probíhá až ve druhém kroku. Výchozí období pro generování: poslední měsíc. diff -r 001db3cb0912 -r 3bc16e43872b java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/Sprava.java --- a/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/Sprava.java Sun Feb 15 23:15:30 2009 +0100 +++ b/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/Sprava.java Sun Feb 15 23:22:23 2009 +0100 @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.Collection; import java.sql.Date; +import java.util.Calendar; /** * Beana, která vygeneruje denní souhrn. @@ -18,17 +19,16 @@ private static final long serialVersionUID = -9048188038805055786L; public boolean getGenerujSouhrn() { - Date zacatek = new Date(0); + //Date zacatek = new Date(0); + Calendar zc = Calendar.getInstance(); + zc.add(Calendar.MONTH, -1); + Date zacatek = new Date(zc.getTimeInMillis()); Date konec = new Date(System.currentTimeMillis()); Collection cile = new CilDAO().getCile(); + GeneratorSouhrnuDAO g = new GeneratorSouhrnuDAO(); for (Cil c : cile) { - if (c.getId() == 1) { - new GeneratorSouhrnuDAO().generujSouhrn(c, zacatek, konec); - } + g.generujSouhrn(c, zacatek, konec); } - System.out.println("Od: " + zacatek + " do: " + konec); - - return true; } 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); diff -r 001db3cb0912 -r 3bc16e43872b java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.sql.xml --- a/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.sql.xml Sun Feb 15 23:15:30 2009 +0100 +++ b/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.sql.xml Sun Feb 15 23:22:23 2009 +0100 @@ -16,6 +16,22 @@ AND den <= ? ]]> + + = ? + AND den <= ? + ]]> + + + +