java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/SouhrnDAO.java
author František Kučera <franta-hg@frantovo.cz>
Sat, 14 Feb 2009 19:31:33 +0100
changeset 23 b22c06c8a55c
parent 21 2bc6c427894d
child 24 0e73428ba7b1
permissions -rw-r--r--
Generátor generuje souhrny i překládá IP adresy na domény
franta-hg@6
     1
package cz.frantovo.hrisniciSpameri.dao;
franta-hg@6
     2
franta-hg@21
     3
import cz.frantovo.hrisniciSpameri.dto.Cil;
franta-hg@21
     4
import cz.frantovo.hrisniciSpameri.dto.SitovaAdresa;
franta-hg@21
     5
import cz.frantovo.hrisniciSpameri.dto.Souhrn;
franta-hg@21
     6
import java.sql.Connection;
franta-hg@21
     7
import java.sql.Date;
franta-hg@21
     8
import java.sql.PreparedStatement;
franta-hg@21
     9
import java.sql.ResultSet;
franta-hg@21
    10
import java.util.ArrayList;
franta-hg@21
    11
import java.util.Collection;
franta-hg@21
    12
import java.util.logging.Level;
franta-hg@21
    13
franta-hg@6
    14
/**
franta-hg@6
    15
 *
franta-hg@6
    16
 * @author fiki
franta-hg@6
    17
 */
franta-hg@6
    18
public class SouhrnDAO extends HrisniciSuperDAO {
franta-hg@21
    19
franta-hg@21
    20
    private enum SQL {
franta-hg@21
    21
franta-hg@21
    22
        DENNI_SOUHRN,
franta-hg@21
    23
        DENNI_SOUHRN_CIL,
franta-hg@21
    24
        SOUHRN_ZA_OBDOBI,
franta-hg@21
    25
        SOUHRN_ZA_OBDOBI_CIL
franta-hg@21
    26
    }
franta-hg@21
    27
franta-hg@23
    28
    private static final long DEN = 1000 * 60 * 60 * 24;
franta-hg@23
    29
franta-hg@21
    30
    /**
franta-hg@21
    31
     * Získá z databáze souhrn útoků. Buď pro konkrétní den nebo pro dané období.
franta-hg@21
    32
     * @param zacatek začátek období nebo konkrétní den
franta-hg@21
    33
     * @param konec konec období nebo null (pokud nás zajímá konkrétní den)
franta-hg@21
    34
     * @param cil id cíle nebo nula, pokud chceme všechny cíle
franta-hg@21
    35
     * @return seznam útoků
franta-hg@21
    36
     */
franta-hg@21
    37
    public Collection<Souhrn> getSouhrn(Date zacatek, Date konec, int cil) {
franta-hg@21
    38
        Collection<Souhrn> souhrn = new ArrayList<Souhrn>();
franta-hg@21
    39
franta-hg@21
    40
        Connection db = getSpojeni(null);
franta-hg@21
    41
        if (db == null) {
franta-hg@21
    42
            return null;
franta-hg@21
    43
        } else {
franta-hg@21
    44
            PreparedStatement ps = null;
franta-hg@21
    45
            ResultSet rs = null;
franta-hg@21
    46
            try {
franta-hg@21
    47
                if (konec == null) {
franta-hg@21
    48
                    if (cil == 0) {
franta-hg@21
    49
                        ps = db.prepareStatement(getSQL(SQL.DENNI_SOUHRN));
franta-hg@21
    50
                        ps.setDate(1, zacatek);
franta-hg@21
    51
                    } else {
franta-hg@21
    52
                        ps = db.prepareStatement(getSQL(SQL.DENNI_SOUHRN_CIL));
franta-hg@21
    53
                        ps.setDate(1, zacatek);
franta-hg@21
    54
                        ps.setInt(2, cil);
franta-hg@21
    55
                    }
franta-hg@21
    56
                } else {
franta-hg@21
    57
                    if (cil == 0) {
franta-hg@21
    58
                        ps = db.prepareStatement(getSQL(SQL.SOUHRN_ZA_OBDOBI));
franta-hg@21
    59
                        ps.setDate(1, zacatek);
franta-hg@21
    60
                        ps.setDate(2, konec);
franta-hg@21
    61
                    } else {
franta-hg@21
    62
                        ps = db.prepareStatement(getSQL(SQL.SOUHRN_ZA_OBDOBI_CIL));
franta-hg@21
    63
                        ps.setDate(1, zacatek);
franta-hg@21
    64
                        ps.setDate(2, konec);
franta-hg@21
    65
                        ps.setInt(3, cil);
franta-hg@21
    66
                    }
franta-hg@21
    67
                }
franta-hg@21
    68
franta-hg@21
    69
franta-hg@21
    70
                rs = ps.executeQuery();
franta-hg@21
    71
                while (rs.next()) {
franta-hg@21
    72
                    Souhrn s = new Souhrn();
franta-hg@21
    73
                    s.setAdresa(new SitovaAdresa(rs.getString("ip"), rs.getString("domena")));
franta-hg@21
    74
                    s.setDen(rs.getDate("den"));
franta-hg@21
    75
                    s.setPocet(rs.getInt("pocet"));
franta-hg@21
    76
franta-hg@21
    77
                    Cil c = new Cil();
franta-hg@21
    78
                    c.setId(rs.getInt("id"));
franta-hg@21
    79
                    c.setNazev(rs.getString("nazev"));
franta-hg@21
    80
                    c.setUrl(rs.getString("url"));
franta-hg@21
    81
                    c.setSelekt(rs.getString("selekt"));
franta-hg@21
    82
                    c.setDatabaze(rs.getString("databaze"));
franta-hg@21
    83
                    s.setCil(c);
franta-hg@21
    84
franta-hg@21
    85
                    souhrn.add(s);
franta-hg@21
    86
                }
franta-hg@21
    87
            } catch (Exception e) {
franta-hg@21
    88
                log.log(Level.SEVERE, "Chyba při získávání souhrnu z databáze", e);
franta-hg@21
    89
            } finally {
franta-hg@21
    90
                zavri(db, ps, rs);
franta-hg@21
    91
            }
franta-hg@21
    92
        }
franta-hg@21
    93
franta-hg@21
    94
        return souhrn;
franta-hg@21
    95
    }
franta-hg@23
    96
franta-hg@23
    97
    /**
franta-hg@23
    98
     * Ve výchozím stavu zobrazujeme souhrn za předešlý den.
franta-hg@23
    99
     * @return včerejšek
franta-hg@23
   100
     */
franta-hg@23
   101
    public static Date getVychoziDen() {
franta-hg@23
   102
        return new Date(System.currentTimeMillis() - DEN);
franta-hg@23
   103
    }
franta-hg@6
   104
}