package org.kaleidofoundry.mail;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.kaleidofoundry.core.util.ThrowableHelper;
/**
* Report of a mailing send
* <ul>
* <li>invalid addresses</li>
* </ul>
*
* @author jraduget
*/
public class MailingDispatcherReport implements Serializable {
private static final long serialVersionUID = -5533039526120133759L;
private Map<MailMessage, List<String>> invalidAddresses;
private Map<MailMessage, MailException> mailExceptions;
public MailingDispatcherReport() {
invalidAddresses = new HashMap<MailMessage, List<String>>();
mailExceptions = new HashMap<MailMessage, MailException>();
}
public Map<MailMessage, List<String>> getInvalidAddresses() {
return invalidAddresses;
}
public Map<MailMessage, MailException> getMailExceptions() {
return mailExceptions;
}
public void put(MailMessage message, List<String> invalidAddresses) {
this.invalidAddresses.put(message, invalidAddresses);
}
public void put(MailMessage message, MailException me) {
this.mailExceptions.put(message, me);
if (me instanceof InvalidMailAddressException && !"mail.service.message.fromaddress.none".equals(me.getCode())
&& !"mail.service.message.address.none".equals(me.getCode())) {
put(message, ((InvalidMailAddressException) me).getInvalidAddresses());
}
}
public void put(MailMessage message, List<String> invalidAddresses, MailException me) {
put(message, invalidAddresses);
put(message, me);
}
public boolean isEmpty() {
return invalidAddresses.isEmpty() && mailExceptions.isEmpty();
}
@Override
public String toString() {
StringBuilder str = new StringBuilder();
str.append("MailingDispatcherReport [");
str.append("invalidAddresses=" + invalidAddresses.values());
str.append(", mailExceptions=");
for (Entry<MailMessage, MailException> mre : mailExceptions.entrySet()) {
str.append(ThrowableHelper.getStackTrace(mre.getValue())).append("\n");
}
str.append("]");
return str.toString();
}
}