KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > outerj > daisy > emailnotifier > serverimpl > formatters > VersionStateChangedTemplateFactory


1 /*
2  * Copyright 2004 Outerthought bvba and Schaubroeck nv
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

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 JavaDoc;
31
32 public class VersionStateChangedTemplateFactory implements MailTemplateFactory {
33     public MailTemplate createMailTemplate(XmlObject eventDescription, Repository repository, DocumentURLProvider urlProvider) throws Exception JavaDoc {
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 JavaDoc url;
59         public long docId;
60         public String JavaDoc branch;
61         public String JavaDoc language;
62         public long versionId;
63         public String JavaDoc docName;
64         public String JavaDoc state;
65         public Date modified;
66         public String JavaDoc 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 JavaDoc getSubject(Locale locale) {
73             ResourceBundle bundle = getBundle(locale);
74             return bundle.getString("versionstate.subject") + " " + docName;
75         }
76
77         public String JavaDoc getMessage(Locale locale) {
78             String JavaDoc message = (String JavaDoc)cachedByLocale.get(locale);
79             if (message == null) {
80                 ResourceBundle bundle = getBundle(locale);
81                 StringBuffer JavaDoc buffer = new StringBuffer JavaDoc();
82                 DateFormat JavaDoc 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