java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/SouhrnDAO.java
changeset 40 fd29fd5a8e29
parent 30 0ffc8c1b2b9c
child 49 491d1055972e
     1.1 --- a/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/SouhrnDAO.java	Sun Mar 01 01:08:24 2009 +0100
     1.2 +++ b/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/SouhrnDAO.java	Sun Mar 01 13:04:10 2009 +0100
     1.3 @@ -2,6 +2,7 @@
     1.4  
     1.5  import cz.frantovo.hrisniciSpameri.dto.Cil;
     1.6  import cz.frantovo.hrisniciSpameri.dto.SitovaAdresa;
     1.7 +import cz.frantovo.hrisniciSpameri.dto.Soucet;
     1.8  import cz.frantovo.hrisniciSpameri.dto.Souhrn;
     1.9  import java.sql.Connection;
    1.10  import java.sql.Date;
    1.11 @@ -9,6 +10,7 @@
    1.12  import java.sql.ResultSet;
    1.13  import java.util.ArrayList;
    1.14  import java.util.Collection;
    1.15 +import java.util.HashMap;
    1.16  import java.util.logging.Level;
    1.17  
    1.18  /**
    1.19 @@ -21,8 +23,9 @@
    1.20  
    1.21          DENNI_SOUHRN,
    1.22          DENNI_SOUHRN_CIL,
    1.23 +        DENNI_SOUCTY,
    1.24 +        DENNI_SOUCTY_CIL
    1.25      }
    1.26 -    private static final long DEN = 1000 * 60 * 60 * 24;
    1.27  
    1.28      /**
    1.29       * Získá z databáze souhrn útoků. Buď pro konkrétní den nebo pro dané období.
    1.30 @@ -81,4 +84,63 @@
    1.31  
    1.32          return souhrn;
    1.33      }
    1.34 +
    1.35 +    /**
    1.36 +     * @param zacatek začátek období nebo konkrétní den
    1.37 +     * @param konec konec období nebo null (pokud nás zajímá konkrétní den – což nás tady většinou nezajímá)
    1.38 +     * @param cil id cíle nebo nula, pokud chceme všechny cíle
    1.39 +     * @return součty útoků za jednotlivé dny, seskupené podle cílů
    1.40 +     */
    1.41 +    public HashMap<Cil, Collection<Soucet>> getSoucty(Date zacatek, Date konec, int cil) {
    1.42 +        HashMap<Cil, Collection<Soucet>> soucty = new HashMap<Cil, Collection<Soucet>>();
    1.43 +
    1.44 +        Connection db = getSpojeni(null);
    1.45 +        if (db == null) {
    1.46 +            return null;
    1.47 +        } else {
    1.48 +            PreparedStatement ps = null;
    1.49 +            ResultSet rs = null;
    1.50 +            try {
    1.51 +                if (konec == null) {
    1.52 +                    konec = zacatek;
    1.53 +                }
    1.54 +
    1.55 +                if (cil == 0) {
    1.56 +                    ps = db.prepareStatement(getSQL(SQL.DENNI_SOUCTY));
    1.57 +                    ps.setDate(1, zacatek);
    1.58 +                    ps.setDate(2, konec);
    1.59 +                } else {
    1.60 +                    ps = db.prepareStatement(getSQL(SQL.DENNI_SOUCTY_CIL));
    1.61 +                    ps.setDate(1, zacatek);
    1.62 +                    ps.setDate(2, konec);
    1.63 +                    ps.setInt(3, cil);
    1.64 +                }
    1.65 +                rs = ps.executeQuery();
    1.66 +                while (rs.next()) {
    1.67 +                    Soucet s = new Soucet();
    1.68 +                    s.setDen(rs.getDate("den"));
    1.69 +                    s.setPocet(rs.getInt("pocet"));
    1.70 +
    1.71 +                    Cil c = new Cil();
    1.72 +                    c.setId(rs.getInt("id"));
    1.73 +                    c.setNazev(rs.getString("nazev"));
    1.74 +                    c.setUrl(rs.getString("url"));
    1.75 +                    c.setSelekt(rs.getString("selekt"));
    1.76 +                    c.setDatabaze(rs.getString("databaze"));
    1.77 +                    s.setCil(c);
    1.78 +
    1.79 +                    if (soucty.get(c) == null) {
    1.80 +                        soucty.put(c, new ArrayList<Soucet>());
    1.81 +                    }
    1.82 +
    1.83 +                    soucty.get(c).add(s);
    1.84 +                }
    1.85 +            } catch (Exception e) {
    1.86 +                log.log(Level.SEVERE, "Chyba při získávání součtů z databáze", e);
    1.87 +            } finally {
    1.88 +                zavri(db, ps, rs);
    1.89 +            }
    1.90 +        }
    1.91 +        return soucty;
    1.92 +    }
    1.93  }
    1.94 \ No newline at end of file