java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.java
changeset 23 b22c06c8a55c
parent 22 571d37e53ecd
child 28 dbb434bd4b99
     1.1 --- a/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.java	Sat Feb 14 14:27:53 2009 +0100
     1.2 +++ b/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.java	Sat Feb 14 19:31:33 2009 +0100
     1.3 @@ -1,6 +1,7 @@
     1.4  package cz.frantovo.hrisniciSpameri.dao;
     1.5  
     1.6  import cz.frantovo.hrisniciSpameri.dto.Cil;
     1.7 +import java.net.InetAddress;
     1.8  import java.sql.Connection;
     1.9  import java.sql.Date;
    1.10  import java.sql.PreparedStatement;
    1.11 @@ -16,7 +17,8 @@
    1.12  
    1.13      private enum SQL {
    1.14  
    1.15 -        VLOZ_SOUHRN
    1.16 +        VLOZ_SOUHRN,
    1.17 +        SMAZ_SOUHRNY
    1.18      }
    1.19  
    1.20      /**
    1.21 @@ -24,7 +26,7 @@
    1.22       * @param cil cíl, pro který generujeme souhrn
    1.23       * @param den den, pro který souhrn generujeme.
    1.24       */
    1.25 -    private void generujSouhrn(Cil cil, Date den) {
    1.26 +    public void generujSouhrn(Cil cil, Date den) {
    1.27          Connection dbZdroj = getSpojeni(cil.getDatabaze());
    1.28          Connection dbSouhrn = getSpojeni(null);
    1.29  
    1.30 @@ -32,8 +34,18 @@
    1.31              /** TODO: Chyba spojení */
    1.32          } else {
    1.33              PreparedStatement ps = null;
    1.34 +            PreparedStatement psSmazat = null;
    1.35              ResultSet rs = null;
    1.36              try {
    1.37 +                log.log(Level.SEVERE, "AUTOCOMIT: " + dbSouhrn.getAutoCommit());
    1.38 +                dbSouhrn.setAutoCommit(false);
    1.39 +
    1.40 +                /** pokud už něco vygenerovaného pro daný den a cíl máme, smažeme to */
    1.41 +                psSmazat = dbSouhrn.prepareStatement(getSQL(SQL.SMAZ_SOUHRNY));
    1.42 +                psSmazat.setInt(1, cil.getId());
    1.43 +                psSmazat.setDate(2, den);
    1.44 +                psSmazat.executeUpdate();
    1.45 +
    1.46                  ps = dbZdroj.prepareStatement(cil.getSelekt());
    1.47                  ps.setDate(1, den);
    1.48                  rs = ps.executeQuery();
    1.49 @@ -46,7 +58,7 @@
    1.50                       */
    1.51                      psSouhrn.setDate(1, den);
    1.52                      psSouhrn.setString(2, rs.getString("ip"));
    1.53 -                    psSouhrn.setString(3, "TODO: přeložit " + rs.getString("ip"));
    1.54 +                    psSouhrn.setString(3, prelozIP(rs.getString("ip")));
    1.55                      psSouhrn.setInt(4, rs.getInt("pocet"));
    1.56                      psSouhrn.setInt(5, cil.getId());
    1.57                      psSouhrn.executeUpdate();
    1.58 @@ -57,7 +69,7 @@
    1.59                  log.log(Level.SEVERE, "Chyba při generování souhrnu.", e);
    1.60              } finally {
    1.61                  zavri(dbZdroj, ps, rs);
    1.62 -                zavri(dbSouhrn, null, null);
    1.63 +                zavri(dbSouhrn, psSmazat, null);
    1.64              }
    1.65          }
    1.66      }
    1.67 @@ -67,9 +79,26 @@
    1.68       * @param den den, pro který souhrny generujeme.
    1.69       */
    1.70      public void generujSouhrny(Date den) {
    1.71 +        if (den == null) {
    1.72 +            den = SouhrnDAO.getVychoziDen();
    1.73 +        }
    1.74 +
    1.75          Collection<Cil> cile = new CilDAO().getCile();
    1.76          for (Cil c : cile) {
    1.77              generujSouhrn(c, den);
    1.78          }
    1.79      }
    1.80 +
    1.81 +    /**
    1.82 +     * Přeloží IP adresu na doménu
    1.83 +     * @param ip IP adresa
    1.84 +     * @return doména
    1.85 +     */
    1.86 +    private static String prelozIP(String ip) {
    1.87 +        try {
    1.88 +            return InetAddress.getByName(ip).getHostName();
    1.89 +        } catch (Exception e) {
    1.90 +            return "Chyba: nepodařilo se přeložit.";
    1.91 +        }
    1.92 +    }
    1.93  }