1.1 --- a/java/Postak/src/cz/frantovo/postak/HromadnaZprava.java Tue Nov 29 17:16:47 2011 +0100
1.2 +++ b/java/Postak/src/cz/frantovo/postak/HromadnaZprava.java Wed May 09 18:10:02 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 }