Generování souhrnu: překlad IP adres probíhá až ve druhém kroku.
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sun, 15 Feb 2009 23:22:23 +0100
changeset 323bc16e43872b
parent 31 001db3cb0912
child 33 7da43cd7582c
Generování souhrnu: překlad IP adres probíhá až ve druhém kroku.
Výchozí období pro generování: poslední měsíc.
java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/Sprava.java
java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.java
java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.sql.xml
     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).