package com.mockmock.htmlbuilder; import com.mockmock.mail.MockMail; import org.apache.commons.lang.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class MailViewHtmlBuilder implements HtmlBuilder { private MailViewHeadersHtmlBuilder headersBuilder; private AddressesHtmlBuilder addressesHtmlBuilder; private MockMail mockMail; public void setMockMail(MockMail mockMail) { this.mockMail = mockMail; } public String build() { headersBuilder.setMockMail(mockMail); addressesHtmlBuilder.setMockMail(mockMail); String subjectOutput; if(mockMail.getSubject() == null) { subjectOutput = "<em>No subject given</em>"; } else { subjectOutput = StringEscapeUtils.escapeHtml(mockMail.getSubject()); } subjectOutput += " <small class=\"deleteLink\"><a href=\"/delete/" + mockMail.getId() + "\">Delete</a></small>"; String output = "<div class=\"container\">\n"; output += "<h2>" + subjectOutput + "</h2>\n" + " <div class=\"row\">\n"; output += " <div class=\"span10\" name=\"addresses\">\n" + " <h3>Addresses</h3>\n" + " " + addressesHtmlBuilder.build() + " </div>\n"; output += " <div class=\"span10\" name=\"headers\">\n" + " <h3>Mail headers</h3>\n" + " " + headersBuilder.build() + " </div>\n"; if(mockMail.getBody() != null) { output += " <div class=\"span10\" name=\"bodyPlainText\">\n" + " <h3>Plain text body</h3>\n" + " <div class=\"well\">" + StringEscapeUtils.escapeHtml(mockMail.getBody()) + "</div>\n" + " </div>\n"; } if(mockMail.getBodyHtml() != null) { output += " <div class=\"span10\" name=\"bodyHTML_Unformatted\">\n" + " <h3>HTML body unformatted</h3>\n" + " <div class=\"well\">" + StringEscapeUtils.escapeHtml(mockMail.getBodyHtml()) + "</div>\n" + " </div>\n"; // also show a parsed version via an iframe output += " <div class=\"span10\" name=\"iFrame\">\n" + " <h3>HTML body formatted</h3>\n" + " <iframe class=\"well\" src=\"/view/html/" + mockMail.getId() + "\" style=\"width: 780px; height: 700px; overflow: scroll;\" style=\"\" name=\"bodyHTML_iFrame\">\n" + " </iframe>\n" + " </div>"; } // just output the raw mail so we're sure everything is on the screen if(mockMail.getRawMail() != null) { // output complete raw mail output += " <div class=\"span10\" name=\"rawOutput\">\n" + " <h3>Complete raw mail output</h3>\n" + " <div class=\"well\">" + StringEscapeUtils.escapeHtml(mockMail.getRawMail()) + "</div>\n" + " </div>\n"; } output += " </div>\n"; output += "</div>\n"; return output; } @Autowired public void setMailViewHeadersHtmlBuilder(MailViewHeadersHtmlBuilder mailViewHeadersHtmlBuilder) { this.headersBuilder = mailViewHeadersHtmlBuilder; } @Autowired public void setAddressesHtmlBuilder(AddressesHtmlBuilder addressesHtmlBuilder) { this.addressesHtmlBuilder = addressesHtmlBuilder; } }