java/HrisniciSpameri/src/java/cz/frantovo/hrisniciSpameri/DenniSouhrn.java
author František Kučera <franta-hg@frantovo.cz>
Sun, 15 Feb 2009 22:24:37 +0100
changeset 30 0ffc8c1b2b9c
parent 26 feb4c3774c42
child 40 fd29fd5a8e29
permissions -rw-r--r--
Výchozí zobrazení: souhrn za poslední měsíc
chybný nebo nulový začátek z webu → o měsíc zpátky
chybný nebo nulový konec z webu → dnešek
     1 package cz.frantovo.hrisniciSpameri;
     2 
     3 import cz.frantovo.hrisniciSpameri.dao.CilDAO;
     4 import cz.frantovo.hrisniciSpameri.dao.SouhrnDAO;
     5 import cz.frantovo.hrisniciSpameri.dto.Cil;
     6 import cz.frantovo.hrisniciSpameri.dto.Souhrn;
     7 import java.io.Serializable;
     8 import java.sql.Date;
     9 import java.text.DateFormat;
    10 import java.text.ParseException;
    11 import java.text.SimpleDateFormat;
    12 import java.util.Calendar;
    13 import java.util.Collection;
    14 import java.util.logging.Level;
    15 import java.util.logging.Logger;
    16 
    17 /**
    18  * Beana zprostředkovávající denní souhrn hříšníků.
    19  * @author fiki
    20  */
    21 public class DenniSouhrn implements Serializable {
    22 
    23     private static final long serialVersionUID = 7932392366943861342L;
    24     private static final Logger log = Logger.getLogger(DenniSouhrn.class.getName());
    25     private static String formatDataVzor = "yyyy-MM-dd";
    26     public static DateFormat formatData = new SimpleDateFormat(formatDataVzor);
    27     private Date zacatek;
    28     private Date konec;
    29     private int cil;
    30 
    31     public String getZacatekString() {
    32         return formatData.format(getZacatek());
    33     }
    34 
    35     public Date getZacatek() {
    36         if (zacatek == null) {
    37             nastavVychoziZacatek();
    38         }
    39         return zacatek;
    40     }
    41 
    42     public void setZacatek(Date zacatek) {
    43         if (zacatek == null) {
    44             nastavVychoziZacatek();
    45         } else {
    46             this.zacatek = zacatek;
    47         }
    48         log.log(Level.FINE, "Začátek nastaven na: " + formatData.format(zacatek));
    49     }
    50 
    51     public void setZacatekString(String zacatek) {
    52         if (zacatek == null) {
    53             nastavVychoziZacatek();
    54         } else {
    55             try {
    56                 this.zacatek = new Date(formatData.parse(zacatek).getTime());
    57             } catch (ParseException e) {
    58                 log.log(Level.FINE, "Chybně zadané datum – začátek: " + zacatek, e);
    59                 nastavVychoziZacatek();
    60             }
    61         }
    62     }
    63 
    64     public Date getKonec() {
    65         if (konec == null) {
    66             nastavVychoziKonec();
    67         }
    68         return konec;
    69     }
    70 
    71     public void setKonec(Date konec) {
    72         if (konec == null) {
    73             nastavVychoziKonec();
    74         } else {
    75             this.konec = konec;
    76         }
    77         log.log(Level.FINE, "Konec nastaven na: " + formatData.format(zacatek));
    78     }
    79 
    80     public void setKonecString(String konec) {
    81         if (konec == null) {
    82             nastavVychoziKonec();
    83         } else {
    84             try {
    85                 this.konec = new Date(formatData.parse(konec).getTime());
    86             } catch (Exception e) {
    87                 nastavVychoziKonec();
    88             }
    89         }
    90     }
    91 
    92     public void setCilString(String cil) {
    93         try {
    94             this.cil = Integer.parseInt(cil);
    95         } catch (Exception e) {
    96             this.cil = 0;
    97         }
    98     }
    99 
   100     public void setCil(int cil) {
   101         this.cil = cil;
   102     }
   103 
   104     public String getCilString() {
   105         return String.valueOf(cil);
   106     }
   107 
   108     public int getCil() {
   109         return cil;
   110     }
   111 
   112     private void nastavVychoziZacatek() {
   113         log.log(Level.FINE, "Nastavuji začátek na výchozí hodnotu.");
   114         setZacatek(getVychoziZacatek());
   115     }
   116 
   117     private void nastavVychoziKonec() {
   118         log.log(Level.FINE, "Nastavuji konec na výchozí hodnotu.");
   119         setKonec(getVychoziKonec());
   120     }
   121 
   122     public Collection<Souhrn> getSouhrn() {
   123         Collection<Souhrn> souhrn = new SouhrnDAO().getSouhrn(zacatek, konec, cil);
   124 
   125         /** ne všechno musíme posílat do JSP vrstvy */
   126         for (Souhrn s : souhrn) {
   127             s.getCil().setDatabaze(null);
   128             s.getCil().setSelekt(null);
   129         }
   130 
   131         return souhrn;
   132     }
   133 
   134     /**
   135      * @return Seznam všech cílů. Ale bez těchto hodnot: databáze a selekt.
   136      */
   137     public Collection<Cil> getSeznamCilu() {
   138         Collection<Cil> cile = new CilDAO().getCile();
   139 
   140         /** ne všechno musíme posílat do JSP vrstvy */
   141         for (Cil c : cile) {
   142             c.setDatabaze(null);
   143             c.setSelekt(null);
   144         }
   145 
   146         return cile;
   147     }
   148 
   149     /**
   150      * @return Výchozí začátek je před měsícem
   151      */
   152     private static Date getVychoziZacatek() {
   153         Calendar c = Calendar.getInstance();
   154         c.add(Calendar.MONTH, -1);
   155         return new Date(c.getTimeInMillis());
   156     }
   157 
   158     /**
   159      * @return  Výchozí konec je současnost
   160      */
   161     private static Date getVychoziKonec() {
   162         return new Date(System.currentTimeMillis());
   163     }
   164 }