java/Postak/src/cz/frantovo/postak/HromadnaZprava.java
changeset 17 9cb46ca7e26c
parent 13 b15d81be8af3
     1.1 --- a/java/Postak/src/cz/frantovo/postak/HromadnaZprava.java	Fri Mar 30 15:35:26 2012 +0200
     1.2 +++ b/java/Postak/src/cz/frantovo/postak/HromadnaZprava.java	Mon Apr 23 00:24:31 2012 +0200
     1.3 @@ -9,130 +9,138 @@
     1.4  /**
     1.5   * Hromadná zpráva. Umí se rozdělit i na více dílčích zpráv,
     1.6   * které se vejdou do limitu příjemců SMTP serveru.
     1.7 + *
     1.8   * @author fiki
     1.9   */
    1.10  public class HromadnaZprava implements Cloneable {
    1.11  
    1.12 -    private static final Logger log = Logger.getLogger(HromadnaZprava.class.getName());
    1.13 -    /** Předmět zprávy */
    1.14 -    private String predmet;
    1.15 -    /** Adresa a případně jméno odesílatele */
    1.16 -    private InternetAddress odesilatel;
    1.17 -    /** Zda má být zpráva odeslána jako HTML nebo prostý text */
    1.18 -    private boolean formatHTML = false;
    1.19 -    /** Tělo zprávy - prostý text */
    1.20 -    private String text;
    1.21 -    /** Všichni příjemci této zprávy */
    1.22 -    private ArrayList<InternetAddressKomu> prijemci = new ArrayList<InternetAddressKomu>();
    1.23 -    /** Hlavička Reply-to */
    1.24 -    private InternetAddress odpovedetKomu;
    1.25 +	public enum FORMÁT {
    1.26  
    1.27 -    public String getPredmet() {
    1.28 -        return predmet;
    1.29 -    }
    1.30 +		XHTML,
    1.31 +		PROSTÝ_TEXT,
    1.32 +		OBOJE
    1.33 +	}
    1.34 +	private static final Logger log = Logger.getLogger(HromadnaZprava.class.getName());
    1.35 +	/** Předmět zprávy */
    1.36 +	private String predmet;
    1.37 +	/** Adresa a případně jméno odesílatele */
    1.38 +	private InternetAddress odesilatel;
    1.39 +	/** Zda má být zpráva odeslána jako HTML nebo prostý text */
    1.40 +	private FORMÁT formát = FORMÁT.PROSTÝ_TEXT;
    1.41 +	/** Tělo zprávy - prostý text */
    1.42 +	private String text;
    1.43 +	/** Všichni příjemci této zprávy */
    1.44 +	private ArrayList<InternetAddressKomu> prijemci = new ArrayList<InternetAddressKomu>();
    1.45 +	/** Hlavička Reply-to */
    1.46 +	private InternetAddress odpovedetKomu;
    1.47  
    1.48 -    public void setPredmet(String predmet) {
    1.49 -        this.predmet = predmet;
    1.50 -    }
    1.51 +	public String getPredmet() {
    1.52 +		return predmet;
    1.53 +	}
    1.54  
    1.55 -    public InternetAddress getOdesilatel() {
    1.56 -        return odesilatel;
    1.57 -    }
    1.58 +	public void setPredmet(String predmet) {
    1.59 +		this.predmet = predmet;
    1.60 +	}
    1.61  
    1.62 -    public void setOdesilatel(InternetAddress odesilatel) {
    1.63 -        this.odesilatel = odesilatel;
    1.64 -    }
    1.65 +	public InternetAddress getOdesilatel() {
    1.66 +		return odesilatel;
    1.67 +	}
    1.68  
    1.69 -    public String getText() {
    1.70 -        return text;
    1.71 -    }
    1.72 +	public void setOdesilatel(InternetAddress odesilatel) {
    1.73 +		this.odesilatel = odesilatel;
    1.74 +	}
    1.75  
    1.76 -    public void setText(String text) {
    1.77 -        this.text = text;
    1.78 -    }
    1.79 +	public String getText() {
    1.80 +		return text;
    1.81 +	}
    1.82  
    1.83 -    public ArrayList<InternetAddressKomu> getPrijemci() {
    1.84 -        return prijemci;
    1.85 -    }
    1.86 +	public void setText(String text) {
    1.87 +		this.text = text;
    1.88 +	}
    1.89  
    1.90 -    /** 
    1.91 -     * @param prijemci pokud je null, nastaví prázdná kolekce.
    1.92 -     */
    1.93 -    public void setPrijemci(ArrayList<InternetAddressKomu> prijemci) {
    1.94 -        this.prijemci = new ArrayList<InternetAddressKomu>();
    1.95 -        pridejPrijemce(prijemci);
    1.96 -    }
    1.97 +	public ArrayList<InternetAddressKomu> getPrijemci() {
    1.98 +		return prijemci;
    1.99 +	}
   1.100  
   1.101 -    public void pridejPrijemce(Collection<InternetAddressKomu> prijemci) {
   1.102 -        if (prijemci == null) {
   1.103 -            log.log(Level.FINER, "Prázdná množina příjemců – nic nepřidáme");
   1.104 -        } else {
   1.105 -            this.prijemci.addAll(prijemci);
   1.106 -        }
   1.107 -    }
   1.108 +	/**
   1.109 +	 * @param prijemci pokud je null, nastaví prázdná kolekce.
   1.110 +	 */
   1.111 +	public void setPrijemci(ArrayList<InternetAddressKomu> prijemci) {
   1.112 +		this.prijemci = new ArrayList<InternetAddressKomu>();
   1.113 +		pridejPrijemce(prijemci);
   1.114 +	}
   1.115  
   1.116 -    /**
   1.117 -     * Pokud má zpráva více přijemců, než je limit povolený SMTP serverem,
   1.118 -     * rozdělí se zpráva na více dílčích zpráv.
   1.119 -     * @param limit maximální počet příjemců jedné zprávy (omezení SMTP serveru)
   1.120 -     */
   1.121 -    public Collection<HromadnaZprava> getDilciZpravy(int limit) {
   1.122 -        Collection<HromadnaZprava> zpravy = new ArrayList<HromadnaZprava>();
   1.123 +	public void pridejPrijemce(Collection<InternetAddressKomu> prijemci) {
   1.124 +		if (prijemci == null) {
   1.125 +			log.log(Level.FINER, "Prázdná množina příjemců – nic nepřidáme");
   1.126 +		} else {
   1.127 +			this.prijemci.addAll(prijemci);
   1.128 +		}
   1.129 +	}
   1.130  
   1.131 -        if (limit < getPrijemci().size()) {
   1.132 -            /** Zprávu je potřeba rozdělit */
   1.133 -            try {
   1.134 -                HromadnaZprava dilciZprava = (HromadnaZprava) clone();
   1.135 -                dilciZprava.setPrijemci(null);
   1.136 +	/**
   1.137 +	 * Pokud má zpráva více přijemců, než je limit povolený SMTP serverem,
   1.138 +	 * rozdělí se zpráva na více dílčích zpráv.
   1.139 +	 *
   1.140 +	 * @param limit maximální počet příjemců jedné zprávy (omezení SMTP serveru)
   1.141 +	 */
   1.142 +	public Collection<HromadnaZprava> getDilciZpravy(int limit) {
   1.143 +		Collection<HromadnaZprava> zpravy = new ArrayList<HromadnaZprava>();
   1.144  
   1.145 -                ArrayList<InternetAddressKomu> vsichniPrijemci = getPrijemci();
   1.146 -                for (InternetAddressKomu prijemce : vsichniPrijemci) {
   1.147 -                    dilciZprava.getPrijemci().add(prijemce);
   1.148 +		if (limit < getPrijemci().size()) {
   1.149 +			/** Zprávu je potřeba rozdělit */
   1.150 +			try {
   1.151 +				HromadnaZprava dilciZprava = (HromadnaZprava) clone();
   1.152 +				dilciZprava.setPrijemci(null);
   1.153  
   1.154 -                    if (dilciZprava.getPrijemci().size() == limit) {
   1.155 -                        zpravy.add(dilciZprava);
   1.156 -                        dilciZprava = (HromadnaZprava) clone();
   1.157 -                        dilciZprava.setPrijemci(null);
   1.158 -                    }
   1.159 -                }
   1.160 +				ArrayList<InternetAddressKomu> vsichniPrijemci = getPrijemci();
   1.161 +				for (InternetAddressKomu prijemce : vsichniPrijemci) {
   1.162 +					dilciZprava.getPrijemci().add(prijemce);
   1.163  
   1.164 -                if (dilciZprava.getPrijemci().size() > 0) {
   1.165 -                    /**
   1.166 -                     * Počet příjemců není násobkem limitu,
   1.167 -                     * takže nakonci ještě někteří zbyli.
   1.168 -                     * Z nich budou příjemci pro poslední dílčí zprávu.
   1.169 -                     */
   1.170 -                    zpravy.add(dilciZprava);
   1.171 -                }
   1.172 +					if (dilciZprava.getPrijemci().size() == limit) {
   1.173 +						zpravy.add(dilciZprava);
   1.174 +						dilciZprava = (HromadnaZprava) clone();
   1.175 +						dilciZprava.setPrijemci(null);
   1.176 +					}
   1.177 +				}
   1.178  
   1.179 +				if (dilciZprava.getPrijemci().size() > 0) {
   1.180 +					/**
   1.181 +					 * Počet příjemců není násobkem limitu,
   1.182 +					 * takže nakonci ještě někteří zbyli.
   1.183 +					 * Z nich budou příjemci pro poslední dílčí zprávu.
   1.184 +					 */
   1.185 +					zpravy.add(dilciZprava);
   1.186 +				}
   1.187  
   1.188 -            } catch (CloneNotSupportedException ex) {
   1.189 -                /** Tohle by nikdy nemělo nastat */
   1.190 -                log.log(Level.SEVERE, "Hromandou zprávu se nepodařilo naklonovat - divné.", ex);
   1.191 -                zpravy.add(this);
   1.192 -            }
   1.193 -        } else {
   1.194 -            /** Zprávu má málo příjemců - můžeme ji odeslat najednou */
   1.195 -            zpravy.add(this);
   1.196 -        }
   1.197  
   1.198 -        return zpravy;
   1.199 -    }
   1.200 +			} catch (CloneNotSupportedException ex) {
   1.201 +				/** Tohle by nikdy nemělo nastat */
   1.202 +				log.log(Level.SEVERE, "Hromandou zprávu se nepodařilo naklonovat - divné.", ex);
   1.203 +				zpravy.add(this);
   1.204 +			}
   1.205 +		} else {
   1.206 +			/** Zprávu má málo příjemců - můžeme ji odeslat najednou */
   1.207 +			zpravy.add(this);
   1.208 +		}
   1.209  
   1.210 -    public boolean isFormatHTML() {
   1.211 -        return formatHTML;
   1.212 -    }
   1.213 +		return zpravy;
   1.214 +	}
   1.215  
   1.216 -    public void setFormatHTML(boolean formatHTML) {
   1.217 -        this.formatHTML = formatHTML;
   1.218 -    }
   1.219 +	public FORMÁT getFormát() {
   1.220 +		return formát;
   1.221 +	}
   1.222  
   1.223 -    public InternetAddress getOdpovedetKomu() {
   1.224 -        return odpovedetKomu;
   1.225 -    }
   1.226 +	public void setFormatHTML(FORMÁT formát) {
   1.227 +		this.formát = formát;
   1.228 +	}
   1.229  
   1.230 -    /** Pokud je null, hlavička Reply-to se v e-mailu vůbec nenastaví. */
   1.231 -    public void setOdpovedetKomu(InternetAddress odpovedetKomu) {
   1.232 -        this.odpovedetKomu = odpovedetKomu;
   1.233 -    }
   1.234 +	public InternetAddress getOdpovedetKomu() {
   1.235 +		return odpovedetKomu;
   1.236 +	}
   1.237 +
   1.238 +	/** Pokud je null, hlavička Reply-to se v e-mailu vůbec nenastaví. */
   1.239 +	public void setOdpovedetKomu(InternetAddress odpovedetKomu) {
   1.240 +		this.odpovedetKomu = odpovedetKomu;
   1.241 +	}
   1.242  }