/Users/richardallenbair/Documents/Source/Projects/nonsense/swingx/src/java/org/jdesktop/swingx/error/EmailErrorReporter.java |
package org.jdesktop.swingx.error;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.jdesktop.swingx.*;
import org.jdesktop.swingx.util.SwingWorker;
public abstract class EmailErrorReporter extends JavaBean implements ErrorReporter {
private List<String> toList = new ArrayList<String>();
private List<String> ccList = new ArrayList<String>();
private List<String> bccList = new ArrayList<String>();
private List<Object> attachments = new ArrayList<Object>();
public EmailErrorReporter() {
}
public void setToAddresses(int index, String to) {}
public String getToAddresses(int index) {return null;}
public void setToAddresses(String[] addresses) {
toList.clear();
toList.addAll(Arrays.asList(addresses));
}
public String[] getToAddresses() {return null;}
public void setCcAddresses(int index, String to) {}
public String getCcAddresses(int index) {return null;}
public void setCcAddresses(String[] addresses) {}
public String[] getCcAddresses() {return null;}
public void setBccAddresses(int index, String to) {}
public String getBccAddresses(int index) {return null;}
public void setBccAddresses(String[] addresses) {}
public String[] getBccAddresses() {return null;}
public void setAttachments(int index, String to) {}
public String getAttachments(int index) {return null;}
public void setAttachments(String[] addresses) {}
public String[] getAttachments() {return null;}
public void reportIncident(IncidentInfo info) {
SendWorker thread = new SendWorker(this, info);
thread.execute();
}
protected String constructMessageBody(IncidentInfo incident) {
String body = incident.getBasicErrorMessage();
if(incident.getDetailedErrorMessage() != null) {
body.concat("\n"+incident.getDetailedErrorMessage());
}
if(incident.getErrorException() != null) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
incident.getErrorException().printStackTrace(pw);
body = body + "\n ----- " + sw.toString();
}
return body;
}
protected String constructSubject(IncidentInfo incident) {
return incident.getHeader();
}
protected abstract void sendMessage(IncidentInfo info);
private static final class SendWorker extends SwingWorker {
private EmailErrorReporter reporter;
private IncidentInfo info;
private SendWorker(EmailErrorReporter r, IncidentInfo i) {
if (r == null || i == null) {
throw new NullPointerException("Both EmailErrorReporter and " +
"IncidentInfo must be specified");
}
this.reporter = r;
this.info = i;
}
@Override
protected Object doInBackground() throws Exception {
reporter.sendMessage(info);
return null;
}
}
}