use of au.com.vaadinutils.jasper.JasperEmailBuilder in project VaadinUtils by rlsutton1.
the class SendEmailTask method sendMessages.
private void sendMessages(final List<JasperTransmission> targets, final JasperProxy proxy) {
new EntityManagerThread<Void>(new CallableUI<Void>(UI.getCurrent()) {
@Override
protected Void call(UI ui) throws Exception {
int sent = 0;
try {
for (JasperTransmission transmission : targets) {
if (cancel == true)
break;
try {
JasperManager manager = proxy.getManager();
RenderedReport renderedHtml = manager.export(OutputFormat.HTML, null);
RenderedReport renderedPDF = manager.export(OutputFormat.PDF, null);
JasperEmailBuilder builder = new JasperEmailBuilder(proxy.getEmailSettings());
builder.setFrom(proxy.getSenderEmailAddress()).setSubject(proxy.getSubject()).setHtmlBody(renderedHtml).addTo(transmission.getRecipientEmailAddress()).addAttachement(renderedPDF.getBodyAsDataSource("report.pdf", AttachmentType.PDF));
builder.send(false);
} catch (EmailException e) {
logger.error(e, e);
transmission.setException(e);
SendEmailTask.super.taskItemError(transmission);
VUNotification.show(e, Type.ERROR_MESSAGE);
}
}
} catch (Exception e) {
VUNotification.show(e, Type.ERROR_MESSAGE);
throw e;
} finally {
SendEmailTask.super.taskComplete(sent);
}
return null;
}
});
}
use of au.com.vaadinutils.jasper.JasperEmailBuilder in project VaadinUtils by rlsutton1.
the class ReportEmailRunnerImpl method runReport.
// Logger logger = org.apache.logging.log4j.LogManager.getLogger();
@Override
public boolean runReport(ReportEmailSchedule schedule, Date scheduledTime, JasperEmailSettings emailSettings) throws InterruptedException, IOException, EmailException, InstantiationException, IllegalAccessException, AddressException, ClassNotFoundException {
Preconditions.checkNotNull(schedule.getSendersEmailAddress(), "Missing senders email address.");
Preconditions.checkNotNull(schedule.getRecipients(), "Missing recipient email address");
Preconditions.checkArgument(schedule.getRecipients().size() > 0, "Missing recipient email address");
Class<? extends JasperReportProperties> jrpClass = schedule.getJasperReportPropertiesClass();
jasperReportProperties = jrpClass.newInstance();
this.schedule = schedule;
jasperReportProperties = new JasperReportPropertiesAlternateFile(schedule.getReportTitle(), schedule.getReportFileName(), jasperReportProperties);
Collection<ReportParameter<?>> params = buildParams(schedule, scheduledTime, this);
JasperManager manager = new JasperManager(this);
if (manager.checkQueueSize() > 0) {
return false;
}
JasperEmailBuilder builder = new JasperEmailBuilder(emailSettings);
OutputFormat outputFormat = schedule.getOutputFormat();
RenderedReport export = manager.export(outputFormat, params);
try {
AttachmentType attachementType = outputFormat.getAttachementType();
builder.setFrom(schedule.getSendersEmailAddress().toString()).setSubject(schedule.subject()).setHtmlBody(schedule.message()).addAttachement(export.getBodyAsDataSource(schedule.getReportTitle() + attachementType.getFileExtension(), attachementType));
for (ReportEmailRecipient address : schedule.getRecipients()) {
switch(address.getVisibility()) {
case TO:
builder.addTo(address.getEmail());
break;
case CC:
builder.addCC(address.getEmail());
break;
case BCC:
builder.addBCC(address.getEmail());
break;
}
}
builder.send(false);
} finally {
export.close();
}
return true;
}
Aggregations