Legend:
- Unmodified
- Added
- Removed
-
java/Postak/src/cz/frantovo/postak/HromadnaZprava.java
r13 r17 10 10 * Hromadná zpráva. Umí se rozdělit i na více dílčích zpráv, 11 11 * které se vejdou do limitu příjemců SMTP serveru. 12 * 12 13 * @author fiki 13 14 */ 14 15 public class HromadnaZprava implements Cloneable { 15 16 16 private static final Logger log = Logger.getLogger(HromadnaZprava.class.getName()); 17 /** Předmět zprávy */ 18 private String predmet; 19 /** Adresa a případně jméno odesílatele */ 20 private InternetAddress odesilatel; 21 /** Zda má být zpráva odeslána jako HTML nebo prostý text */ 22 private boolean formatHTML = false; 23 /** Tělo zprávy - prostý text */ 24 private String text; 25 /** Všichni příjemci této zprávy */ 26 private ArrayList<InternetAddressKomu> prijemci = new ArrayList<InternetAddressKomu>(); 27 /** Hlavička Reply-to */ 28 private InternetAddress odpovedetKomu; 17 public enum FORMÁT { 29 18 30 public String getPredmet() { 31 return predmet; 32 } 19 XHTML, 20 PROSTÝ_TEXT, 21 OBOJE 22 } 23 private static final Logger log = Logger.getLogger(HromadnaZprava.class.getName()); 24 /** Předmět zprávy */ 25 private String predmet; 26 /** Adresa a případně jméno odesílatele */ 27 private InternetAddress odesilatel; 28 /** Zda má být zpráva odeslána jako HTML nebo prostý text */ 29 private FORMÁT formát = FORMÁT.PROSTÝ_TEXT; 30 /** Tělo zprávy - prostý text */ 31 private String text; 32 /** Všichni příjemci této zprávy */ 33 private ArrayList<InternetAddressKomu> prijemci = new ArrayList<InternetAddressKomu>(); 34 /** Hlavička Reply-to */ 35 private InternetAddress odpovedetKomu; 33 36 34 public void setPredmet(String predmet) {35 this.predmet =predmet;36 }37 public String getPredmet() { 38 return predmet; 39 } 37 40 38 public InternetAddress getOdesilatel() {39 return odesilatel;40 }41 public void setPredmet(String predmet) { 42 this.predmet = predmet; 43 } 41 44 42 public void setOdesilatel(InternetAddress odesilatel) {43 this.odesilatel =odesilatel;44 }45 public InternetAddress getOdesilatel() { 46 return odesilatel; 47 } 45 48 46 public String getText() {47 return text;48 }49 public void setOdesilatel(InternetAddress odesilatel) { 50 this.odesilatel = odesilatel; 51 } 49 52 50 public void setText(String text) {51 this.text =text;52 }53 public String getText() { 54 return text; 55 } 53 56 54 public ArrayList<InternetAddressKomu> getPrijemci() {55 return prijemci;56 }57 public void setText(String text) { 58 this.text = text; 59 } 57 60 58 /** 59 * @param prijemci pokud je null, nastaví prázdná kolekce. 60 */ 61 public void setPrijemci(ArrayList<InternetAddressKomu> prijemci) { 62 this.prijemci = new ArrayList<InternetAddressKomu>(); 63 pridejPrijemce(prijemci); 64 } 61 public ArrayList<InternetAddressKomu> getPrijemci() { 62 return prijemci; 63 } 65 64 66 public void pridejPrijemce(Collection<InternetAddressKomu> prijemci) { 67 if (prijemci == null) { 68 log.log(Level.FINER, "Prázdná množina příjemců – nic nepřidáme"); 69 } else{70 this.prijemci.addAll(prijemci);71 } 72 }65 /** 66 * @param prijemci pokud je null, nastaví prázdná kolekce. 67 */ 68 public void setPrijemci(ArrayList<InternetAddressKomu> prijemci) { 69 this.prijemci = new ArrayList<InternetAddressKomu>(); 70 pridejPrijemce(prijemci); 71 } 73 72 74 /** 75 * Pokud má zpráva více přijemců, než je limit povolený SMTP serverem, 76 * rozdělí se zpráva na více dílčích zpráv. 77 * @param limit maximální počet příjemců jedné zprávy (omezení SMTP serveru) 78 */ 79 public Collection<HromadnaZprava> getDilciZpravy(int limit) { 80 Collection<HromadnaZprava> zpravy = new ArrayList<HromadnaZprava>(); 73 public void pridejPrijemce(Collection<InternetAddressKomu> prijemci) { 74 if (prijemci == null) { 75 log.log(Level.FINER, "Prázdná množina příjemců – nic nepřidáme"); 76 } else { 77 this.prijemci.addAll(prijemci); 78 } 79 } 81 80 82 if (limit < getPrijemci().size()) { 83 /** Zprávu je potřeba rozdělit */ 84 try { 85 HromadnaZprava dilciZprava = (HromadnaZprava) clone(); 86 dilciZprava.setPrijemci(null); 81 /** 82 * Pokud má zpráva více přijemců, než je limit povolený SMTP serverem, 83 * rozdělí se zpráva na více dílčích zpráv. 84 * 85 * @param limit maximální počet příjemců jedné zprávy (omezení SMTP serveru) 86 */ 87 public Collection<HromadnaZprava> getDilciZpravy(int limit) { 88 Collection<HromadnaZprava> zpravy = new ArrayList<HromadnaZprava>(); 87 89 88 ArrayList<InternetAddressKomu> vsichniPrijemci = getPrijemci(); 89 for (InternetAddressKomu prijemce : vsichniPrijemci) { 90 dilciZprava.getPrijemci().add(prijemce); 90 if (limit < getPrijemci().size()) { 91 /** Zprávu je potřeba rozdělit */ 92 try { 93 HromadnaZprava dilciZprava = (HromadnaZprava) clone(); 94 dilciZprava.setPrijemci(null); 91 95 92 if (dilciZprava.getPrijemci().size() == limit) { 93 zpravy.add(dilciZprava); 94 dilciZprava = (HromadnaZprava) clone(); 95 dilciZprava.setPrijemci(null); 96 } 97 } 96 ArrayList<InternetAddressKomu> vsichniPrijemci = getPrijemci(); 97 for (InternetAddressKomu prijemce : vsichniPrijemci) { 98 dilciZprava.getPrijemci().add(prijemce); 98 99 99 if (dilciZprava.getPrijemci().size() > 0) { 100 /** 101 * Počet příjemců není násobkem limitu, 102 * takže nakonci ještě někteří zbyli. 103 * Z nich budou příjemci pro poslední dílčí zprávu. 104 */ 105 zpravy.add(dilciZprava); 106 } 100 if (dilciZprava.getPrijemci().size() == limit) { 101 zpravy.add(dilciZprava); 102 dilciZprava = (HromadnaZprava) clone(); 103 dilciZprava.setPrijemci(null); 104 } 105 } 106 107 if (dilciZprava.getPrijemci().size() > 0) { 108 /** 109 * Počet příjemců není násobkem limitu, 110 * takže nakonci ještě někteří zbyli. 111 * Z nich budou příjemci pro poslední dílčí zprávu. 112 */ 113 zpravy.add(dilciZprava); 114 } 107 115 108 116 109 } catch (CloneNotSupportedException ex) {110 /** Tohle by nikdy nemělo nastat */111 log.log(Level.SEVERE, "Hromandou zprávu se nepodařilo naklonovat - divné.", ex);112 zpravy.add(this);113 }114 } else {115 /** Zprávu má málo příjemců - můžeme ji odeslat najednou */116 zpravy.add(this);117 }117 } catch (CloneNotSupportedException ex) { 118 /** Tohle by nikdy nemělo nastat */ 119 log.log(Level.SEVERE, "Hromandou zprávu se nepodařilo naklonovat - divné.", ex); 120 zpravy.add(this); 121 } 122 } else { 123 /** Zprávu má málo příjemců - můžeme ji odeslat najednou */ 124 zpravy.add(this); 125 } 118 126 119 return zpravy;120 }127 return zpravy; 128 } 121 129 122 public boolean isFormatHTML() {123 return formatHTML;124 }130 public FORMÁT getFormát() { 131 return formát; 132 } 125 133 126 public void setFormatHTML(boolean formatHTML) {127 this.formatHTML = formatHTML;128 }134 public void setFormatHTML(FORMÁT formát) { 135 this.formát = formát; 136 } 129 137 130 public InternetAddress getOdpovedetKomu() {131 return odpovedetKomu;132 }138 public InternetAddress getOdpovedetKomu() { 139 return odpovedetKomu; 140 } 133 141 134 /** Pokud je null, hlavička Reply-to se v e-mailu vůbec nenastaví. */135 public void setOdpovedetKomu(InternetAddress odpovedetKomu) {136 this.odpovedetKomu = odpovedetKomu;137 }142 /** Pokud je null, hlavička Reply-to se v e-mailu vůbec nenastaví. */ 143 public void setOdpovedetKomu(InternetAddress odpovedetKomu) { 144 this.odpovedetKomu = odpovedetKomu; 145 } 138 146 }
