franta-hg@3: package cz.frantovo.hrisniciSpameri; franta-hg@3: franta-hg@6: import cz.frantovo.hrisniciSpameri.dao.CilDAO; franta-hg@21: import cz.frantovo.hrisniciSpameri.dao.SouhrnDAO; franta-hg@4: import cz.frantovo.hrisniciSpameri.dto.Cil; franta-hg@40: import cz.frantovo.hrisniciSpameri.dto.Soucet; franta-hg@4: import cz.frantovo.hrisniciSpameri.dto.Souhrn; franta-hg@3: import java.io.Serializable; franta-hg@4: import java.sql.Date; franta-hg@4: import java.text.DateFormat; franta-hg@4: import java.text.ParseException; franta-hg@4: import java.text.SimpleDateFormat; franta-hg@30: import java.util.Calendar; franta-hg@4: import java.util.Collection; franta-hg@40: import java.util.HashMap; franta-hg@4: import java.util.logging.Level; franta-hg@4: import java.util.logging.Logger; franta-hg@3: franta-hg@3: /** franta-hg@4: * Beana zprostředkovávající denní souhrn hříšníků. franta-hg@3: * @author fiki franta-hg@3: */ franta-hg@3: public class DenniSouhrn implements Serializable { franta-hg@3: franta-hg@3: private static final long serialVersionUID = 7932392366943861342L; franta-hg@4: private static final Logger log = Logger.getLogger(DenniSouhrn.class.getName()); franta-hg@20: private static String formatDataVzor = "yyyy-MM-dd"; franta-hg@4: public static DateFormat formatData = new SimpleDateFormat(formatDataVzor); franta-hg@26: private Date zacatek; franta-hg@26: private Date konec; franta-hg@20: private int cil; franta-hg@20: franta-hg@26: public String getZacatekString() { franta-hg@26: return formatData.format(getZacatek()); franta-hg@20: } franta-hg@4: franta-hg@26: public Date getZacatek() { franta-hg@26: if (zacatek == null) { franta-hg@26: nastavVychoziZacatek(); franta-hg@20: } franta-hg@26: return zacatek; franta-hg@4: } franta-hg@4: franta-hg@26: public void setZacatek(Date zacatek) { franta-hg@26: if (zacatek == null) { franta-hg@26: nastavVychoziZacatek(); franta-hg@4: } else { franta-hg@26: this.zacatek = zacatek; franta-hg@4: } franta-hg@26: log.log(Level.FINE, "Začátek nastaven na: " + formatData.format(zacatek)); franta-hg@4: } franta-hg@4: franta-hg@26: public void setZacatekString(String zacatek) { franta-hg@26: if (zacatek == null) { franta-hg@26: nastavVychoziZacatek(); franta-hg@30: } else { franta-hg@30: try { franta-hg@30: this.zacatek = new Date(formatData.parse(zacatek).getTime()); franta-hg@30: } catch (ParseException e) { franta-hg@30: log.log(Level.FINE, "Chybně zadané datum – začátek: " + zacatek, e); franta-hg@30: nastavVychoziZacatek(); franta-hg@30: } franta-hg@26: } franta-hg@26: } franta-hg@26: franta-hg@26: public Date getKonec() { franta-hg@30: if (konec == null) { franta-hg@30: nastavVychoziKonec(); franta-hg@30: } franta-hg@26: return konec; franta-hg@26: } franta-hg@26: franta-hg@26: public void setKonec(Date konec) { franta-hg@30: if (konec == null) { franta-hg@30: nastavVychoziKonec(); franta-hg@30: } else { franta-hg@30: this.konec = konec; franta-hg@30: } franta-hg@30: log.log(Level.FINE, "Konec nastaven na: " + formatData.format(zacatek)); franta-hg@26: } franta-hg@26: franta-hg@26: public void setKonecString(String konec) { franta-hg@30: if (konec == null) { franta-hg@30: nastavVychoziKonec(); franta-hg@30: } else { franta-hg@30: try { franta-hg@30: this.konec = new Date(formatData.parse(konec).getTime()); franta-hg@30: } catch (Exception e) { franta-hg@30: nastavVychoziKonec(); franta-hg@30: } franta-hg@4: } franta-hg@4: } franta-hg@4: franta-hg@40: public String getKonecString() { franta-hg@40: return formatData.format(getKonec()); franta-hg@40: } franta-hg@40: franta-hg@20: public void setCilString(String cil) { franta-hg@20: try { franta-hg@20: this.cil = Integer.parseInt(cil); franta-hg@20: } catch (Exception e) { franta-hg@20: this.cil = 0; franta-hg@20: } franta-hg@20: } franta-hg@20: franta-hg@20: public void setCil(int cil) { franta-hg@20: this.cil = cil; franta-hg@20: } franta-hg@20: franta-hg@20: public String getCilString() { franta-hg@20: return String.valueOf(cil); franta-hg@20: } franta-hg@20: franta-hg@20: public int getCil() { franta-hg@20: return cil; franta-hg@20: } franta-hg@20: franta-hg@26: private void nastavVychoziZacatek() { franta-hg@26: log.log(Level.FINE, "Nastavuji začátek na výchozí hodnotu."); franta-hg@30: setZacatek(getVychoziZacatek()); franta-hg@30: } franta-hg@30: franta-hg@30: private void nastavVychoziKonec() { franta-hg@30: log.log(Level.FINE, "Nastavuji konec na výchozí hodnotu."); franta-hg@30: setKonec(getVychoziKonec()); franta-hg@4: } franta-hg@4: franta-hg@40: /** franta-hg@40: * @return Denní souhrny útoků – franta-hg@40: * obsahuje IP adresy a domény útočníků, franta-hg@40: * datum je den poslendího útoku daného útočníka na daný cíl. franta-hg@40: */ franta-hg@4: public Collection getSouhrn() { franta-hg@26: Collection souhrn = new SouhrnDAO().getSouhrn(zacatek, konec, cil); franta-hg@4: franta-hg@21: /** ne všechno musíme posílat do JSP vrstvy */ franta-hg@21: for (Souhrn s : souhrn) { franta-hg@21: s.getCil().setDatabaze(null); franta-hg@21: s.getCil().setSelekt(null); franta-hg@4: } franta-hg@4: franta-hg@4: return souhrn; franta-hg@4: } franta-hg@6: franta-hg@6: /** franta-hg@40: * @return Vyšší stupeň agregace než souhrn – franta-hg@40: * obsahuje jen součty útoků pro daný den a daný cíl, franta-hg@40: * neobsahuje podrobnosti o útočnících (ip adresa, doména). franta-hg@40: */ franta-hg@40: public HashMap> getSoucty() { franta-hg@40: HashMap> soucty = new SouhrnDAO().getSoucty(zacatek, konec, cil); franta-hg@40: franta-hg@40: /** ne všechno musíme posílat do JSP vrstvy */ franta-hg@40: for (Collection ss : soucty.values()) { franta-hg@40: for (Soucet s : ss) { franta-hg@40: s.getCil().setDatabaze(null); franta-hg@40: s.getCil().setSelekt(null); franta-hg@40: } franta-hg@40: } franta-hg@40: franta-hg@40: return soucty; franta-hg@40: } franta-hg@40: franta-hg@40: /** franta-hg@6: * @return Seznam všech cílů. Ale bez těchto hodnot: databáze a selekt. franta-hg@6: */ franta-hg@6: public Collection getSeznamCilu() { franta-hg@6: Collection cile = new CilDAO().getCile(); franta-hg@6: franta-hg@6: /** ne všechno musíme posílat do JSP vrstvy */ franta-hg@6: for (Cil c : cile) { franta-hg@6: c.setDatabaze(null); franta-hg@6: c.setSelekt(null); franta-hg@6: } franta-hg@6: franta-hg@6: return cile; franta-hg@6: } franta-hg@30: franta-hg@30: /** franta-hg@30: * @return Výchozí začátek je před měsícem franta-hg@30: */ franta-hg@30: private static Date getVychoziZacatek() { franta-hg@30: Calendar c = Calendar.getInstance(); franta-hg@30: c.add(Calendar.MONTH, -1); franta-hg@30: return new Date(c.getTimeInMillis()); franta-hg@30: } franta-hg@30: franta-hg@30: /** franta-hg@30: * @return Výchozí konec je současnost franta-hg@30: */ franta-hg@30: private static Date getVychoziKonec() { franta-hg@30: return new Date(System.currentTimeMillis()); franta-hg@30: } franta-hg@3: }