1.1 --- a/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/Sprava.java Sat Feb 14 23:03:13 2009 +0100
1.2 +++ b/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/Sprava.java Sun Feb 15 00:32:53 2009 +0100
1.3 @@ -18,13 +18,15 @@
1.4 private static final long serialVersionUID = -9048188038805055786L;
1.5
1.6 public boolean getGenerujSouhrn() {
1.7 - Date den = new Date(System.currentTimeMillis());
1.8 + Date zacatek = new Date(0);
1.9 + Date konec = new Date(System.currentTimeMillis());
1.10 Collection<Cil> cile = new CilDAO().getCile();
1.11 for (Cil c : cile) {
1.12 if (c.getId() == 1) {
1.13 - new GeneratorSouhrnuDAO().generujSouhrn(c, den);
1.14 + new GeneratorSouhrnuDAO().generujSouhrn(c, zacatek, konec);
1.15 }
1.16 }
1.17 + System.out.println("Od: " + zacatek + " do: " + konec);
1.18
1.19
1.20
2.1 --- a/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.java Sat Feb 14 23:03:13 2009 +0100
2.2 +++ b/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.java Sun Feb 15 00:32:53 2009 +0100
2.3 @@ -26,10 +26,14 @@
2.4 * @param cil cíl, pro který generujeme souhrn
2.5 * @param den den, pro který souhrn generujeme.
2.6 */
2.7 - public void generujSouhrn(Cil cil, Date den) {
2.8 + public void generujSouhrn(Cil cil, Date zacatek, Date konec) {
2.9 Connection dbZdroj = getSpojeni(cil.getDatabaze());
2.10 Connection dbSouhrn = getSpojeni(null);
2.11
2.12 + if (konec == null) {
2.13 + konec = zacatek;
2.14 + }
2.15 +
2.16 if (dbZdroj == null || dbSouhrn == null) {
2.17 /** TODO: Chyba spojení */
2.18 } else {
2.19 @@ -37,17 +41,16 @@
2.20 PreparedStatement psSmazat = null;
2.21 ResultSet rs = null;
2.22 try {
2.23 - log.log(Level.SEVERE, "AUTOCOMIT: " + dbSouhrn.getAutoCommit());
2.24 - dbSouhrn.setAutoCommit(false);
2.25 -
2.26 /** pokud už něco vygenerovaného pro daný den a cíl máme, smažeme to */
2.27 psSmazat = dbSouhrn.prepareStatement(getSQL(SQL.SMAZ_SOUHRNY));
2.28 psSmazat.setInt(1, cil.getId());
2.29 - psSmazat.setDate(2, den);
2.30 + psSmazat.setDate(2, zacatek);
2.31 + psSmazat.setDate(3, konec);
2.32 psSmazat.executeUpdate();
2.33
2.34 ps = dbZdroj.prepareStatement(cil.getSelekt());
2.35 - ps.setDate(1, den);
2.36 + ps.setDate(1, zacatek);
2.37 + ps.setDate(2, konec);
2.38 rs = ps.executeQuery();
2.39 PreparedStatement psSouhrn = dbSouhrn.prepareStatement(getSQL(SQL.VLOZ_SOUHRN));
2.40 while (rs.next()) {
2.41 @@ -56,7 +59,7 @@
2.42 * ale z výkonnostních důvodů to budeme dělat tady
2.43 * (jedno spojení a jeden předpřipravený příkaz).
2.44 */
2.45 - psSouhrn.setDate(1, den);
2.46 + psSouhrn.setDate(1, rs.getDate("den"));
2.47 psSouhrn.setString(2, rs.getString("ip"));
2.48 psSouhrn.setString(3, prelozIP(rs.getString("ip")));
2.49 psSouhrn.setInt(4, rs.getInt("pocet"));
2.50 @@ -75,17 +78,14 @@
2.51 }
2.52
2.53 /**
2.54 - * Vygeneruje denní souhrny pro všechny cíle.
2.55 - * @param den den, pro který souhrny generujeme.
2.56 + * Vygeneruje denní souhrny pro všechny cíle za dané období.
2.57 + * @param zacatek začátek období – včetně
2.58 + * @param konec konec období – včetně
2.59 */
2.60 - public void generujSouhrny(Date den) {
2.61 - if (den == null) {
2.62 - den = SouhrnDAO.getVychoziDen();
2.63 - }
2.64 -
2.65 + public void generujSouhrny(Date zacatek, Date konec) {
2.66 Collection<Cil> cile = new CilDAO().getCile();
2.67 for (Cil c : cile) {
2.68 - generujSouhrn(c, den);
2.69 + generujSouhrn(c, zacatek, konec);
2.70 }
2.71 }
2.72
3.1 --- a/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.sql.xml Sat Feb 14 23:03:13 2009 +0100
3.2 +++ b/java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/dao/GeneratorSouhrnuDAO.sql.xml Sun Feb 15 00:32:53 2009 +0100
3.3 @@ -12,7 +12,8 @@
3.4 <![CDATA[
3.5 DELETE FROM souhrn
3.6 WHERE cil = ?
3.7 - AND den = ?
3.8 + AND den >= ?
3.9 + AND den <= ?
3.10 ]]>
3.11 </entry>
3.12 <entry key="UKAZKA_SELEKTU">
3.13 @@ -22,11 +23,13 @@
3.14 -->
3.15 <![CDATA[
3.16 SELECT hostname AS ip,
3.17 - count(*) AS pocet
3.18 + count(*) AS pocet,
3.19 + date(from_unixtime(timestamp)) AS den
3.20 FROM drupal5_watchdog
3.21 WHERE type = 'captcha'
3.22 - AND date(from_unixtime(timestamp)) = date(?)
3.23 - GROUP BY hostname
3.24 + AND date(from_unixtime(timestamp)) >= date(?)
3.25 + AND date(from_unixtime(timestamp)) <= date(?)
3.26 + GROUP BY hostname, date(from_unixtime(timestamp))
3.27 ]]>
3.28 </entry>
3.29 </properties>
3.30 \ No newline at end of file
4.1 --- a/sql/schéma.sql Sat Feb 14 23:03:13 2009 +0100
4.2 +++ b/sql/schéma.sql Sun Feb 15 00:32:53 2009 +0100
4.3 @@ -7,7 +7,7 @@
4.4 id bigint NOT NULL,
4.5 nazev character varying NOT NULL,
4.6 url character varying, -- Odkaz na daný cíl – pokud je to např. webová stránka
4.7 - selekt character varying NOT NULL, -- SQL dotaz, kterým získáme ze zdrojové databáze: IP adresu (sloupeček "ip") a počet pokusů (sloupeček "pocet") o spamování pro daný den (parametr dotazu)
4.8 + selekt character varying NOT NULL, -- SQL dotaz, kterým získáme ze zdrojové databáze: IP adresu (sloupeček "ip"), počet pokusů (sloupeček "pocet") o spamování a den pokusu (sloupeček "den"). To vše pro období od do (dva parametry dotazu) včetně.
4.9 databaze character varying NOT NULL, -- Celé JNDI jméno datového zdroje – databáze, na které bude volán selekt.
4.10 CONSTRAINT cil_pk PRIMARY KEY (id)
4.11 )
4.12 @@ -15,7 +15,7 @@
4.13 ALTER TABLE cil OWNER TO hrisnicispameri;
4.14 COMMENT ON TABLE cil IS 'Definice cílu (oběti) spamování.';
4.15 COMMENT ON COLUMN cil.url IS 'Odkaz na daný cíl – pokud je to např. webová stránka';
4.16 -COMMENT ON COLUMN cil.selekt IS 'SQL dotaz, kterým získáme ze zdrojové databáze: IP adresu (sloupeček "ip") a počet pokusů (sloupeček "pocet") o spamování pro daný den (parametr dotazu)';
4.17 +COMMENT ON COLUMN cil.selekt IS 'SQL dotaz, kterým získáme ze zdrojové databáze: IP adresu (sloupeček "ip"), počet pokusů (sloupeček "pocet") o spamování a den pokusu (sloupeček "den"). To vše pro období od do (dva parametry dotazu) včetně.';
4.18 COMMENT ON COLUMN cil.databaze IS 'Celé JNDI jméno datového zdroje – databáze, na které bude volán selekt.';
4.19
4.20