1 16 package org.outerj.daisy.emailnotifier.serverimpl.formatters; 17 18 import org.outerj.daisy.emailnotifier.serverimpl.MailTemplateFactory; 19 import org.outerj.daisy.emailnotifier.serverimpl.MailTemplate; 20 import org.outerj.daisy.emailnotifier.serverimpl.DocumentURLProvider; 21 import org.outerj.daisy.repository.Repository; 22 import org.outerj.daisy.repository.Document; 23 import org.outerj.daisy.repository.Version; 24 import org.outerj.daisy.repository.variant.VariantManager; 25 import org.outerj.daisy.repository.user.UserManager; 26 import org.apache.xmlbeans.XmlObject; 27 import org.outerx.daisy.x10.VersionStateChangedDocument; 28 29 import java.util.*; 30 import java.text.DateFormat ; 31 32 public class VersionStateChangedTemplateFactory implements MailTemplateFactory { 33 public MailTemplate createMailTemplate(XmlObject eventDescription, Repository repository, DocumentURLProvider urlProvider) throws Exception { 34 VersionStateChangedDocument versionStateChangedDocument = (VersionStateChangedDocument)eventDescription; 35 VersionStateChangedDocument.VersionStateChanged versionStateChanged = versionStateChangedDocument.getVersionStateChanged(); 36 37 Document document = repository.getDocument(versionStateChanged.getDocumentId(), versionStateChanged.getBranchId(), versionStateChanged.getLanguageId(), false); 38 Version version = document.getVersion(versionStateChanged.getVersionId()); 39 UserManager userManager = repository.getUserManager(); 40 VariantManager variantManager = repository.getVariantManager(); 41 42 VersionStateChangedMailTemplate template = new VersionStateChangedMailTemplate(); 43 template.url = urlProvider.getURL(document); 44 template.docId = document.getId(); 45 template.branch = TemplateUtil.getBranchName(document.getBranchId(), variantManager); 46 template.language = TemplateUtil.getLanguageName(document.getLanguageId(), variantManager); 47 template.versionId = version.getId(); 48 template.docName = version.getDocumentName(); 49 template.state = versionStateChanged.getNewState(); 50 template.modified = versionStateChanged.getModified().getTime(); 51 template.modifier = userManager.getUserDisplayName(versionStateChanged.getModifier()); 52 53 return template; 54 } 55 56 class VersionStateChangedMailTemplate implements MailTemplate { 57 private Map cachedByLocale = new HashMap(); 58 public String url; 59 public long docId; 60 public String branch; 61 public String language; 62 public long versionId; 63 public String docName; 64 public String state; 65 public Date modified; 66 public String modifier; 67 68 private ResourceBundle getBundle(Locale locale) { 69 return ResourceBundle.getBundle("org/outerj/daisy/emailnotifier/serverimpl/formatters/messages", locale); 70 } 71 72 public String getSubject(Locale locale) { 73 ResourceBundle bundle = getBundle(locale); 74 return bundle.getString("versionstate.subject") + " " + docName; 75 } 76 77 public String getMessage(Locale locale) { 78 String message = (String )cachedByLocale.get(locale); 79 if (message == null) { 80 ResourceBundle bundle = getBundle(locale); 81 StringBuffer buffer = new StringBuffer (); 82 DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM, locale); 83 84 buffer.append(bundle.getString("versionstate.intro")).append('\n'); 85 86 if (url != null) { 87 buffer.append('\n').append(url).append('\n'); 88 } 89 90 buffer.append('\n').append(bundle.getString("versionstate.document-id")).append(": ").append(docId); 91 buffer.append('\n').append(bundle.getString("common.branch")).append(": ").append(branch); 92 buffer.append('\n').append(bundle.getString("common.language")).append(": ").append(language); 93 buffer.append('\n').append(bundle.getString("versionstate.document-name")).append(": ").append(docName); 94 buffer.append('\n').append(bundle.getString("versionstate.version")).append(": ").append(versionId); 95 buffer.append('\n').append(bundle.getString("versionstate.new-state")).append(": ").append(state); 96 buffer.append('\n').append(bundle.getString("versionstate.modified-by")).append(": ").append(modifier); 97 buffer.append('\n').append(bundle.getString("versionstate.modified-on")).append(": ").append(dateFormat.format(modified)); 98 99 message = buffer.toString(); 100 cachedByLocale.put(locale, message); 101 } 102 return message; 103 } 104 } 105 } 106 | Popular Tags |