Generování souhrnu: překlad IP adres probíhá až ve druhém kroku.
Výchozí období pro generování: poslední měsíc.
1.1 --- a/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/Sprava.java Sun Feb 15 23:15:30 2009 +0100
1.2 +++ b/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/Sprava.java Sun Feb 15 23:22:23 2009 +0100
1.3 @@ -6,6 +6,7 @@
1.4 import java.io.Serializable;
1.5 import java.util.Collection;
1.6 import java.sql.Date;
1.7 +import java.util.Calendar;
1.8
1.9 /**
1.10 * Beana, která vygeneruje denní souhrn.
1.11 @@ -18,17 +19,16 @@
1.12 private static final long serialVersionUID = -9048188038805055786L;
1.13
1.14 public boolean getGenerujSouhrn() {
1.15 - Date zacatek = new Date(0);
1.16 + //Date zacatek = new Date(0);
1.17 + Calendar zc = Calendar.getInstance();
1.18 + zc.add(Calendar.MONTH, -1);
1.19 + Date zacatek = new Date(zc.getTimeInMillis());
1.20 Date konec = new Date(System.currentTimeMillis());
1.21 Collection<Cil> cile = new CilDAO().getCile();
1.22 + GeneratorSouhrnuDAO g = new GeneratorSouhrnuDAO();
1.23 for (Cil c : cile) {
1.24 - if (c.getId() == 1) {
1.25 - new GeneratorSouhrnuDAO().generujSouhrn(c, zacatek, konec);
1.26 - }
1.27 + g.generujSouhrn(c, zacatek, konec);
1.28 }
1.29 - System.out.println("Od: " + zacatek + " do: " + konec);
1.30 -
1.31 -
1.32
1.33 return true;
1.34 }
2.1 --- a/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.java Sun Feb 15 23:15:30 2009 +0100
2.2 +++ b/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.java Sun Feb 15 23:22:23 2009 +0100
2.3 @@ -18,7 +18,9 @@
2.4 private enum SQL {
2.5
2.6 VLOZ_SOUHRN,
2.7 - SMAZ_SOUHRNY
2.8 + SMAZ_SOUHRNY,
2.9 + IP_ADRESY_OBDOBI,
2.10 + IP_PREKLAD
2.11 }
2.12
2.13 /**
2.14 @@ -61,12 +63,38 @@
2.15 */
2.16 psSouhrn.setDate(1, rs.getDate("den"));
2.17 psSouhrn.setString(2, rs.getString("ip"));
2.18 - psSouhrn.setString(3, prelozIP(rs.getString("ip")));
2.19 + psSouhrn.setString(3, null);
2.20 psSouhrn.setInt(4, rs.getInt("pocet"));
2.21 psSouhrn.setInt(5, cil.getId());
2.22 psSouhrn.executeUpdate();
2.23 }
2.24 zavri(null, psSouhrn, null);
2.25 +
2.26 + /**
2.27 + * Přeložíme všechny IP adresy daného období
2.28 + * a aktualizujeme domény všude (i jiné cíle a jiná období).
2.29 + */
2.30 + PreparedStatement psIPselekt = dbSouhrn.prepareStatement(getSQL(SQL.IP_ADRESY_OBDOBI));
2.31 + psIPselekt.setInt(1, cil.getId());
2.32 + psIPselekt.setDate(2, zacatek);
2.33 + psIPselekt.setDate(3, konec);
2.34 + PreparedStatement psIPupdate = dbSouhrn.prepareStatement(getSQL(SQL.IP_PREKLAD));
2.35 + ResultSet rsIP = psIPselekt.executeQuery();
2.36 + while (rsIP.next()) {
2.37 + String ip = rsIP.getString("ip");
2.38 + String domena = prelozIP(ip);
2.39 + psIPupdate.setString(1, domena);
2.40 + psIPupdate.setString(2, ip);
2.41 + psIPupdate.executeUpdate();
2.42 + }
2.43 + zavri(null, psIPselekt, null);
2.44 + zavri(null, psIPupdate, null);
2.45 +
2.46 + /**
2.47 + * Pokud se všechno povedlo, commitujeme, jinak nedochází k žádným změnám.
2.48 + * Dané období se buď vygeneruje úspěšně, nebo vůbec.
2.49 + * Přepokládáme vypnutý autocommit (to zajišťuje aplikační server).
2.50 + */
2.51 dbSouhrn.commit();
2.52 } catch (Exception e) {
2.53 log.log(Level.SEVERE, "Chyba při generování souhrnu.", e);
3.1 --- a/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.sql.xml Sun Feb 15 23:15:30 2009 +0100
3.2 +++ b/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.sql.xml Sun Feb 15 23:22:23 2009 +0100
3.3 @@ -16,6 +16,22 @@
3.4 AND den <= ?
3.5 ]]>
3.6 </entry>
3.7 + <entry key="IP_ADRESY_OBDOBI">
3.8 + <![CDATA[
3.9 + SELECT ip
3.10 + FROM souhrn
3.11 + WHERE cil = ?
3.12 + AND den >= ?
3.13 + AND den <= ?
3.14 + ]]>
3.15 + </entry>
3.16 + <entry key="IP_PREKLAD">
3.17 + <![CDATA[
3.18 + UPDATE souhrn
3.19 + SET domena = ?
3.20 + WHERE ip = ?
3.21 + ]]>
3.22 + </entry>
3.23 <entry key="UKAZKA_SELEKTU">
3.24 <!--
3.25 Takhle může vypadat selekt pro získání údajů z Drupalu (MySQL).