java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.java
author František Kučera <franta-hg@frantovo.cz>
Sat Feb 14 14:27:53 2009 +0100 (2009-02-14)
changeset 22 571d37e53ecd
child 23 b22c06c8a55c
permissions -rw-r--r--
Základ generátoru souhrnů
     1 package cz.frantovo.hrisniciSpameri.dao;
     2 
     3 import cz.frantovo.hrisniciSpameri.dto.Cil;
     4 import java.sql.Connection;
     5 import java.sql.Date;
     6 import java.sql.PreparedStatement;
     7 import java.sql.ResultSet;
     8 import java.util.Collection;
     9 import java.util.logging.Level;
    10 
    11 /**
    12  *
    13  * @author fiki
    14  */
    15 public class GeneratorSouhrnuDAO extends HrisniciSuperDAO {
    16 
    17     private enum SQL {
    18 
    19         VLOZ_SOUHRN
    20     }
    21 
    22     /**
    23      * Vygeneruje souhrn pro daný cíl a datum a uloží ho do databáze
    24      * @param cil cíl, pro který generujeme souhrn
    25      * @param den den, pro který souhrn generujeme.
    26      */
    27     private void generujSouhrn(Cil cil, Date den) {
    28         Connection dbZdroj = getSpojeni(cil.getDatabaze());
    29         Connection dbSouhrn = getSpojeni(null);
    30 
    31         if (dbZdroj == null || dbSouhrn == null) {
    32             /** TODO: Chyba spojení */
    33         } else {
    34             PreparedStatement ps = null;
    35             ResultSet rs = null;
    36             try {
    37                 ps = dbZdroj.prepareStatement(cil.getSelekt());
    38                 ps.setDate(1, den);
    39                 rs = ps.executeQuery();
    40                 PreparedStatement psSouhrn = dbSouhrn.prepareStatement(getSQL(SQL.VLOZ_SOUHRN));
    41                 while (rs.next()) {
    42                     /**
    43                      * Souhrn bychom mohli vkládat pomocí SouhrnDAO,
    44                      * ale z výkonnostních důvodů to budeme dělat tady
    45                      * (jedno spojení a jeden předpřipravený příkaz).
    46                      */
    47                     psSouhrn.setDate(1, den);
    48                     psSouhrn.setString(2, rs.getString("ip"));
    49                     psSouhrn.setString(3, "TODO: přeložit " + rs.getString("ip"));
    50                     psSouhrn.setInt(4, rs.getInt("pocet"));
    51                     psSouhrn.setInt(5, cil.getId());
    52                     psSouhrn.executeUpdate();
    53                 }
    54                 zavri(null, psSouhrn, null);
    55                 dbSouhrn.commit();
    56             } catch (Exception e) {
    57                 log.log(Level.SEVERE, "Chyba při generování souhrnu.", e);
    58             } finally {
    59                 zavri(dbZdroj, ps, rs);
    60                 zavri(dbSouhrn, null, null);
    61             }
    62         }
    63     }
    64 
    65     /**
    66      * Vygeneruje denní souhrny pro všechny cíle.
    67      * @param den den, pro který souhrny generujeme.
    68      */
    69     public void generujSouhrny(Date den) {
    70         Collection<Cil> cile = new CilDAO().getCile();
    71         for (Cil c : cile) {
    72             generujSouhrn(c, den);
    73         }
    74     }
    75 }